diff --git a/build/404.html b/build/404.html new file mode 100644 index 0000000..0678dde --- /dev/null +++ b/build/404.html @@ -0,0 +1,680 @@ +404: This page could not be found.Doormile — Delivering Trust. Beyond Boundaries

Doormile

Doormile logo
Address
Hyderabad

5th Floor, Vision Ultima,
Street No.3, Jayabheri Enclave,
Gachibowli, Hyderabad,
Telangana 500032.

Coimbatore

Mayflower Valencia,
Near Nava India Bus Stop,
Avinashi Road,
Udayampalayam,
Tamil Nadu 641037.

Bengaluru

C612, 6th Floor,
Trifecta Starlight,
ITPL Road,
Garudacharapalya,
Mahadevapura,
Bangalore 560048,
Karnataka, India.

Contact Us

Tel : +91 86886 97941

Email

care@doormile.com

404

This page could not be found.

\ No newline at end of file diff --git a/build/__next.__PAGE__.txt b/build/__next.__PAGE__.txt new file mode 100644 index 0000000..38d834e --- /dev/null +++ b/build/__next.__PAGE__.txt @@ -0,0 +1,142 @@ +1:"$Sreact.fragment" +2:I[97677,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~5amg8el7~oa.js"],"default"] +3:I[58140,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~5amg8el7~oa.js"],"default"] +4:I[36854,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~5amg8el7~oa.js"],"default"] +12:I[32693,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~5amg8el7~oa.js"],"default"] +13:I[24911,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~5amg8el7~oa.js"],"default"] +14:I[14224,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~5amg8el7~oa.js"],"default"] +1a:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +1b:"$Sreact.suspense" +1e:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~5amg8el7~oa.js"],"ScrollReveal"] +1f:I[22016,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~5amg8el7~oa.js"],""] +20:I[5500,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~5amg8el7~oa.js"],"Image"] +:HL["/_next/static/chunks/0v290txaarww5.css","style"] +0:{"rsc":["$","$1","c",{"children":[["$","div",null,{"id":"home","className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":["$","div",null,{"data-elementor-type":"wp-page","data-elementor-id":"61","className":"elementor elementor-61","children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{}],["$","div",null,{"className":"elementor-element elementor-element-b62c0b3 e-con-full e-flex cut-corner-no sticky-container-off e-con e-parent","data-id":"b62c0b3","data-element_type":"container","data-e-type":"container","children":["$","div",null,{"className":"elementor-element elementor-element-592e9e8 e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"592e9e8","data-element_type":"container","data-e-type":"container","children":["$","div",null,{"className":"elementor-element elementor-element-ab41b28 elementor-widget elementor-widget-logico_marquee","data-id":"ab41b28","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_marquee.default","children":["$","div",null,{"className":"elementor-widget-container","children":["$","div",null,{"className":"logico-ticker-wrapper","style":{"overflow":"hidden","position":"relative","width":"100%"},"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"\n @keyframes cssMarquee {\n 0% { transform: translate3d(0, 0, 0); }\n 100% { transform: translate3d(-33.33%, 0, 0); }\n }\n .marquee-container-css {\n display: flex;\n width: max-content;\n animation: cssMarquee 25s linear infinite;\n }\n .marquee-container-css:hover {\n animation-play-state: paused;\n }\n "}}],["$","div",null,{"className":"marquee-container-css","children":[["$","div","0",{"className":"ticker","style":{"display":"inline-flex","alignItems":"center","whiteSpace":"nowrap","paddingRight":"50px"},"children":[["$","span",null,{"className":"ticker-text","children":["$","p",null,{"style":{"margin":0,"display":"inline"},"children":"30% More Cost Efficient"}]}],["$","span",null,{"className":"separator","style":{"marginLeft":"25px","display":"inline-flex","alignItems":"center"},"children":["$","i",null,{"className":"fontello icon-half-logo"}]}]]}],["$","div","1",{"className":"ticker","style":{"display":"inline-flex","alignItems":"center","whiteSpace":"nowrap","paddingRight":"50px"},"children":[["$","span",null,{"className":"ticker-text","children":["$","p",null,{"style":{"margin":0,"display":"inline"},"children":"30% More Cost Efficient"}]}],["$","span",null,{"className":"separator","style":{"marginLeft":"25px","display":"inline-flex","alignItems":"center"},"children":["$","i",null,{"className":"fontello icon-half-logo"}]}]]}],["$","div","2",{"className":"ticker","style":{"display":"inline-flex","alignItems":"center","whiteSpace":"nowrap","paddingRight":"50px"},"children":[["$","span",null,{"className":"ticker-text","children":["$","p",null,{"style":{"margin":0,"display":"inline"},"children":"30% More Cost Efficient"}]}],["$","span",null,{"className":"separator","style":{"marginLeft":"25px","display":"inline-flex","alignItems":"center"},"children":["$","i",null,{"className":"fontello icon-half-logo"}]}]]}],["$","div","3",{"className":"ticker","style":{"display":"inline-flex","alignItems":"center","whiteSpace":"nowrap","paddingRight":"50px"},"children":[["$","span",null,{"className":"ticker-text","children":["$","p",null,{"style":{"margin":0,"display":"inline"},"children":"30% More Cost Efficient"}]}],["$","span",null,{"className":"separator","style":{"marginLeft":"25px","display":"inline-flex","alignItems":"center"},"children":["$","i",null,{"className":"fontello icon-half-logo"}]}]]}],["$","div","4",{"className":"ticker","style":{"display":"inline-flex","alignItems":"center","whiteSpace":"nowrap","paddingRight":"50px"},"children":[["$","span",null,{"className":"ticker-text","children":["$","p",null,{"style":{"margin":0,"display":"inline"},"children":"30% More Cost Efficient"}]}],["$","span",null,{"className":"separator","style":{"marginLeft":"25px","display":"inline-flex","alignItems":"center"},"children":"$L5"}]]}],"$L6","$L7","$L8","$L9"]}]]}]}]}]}]}],"$La","$Lb","$Lc","$Ld"]}]}]}]}],["$Le","$Lf","$L10"],"$L11"]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} +5:["$","i",null,{"className":"fontello icon-half-logo"}] +6:["$","div","5",{"className":"ticker","style":{"display":"inline-flex","alignItems":"center","whiteSpace":"nowrap","paddingRight":"50px"},"children":[["$","span",null,{"className":"ticker-text","children":["$","p",null,{"style":{"margin":0,"display":"inline"},"children":"30% More Cost Efficient"}]}],["$","span",null,{"className":"separator","style":{"marginLeft":"25px","display":"inline-flex","alignItems":"center"},"children":["$","i",null,{"className":"fontello icon-half-logo"}]}]]}] +7:["$","div","6",{"className":"ticker","style":{"display":"inline-flex","alignItems":"center","whiteSpace":"nowrap","paddingRight":"50px"},"children":[["$","span",null,{"className":"ticker-text","children":["$","p",null,{"style":{"margin":0,"display":"inline"},"children":"30% More Cost Efficient"}]}],["$","span",null,{"className":"separator","style":{"marginLeft":"25px","display":"inline-flex","alignItems":"center"},"children":["$","i",null,{"className":"fontello icon-half-logo"}]}]]}] +8:["$","div","7",{"className":"ticker","style":{"display":"inline-flex","alignItems":"center","whiteSpace":"nowrap","paddingRight":"50px"},"children":[["$","span",null,{"className":"ticker-text","children":["$","p",null,{"style":{"margin":0,"display":"inline"},"children":"30% More Cost Efficient"}]}],["$","span",null,{"className":"separator","style":{"marginLeft":"25px","display":"inline-flex","alignItems":"center"},"children":["$","i",null,{"className":"fontello icon-half-logo"}]}]]}] +9:["$","div","8",{"className":"ticker","style":{"display":"inline-flex","alignItems":"center","whiteSpace":"nowrap","paddingRight":"50px"},"children":[["$","span",null,{"className":"ticker-text","children":["$","p",null,{"style":{"margin":0,"display":"inline"},"children":"30% More Cost Efficient"}]}],["$","span",null,{"className":"separator","style":{"marginLeft":"25px","display":"inline-flex","alignItems":"center"},"children":["$","i",null,{"className":"fontello icon-half-logo"}]}]]}] +a:["$","$L12",null,{}] +b:["$","$L13",null,{}] +c:["$","$L14",null,{}] +15:T95e, + @media (max-width: 768px) { + .elementor-element.elementor-element-3b4a7cc { + --padding-left: 0px !important; + --padding-right: 0px !important; + padding-left: 0px !important; + padding-right: 0px !important; + box-sizing: border-box !important; + } + + .elementor-element.elementor-element-3b4a7cc > .e-con-inner { + width: 100% !important; + max-width: 100% !important; + margin-left: auto !important; + margin-right: auto !important; + padding-left: 0 !important; + padding-right: 0 !important; + } + + .elementor-element.elementor-element-d602f7f { + --padding-left: 20px !important; + --padding-right: 20px !important; + padding-left: 20px !important; + padding-right: 20px !important; + width: 100% !important; + max-width: 100% !important; + margin-left: 0 !important; + margin-right: 0 !important; + box-sizing: border-box !important; + } + + .elementor-element.elementor-element-f64bd88, + .elementor-element.elementor-element-5ed2dbb, + .elementor-element.elementor-element-6829276 { + --padding-left: 0px !important; + --padding-right: 0px !important; + --margin-left: 0px !important; + --margin-right: 0px !important; + width: 100% !important; + max-width: 100% !important; + margin-left: 0 !important; + margin-right: 0 !important; + padding-left: 0 !important; + padding-right: 0 !important; + box-sizing: border-box !important; + } + + .elementor-element.elementor-element-6829276 { + --e-con-grid-template-columns: minmax(0, 1fr) !important; + --grid-justify-content: stretch !important; + --justify-items: stretch !important; + grid-template-columns: minmax(0, 1fr) !important; + justify-content: stretch !important; + justify-items: stretch !important; + min-width: 0 !important; + } + + .industry-solutions-grid, + .industry-card-link { + width: 100% !important; + max-width: 100% !important; + min-width: 0 !important; + } + + .industry-solutions-grid { + margin-left: 0 !important; + margin-right: 0 !important; + } + } + d:[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$15"}}],["$","div",null,{"className":"elementor-element elementor-element-3b4a7cc e-flex e-con-boxed cut-corner-no sticky-container-off e-con e-parent","data-id":"3b4a7cc","data-element_type":"container","data-e-type":"container","children":["$","div",null,{"className":"e-con-inner","children":["$","div",null,{"className":"elementor-element elementor-element-d602f7f e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"d602f7f","data-element_type":"container","data-e-type":"container","children":[["$","div",null,{"className":"elementor-element elementor-element-f64bd88 e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"f64bd88","data-element_type":"container","data-e-type":"container","children":[["$","div",null,{"className":"elementor-element elementor-element-5ed2dbb e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"5ed2dbb","data-element_type":"container","data-e-type":"container","children":["$L16","$L17"]}],"$L18"]}],"$L19"]}]}]}]] +e:["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0v290txaarww5.css","precedence":"next"}] +f:["$","script","script-0",{"src":"/_next/static/chunks/07eq5is00w7sy.js","async":true}] +10:["$","script","script-1",{"src":"/_next/static/chunks/0~5amg8el7~oa.js","async":true}] +11:["$","$L1a",null,{"children":["$","$1b",null,{"name":"Next.MetadataOutlet","children":"$@1c"}]}] +1d:T65e, + /* Minimal section label — matches the "/ Doormile Approach /" pattern */ + .industry-section-label { + width: 100%; + } + .industry-section-label > .elementor-widget-container { + max-width: 100%; + margin: 12px 0 50px 0; + padding: 0 0 14px 0; + border-style: solid; + border-width: 0 0 1px 0; + border-color: rgba(17, 17, 17, 0.15); + } + .industry-section-label .logico-title { + font-size: 14px; + font-weight: 500; + line-height: 2.1429em; + letter-spacing: 2px; + text-transform: uppercase; + color: #111111; + } + @media (max-width: 1024px) { + .industry-section-label > .elementor-widget-container { + margin-bottom: 36px; + padding-bottom: 12px; + } + } + @media (max-width: 767px) { + .industry-section-label > .elementor-widget-container { + margin-bottom: 28px; + padding-bottom: 10px; + } + .industry-section-label .logico-title { + font-size: 12px; + letter-spacing: 1.5px; + } + } + 16:["$","div",null,{"className":"elementor-element elementor-element-c8162c4 elementor-widget elementor-widget-logico_heading industry-section-label","data-id":"c8162c4","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_heading.default","children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$1d"}}],["$","div",null,{"className":"elementor-widget-container","children":["$","div",null,{"className":"logico-title","children":"/ Industry Solutions /"}]}]]}] +17:["$","div",null,{"className":"elementor-element elementor-element-1487241 elementor-widget__width-initial elementor-widget elementor-widget-logico_heading","data-id":"1487241","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_heading.default","children":["$","div",null,{"className":"elementor-widget-container","style":{"margin":"30px 0 0 0"},"children":["$","h3",null,{"className":"logico-title","style":{"fontSize":"clamp(28px, 3.5vw, 48px)","lineHeight":"1.1","fontWeight":800,"textTransform":"uppercase","maxWidth":"900px"},"children":["$","$L1e",null,{"delay":0.05,"duration":0.8,"yOffset":25,"children":["Smart solutions built exclusively for your ",["$","span",null,{"style":{"color":"#c01227"},"children":"industry"}]]}]}]}]}] +18:["$","div",null,{"className":"elementor-element elementor-element-4af73cb e-con-full elementor-hidden-tablet elementor-hidden-mobile_extra elementor-hidden-mobile e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"4af73cb","data-element_type":"container","data-e-type":"container","children":["$","div",null,{"className":"elementor-element elementor-element-46f2f7d elementor-widget__width-initial elementor-widget elementor-widget-logico_button","data-id":"46f2f7d","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_button.default","children":["$","div",null,{"className":"elementor-widget-container"}]}]}] +19:["$","div",null,{"className":"elementor-element elementor-element-6829276 e-grid e-con-full cut-corner-no sticky-container-off e-con e-child","data-id":"6829276","data-element_type":"container","data-e-type":"container","children":["$","div",null,{"className":"industry-solutions-grid","children":[["$","$L1f",null,{"href":"/solutions","className":"industry-card-link","children":[["$","div",null,{"className":"industry-card-bg","children":["$","$L20",null,{"src":"/images/tab-pic-1.webp","alt":"FMCG Logistics","fill":true,"style":{"objectFit":"cover"},"sizes":"(max-width: 768px) 100vw, (max-width: 1024px) 50vw, 33vw"}]}],["$","div",null,{"className":"industry-card-overlay"}],["$","div",null,{"className":"industry-card-hover-bg"}],["$","div",null,{"className":"industry-card-default-content","children":["$","h4",null,{"className":"industry-card-default-title","children":"FMCG"}]}],["$","div",null,{"className":"industry-card-hover-content","children":[["$","div",null,{"className":"industry-card-hover-top","children":[["$","p",null,{"className":"industry-card-description","children":"High volume, tight margins, zero tolerance for stockouts."}],["$","div",null,{"children":[["$","h5",null,{"className":"industry-card-section-title","children":"Challenges"}],["$","ul",null,{"className":"industry-card-list","children":[["$","li",null,{"className":"industry-card-list-item bullet-1","children":"Unpredictable demand spikes"}],["$","li",null,{"className":"industry-card-list-item bullet-2","children":"Fresh product expiry constraints"}],["$","li",null,{"className":"industry-card-list-item bullet-3","children":"Multi-stop route complexity"}]]}]]}],["$","div",null,{"children":[["$","h5",null,{"className":"industry-card-section-title","children":"Doormile Solutions"}],["$","ul",null,{"className":"industry-card-list","children":[["$","li",null,{"className":"industry-card-list-item bullet-4","children":"AI-driven demand-responsive routing"}],["$","li",null,{"className":"industry-card-list-item bullet-5","children":"Freshness-aware delivery prioritization"}],["$","li",null,{"className":"industry-card-list-item bullet-6","children":"Dynamic batch optimization"}]]}]]}]]}],["$","div",null,{"className":"industry-card-hover-bottom","children":[["$","div",null,{"className":"industry-card-hover-icon","children":["$","svg",null,{"xmlns":"http://www.w3.org/2000/svg","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"3","strokeLinecap":"round","strokeLinejoin":"round","style":{"width":"20px","height":"20px"},"children":[["$","line",null,{"x1":"7","y1":"17","x2":"17","y2":"7"}],["$","polyline",null,{"points":"7 7 17 7 17 17"}]]}]}],["$","h4",null,{"className":"industry-card-hover-title","children":"FMCG"}]]}]]}]]}],["$","$L1f",null,{"href":"/solutions","className":"industry-card-link","children":[["$","div",null,{"className":"industry-card-bg","children":["$","$L20",null,{"src":"/images/tab-pic-2.webp","alt":"Pharma Logistics","fill":true,"style":{"objectFit":"cover"},"sizes":"(max-width: 768px) 100vw, (max-width: 1024px) 50vw, 33vw"}]}],["$","div",null,{"className":"industry-card-overlay"}],["$","div",null,{"className":"industry-card-hover-bg"}],["$","div",null,{"className":"industry-card-default-content","children":["$","h4",null,{"className":"industry-card-default-title","children":"Pharmaceutical"}]}],["$","div",null,{"className":"industry-card-hover-content","children":[["$","div",null,{"className":"industry-card-hover-top","children":[["$","p",null,{"className":"industry-card-description","children":"Temperature-sensitive, compliance-critical, life-saving."}],["$","div",null,{"children":[["$","h5",null,{"className":"industry-card-section-title","children":"Challenges"}],["$","ul",null,{"className":"industry-card-list","children":[["$","li",null,{"className":"industry-card-list-item bullet-1","children":"Cold chain integrity requirements"}],["$","li",null,{"className":"industry-card-list-item bullet-2","children":"Regulatory compliance tracking"}],["$","li",null,{"className":"industry-card-list-item bullet-3","children":"Critical delivery time windows"}]]}]]}],["$","div",null,{"children":[["$","h5",null,{"className":"industry-card-section-title","children":"Doormile Solutions"}],["$","ul",null,{"className":"industry-card-list","children":[["$","li",null,{"className":"industry-card-list-item bullet-4","children":"Real-time temperature monitoring"}],"$L21","$L22"]}]]}]]}],"$L23"]}]]}],"$L24"]}]}] +1c:null +21:["$","li",null,{"className":"industry-card-list-item bullet-5","children":"Chain-of-custody documentation"}] +22:["$","li",null,{"className":"industry-card-list-item bullet-6","children":"Priority override for critical shipments"}] +23:["$","div",null,{"className":"industry-card-hover-bottom","children":[["$","div",null,{"className":"industry-card-hover-icon","children":["$","svg",null,{"xmlns":"http://www.w3.org/2000/svg","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"3","strokeLinecap":"round","strokeLinejoin":"round","style":{"width":"20px","height":"20px"},"children":[["$","line",null,{"x1":"7","y1":"17","x2":"17","y2":"7"}],["$","polyline",null,{"points":"7 7 17 7 17 17"}]]}]}],["$","h4",null,{"className":"industry-card-hover-title","children":"Pharmaceutical"}]]}] +24:["$","$L1f",null,{"href":"/solutions","className":"industry-card-link","children":[["$","div",null,{"className":"industry-card-bg","children":["$","$L20",null,{"src":"/images/tab-pic-3.webp","alt":"Enterprise Logistics","fill":true,"style":{"objectFit":"cover"},"sizes":"(max-width: 768px) 100vw, (max-width: 1024px) 50vw, 33vw"}]}],["$","div",null,{"className":"industry-card-overlay"}],["$","div",null,{"className":"industry-card-hover-bg"}],["$","div",null,{"className":"industry-card-default-content","children":["$","h4",null,{"className":"industry-card-default-title","children":"Enterprise & B2B"}]}],["$","div",null,{"className":"industry-card-hover-content","children":[["$","div",null,{"className":"industry-card-hover-top","children":[["$","p",null,{"className":"industry-card-description","children":"High-value shipments with complex delivery requirements."}],["$","div",null,{"children":[["$","h5",null,{"className":"industry-card-section-title","children":"Challenges"}],["$","ul",null,{"className":"industry-card-list","children":[["$","li",null,{"className":"industry-card-list-item bullet-1","children":"Appointment scheduling coordination"}],["$","li",null,{"className":"industry-card-list-item bullet-2","children":"White-glove delivery standards"}],["$","li",null,{"className":"industry-card-list-item bullet-3","children":"Multi-location routing complexity"}]]}]]}],["$","div",null,{"children":[["$","h5",null,{"className":"industry-card-section-title","children":"Doormile Solutions"}],["$","ul",null,{"className":"industry-card-list","children":[["$","li",null,{"className":"industry-card-list-item bullet-4","children":"Automated appointment optimization"}],["$","li",null,{"className":"industry-card-list-item bullet-5","children":"Service level guarantee tracking"}],["$","li",null,{"className":"industry-card-list-item bullet-6","children":"Enterprise integration APIs"}]]}]]}]]}],["$","div",null,{"className":"industry-card-hover-bottom","children":[["$","div",null,{"className":"industry-card-hover-icon","children":["$","svg",null,{"xmlns":"http://www.w3.org/2000/svg","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"3","strokeLinecap":"round","strokeLinejoin":"round","style":{"width":"20px","height":"20px"},"children":[["$","line",null,{"x1":"7","y1":"17","x2":"17","y2":"7"}],["$","polyline",null,{"points":"7 7 17 7 17 17"}]]}]}],["$","h4",null,{"className":"industry-card-hover-title","children":"Enterprise & B2B"}]]}]]}]]}] diff --git a/build/__next._full.txt b/build/__next._full.txt new file mode 100644 index 0000000..0e1bfd0 --- /dev/null +++ b/build/__next._full.txt @@ -0,0 +1,166 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +c:I[97677,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~5amg8el7~oa.js"],"default"] +d:I[58140,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~5amg8el7~oa.js"],"default"] +e:I[36854,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~5amg8el7~oa.js"],"default"] +19:I[68027,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/chunks/0v290txaarww5.css","style"] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"P":null,"c":["",""],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],{"children":[["$","$1","c",{"children":[["$","div",null,{"id":"home","className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":["$","div",null,{"data-elementor-type":"wp-page","data-elementor-id":"61","className":"elementor elementor-61","children":[["$","$Lc",null,{}],["$","$Ld",null,{}],["$","$Le",null,{}],["$","div",null,{"className":"elementor-element elementor-element-b62c0b3 e-con-full e-flex cut-corner-no sticky-container-off e-con e-parent","data-id":"b62c0b3","data-element_type":"container","data-e-type":"container","children":["$","div",null,{"className":"elementor-element elementor-element-592e9e8 e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"592e9e8","data-element_type":"container","data-e-type":"container","children":["$","div",null,{"className":"elementor-element elementor-element-ab41b28 elementor-widget elementor-widget-logico_marquee","data-id":"ab41b28","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_marquee.default","children":"$Lf"}]}]}],"$L10","$L11","$L12","$L13"]}]}]}]}],["$L14","$L15","$L16"],"$L17"]}],{},null,false,null]},null,false,null],"$L18",false]],"m":"$undefined","G":["$19",["$L1a"]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"kmSVPuUqY3Rhw5xy4D2nn"} +1d:I[32693,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~5amg8el7~oa.js"],"default"] +1e:I[24911,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~5amg8el7~oa.js"],"default"] +1f:I[14224,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~5amg8el7~oa.js"],"default"] +25:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +26:"$Sreact.suspense" +28:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +2a:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +f:["$","div",null,{"className":"elementor-widget-container","children":["$","div",null,{"className":"logico-ticker-wrapper","style":{"overflow":"hidden","position":"relative","width":"100%"},"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"\n @keyframes cssMarquee {\n 0% { transform: translate3d(0, 0, 0); }\n 100% { transform: translate3d(-33.33%, 0, 0); }\n }\n .marquee-container-css {\n display: flex;\n width: max-content;\n animation: cssMarquee 25s linear infinite;\n }\n .marquee-container-css:hover {\n animation-play-state: paused;\n }\n "}}],["$","div",null,{"className":"marquee-container-css","children":[["$","div","0",{"className":"ticker","style":{"display":"inline-flex","alignItems":"center","whiteSpace":"nowrap","paddingRight":"50px"},"children":[["$","span",null,{"className":"ticker-text","children":["$","p",null,{"style":{"margin":0,"display":"inline"},"children":"30% More Cost Efficient"}]}],["$","span",null,{"className":"separator","style":{"marginLeft":"25px","display":"inline-flex","alignItems":"center"},"children":["$","i",null,{"className":"fontello icon-half-logo"}]}]]}],["$","div","1",{"className":"ticker","style":{"display":"inline-flex","alignItems":"center","whiteSpace":"nowrap","paddingRight":"50px"},"children":[["$","span",null,{"className":"ticker-text","children":["$","p",null,{"style":{"margin":0,"display":"inline"},"children":"30% More Cost Efficient"}]}],["$","span",null,{"className":"separator","style":{"marginLeft":"25px","display":"inline-flex","alignItems":"center"},"children":["$","i",null,{"className":"fontello icon-half-logo"}]}]]}],["$","div","2",{"className":"ticker","style":{"display":"inline-flex","alignItems":"center","whiteSpace":"nowrap","paddingRight":"50px"},"children":[["$","span",null,{"className":"ticker-text","children":["$","p",null,{"style":{"margin":0,"display":"inline"},"children":"30% More Cost Efficient"}]}],["$","span",null,{"className":"separator","style":{"marginLeft":"25px","display":"inline-flex","alignItems":"center"},"children":["$","i",null,{"className":"fontello icon-half-logo"}]}]]}],["$","div","3",{"className":"ticker","style":{"display":"inline-flex","alignItems":"center","whiteSpace":"nowrap","paddingRight":"50px"},"children":[["$","span",null,{"className":"ticker-text","children":["$","p",null,{"style":{"margin":0,"display":"inline"},"children":"30% More Cost Efficient"}]}],["$","span",null,{"className":"separator","style":{"marginLeft":"25px","display":"inline-flex","alignItems":"center"},"children":["$","i",null,{"className":"fontello icon-half-logo"}]}]]}],["$","div","4",{"className":"ticker","style":{"display":"inline-flex","alignItems":"center","whiteSpace":"nowrap","paddingRight":"50px"},"children":[["$","span",null,{"className":"ticker-text","children":["$","p",null,{"style":{"margin":0,"display":"inline"},"children":"30% More Cost Efficient"}]}],["$","span",null,{"className":"separator","style":{"marginLeft":"25px","display":"inline-flex","alignItems":"center"},"children":["$","i",null,{"className":"fontello icon-half-logo"}]}]]}],["$","div","5",{"className":"ticker","style":{"display":"inline-flex","alignItems":"center","whiteSpace":"nowrap","paddingRight":"50px"},"children":[["$","span",null,{"className":"ticker-text","children":["$","p",null,{"style":{"margin":0,"display":"inline"},"children":"30% More Cost Efficient"}]}],["$","span",null,{"className":"separator","style":{"marginLeft":"25px","display":"inline-flex","alignItems":"center"},"children":["$","i",null,{"className":"fontello icon-half-logo"}]}]]}],["$","div","6",{"className":"ticker","style":{"display":"inline-flex","alignItems":"center","whiteSpace":"nowrap","paddingRight":"50px"},"children":[["$","span",null,{"className":"ticker-text","children":["$","p",null,{"style":{"margin":0,"display":"inline"},"children":"30% More Cost Efficient"}]}],["$","span",null,{"className":"separator","style":{"marginLeft":"25px","display":"inline-flex","alignItems":"center"},"children":["$","i",null,{"className":"fontello icon-half-logo"}]}]]}],["$","div","7",{"className":"ticker","style":{"display":"inline-flex","alignItems":"center","whiteSpace":"nowrap","paddingRight":"50px"},"children":[["$","span",null,{"className":"ticker-text","children":["$","p",null,{"style":{"margin":0,"display":"inline"},"children":"30% More Cost Efficient"}]}],"$L1b"]}],"$L1c"]}]]}]}] +10:["$","$L1d",null,{}] +11:["$","$L1e",null,{}] +12:["$","$L1f",null,{}] +20:T95e, + @media (max-width: 768px) { + .elementor-element.elementor-element-3b4a7cc { + --padding-left: 0px !important; + --padding-right: 0px !important; + padding-left: 0px !important; + padding-right: 0px !important; + box-sizing: border-box !important; + } + + .elementor-element.elementor-element-3b4a7cc > .e-con-inner { + width: 100% !important; + max-width: 100% !important; + margin-left: auto !important; + margin-right: auto !important; + padding-left: 0 !important; + padding-right: 0 !important; + } + + .elementor-element.elementor-element-d602f7f { + --padding-left: 20px !important; + --padding-right: 20px !important; + padding-left: 20px !important; + padding-right: 20px !important; + width: 100% !important; + max-width: 100% !important; + margin-left: 0 !important; + margin-right: 0 !important; + box-sizing: border-box !important; + } + + .elementor-element.elementor-element-f64bd88, + .elementor-element.elementor-element-5ed2dbb, + .elementor-element.elementor-element-6829276 { + --padding-left: 0px !important; + --padding-right: 0px !important; + --margin-left: 0px !important; + --margin-right: 0px !important; + width: 100% !important; + max-width: 100% !important; + margin-left: 0 !important; + margin-right: 0 !important; + padding-left: 0 !important; + padding-right: 0 !important; + box-sizing: border-box !important; + } + + .elementor-element.elementor-element-6829276 { + --e-con-grid-template-columns: minmax(0, 1fr) !important; + --grid-justify-content: stretch !important; + --justify-items: stretch !important; + grid-template-columns: minmax(0, 1fr) !important; + justify-content: stretch !important; + justify-items: stretch !important; + min-width: 0 !important; + } + + .industry-solutions-grid, + .industry-card-link { + width: 100% !important; + max-width: 100% !important; + min-width: 0 !important; + } + + .industry-solutions-grid { + margin-left: 0 !important; + margin-right: 0 !important; + } + } + 13:[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$20"}}],["$","div",null,{"className":"elementor-element elementor-element-3b4a7cc e-flex e-con-boxed cut-corner-no sticky-container-off e-con e-parent","data-id":"3b4a7cc","data-element_type":"container","data-e-type":"container","children":["$","div",null,{"className":"e-con-inner","children":["$","div",null,{"className":"elementor-element elementor-element-d602f7f e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"d602f7f","data-element_type":"container","data-e-type":"container","children":[["$","div",null,{"className":"elementor-element elementor-element-f64bd88 e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"f64bd88","data-element_type":"container","data-e-type":"container","children":[["$","div",null,{"className":"elementor-element elementor-element-5ed2dbb e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"5ed2dbb","data-element_type":"container","data-e-type":"container","children":["$L21","$L22"]}],"$L23"]}],"$L24"]}]}]}]] +14:["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0v290txaarww5.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}] +15:["$","script","script-0",{"src":"/_next/static/chunks/07eq5is00w7sy.js","async":true,"nonce":"$undefined"}] +16:["$","script","script-1",{"src":"/_next/static/chunks/0~5amg8el7~oa.js","async":true,"nonce":"$undefined"}] +17:["$","$L25",null,{"children":["$","$26",null,{"name":"Next.MetadataOutlet","children":"$@27"}]}] +18:["$","$1","h",{"children":[null,["$","$L28",null,{"children":"$L29"}],["$","div",null,{"hidden":true,"children":["$","$L2a",null,{"children":["$","$26",null,{"name":"Next.Metadata","children":"$L2b"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}] +1a:["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}] +2d:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~5amg8el7~oa.js"],"ScrollReveal"] +2e:I[22016,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~5amg8el7~oa.js"],""] +2f:I[5500,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~5amg8el7~oa.js"],"Image"] +1b:["$","span",null,{"className":"separator","style":{"marginLeft":"25px","display":"inline-flex","alignItems":"center"},"children":["$","i",null,{"className":"fontello icon-half-logo"}]}] +1c:["$","div","8",{"className":"ticker","style":{"display":"inline-flex","alignItems":"center","whiteSpace":"nowrap","paddingRight":"50px"},"children":[["$","span",null,{"className":"ticker-text","children":["$","p",null,{"style":{"margin":0,"display":"inline"},"children":"30% More Cost Efficient"}]}],["$","span",null,{"className":"separator","style":{"marginLeft":"25px","display":"inline-flex","alignItems":"center"},"children":["$","i",null,{"className":"fontello icon-half-logo"}]}]]}] +2c:T65e, + /* Minimal section label — matches the "/ Doormile Approach /" pattern */ + .industry-section-label { + width: 100%; + } + .industry-section-label > .elementor-widget-container { + max-width: 100%; + margin: 12px 0 50px 0; + padding: 0 0 14px 0; + border-style: solid; + border-width: 0 0 1px 0; + border-color: rgba(17, 17, 17, 0.15); + } + .industry-section-label .logico-title { + font-size: 14px; + font-weight: 500; + line-height: 2.1429em; + letter-spacing: 2px; + text-transform: uppercase; + color: #111111; + } + @media (max-width: 1024px) { + .industry-section-label > .elementor-widget-container { + margin-bottom: 36px; + padding-bottom: 12px; + } + } + @media (max-width: 767px) { + .industry-section-label > .elementor-widget-container { + margin-bottom: 28px; + padding-bottom: 10px; + } + .industry-section-label .logico-title { + font-size: 12px; + letter-spacing: 1.5px; + } + } + 21:["$","div",null,{"className":"elementor-element elementor-element-c8162c4 elementor-widget elementor-widget-logico_heading industry-section-label","data-id":"c8162c4","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_heading.default","children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$2c"}}],["$","div",null,{"className":"elementor-widget-container","children":["$","div",null,{"className":"logico-title","children":"/ Industry Solutions /"}]}]]}] +22:["$","div",null,{"className":"elementor-element elementor-element-1487241 elementor-widget__width-initial elementor-widget elementor-widget-logico_heading","data-id":"1487241","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_heading.default","children":["$","div",null,{"className":"elementor-widget-container","style":{"margin":"30px 0 0 0"},"children":["$","h3",null,{"className":"logico-title","style":{"fontSize":"clamp(28px, 3.5vw, 48px)","lineHeight":"1.1","fontWeight":800,"textTransform":"uppercase","maxWidth":"900px"},"children":["$","$L2d",null,{"delay":0.05,"duration":0.8,"yOffset":25,"children":["Smart solutions built exclusively for your ",["$","span",null,{"style":{"color":"#c01227"},"children":"industry"}]]}]}]}]}] +23:["$","div",null,{"className":"elementor-element elementor-element-4af73cb e-con-full elementor-hidden-tablet elementor-hidden-mobile_extra elementor-hidden-mobile e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"4af73cb","data-element_type":"container","data-e-type":"container","children":["$","div",null,{"className":"elementor-element elementor-element-46f2f7d elementor-widget__width-initial elementor-widget elementor-widget-logico_button","data-id":"46f2f7d","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_button.default","children":["$","div",null,{"className":"elementor-widget-container"}]}]}] +24:["$","div",null,{"className":"elementor-element elementor-element-6829276 e-grid e-con-full cut-corner-no sticky-container-off e-con e-child","data-id":"6829276","data-element_type":"container","data-e-type":"container","children":["$","div",null,{"className":"industry-solutions-grid","children":[["$","$L2e",null,{"href":"/solutions","className":"industry-card-link","children":[["$","div",null,{"className":"industry-card-bg","children":["$","$L2f",null,{"src":"/images/tab-pic-1.webp","alt":"FMCG Logistics","fill":true,"style":{"objectFit":"cover"},"sizes":"(max-width: 768px) 100vw, (max-width: 1024px) 50vw, 33vw"}]}],["$","div",null,{"className":"industry-card-overlay"}],["$","div",null,{"className":"industry-card-hover-bg"}],["$","div",null,{"className":"industry-card-default-content","children":["$","h4",null,{"className":"industry-card-default-title","children":"FMCG"}]}],["$","div",null,{"className":"industry-card-hover-content","children":[["$","div",null,{"className":"industry-card-hover-top","children":[["$","p",null,{"className":"industry-card-description","children":"High volume, tight margins, zero tolerance for stockouts."}],["$","div",null,{"children":[["$","h5",null,{"className":"industry-card-section-title","children":"Challenges"}],["$","ul",null,{"className":"industry-card-list","children":[["$","li",null,{"className":"industry-card-list-item bullet-1","children":"Unpredictable demand spikes"}],["$","li",null,{"className":"industry-card-list-item bullet-2","children":"Fresh product expiry constraints"}],["$","li",null,{"className":"industry-card-list-item bullet-3","children":"Multi-stop route complexity"}]]}]]}],["$","div",null,{"children":[["$","h5",null,{"className":"industry-card-section-title","children":"Doormile Solutions"}],["$","ul",null,{"className":"industry-card-list","children":[["$","li",null,{"className":"industry-card-list-item bullet-4","children":"AI-driven demand-responsive routing"}],["$","li",null,{"className":"industry-card-list-item bullet-5","children":"Freshness-aware delivery prioritization"}],["$","li",null,{"className":"industry-card-list-item bullet-6","children":"Dynamic batch optimization"}]]}]]}]]}],["$","div",null,{"className":"industry-card-hover-bottom","children":[["$","div",null,{"className":"industry-card-hover-icon","children":["$","svg",null,{"xmlns":"http://www.w3.org/2000/svg","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"3","strokeLinecap":"round","strokeLinejoin":"round","style":{"width":"20px","height":"20px"},"children":[["$","line",null,{"x1":"7","y1":"17","x2":"17","y2":"7"}],["$","polyline",null,{"points":"7 7 17 7 17 17"}]]}]}],["$","h4",null,{"className":"industry-card-hover-title","children":"FMCG"}]]}]]}]]}],["$","$L2e",null,{"href":"/solutions","className":"industry-card-link","children":[["$","div",null,{"className":"industry-card-bg","children":["$","$L2f",null,{"src":"/images/tab-pic-2.webp","alt":"Pharma Logistics","fill":true,"style":{"objectFit":"cover"},"sizes":"(max-width: 768px) 100vw, (max-width: 1024px) 50vw, 33vw"}]}],["$","div",null,{"className":"industry-card-overlay"}],["$","div",null,{"className":"industry-card-hover-bg"}],["$","div",null,{"className":"industry-card-default-content","children":["$","h4",null,{"className":"industry-card-default-title","children":"Pharmaceutical"}]}],["$","div",null,{"className":"industry-card-hover-content","children":[["$","div",null,{"className":"industry-card-hover-top","children":[["$","p",null,{"className":"industry-card-description","children":"Temperature-sensitive, compliance-critical, life-saving."}],["$","div",null,{"children":[["$","h5",null,{"className":"industry-card-section-title","children":"Challenges"}],["$","ul",null,{"className":"industry-card-list","children":[["$","li",null,{"className":"industry-card-list-item bullet-1","children":"Cold chain integrity requirements"}],["$","li",null,{"className":"industry-card-list-item bullet-2","children":"Regulatory compliance tracking"}],["$","li",null,{"className":"industry-card-list-item bullet-3","children":"Critical delivery time windows"}]]}]]}],["$","div",null,{"children":[["$","h5",null,{"className":"industry-card-section-title","children":"Doormile Solutions"}],["$","ul",null,{"className":"industry-card-list","children":[["$","li",null,{"className":"industry-card-list-item bullet-4","children":"Real-time temperature monitoring"}],"$L30","$L31"]}]]}]]}],"$L32"]}]]}],"$L33"]}]}] +30:["$","li",null,{"className":"industry-card-list-item bullet-5","children":"Chain-of-custody documentation"}] +31:["$","li",null,{"className":"industry-card-list-item bullet-6","children":"Priority override for critical shipments"}] +32:["$","div",null,{"className":"industry-card-hover-bottom","children":[["$","div",null,{"className":"industry-card-hover-icon","children":["$","svg",null,{"xmlns":"http://www.w3.org/2000/svg","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"3","strokeLinecap":"round","strokeLinejoin":"round","style":{"width":"20px","height":"20px"},"children":[["$","line",null,{"x1":"7","y1":"17","x2":"17","y2":"7"}],["$","polyline",null,{"points":"7 7 17 7 17 17"}]]}]}],["$","h4",null,{"className":"industry-card-hover-title","children":"Pharmaceutical"}]]}] +33:["$","$L2e",null,{"href":"/solutions","className":"industry-card-link","children":[["$","div",null,{"className":"industry-card-bg","children":["$","$L2f",null,{"src":"/images/tab-pic-3.webp","alt":"Enterprise Logistics","fill":true,"style":{"objectFit":"cover"},"sizes":"(max-width: 768px) 100vw, (max-width: 1024px) 50vw, 33vw"}]}],["$","div",null,{"className":"industry-card-overlay"}],["$","div",null,{"className":"industry-card-hover-bg"}],["$","div",null,{"className":"industry-card-default-content","children":["$","h4",null,{"className":"industry-card-default-title","children":"Enterprise & B2B"}]}],["$","div",null,{"className":"industry-card-hover-content","children":[["$","div",null,{"className":"industry-card-hover-top","children":[["$","p",null,{"className":"industry-card-description","children":"High-value shipments with complex delivery requirements."}],["$","div",null,{"children":[["$","h5",null,{"className":"industry-card-section-title","children":"Challenges"}],["$","ul",null,{"className":"industry-card-list","children":[["$","li",null,{"className":"industry-card-list-item bullet-1","children":"Appointment scheduling coordination"}],["$","li",null,{"className":"industry-card-list-item bullet-2","children":"White-glove delivery standards"}],["$","li",null,{"className":"industry-card-list-item bullet-3","children":"Multi-location routing complexity"}]]}]]}],["$","div",null,{"children":[["$","h5",null,{"className":"industry-card-section-title","children":"Doormile Solutions"}],["$","ul",null,{"className":"industry-card-list","children":[["$","li",null,{"className":"industry-card-list-item bullet-4","children":"Automated appointment optimization"}],["$","li",null,{"className":"industry-card-list-item bullet-5","children":"Service level guarantee tracking"}],["$","li",null,{"className":"industry-card-list-item bullet-6","children":"Enterprise integration APIs"}]]}]]}]]}],["$","div",null,{"className":"industry-card-hover-bottom","children":[["$","div",null,{"className":"industry-card-hover-icon","children":["$","svg",null,{"xmlns":"http://www.w3.org/2000/svg","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"3","strokeLinecap":"round","strokeLinejoin":"round","style":{"width":"20px","height":"20px"},"children":[["$","line",null,{"x1":"7","y1":"17","x2":"17","y2":"7"}],["$","polyline",null,{"points":"7 7 17 7 17 17"}]]}]}],["$","h4",null,{"className":"industry-card-hover-title","children":"Enterprise & B2B"}]]}]]}]]}] +29:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] +34:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +27:null +2b:[["$","title","0",{"children":"Doormile — Delivering Trust. Beyond Boundaries"}],["$","meta","1",{"name":"description","content":"Doormile helps logistics companies track every mile with MileTruth™ AI. Real-time SLA protection and connected miles visibility."}],["$","meta","2",{"name":"robots","content":"index, follow"}],["$","link","3",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","4",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","5",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","6",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L34","7",{}]] diff --git a/build/__next._head.txt b/build/__next._head.txt new file mode 100644 index 0000000..bbd69c1 --- /dev/null +++ b/build/__next._head.txt @@ -0,0 +1,6 @@ +1:"$Sreact.fragment" +2:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +3:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +4:"$Sreact.suspense" +5:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +0:{"rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"Doormile — Delivering Trust. Beyond Boundaries"}],["$","meta","1",{"name":"description","content":"Doormile helps logistics companies track every mile with MileTruth™ AI. Real-time SLA protection and connected miles visibility."}],["$","meta","2",{"name":"robots","content":"index, follow"}],["$","link","3",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","4",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","5",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","6",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L5","7",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/__next._index.txt b/build/__next._index.txt new file mode 100644 index 0000000..d0b3355 --- /dev/null +++ b/build/__next._index.txt @@ -0,0 +1,15 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","template":["$","$La",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/__next._tree.txt b/build/__next._tree.txt new file mode 100644 index 0000000..d754cc3 --- /dev/null +++ b/build/__next._tree.txt @@ -0,0 +1,10 @@ +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/chunks/0v290txaarww5.css","style"] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"tree":{"name":"","param":null,"prefetchHints":16,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}},"staleTime":300,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/_next/static/chunks/0-8o5q..xlrv7.js b/build/_next/static/chunks/0-8o5q..xlrv7.js new file mode 100644 index 0000000..dbfdc86 --- /dev/null +++ b/build/_next/static/chunks/0-8o5q..xlrv7.js @@ -0,0 +1,212 @@ +(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,67585,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"BailoutToCSR",{enumerable:!0,get:function(){return r}});let i=e.r(32061);function r({reason:e,children:t}){if("u"{"use strict";function i(e){return e.split("/").map(e=>encodeURIComponent(e)).join("/")}Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"encodeURIPath",{enumerable:!0,get:function(){return i}})},52157,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"PreloadChunks",{enumerable:!0,get:function(){return s}});let i=e.r(43476),r=e.r(74080),o=e.r(63599),l=e.r(9885),a=e.r(43369);function s({moduleIds:e}){if("u">typeof window)return null;let t=o.workAsyncStorage.getStore();if(void 0===t)return null;let n=[];if(t.reactLoadableManifest&&e){let i=t.reactLoadableManifest;for(let t of e){if(!i[t])continue;let e=i[t].files;n.push(...e)}}if(0===n.length)return null;let m=(0,a.getAssetTokenQuery)();return(0,i.jsx)(i.Fragment,{children:n.map(e=>{let n=`${t.assetPrefix}/_next/${(0,l.encodeURIPath)(e)}${m}`;return e.endsWith(".css")?(0,i.jsx)("link",{precedence:"dynamic",href:n,rel:"stylesheet",as:"style",nonce:t.nonce},e):((0,r.preload)(n,{as:"script",fetchPriority:"low",nonce:t.nonce}),null)})})}},69093,(e,t,n)=>{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"default",{enumerable:!0,get:function(){return m}});let i=e.r(43476),r=e.r(71645),o=e.r(67585),l=e.r(52157);function a(e){return{default:e&&"default"in e?e.default:e}}let s={loader:()=>Promise.resolve(a(()=>null)),loading:null,ssr:!0},m=function(e){let t={...s,...e},n=(0,r.lazy)(()=>t.loader().then(a)),m=t.loading;function c(e){let a=m?(0,i.jsx)(m,{isLoading:!0,pastDelay:!0,error:null}):null,s=!t.ssr||!!t.loading,c=s?r.Suspense:r.Fragment,d=t.ssr?(0,i.jsxs)(i.Fragment,{children:["u"{"use strict";Object.defineProperty(n,"__esModule",{value:!0}),Object.defineProperty(n,"default",{enumerable:!0,get:function(){return r}});let i=e.r(55682)._(e.r(69093));function r(e,t){let n={};"function"==typeof e&&(n.loader=e);let r={...n,...t};return(0,i.default)({...r,modules:r.loadableGenerated?.modules})}("function"==typeof n.default||"object"==typeof n.default&&null!==n.default)&&void 0===n.default.__esModule&&(Object.defineProperty(n.default,"__esModule",{value:!0}),Object.assign(n.default,n),t.exports=n.default)},74528,e=>{"use strict";var t=e.i(43476),n=e.i(71645);e.s(["default",0,function(){let[e,i]=(0,n.useState)(0);(0,n.useEffect)(()=>{let e=setInterval(()=>{i(e=>+(0===e))},7e3);return()=>clearInterval(e)},[]);let r=e=>{i(e)};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("link",{rel:"preload",as:"image",href:"/images/home2-banner-1.webp"}),(0,t.jsx)("style",{dangerouslySetInnerHTML:{__html:` + .howits-hero-custom-bg.elementor-repeater-item-3264830, + .howits-hero-custom-bg.elementor-repeater-item-6867061 { + background-image: linear-gradient(rgba(0, 0, 0, 0.6), rgba(0, 0, 0, 0.1)), url('/images/home2-banner-1.webp') !important; + background-position: center !important; + background-repeat: no-repeat !important; + background-size: cover !important; + } + + .howits-hero-custom-bg.elementor-repeater-item-6867061 { + background-image: linear-gradient(rgba(0, 0, 0, 0.6), rgba(0, 0, 0, 0.1)), url('/images/home1-slide-2.webp') !important; + background-position: center !important; + background-repeat: no-repeat !important; + background-size: cover !important; + } + + /* Center alignments for standard content slider elements */ + .elementor-element.elementor-element-6c7cbcb .slide-content { + display: flex !important; + flex-direction: column !important; + justify-content: center !important; + align-items: center !important; + text-align: center !important; + width: 100% !important; + height: 100% !important; + padding: 0 !important; + box-sizing: border-box !important; + } + + .elementor-element.elementor-element-6c7cbcb .slide-content-inner { + display: flex !important; + flex-direction: column !important; + justify-content: center !important; + align-items: center !important; + text-align: center !important; + width: 100% !important; + max-width: 1000px !important; + margin: 0 auto !important; + /* site.css gives the inner content-box sizing + 20px padding, + which makes it 40px wider than its parent and overflows. + Force border-box so width:100% actually fits. */ + box-sizing: border-box !important; + } + + .elementor-element.elementor-element-6c7cbcb .content-slider-item-heading, + .elementor-element.elementor-element-6c7cbcb .content-slider-item-heading .heading-content { + text-align: center !important; + display: block !important; + width: 100% !important; + margin-left: auto !important; + margin-right: auto !important; + padding-left: 15px !important; + padding-right: 15px !important; + } + + .elementor-element.elementor-element-6c7cbcb .content-slider-item-text { + display: flex !important; + justify-content: center !important; + width: 100% !important; + margin-top: 23px !important; + } + + .elementor-element.elementor-element-6c7cbcb .text-content { + text-align: center !important; + max-width: 820px !important; + margin: 0 auto !important; + padding-left: 15px !important; + padding-right: 15px !important; + } + + /* Larger, more readable hero subtitle on large/4K screens */ + .elementor-element.elementor-element-6c7cbcb .content-slider-item-text p { + font-size: clamp(16px, 1.35vw, 23px) !important; + line-height: 1.65 !important; + } + + @media (min-width: 1025px) { + /* Match Home's hero frame so the floating navbar sits with the same + breathing space. Home (.elementor-61) frames the hero card at 20px; + this page falls through to the shared kit's 32px base. */ + .elementor-element.elementor-element-741f56c { + padding: 20px !important; + } + .elementor-element.elementor-element-6c7cbcb .owl-carousel.owl-theme .content-item { + height: 800px !important; + min-height: 800px !important; + } + } + + @media (max-width: 1024px) { + .elementor-element.elementor-element-741f56c { + width: 100% !important; + max-width: 100% !important; + margin-left: auto !important; + margin-right: auto !important; + --padding-top: 0px !important; + --padding-block-start: 0px !important; + padding: 0 10px 10px 10px !important; + overflow: hidden !important; + border-radius: 25px !important; + } + + /* Collapse the stage-outer to the slide height so no empty + black space is left below the hero card on mobile/tablet. */ + .elementor-element.elementor-element-6c7cbcb .owl-stage-outer { + height: 620px !important; + } + + .elementor-element.elementor-element-6c7cbcb .owl-carousel.owl-theme .content-item { + width: 100% !important; + min-height: 620px !important; + height: 620px !important; + border-radius: 25px !important; + overflow: hidden !important; + } + + .elementor-element.elementor-element-6c7cbcb .slide-content { + width: 100% !important; + min-height: 620px !important; + padding-left: 0 !important; + padding-right: 0 !important; + box-sizing: border-box !important; + } + } + + @media (max-width: 767px) { + .elementor-element.elementor-element-741f56c { + width: 100% !important; + max-width: 100% !important; + --padding-top: 0px !important; + --padding-block-start: 0px !important; + padding: 0 10px 10px 10px !important; + border-radius: 22px !important; + } + + .elementor-element.elementor-element-6c7cbcb .owl-stage-outer { + height: 560px !important; + } + + .elementor-element.elementor-element-6c7cbcb .owl-carousel.owl-theme .content-item { + min-height: 560px !important; + height: 560px !important; + border-radius: 22px !important; + } + + /* Center BOTH slides' content. Use the .elementor prefix + + repeater-item classes so these beat the per-slide rules in + site.css (slide 1 has no centering there; slide 2 carries an + asymmetric top margin). */ + .elementor .elementor-element.elementor-element-6c7cbcb .slide-content { + min-height: 560px !important; + padding-left: 0 !important; + padding-right: 0 !important; + align-items: center !important; + justify-content: center !important; + text-align: center !important; + } + + .elementor .elementor-element.elementor-element-6c7cbcb .elementor-repeater-item-3264830 .slide-content-inner, + .elementor .elementor-element.elementor-element-6c7cbcb .elementor-repeater-item-6867061 .slide-content-inner { + margin: 0 auto !important; + width: 100% !important; + max-width: 100% !important; + padding-left: 0 !important; + padding-right: 0 !important; + box-sizing: border-box !important; + align-items: center !important; + text-align: center !important; + } + + .elementor .elementor-element.elementor-element-6c7cbcb .content-slider-item-heading, + .elementor .elementor-element.elementor-element-6c7cbcb .content-slider-item-text, + .elementor .elementor-element.elementor-element-6c7cbcb .text-content { + text-align: center !important; + margin-left: auto !important; + margin-right: auto !important; + } + + /* Smaller, fitting heading so it never overflows the card edge. + site.css forced clamp(38px,11vw,48px) which clipped at 320px. */ + .elementor .elementor-element.elementor-element-6c7cbcb .elementor-repeater-item-3264830 .content-slider-item-heading, + .elementor .elementor-element.elementor-element-6c7cbcb .elementor-repeater-item-6867061 .content-slider-item-heading { + max-width: 100% !important; + font-size: clamp(26px, 8vw, 34px) !important; + line-height: 1.12 !important; + overflow-wrap: break-word !important; + } + + /* Slide counter ("01/02"): keep it bottom-RIGHT, aligned with the + hero text padding (22px) and lifted cleanly off the edge. */ + .elementor .elementor-element.elementor-element-6c7cbcb .slider-footer { + text-align: right !important; + margin-bottom: 24px !important; + } + .elementor .elementor-element.elementor-element-6c7cbcb .slider-footer .slider-pagination { + justify-content: flex-end !important; + margin-left: 22px !important; + margin-right: 22px !important; + } + /* The wide dot navigation eats the right side and shoves "01/02" to + the centre. Hide it on mobile (matching the home hero) so the + counter sits cleanly on the right. */ + .elementor .elementor-element.elementor-element-6c7cbcb .owl-dots { + display: none !important; + } + /* Hide the prev/next arrows on mobile (they overlap the counter) — + slides still auto-rotate, matching the home hero. */ + .elementor .elementor-element.elementor-element-6c7cbcb .owl-nav { + display: none !important; + } + } + `}}),(0,t.jsx)("div",{className:"elementor-element elementor-element-741f56c e-con-full e-flex cut-corner-no sticky-container-off e-con e-parent","data-id":"741f56c","data-element_type":"container","data-e-type":"container",children:(0,t.jsx)("div",{className:"elementor-element elementor-element-6c7cbcb elementor-widget elementor-widget-logico_content_slider","data-id":"6c7cbcb","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_content_slider.default",children:(0,t.jsx)("div",{className:"elementor-widget-container",children:(0,t.jsx)("div",{className:"logico-content-slider-widget",children:(0,t.jsx)("div",{className:"content-slider-wrapper",children:(0,t.jsx)("div",{className:"content-slider-container",children:(0,t.jsxs)("div",{className:"content-slider owl-carousel owl-theme nav-view-vertical nav-h-position-right nav-v-position-bottom owl-loaded owl-drag",children:[(0,t.jsx)("div",{className:"owl-stage-outer",style:{position:"relative",overflow:"hidden",height:"800px"},children:(0,t.jsxs)("div",{className:"owl-stage",style:{position:"relative",width:"100%",height:"100%"},children:[(0,t.jsx)("div",{className:`owl-item ${0===e?"active":""}`,style:{position:"relative",width:"100%",opacity:+(0===e),visibility:0===e?"visible":"hidden",transition:"opacity 0.8s ease-in-out, visibility 0.8s ease-in-out",zIndex:0===e?2:1},children:(0,t.jsx)("div",{className:"content-item slider-item elementor-repeater-item-3264830 slide-style-standard howits-hero-custom-bg",children:(0,t.jsx)("div",{className:"slide-content",children:(0,t.jsxs)("div",{className:"slide-content-inner",children:[(0,t.jsx)("h1",{className:"content-slider-item-heading logico-content-wrapper-1",children:(0,t.jsxs)("span",{className:"heading-content",children:["One Journey. Complete",(0,t.jsx)("br",{}),"Control."]})}),(0,t.jsx)("div",{className:"content-slider-item-text logico-content-wrapper-2",children:(0,t.jsx)("div",{className:"text-content",children:(0,t.jsx)("p",{children:"See how Doormile connects first, mid, and last mile into a seamless delivery experience powered by MileTruth™ AI."})})})]})})})}),(0,t.jsx)("div",{className:`owl-item ${1===e?"active":""}`,style:{position:"absolute",top:0,left:0,width:"100%",opacity:+(1===e),visibility:1===e?"visible":"hidden",transition:"opacity 0.8s ease-in-out, visibility 0.8s ease-in-out",zIndex:1===e?2:1},children:(0,t.jsx)("div",{className:"content-item slider-item elementor-repeater-item-6867061 slide-style-standard howits-hero-custom-bg",children:(0,t.jsx)("div",{className:"slide-content",children:(0,t.jsxs)("div",{className:"slide-content-inner",children:[(0,t.jsx)("h1",{className:"content-slider-item-heading logico-content-wrapper-1",children:(0,t.jsxs)("span",{className:"heading-content",children:["A New Logisitics",(0,t.jsx)("br",{}),"Experience"]})}),(0,t.jsx)("div",{className:"content-slider-item-text logico-content-wrapper-2",children:(0,t.jsx)("div",{className:"text-content",children:(0,t.jsx)("p",{children:"See how Doormile connects first, mid, and last mile into a seamless delivery experience powered by MileTruth™ AI."})})})]})})})})]})}),(0,t.jsxs)("div",{className:"owl-nav",children:[(0,t.jsx)("button",{type:"button",className:"owl-next",onClick:()=>i(e=>+(0===e)),"aria-label":"Next",style:{cursor:"pointer",border:"none",outline:"none"}}),(0,t.jsx)("button",{type:"button",className:"owl-prev",onClick:()=>i(e=>+(0===e)),"aria-label":"Previous",style:{cursor:"pointer",border:"none",outline:"none"}})]}),(0,t.jsx)("div",{className:"slider-footer slider-footer-position-after slider-footer-width-full slider-footer-view-inside",children:(0,t.jsx)("div",{className:"slider-footer-content",children:(0,t.jsxs)("div",{className:"slider-pagination",style:{display:"flex",justifyContent:"flex-end",alignItems:"center",gap:"10px"},children:[(0,t.jsxs)("div",{className:"slider-progress-wrapper",style:{marginRight:"35px",display:"flex",flexDirection:"column",alignItems:"flex-start"},children:[(0,t.jsxs)("div",{style:{fontSize:"16px",fontWeight:600,color:"#FFFFFF",marginBottom:"4px"},children:[(0,t.jsx)("span",{className:"slider-progress-current",children:0===e?"01":"02"})," / ",(0,t.jsx)("span",{className:"slider-progress-all",style:{opacity:.6},children:"02"})]}),(0,t.jsx)("div",{style:{width:"80px",height:"2px",background:"rgba(255, 255, 255, 0.2)",position:"relative",borderRadius:"1px",overflow:"hidden"},children:(0,t.jsx)("div",{style:{position:"absolute",left:0===e?"0":"50%",width:"50%",height:"100%",background:"#c01227",transition:"left 0.3s ease"}})})]}),(0,t.jsxs)("div",{className:"owl-dots owl-dots-6c7cbcb",style:{display:"none"},children:[(0,t.jsx)("button",{type:"button",role:"button",className:`owl-dot ${0===e?"active":""}`,onClick:()=>r(0),children:(0,t.jsx)("span",{})}),(0,t.jsx)("button",{type:"button",role:"button",className:`owl-dot ${1===e?"active":""}`,onClick:()=>r(1),children:(0,t.jsx)("span",{})})]})]})})})]})})})})})})})]})}])},16948,e=>{"use strict";var t=e.i(43476);let n=(0,e.i(70703).default)(()=>e.A(19386),{loadableGenerated:{modules:[88493]},ssr:!1,loading:()=>(0,t.jsx)("div",{style:{minHeight:"100vh"},"aria-hidden":!0})});e.s(["default",0,function(){return(0,t.jsx)(n,{})}])},19386,e=>{e.v(t=>Promise.all(["static/chunks/0b561qo91.1jg.js","static/chunks/04vqjcwjasc-3.js","static/chunks/0_54tjq7o59~u.js","static/chunks/0jraq7~~gf402.js","static/chunks/0zozt9p9-3srt.css"].map(t=>e.l(t))).then(()=>t(88493)))}]); \ No newline at end of file diff --git a/build/_next/static/chunks/0-kxqnmnjtk7l.js b/build/_next/static/chunks/0-kxqnmnjtk7l.js new file mode 100644 index 0000000..1686cf0 --- /dev/null +++ b/build/_next/static/chunks/0-kxqnmnjtk7l.js @@ -0,0 +1,57 @@ +(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,69986,e=>{"use strict";var t=e.i(43476),r=e.i(71645),n=e.i(75056),i=e.i(25234),s=e.i(79877),o=e.i(33623),a=e.i(90072);let l="#08080c",c="#C01227",u="#E2354A",d="#7E1420",p="#F2667A",h="#3c3c46",m="#6a6a76",f="#43434d",x="#7c7c86",g="#22C55E",y="#FFFFFF",M=[c,f,x,f,x,f],b=["Multi-Trip","Proximity","Balanced","Fuel Saver","EV-Aware","Time-Aware"],j=[{at:0,pos:[0,20,27],look:[0,1.4,0]},{at:.13,pos:[-2.5,20,26.5],look:[-.5,1.2,0]},{at:.28,pos:[3,18.5,25.5],look:[.6,.8,-.8]},{at:.44,pos:[0,23,24.5],look:[0,1,0]},{at:.6,pos:[2.5,21,25.5],look:[0,1.2,0]},{at:.74,pos:[-2,20,26.5],look:[0,1.2,0]},{at:.88,pos:[0,22,25.5],look:[0,1.8,0]},{at:1,pos:[0,21.5,25.5],look:[0,2,0]}];function v(e){return e<0?0:e>1?1:e}function w(e,t,r){let n=v((r-e)/(t-e||1));return n*n*(3-2*n)}function A(e,t,r,n){return e+(t-e)*(1-Math.exp(-r*n))}function B(e){let t=43758.5453*Math.sin(127.1*e+311.7);return t-Math.floor(t)}function z(e,t=0){let r=new Float32Array(3*e),n=Math.PI*(3-Math.sqrt(5));for(let i=0;iz(j,.18),[j]),S=(0,r.useMemo)(()=>z(B,.55),[B]),W=(0,r.useMemo)(()=>z(Math.floor(.6*B),.7),[B]);return(0,i.useFrame)((t,r)=>{let n=e.current??0;b.current=A(b.current,n,3,r);let i=b.current,a=t.clock.elapsedTime,u=s.current;if(!u)return;let d=w(0,.13,i),p=w(.44,.5,i)*(1-w(.74,.88,i)),h=w(.88,1,i),m=.5*(.001+.999*d)*(1-.32*p)*(1+.18*h)*(1+.03*Math.sin(.9*a));if(u.scale.setScalar(m),u.position.y=3+.18*Math.sin(.6*a),u.rotation.y=.12*a,o.current&&o.current.rotation.set(.18*a,.24*a,0),l.current&&l.current.rotation.set(-(.22*a),.16*a,.1*a),x.current&&(x.current.rotation.y=.06*a),g.current&&(g.current.rotation.y=.35*a,g.current.rotation.x=.3*Math.sin(.2*a)),M.current&&(M.current.rotation.y=-(.28*a),M.current.rotation.z=.18*a),c.current){let e=1+.06*Math.sin(1.6*a)+.4*h;c.current.scale.setScalar(e)}f.current&&(f.current.opacity=v(.22+.05*Math.sin(1.6*a)+.25*h)*d)}),(0,t.jsxs)("group",{ref:s,position:[0,3,0],children:[(0,t.jsxs)("mesh",{children:[(0,t.jsx)("sphereGeometry",{args:[.95,24,24]}),(0,t.jsx)("meshBasicMaterial",{color:d,transparent:!0,opacity:.18,blending:a.AdditiveBlending,depthWrite:!1})]}),(0,t.jsxs)("mesh",{children:[(0,t.jsx)("sphereGeometry",{args:[.42,24,24]}),(0,t.jsx)("meshBasicMaterial",{color:y,transparent:!0,opacity:.9,blending:a.AdditiveBlending,depthWrite:!1})]}),(0,t.jsxs)("mesh",{ref:o,children:[(0,t.jsx)("icosahedronGeometry",{args:[1.35,1]}),(0,t.jsx)("meshBasicMaterial",{color:u,wireframe:!0,transparent:!0,opacity:.55,blending:a.AdditiveBlending,depthWrite:!1})]}),(0,t.jsxs)("mesh",{ref:l,children:[(0,t.jsx)("icosahedronGeometry",{args:[1.7,2]}),(0,t.jsx)("meshBasicMaterial",{color:h,wireframe:!0,transparent:!0,opacity:.32,blending:a.AdditiveBlending,depthWrite:!1})]}),(0,t.jsxs)("points",{ref:x,children:[(0,t.jsx)("bufferGeometry",{children:(0,t.jsx)("bufferAttribute",{attach:"attributes-position",args:[R,3]})}),(0,t.jsx)("pointsMaterial",{size:n?.05:.045,color:p,transparent:!0,opacity:.85,sizeAttenuation:!0,blending:a.AdditiveBlending,depthWrite:!1})]}),(0,t.jsxs)("points",{ref:g,scale:1.6,children:[(0,t.jsx)("bufferGeometry",{children:(0,t.jsx)("bufferAttribute",{attach:"attributes-position",args:[S,3]})}),(0,t.jsx)("pointsMaterial",{size:.04,color:u,transparent:!0,opacity:.6,sizeAttenuation:!0,blending:a.AdditiveBlending,depthWrite:!1})]}),(0,t.jsxs)("points",{ref:M,scale:2,children:[(0,t.jsx)("bufferGeometry",{children:(0,t.jsx)("bufferAttribute",{attach:"attributes-position",args:[W,3]})}),(0,t.jsx)("pointsMaterial",{size:.035,color:m,transparent:!0,opacity:.45,sizeAttenuation:!0,blending:a.AdditiveBlending,depthWrite:!1})]}),(0,t.jsxs)("mesh",{ref:c,rotation:[Math.PI/2,0,0],children:[(0,t.jsx)("ringGeometry",{args:[2.1,2.25,64]}),(0,t.jsx)("meshBasicMaterial",{ref:f,color:u,transparent:!0,opacity:.22,side:a.DoubleSide,blending:a.AdditiveBlending,depthWrite:!1})]})]})}),S=new a.Object3D,W=new a.Color,k=` + attribute vec3 aSize; + attribute float aSeed; + varying vec2 vWinUv; + varying vec3 vWinNrm; + varying vec3 vWinSize; + varying float vWinSeed; +`,G=` + vWinUv = uv; + vWinNrm = normal; + vWinSize = aSize; + vWinSeed = aSeed; +`,C=` + uniform float uTime; + varying vec2 vWinUv; + varying vec3 vWinNrm; + varying vec3 vWinSize; + varying float vWinSeed; + float h11(float p){ p = fract(p*0.1031); p *= p+33.33; p *= p+p; return fract(p); } + float h21(vec2 p){ vec3 p3 = fract(vec3(p.xyx)*0.1031); p3 += dot(p3, p3.yzx+33.33); return fract((p3.x+p3.y)*p3.z); } +`,I=` + // facade tint varies per building — dark neutral charcoal (brand: near-black) + vec3 baseA = vec3(0.040, 0.040, 0.048); + vec3 baseB = vec3(0.065, 0.058, 0.066); + diffuseColor.rgb = mix(baseA, baseB, h11(vWinSeed*1.7)); + + // windows only on the four vertical faces (skip roof/floor) + float isVert = 1.0 - step(0.5, abs(vWinNrm.y)); + vec2 faceDim = abs(vWinNrm.x) > 0.5 ? vec2(vWinSize.z, vWinSize.y) : vec2(vWinSize.x, vWinSize.y); + vec2 cells = max(vec2(1.0), floor(faceDim / 0.52)); + vec2 g = vWinUv * cells; + vec2 id = floor(g); + vec2 f = fract(g); + float m = 0.16; // mullion margin + float pane = step(m, f.x) * step(f.x, 1.0 - m) * step(m, f.y) * step(f.y, 1.0 - m); + + float rnd = h21(id + vWinSeed * 37.0); + float lit = step(0.68, rnd); // ~32% of windows lit (dimmer skyline backdrop) + float toggle = step(0.97, h21(id * 1.31 + vWinSeed * 5.0 + floor(uTime * 0.5))); + lit = clamp(lit + toggle, 0.0, 1.0); // a few flick on/off over time + float flick = 0.9 + 0.1 * sin(uTime * 2.0 + rnd * 30.0); + + // Brand-tinted windows: mostly warm white with occasional brand-red panes. + vec3 warmWhite = vec3(1.0, 0.88, 0.80); + vec3 brandRed = vec3(0.82, 0.18, 0.24); + vec3 wcol = mix(warmWhite, brandRed, step(0.7, h21(id * 0.7 + vWinSeed))); + + float glow = isVert * pane * lit * flick; + totalEmissiveRadiance += wcol * glow * 0.85; + + // dark mullion grid + dimmer unlit glass + diffuseColor.rgb *= (0.42 + 0.58 * pane); +`,F=r.default.memo(function({progress:e,isMobile:n=!1}){let s=(0,r.useRef)(null),o=(0,r.useRef)(null),l=(0,r.useRef)(null),p=(0,r.useRef)(null),m=(0,r.useRef)(null),f=(0,r.useRef)(null),x=(0,r.useRef)(null),g=(0,r.useRef)(null),y=(0,r.useRef)(null),b=(0,r.useRef)(null),j=(0,r.useRef)(0),v=n?20:34,z=(0,r.useMemo)(()=>{let e=[];for(let t=0;t3.4&&B(13.3*t)>.42,d=u?.62*l:l,p=Math.floor(4*B(17.7*t))*Math.PI/8+.12*B(4.1*t),h=l>5;e.push({x:i,z:s,w:o,d:a,h:l,bodyH:d,rot:p,ci:c,tier:u,tall:h})}let t=e.filter(e=>e.tier),r=e.filter(e=>e.tall),n=new a.BoxGeometry(1,1,1),i=new Float32Array(3*v),s=new Float32Array(v);e.forEach((e,t)=>{i[3*t]=e.w,i[3*t+1]=e.bodyH,i[3*t+2]=e.d,s[t]=10*B(23.1*t)}),n.setAttribute("aSize",new a.InstancedBufferAttribute(i,3)),n.setAttribute("aSeed",new a.InstancedBufferAttribute(s,1));let o=new a.BoxGeometry(1,1,1),l=new Float32Array(3*Math.max(1,t.length)),c=new Float32Array(Math.max(1,t.length));return t.forEach((e,t)=>{let r=.64*e.w,n=.64*e.d,i=e.h-e.bodyH;l[3*t]=r,l[3*t+1]=i,l[3*t+2]=n,c[t]=10*B(29.7*t)}),o.setAttribute("aSize",new a.InstancedBufferAttribute(l,3)),o.setAttribute("aSeed",new a.InstancedBufferAttribute(c,1)),{buildings:e,tierList:t,tallList:r,bodyGeom:n,tierGeom:o}},[v]),R=(0,r.useMemo)(()=>{let e=new a.MeshStandardMaterial({color:"#0c1226",emissive:"#000000",metalness:.35,roughness:.62});return e.onBeforeCompile=e=>{e.uniforms.uTime={value:0},b.current=e,e.vertexShader=e.vertexShader.replace("#include ",`#include +${k}`).replace("#include ",`#include +${G}`),e.fragmentShader=e.fragmentShader.replace("#include ",`#include +${C}`).replace("#include ",`#include +${I}`)},e},[]),F=(0,r.useMemo)(()=>{let e=[];for(let t=0;t<12;t++){let r=t/12*Math.PI*2,n=19*(.72+.26*B(4.4*t));e.push(+Math.cos(r),.04,+Math.sin(r)),e.push(Math.cos(r)*n,.04,Math.sin(r)*n)}for(let t of[3.5,7,11,15])for(let r=0;r<64;r++){let n=r/64*Math.PI*2,i=(r+1)/64*Math.PI*2;e.push(Math.cos(n)*t,.04,Math.sin(n)*t),e.push(Math.cos(i)*t,.04,Math.sin(i)*t)}let t=new a.BufferGeometry;return t.setAttribute("position",new a.Float32BufferAttribute(e,3)),t},[]);return(0,r.useLayoutEffect)(()=>{let{buildings:e,tierList:t,tallList:r}=z;o.current&&(e.forEach((e,t)=>{S.position.set(e.x,e.bodyH/2,e.z),S.rotation.set(0,e.rot,0),S.scale.set(e.w,e.bodyH,e.d),S.updateMatrix(),o.current.setMatrixAt(t,S.matrix)}),o.current.instanceMatrix.needsUpdate=!0),l.current&&(t.forEach((e,t)=>{let r=e.h-e.bodyH;S.position.set(e.x,e.bodyH+r/2,e.z),S.rotation.set(0,e.rot,0),S.scale.set(.64*e.w,r,.64*e.d),S.updateMatrix(),l.current.setMatrixAt(t,S.matrix)}),l.current.instanceMatrix.needsUpdate=!0),p.current&&(e.forEach((e,t)=>{let r=e.h,n=e.tier?.64*e.w:e.w,i=e.tier?.64*e.d:e.d;S.position.set(e.x,r+.03,e.z),S.rotation.set(0,e.rot,0),S.scale.set(1.02*n,.07,1.02*i),S.updateMatrix(),p.current.setMatrixAt(t,S.matrix),p.current.setColorAt(t,W.set(M[e.ci]))}),p.current.instanceMatrix.needsUpdate=!0,p.current.instanceColor&&(p.current.instanceColor.needsUpdate=!0)),m.current&&f.current&&(r.forEach((e,t)=>{S.position.set(e.x,e.h+.34,e.z),S.rotation.set(0,0,0),S.scale.set(.05,.68,.05),S.updateMatrix(),m.current.setMatrixAt(t,S.matrix),S.position.set(e.x,e.h+.7,e.z),S.scale.set(1,1,1),S.updateMatrix(),f.current.setMatrixAt(t,S.matrix)}),m.current.instanceMatrix.needsUpdate=!0,f.current.instanceMatrix.needsUpdate=!0)},[z]),(0,i.useFrame)((t,r)=>{let n=e.current??0;j.current=A(j.current,n,3,r);let i=j.current,o=t.clock.elapsedTime;b.current&&(b.current.uniforms.uTime.value=o);let a=w(.01,.15,i);s.current&&(s.current.scale.y=.001+.999*a),f.current&&(f.current.material.opacity=(.5+.3*Math.sin(2.2*o))*a),x.current&&(x.current.opacity=(0+.6*w(.02,.13,i))*(.78+.22*Math.sin(2.2*o)));let l=w(0,.13,i);if(g.current){let e=1+.35*o%1*6;g.current.scale.set(e,e,e),g.current.material.opacity=(1-.35*o%1)*.28*l}if(y.current){let e=1+(.35*o+.5)%1*6;y.current.scale.set(e,e,e),y.current.material.opacity=(1-(.35*o+.5)%1)*.28*l}}),(0,t.jsxs)("group",{children:[(0,t.jsx)("gridHelper",{args:[49.4,60,d,d],position:[0,0,0],children:(0,t.jsx)("lineBasicMaterial",{attach:"material",color:d,transparent:!0,opacity:.11,depthWrite:!1})}),(0,t.jsx)("lineSegments",{geometry:F,children:(0,t.jsx)("lineBasicMaterial",{ref:x,color:u,transparent:!0,opacity:0,blending:a.AdditiveBlending,depthWrite:!1})}),(0,t.jsxs)("mesh",{ref:g,rotation:[-Math.PI/2,0,0],position:[0,.03,0],children:[(0,t.jsx)("ringGeometry",{args:[1,1.12,48]}),(0,t.jsx)("meshBasicMaterial",{color:u,transparent:!0,opacity:0,blending:a.AdditiveBlending,depthWrite:!1})]}),(0,t.jsxs)("mesh",{ref:y,rotation:[-Math.PI/2,0,0],position:[0,.03,0],children:[(0,t.jsx)("ringGeometry",{args:[1,1.12,48]}),(0,t.jsx)("meshBasicMaterial",{color:h,transparent:!0,opacity:0,blending:a.AdditiveBlending,depthWrite:!1})]}),(0,t.jsxs)("group",{ref:s,children:[(0,t.jsx)("instancedMesh",{ref:o,args:[z.bodyGeom,R,z.buildings.length]}),z.tierList.length>0&&(0,t.jsx)("instancedMesh",{ref:l,args:[z.tierGeom,R,z.tierList.length]}),(0,t.jsxs)("instancedMesh",{ref:p,args:[void 0,void 0,z.buildings.length],children:[(0,t.jsx)("boxGeometry",{args:[1,1,1]}),(0,t.jsx)("meshBasicMaterial",{toneMapped:!1,transparent:!0,opacity:.9,blending:a.AdditiveBlending})]}),z.tallList.length>0&&(0,t.jsxs)("instancedMesh",{ref:m,args:[void 0,void 0,z.tallList.length],children:[(0,t.jsx)("boxGeometry",{args:[1,1,1]}),(0,t.jsx)("meshStandardMaterial",{color:"#11182c",metalness:.7,roughness:.4})]}),z.tallList.length>0&&(0,t.jsxs)("instancedMesh",{ref:f,args:[void 0,void 0,z.tallList.length],children:[(0,t.jsx)("sphereGeometry",{args:[.07,8,8]}),(0,t.jsx)("meshBasicMaterial",{color:c,toneMapped:!1,transparent:!0,opacity:.8,blending:a.AdditiveBlending,depthWrite:!1})]})]})]})});var P=e.i(60099);let V=[98,76,84,68,58,90],E={display:"flex",alignItems:"center",gap:"6px",padding:"4px 11px",borderRadius:"999px",background:"rgba(7,11,22,0.72)",border:"1px solid rgba(255,255,255,0.16)",color:"#eaf2ff",fontSize:"11px",fontWeight:600,letterSpacing:"0.04em",whiteSpace:"nowrap",backdropFilter:"blur(6px)",WebkitBackdropFilter:"blur(6px)",fontFamily:"var(--font-space-grotesk), system-ui, sans-serif",opacity:0,pointerEvents:"none",willChange:"opacity"},T=.36,U=new a.Color(g),L=new a.Color("#F59E0B"),H=new a.Color(c),D=new a.Color,$=r.default.memo(function({progress:e,isMobile:n=!1}){let s=(0,r.useRef)(0),o=(0,r.useRef)([]),l=(0,r.useRef)([]),d=(0,r.useRef)(null),h=(0,r.useRef)(null),m=(0,r.useRef)(null),f=(0,r.useRef)(null),x=(0,r.useRef)(null),j=(0,r.useRef)(null),z=(0,r.useMemo)(()=>M.map((e,t)=>{let r,n,i,s,o,l;return r=t/M.length*Math.PI*2+.4,n=9+4*B(6.1*t),i=new a.Vector3(Math.cos(r)*n,.16,Math.sin(r)*n),s=(B(3.7*t)-.5)*5,o=new a.Vector3(Math.cos(r)*n*.4+Math.cos(r+Math.PI/2)*s,.18,Math.sin(r)*n*.4+Math.sin(r+Math.PI/2)*s),l=new a.Vector3(0,.2,0),new a.CatmullRomCurve3([l,o,i])}),[]),R=(0,r.useMemo)(()=>z.map(e=>new a.TubeGeometry(e,60,.05,8,!1)),[z]),S=(0,r.useMemo)(()=>new a.CatmullRomCurve3([new a.Vector3(-11,.3,7),new a.Vector3(-4,.3,3),new a.Vector3(2.6,.3,-1.2),new a.Vector3(9.5,.3,-6.5)]),[]),W=(0,r.useMemo)(()=>new a.TubeGeometry(S,70,.07,8,!1),[S]),k=(0,r.useMemo)(()=>{let e=new a.CatmullRomCurve3([new a.Vector3(-11,.3,7),new a.Vector3(-3.5,.3,1.5),new a.Vector3(2.6,.6,-1.2),new a.Vector3(6.5,.3,-3),new a.Vector3(9.5,.3,-6.5)]);return new a.TubeGeometry(e,80,.08,8,!1)},[]),G=(0,r.useMemo)(()=>new a.Vector3(2.6,0,-1.2),[]),C=(0,r.useMemo)(()=>new a.Vector3,[]),I=(0,r.useMemo)(()=>M.map(e=>new a.Color(e)),[]),F=(0,r.useMemo)(()=>new a.Color(c),[]),$=(0,r.useRef)([]),N=(0,r.useRef)([]),O=(0,r.useRef)(null),_=(0,r.useMemo)(()=>z.map(e=>{let t=e.getPointAt(.82).clone();return t.y+=1,t}),[z]);return(0,i.useFrame)((t,r)=>{let n=e.current??0;s.current=A(s.current,n,3.2,r);let i=s.current,a=t.clock.elapsedTime,c=w(.1,.18,i),u=w(.13,.18,i),p=w(.28,.33,i),g=w(.6,.74,i),y=w(.74,.8,i),M=v((i-.74)/.26),b=w(.97,1,i);for(let e=0;e.02;if(r.visible=n,!n)continue;let i=((.14*a+.34*t)%1+1)%1;e.getPointAt(i,C),r.position.set(C.x,.3,C.z),e.getPointAt(Math.min(.999,i+.02),C),r.lookAt(C.x,.3,C.z),r.scale.setScalar(1e-4+w(0,.12,M)*(1-b))}}let R=w(.26,.28+.03,i),W=1-w(.46,.54,i),G=w(T-.015,T+.03,i),P=R*W,V=v((i-.28)/.15999999999999998);if(d.current){let e=G>.5?k.parameters.path:S;e.getPointAt(v(V),C),d.current.position.set(C.x,.32,C.z),e.getPointAt(v(V+.01),C),d.current.lookAt(C.x,.32,C.z),d.current.visible=P>.02,d.current.scale.setScalar(1e-4+P)}let E=v((i-.28)/(T-.28)),_=G>0?.14+.86*G:v(1-.92*E);if(h.current&&(h.current.scale.x=.02+.98*_,h.current.position.x=-.18*(1-_)),m.current&&(_>.5?D.copy(L).lerp(U,(_-.5)*2):D.copy(H).lerp(L,2*_),m.current.color.copy(D)),x.current){let e=w(T-.06,T,i);x.current.opacity=.55*Math.max(.4*R,e)*P*(1-G)*(.7+.3*Math.sin(5*a))}if(j.current&&(j.current.opacity=P*G*(.65+.25*Math.sin(3*a))),f.current&&(f.current.scale.y=1e-4+G,f.current.visible=G>.01&&W>.02),O.current){let e=G*W;O.current.style.opacity=e.toFixed(3),O.current.style.display=e<.02?"none":"flex"}}),(0,t.jsxs)("group",{children:[R.map((e,r)=>(0,t.jsxs)("group",{children:[(0,t.jsx)("mesh",{geometry:e,children:(0,t.jsx)("meshBasicMaterial",{ref:e=>{o.current[r]=e},color:M[r],toneMapped:!1,transparent:!0,opacity:0,blending:a.AdditiveBlending,depthWrite:!1})}),(0,t.jsxs)("mesh",{ref:e=>{l.current[r]=e},children:[(0,t.jsx)("sphereGeometry",{args:[1,12,12]}),(0,t.jsx)("meshBasicMaterial",{color:y,toneMapped:!1,transparent:!0,opacity:.95,blending:a.AdditiveBlending,depthWrite:!1})]})]},r)),_.map((e,r)=>{let i=0===r,s=4===r;if(n)return null;let o=i||s?c:M[r];return(0,t.jsx)(P.Html,{position:[e.x,e.y,e.z],center:!0,zIndexRange:[30,0],style:{pointerEvents:"none"},children:(0,t.jsxs)("div",{ref:e=>{N.current[r]=e},style:{...E,border:i?"1px solid rgba(226,53,66,0.85)":s?"1px solid rgba(239,68,68,0.7)":E.border,background:i?"rgba(28,8,11,0.85)":E.background,boxShadow:i?"0 0 22px rgba(192,18,39,0.6)":"none"},children:[(0,t.jsx)("span",{style:{width:7,height:7,borderRadius:"50%",background:o,boxShadow:`0 0 8px ${o}`}}),b[r],(0,t.jsx)("span",{style:{fontWeight:800,color:s?"#fca5a5":"#fff",marginLeft:2},children:V[r]}),i?(0,t.jsx)("span",{style:{color:"#4ade80",fontWeight:700},children:" ✓ Best"}):null,s?(0,t.jsx)("span",{style:{color:"#fca5a5",fontWeight:700},children:" ✕ Over range"}):null]})},`lbl${r}`)}),(0,t.jsx)("mesh",{geometry:W,children:(0,t.jsx)("meshBasicMaterial",{ref:x,color:c,toneMapped:!1,transparent:!0,opacity:0,blending:a.AdditiveBlending,depthWrite:!1})}),(0,t.jsx)("mesh",{geometry:k,children:(0,t.jsx)("meshBasicMaterial",{ref:j,color:g,toneMapped:!1,transparent:!0,opacity:0,blending:a.AdditiveBlending,depthWrite:!1})}),(0,t.jsxs)("group",{ref:f,position:G,visible:!1,children:[(0,t.jsxs)("mesh",{position:[0,.55,0],children:[(0,t.jsx)("boxGeometry",{args:[.32,1.1,.32]}),(0,t.jsx)("meshStandardMaterial",{color:"#0e1b14",emissive:g,emissiveIntensity:.6,metalness:.4,roughness:.5})]}),(0,t.jsxs)("mesh",{position:[0,1.18,0],children:[(0,t.jsx)("boxGeometry",{args:[.5,.18,.42]}),(0,t.jsx)("meshBasicMaterial",{color:g,toneMapped:!1,transparent:!0,opacity:.9,blending:a.AdditiveBlending})]}),(0,t.jsxs)("mesh",{rotation:[-Math.PI/2,0,0],position:[0,.03,0],children:[(0,t.jsx)("ringGeometry",{args:[.5,.62,40]}),(0,t.jsx)("meshBasicMaterial",{color:g,toneMapped:!1,transparent:!0,opacity:.7,side:a.DoubleSide,blending:a.AdditiveBlending,depthWrite:!1})]})]}),!n&&(0,t.jsx)(P.Html,{position:[G.x,1.7,G.z],center:!0,zIndexRange:[30,0],style:{pointerEvents:"none"},children:(0,t.jsxs)("div",{ref:O,style:{...E,border:"1px solid rgba(34,197,94,0.65)",boxShadow:"0 0 18px rgba(34,197,94,0.45)"},children:[(0,t.jsx)("span",{style:{width:7,height:7,borderRadius:"50%",background:g,boxShadow:`0 0 8px ${g}`}}),"Recharge Hub"]})}),(0,t.jsxs)("group",{ref:d,visible:!1,children:[(0,t.jsxs)("mesh",{position:[0,.12,0],children:[(0,t.jsx)("boxGeometry",{args:[.5,.16,.22]}),(0,t.jsx)("meshStandardMaterial",{color:"#11203a",emissive:u,emissiveIntensity:.5,metalness:.5,roughness:.4})]}),(0,t.jsxs)("mesh",{position:[.18,.26,0],children:[(0,t.jsx)("boxGeometry",{args:[.06,.28,.12]}),(0,t.jsx)("meshStandardMaterial",{color:"#0d1830",emissive:u,emissiveIntensity:.4,metalness:.5,roughness:.4})]}),(0,t.jsxs)("mesh",{position:[.3,.14,0],children:[(0,t.jsx)("sphereGeometry",{args:[.06,10,10]}),(0,t.jsx)("meshBasicMaterial",{color:y,toneMapped:!1})]}),[-.16,.16].map((e,r)=>(0,t.jsxs)("mesh",{position:[e,.05,0],rotation:[Math.PI/2,0,0],children:[(0,t.jsx)("cylinderGeometry",{args:[.09,.09,.05,14]}),(0,t.jsx)("meshStandardMaterial",{color:"#05070d",metalness:.6,roughness:.5})]},r)),(0,t.jsxs)("group",{position:[0,.62,0],children:[(0,t.jsxs)("mesh",{children:[(0,t.jsx)("boxGeometry",{args:[.42,.12,.02]}),(0,t.jsx)("meshBasicMaterial",{color:"#0a0f1c",toneMapped:!1,transparent:!0,opacity:.85})]}),(0,t.jsxs)("mesh",{ref:h,position:[0,0,.012],children:[(0,t.jsx)("boxGeometry",{args:[.38,.08,.02]}),(0,t.jsx)("meshBasicMaterial",{ref:m,color:g,toneMapped:!1,blending:a.AdditiveBlending})]})]})]}),[{w:.34,h:.16,d:.2,col:p},{w:.46,h:.22,d:.26,col:y},{w:.6,h:.3,d:.32,col:c}].map((e,r)=>(0,t.jsxs)("mesh",{ref:e=>{$.current[r]=e},visible:!1,children:[(0,t.jsx)("boxGeometry",{args:[e.w,e.h,e.d]}),(0,t.jsx)("meshStandardMaterial",{color:"#12060a",emissive:e.col,emissiveIntensity:.7,metalness:.5,roughness:.4})]},`disp${r}`))]})}),N=new a.Object3D,O=new a.Color(d),_=new a.Color(g),q=new a.Color,K=new a.Vector3,X=r.default.memo(function({progress:e,isMobile:n=!1}){let s=(0,r.useRef)(0),o=(0,r.useRef)(null),l=(0,r.useRef)([]),c=(0,r.useRef)(null),m=(0,r.useRef)(null),f=(0,r.useRef)(null),x=(0,r.useRef)(null),g=n?40:70,y=n?70:150,M=n?12:24,b=(0,r.useMemo)(()=>Array.from({length:5},(e,t)=>{let r=t/5*Math.PI*2+.6;return new a.Vector3(6.5*Math.cos(r),0,6.5*Math.sin(r))}),[]),j=(0,r.useMemo)(()=>Array.from({length:g},(e,t)=>{let r=B(3.3*t+1)*Math.PI*2,n=3+17*B(1.9*t+5);return new a.Vector3(Math.cos(r)*n,.12,Math.sin(r)*n)}),[g]),z=(0,r.useMemo)(()=>j.map(e=>{let t=b[0],r=1/0;for(let n of b){let i=e.distanceToSquared(n);i{let e=[];for(let t of z)e.push(t.a.x,t.a.y,t.a.z,t.b.x,t.b.y,t.b.z);let t=new a.BufferGeometry;return t.setAttribute("position",new a.Float32BufferAttribute(e,3)),t},[z]),S=(0,r.useMemo)(()=>{let e=new Float32Array(3*j.length);j.forEach((t,r)=>{e[3*r]=t.x,e[3*r+1]=t.y,e[3*r+2]=t.z});let t=new a.BufferGeometry;return t.setAttribute("position",new a.BufferAttribute(e,3)),t},[j]),W=(0,r.useMemo)(()=>Array.from({length:y},(e,t)=>({seg:Math.floor(B(4.7*t)*z.length),speed:.12+.25*B(2.1*t),phase:B(8.3*t)})),[y,z.length]),k=(0,r.useMemo)(()=>{let e=new a.BufferGeometry;return e.setAttribute("position",new a.BufferAttribute(new Float32Array(3*y),3)),e},[y]),G=(0,r.useMemo)(()=>Array.from({length:M},(e,t)=>({seg:Math.floor(B(5.9*t+3)*z.length),speed:.06+.08*B(3.7*t),phase:B(6.6*t),kind:Math.floor(3*B(9.2*t))})),[M,z.length]);return(0,r.useLayoutEffect)(()=>{x.current&&(j.forEach((e,t)=>{N.position.set(e.x,.18,e.z),N.scale.set(.06,.36,.06),N.rotation.set(0,0,0),N.updateMatrix(),x.current.setMatrixAt(t,N.matrix),x.current.setColorAt(t,O)}),x.current.instanceMatrix.needsUpdate=!0,x.current.instanceColor&&(x.current.instanceColor.needsUpdate=!0)),f.current&&(G.forEach((e,t)=>{N.position.set(0,-50,0),N.updateMatrix(),f.current.setMatrixAt(t,N.matrix);let r=0===e.kind?u:1===e.kind?h:p;f.current.setColorAt(t,q.set(r))}),f.current.instanceMatrix.needsUpdate=!0,f.current.instanceColor&&(f.current.instanceColor.needsUpdate=!0))},[j,G]),(0,i.useFrame)((t,r)=>{let n=e.current??0;s.current=A(s.current,n,3,r);let i=s.current,a=t.clock.elapsedTime,u=w(.11,.19,i),d=w(.71,.8,i),p=w(.88,1,i);if(l.current.forEach((e,t)=>{e&&(e.emissiveIntensity=(.3+1.5*d)*(.85+.15*Math.sin(2*a+t)))}),o.current&&(o.current.visible=u>.02),c.current&&(c.current.opacity=(.05+.16*u+.1*p)*(.8+.2*Math.sin(1.5*a))),m.current){let e=m.current.geometry.getAttribute("position");for(let t=0;t.02}if(x.current){for(let e=0;e(0,t.jsxs)("group",{position:[e.x,0,e.z],children:[(0,t.jsxs)("mesh",{position:[0,.5,0],children:[(0,t.jsx)("boxGeometry",{args:[1.6,1,1.3]}),(0,t.jsx)("meshStandardMaterial",{ref:e=>{l.current[r]=e},color:"#0b1426",emissive:d,emissiveIntensity:.3,metalness:.4,roughness:.5})]}),(0,t.jsxs)("mesh",{rotation:[-Math.PI/2,0,0],position:[0,.03,0],children:[(0,t.jsx)("ringGeometry",{args:[1.2,1.4,36]}),(0,t.jsx)("meshBasicMaterial",{color:u,toneMapped:!1,transparent:!0,opacity:.4,side:a.DoubleSide,blending:a.AdditiveBlending,depthWrite:!1})]})]},r))})]})}),Y=r.default.memo(function({progress:e,isMobile:n=!1}){let s=(0,r.useRef)(0),o=(0,r.useRef)(null),l=(0,r.useRef)(null),p=(0,r.useRef)(null),h=(0,r.useRef)([]),m=(0,r.useRef)(null),f=(0,r.useRef)(null),x=n?90:180,M=(0,r.useMemo)(()=>{let e=[];for(let t=0;t{let e=new a.BufferGeometry;return e.setAttribute("position",new a.BufferAttribute(new Float32Array(3*x),3)),e},[x]),j=(0,r.useMemo)(()=>{let e=new a.CatmullRomCurve3([new a.Vector3(-6,.3,5),new a.Vector3(-2,1.6,1),new a.Vector3(3,.3,-4)]);return new a.TubeGeometry(e,50,.07,8,!1)},[]),z=(0,r.useMemo)(()=>new a.Vector3(-2,.6,1),[]);return(0,i.useFrame)((t,r)=>{let n=e.current??0;s.current=A(s.current,n,3,r);let i=s.current,a=t.clock.elapsedTime,c=w(.57,.65,i),u=c*(1-w(.74,.82,i));o.current&&(o.current.visible=u>.02,o.current.position.y=2.6+1.9999999999999996*c,o.current.scale.setScalar(1e-4+1.5*u),o.current.rotation.z=.02*Math.sin(.3*a)),l.current&&(l.current.rotation.z=-(1.4*a)),p.current&&(p.current.opacity=u*(.6+.2*Math.sin(4*a))),h.current.forEach(e=>{e&&(e.opacity=.8*u)});let d=w(.62,.6+.08,i),x=.45*a%1;if(f.current&&(f.current.opacity=u*d*(1-x)*(.6+.4*Math.sin(6*a))),m.current){let e=m.current.geometry.getAttribute("position"),t=3.4*x;for(let r=0;r{let n=r/12*Math.PI*2;return(0,t.jsxs)("mesh",{position:[.88*Math.cos(n),.88*Math.sin(n),0],rotation:[0,0,n],children:[(0,t.jsx)("boxGeometry",{args:[.1,.02,.02]}),(0,t.jsx)("meshBasicMaterial",{ref:e=>{e&&(h.current[r]=e)},color:r%3==0?y:u,toneMapped:!1,transparent:!0,opacity:.8,blending:a.AdditiveBlending,depthWrite:!1})]},r)}),(0,t.jsxs)("mesh",{ref:l,position:[0,0,.02],children:[(0,t.jsx)("boxGeometry",{args:[.04,1.5,.02]}),(0,t.jsx)("meshBasicMaterial",{ref:p,color:g,toneMapped:!1,transparent:!0,opacity:.7,blending:a.AdditiveBlending,depthWrite:!1})]}),(0,t.jsxs)("mesh",{children:[(0,t.jsx)("sphereGeometry",{args:[.07,16,16]}),(0,t.jsx)("meshBasicMaterial",{color:y,toneMapped:!1})]})]}),(0,t.jsx)("mesh",{geometry:j,children:(0,t.jsx)("meshBasicMaterial",{ref:f,color:c,toneMapped:!1,transparent:!0,opacity:0,blending:a.AdditiveBlending,depthWrite:!1})}),(0,t.jsx)("points",{ref:m,geometry:b,children:(0,t.jsx)("pointsMaterial",{size:n?.12:.1,color:c,transparent:!0,opacity:0,sizeAttenuation:!0,blending:a.AdditiveBlending,depthWrite:!1})})]})}),Z=new a.Vector3,J=new a.Vector3;function Q({progress:e}){let t=(0,r.useRef)(new a.Vector3(0,6,0)),n=(0,r.useRef)(!1);return(0,i.useFrame)((r,i)=>{var s,o,a,l,c,u;let d=v(e.current??0),p=0;for(let e=0;e=j[e].at&&d<=j[e+1].at){p=e;break}d>j[j.length-1].at&&(p=j.length-2)}let h=j[p],m=j[p+1],f=m.at-h.at||1,x=w(0,1,v((d-h.at)/f));Z.set((s=h.pos[0],s+(m.pos[0]-s)*x),(o=h.pos[1],o+(m.pos[1]-o)*x),(a=h.pos[2],a+(m.pos[2]-a)*x)),J.set((l=h.look[0],l+(m.look[0]-l)*x),(c=h.look[1],c+(m.look[1]-c)*x),(u=h.look[2],u+(m.look[2]-u)*x));let g=r.clock.elapsedTime;Z.x+=.14*Math.sin(.16*g),Z.y+=.07*Math.sin(.21*g);let y=r.camera;n.current?(y.position.x=A(y.position.x,Z.x,2.6,i),y.position.y=A(y.position.y,Z.y,2.6,i),y.position.z=A(y.position.z,Z.z,2.6,i),t.current.x=A(t.current.x,J.x,3,i),t.current.y=A(t.current.y,J.y,3,i),t.current.z=A(t.current.z,J.z,3,i)):(y.position.copy(Z),t.current.copy(J),n.current=!0),y.lookAt(t.current)}),null}let ee=r.default.memo(function({progress:e,reduced:r=!1,isMobile:i=!1,active:a=!0}){return(0,t.jsxs)(n.Canvas,{flat:!0,dpr:[1,i||r?1.25:1.5],camera:{position:j[0].pos,fov:52,near:.1,far:200},gl:{antialias:!i,powerPreference:"high-performance",alpha:!1},frameloop:a?"always":"never",children:[(0,t.jsx)("color",{attach:"background",args:[l]}),(0,t.jsx)("fog",{attach:"fog",args:[l,40,100]}),(0,t.jsx)("ambientLight",{intensity:.55}),(0,t.jsx)("directionalLight",{position:[8,18,10],intensity:.7,color:p}),(0,t.jsx)("pointLight",{position:[-10,8,-8],intensity:40,distance:60,color:m}),(0,t.jsx)("pointLight",{position:[0,9,0],intensity:30,distance:40,color:u}),(0,t.jsx)(Q,{progress:e}),(0,t.jsx)(F,{progress:e,reduced:r,isMobile:i}),(0,t.jsx)($,{progress:e,reduced:r,isMobile:i}),(0,t.jsx)(X,{progress:e,reduced:r,isMobile:i}),(0,t.jsx)(Y,{progress:e,reduced:r,isMobile:i}),(0,t.jsx)(R,{progress:e,reduced:r,isMobile:i}),!r&&(0,t.jsx)(s.EffectComposer,{multisampling:2*!i,children:(0,t.jsx)(s.Bloom,{mipmapBlur:!0,intensity:i?.9:1.25,luminanceThreshold:.12,luminanceSmoothing:.045,radius:i?.65:.82,kernelSize:o.KernelSize.MEDIUM})})]})});e.s(["default",0,ee],69986)},39184,e=>{e.n(e.i(69986))}]); \ No newline at end of file diff --git a/build/_next/static/chunks/0-w08rrpmvn8z.js b/build/_next/static/chunks/0-w08rrpmvn8z.js new file mode 100644 index 0000000..2697d9f --- /dev/null +++ b/build/_next/static/chunks/0-w08rrpmvn8z.js @@ -0,0 +1,243 @@ +(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,55838,(e,t,n)=>{"use strict";var i=e.r(71645),r="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},a=i.useState,s=i.useEffect,o=i.useLayoutEffect,l=i.useDebugValue;function u(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!r(e,n)}catch(e){return!0}}var c="u"{"use strict";t.exports=e.r(55838)},52822,(e,t,n)=>{"use strict";var i=e.r(71645),r=e.r(2239),a="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},s=r.useSyncExternalStore,o=i.useRef,l=i.useEffect,u=i.useMemo,c=i.useDebugValue;n.useSyncExternalStoreWithSelector=function(e,t,n,i,r){var h=o(null);if(null===h.current){var d={hasValue:!1,value:null};h.current=d}else d=h.current;var p=s(e,(h=u(function(){function e(e){if(!l){if(l=!0,s=e,e=i(e),void 0!==r&&d.hasValue){var t=d.value;if(r(t,e))return o=t}return o=e}if(t=o,a(s,e))return t;var n=i(e);return void 0!==r&&r(t,n)?(s=e,t):(s=e,o=n)}var s,o,l=!1,u=void 0===n?null:n;return[function(){return e(t())},null===u?void 0:function(){return e(u())}]},[t,n,i,r]))[0],h[1]);return l(function(){d.hasValue=!0,d.value=p},[p]),c(p),p}},30224,(e,t,n)=>{"use strict";t.exports=e.r(52822)},66936,(e,t,n)=>{"use strict";function i(e,t){var n=e.length;for(e.push(t);0>>1,r=e[i];if(0>>1;is(l,n))us(c,l)?(e[i]=c,e[u]=n,i=u):(e[i]=l,e[o]=n,i=o);else if(us(c,n))e[i]=c,e[u]=n,i=u;else break}}return t}function s(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}if(n.unstable_now=void 0,"object"==typeof performance&&"function"==typeof performance.now){var o,l=performance;n.unstable_now=function(){return l.now()}}else{var u=Date,c=u.now();n.unstable_now=function(){return u.now()-c}}var h=[],d=[],p=1,f=null,m=3,g=!1,v=!1,_=!1,y=!1,x="function"==typeof setTimeout?setTimeout:null,b="function"==typeof clearTimeout?clearTimeout:null,S="u">typeof setImmediate?setImmediate:null;function M(e){for(var t=r(d);null!==t;){if(null===t.callback)a(d);else if(t.startTime<=e)a(d),t.sortIndex=t.expirationTime,i(h,t);else break;t=r(d)}}function T(e){if(_=!1,M(e),!v)if(null!==r(h))v=!0,w||(w=!0,o());else{var t=r(d);null!==t&&N(T,t.startTime-e)}}var w=!1,E=-1,A=5,C=-1;function R(){return!!y||!(n.unstable_now()-Ce&&R());){var s=f.callback;if("function"==typeof s){f.callback=null,m=f.priorityLevel;var l=s(f.expirationTime<=e);if(e=n.unstable_now(),"function"==typeof l){f.callback=l,M(e),t=!0;break t}f===r(h)&&a(h),M(e)}else a(h);f=r(h)}if(null!==f)t=!0;else{var u=r(d);null!==u&&N(T,u.startTime-e),t=!1}}break e}finally{f=null,m=i,g=!1}}}finally{t?o():w=!1}}}if("function"==typeof S)o=function(){S(P)};else if("u">typeof MessageChannel){var I=new MessageChannel,L=I.port2;I.port1.onmessage=P,o=function(){L.postMessage(null)}}else o=function(){x(P,0)};function N(e,t){E=x(function(){e(n.unstable_now())},t)}n.unstable_IdlePriority=5,n.unstable_ImmediatePriority=1,n.unstable_LowPriority=4,n.unstable_NormalPriority=3,n.unstable_Profiling=null,n.unstable_UserBlockingPriority=2,n.unstable_cancelCallback=function(e){e.callback=null},n.unstable_forceFrameRate=function(e){0>e||125s?(e.sortIndex=a,i(d,e),null===r(h)&&e===r(d)&&(_?(b(E),E=-1):_=!0,N(T,a-s))):(e.sortIndex=l,i(h,e),v||g||(v=!0,w||(w=!0,o()))),e},n.unstable_shouldYield=R,n.unstable_wrapCallback=function(e){var t=m;return function(){var n=m;m=t;try{return e.apply(this,arguments)}finally{m=n}}}},89499,(e,t,n)=>{"use strict";t.exports=e.r(66936)},75056,90072,8560,8155,1950,25234,28600,e=>{"use strict";let t,n,i,r,a,s,o,l,u,c,h,d,p,f,m,g,v,_;var y,x,b,S,M,T,w=e.i(47167),E=e.i(71645);let A={LEFT:0,MIDDLE:1,RIGHT:2,ROTATE:0,DOLLY:1,PAN:2},C={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},R="attached",P="detached",I="srgb",L="srgb-linear",N="linear",U="srgb",D="300 es";class O{addEventListener(e,t){void 0===this._listeners&&(this._listeners={});let n=this._listeners;void 0===n[e]&&(n[e]=[]),-1===n[e].indexOf(t)&&n[e].push(t)}hasEventListener(e,t){if(void 0===this._listeners)return!1;let n=this._listeners;return void 0!==n[e]&&-1!==n[e].indexOf(t)}removeEventListener(e,t){if(void 0===this._listeners)return;let n=this._listeners[e];if(void 0!==n){let e=n.indexOf(t);-1!==e&&n.splice(e,1)}}dispatchEvent(e){if(void 0===this._listeners)return;let t=this._listeners[e.type];if(void 0!==t){e.target=this;let n=t.slice(0);for(let t=0,i=n.length;t>8&255]+F[e>>16&255]+F[e>>24&255]+"-"+F[255&t]+F[t>>8&255]+"-"+F[t>>16&15|64]+F[t>>24&255]+"-"+F[63&n|128]+F[n>>8&255]+"-"+F[n>>16&255]+F[n>>24&255]+F[255&i]+F[i>>8&255]+F[i>>16&255]+F[i>>24&255]).toLowerCase()}function V(e,t,n){return Math.max(t,Math.min(n,e))}function G(e,t){return(e%t+t)%t}function W(e,t,n){return(1-n)*e+n*t}function j(e,t){switch(t.constructor){case Float32Array:return e;case Uint32Array:return e/0xffffffff;case Uint16Array:return e/65535;case Uint8Array:return e/255;case Int32Array:return Math.max(e/0x7fffffff,-1);case Int16Array:return Math.max(e/32767,-1);case Int8Array:return Math.max(e/127,-1);default:throw Error("Invalid component type.")}}function X(e,t){switch(t.constructor){case Float32Array:return e;case Uint32Array:return Math.round(0xffffffff*e);case Uint16Array:return Math.round(65535*e);case Uint8Array:return Math.round(255*e);case Int32Array:return Math.round(0x7fffffff*e);case Int16Array:return Math.round(32767*e);case Int8Array:return Math.round(127*e);default:throw Error("Invalid component type.")}}let q={DEG2RAD:B,RAD2DEG:k,generateUUID:H,clamp:V,euclideanModulo:G,mapLinear:function(e,t,n,i,r){return i+(e-t)*(r-i)/(n-t)},inverseLerp:function(e,t,n){return e!==t?(n-e)/(t-e):0},lerp:W,damp:function(e,t,n,i){return W(e,t,1-Math.exp(-n*i))},pingpong:function(e,t=1){return t-Math.abs(G(e,2*t)-t)},smoothstep:function(e,t,n){return e<=t?0:e>=n?1:(e=(e-t)/(n-t))*e*(3-2*e)},smootherstep:function(e,t,n){return e<=t?0:e>=n?1:(e=(e-t)/(n-t))*e*e*(e*(6*e-15)+10)},randInt:function(e,t){return e+Math.floor(Math.random()*(t-e+1))},randFloat:function(e,t){return e+Math.random()*(t-e)},randFloatSpread:function(e){return e*(.5-Math.random())},seededRandom:function(e){void 0!==e&&(z=e);let t=z+=0x6d2b79f5;return t=Math.imul(t^t>>>15,1|t),(((t^=t+Math.imul(t^t>>>7,61|t))^t>>>14)>>>0)/0x100000000},degToRad:function(e){return e*B},radToDeg:function(e){return e*k},isPowerOfTwo:function(e){return(e&e-1)==0&&0!==e},ceilPowerOfTwo:function(e){return Math.pow(2,Math.ceil(Math.log(e)/Math.LN2))},floorPowerOfTwo:function(e){return Math.pow(2,Math.floor(Math.log(e)/Math.LN2))},setQuaternionFromProperEuler:function(e,t,n,i,r){let a=Math.cos,s=Math.sin,o=a(n/2),l=s(n/2),u=a((t+i)/2),c=s((t+i)/2),h=a((t-i)/2),d=s((t-i)/2),p=a((i-t)/2),f=s((i-t)/2);switch(r){case"XYX":e.set(o*c,l*h,l*d,o*u);break;case"YZY":e.set(l*d,o*c,l*h,o*u);break;case"ZXZ":e.set(l*h,l*d,o*c,o*u);break;case"XZX":e.set(o*c,l*f,l*p,o*u);break;case"YXY":e.set(l*p,o*c,l*f,o*u);break;case"ZYZ":e.set(l*f,l*p,o*c,o*u);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+r)}},normalize:X,denormalize:j};class Y{constructor(e=0,t=0){Y.prototype.isVector2=!0,this.x=e,this.y=t}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}set(e,t){return this.x=e,this.y=t,this}setScalar(e){return this.x=e,this.y=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y)}copy(e){return this.x=e.x,this.y=e.y,this}add(e){return this.x+=e.x,this.y+=e.y,this}addScalar(e){return this.x+=e,this.y+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this}subScalar(e){return this.x-=e,this.y-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}multiply(e){return this.x*=e.x,this.y*=e.y,this}multiplyScalar(e){return this.x*=e,this.y*=e,this}divide(e){return this.x/=e.x,this.y/=e.y,this}divideScalar(e){return this.multiplyScalar(1/e)}applyMatrix3(e){let t=this.x,n=this.y,i=e.elements;return this.x=i[0]*t+i[3]*n+i[6],this.y=i[1]*t+i[4]*n+i[7],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this}clamp(e,t){return this.x=V(this.x,e.x,t.x),this.y=V(this.y,e.y,t.y),this}clampScalar(e,t){return this.x=V(this.x,e,t),this.y=V(this.y,e,t),this}clampLength(e,t){let n=this.length();return this.divideScalar(n||1).multiplyScalar(V(n,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(e){let t=Math.sqrt(this.lengthSq()*e.lengthSq());return 0===t?Math.PI/2:Math.acos(V(this.dot(e)/t,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){let t=this.x-e.x,n=this.y-e.y;return t*t+n*n}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this}rotateAround(e,t){let n=Math.cos(t),i=Math.sin(t),r=this.x-e.x,a=this.y-e.y;return this.x=r*n-a*i+e.x,this.y=r*i+a*n+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class Z{constructor(e,t,n,i,r,a,s,o,l){Z.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],void 0!==e&&this.set(e,t,n,i,r,a,s,o,l)}set(e,t,n,i,r,a,s,o,l){let u=this.elements;return u[0]=e,u[1]=i,u[2]=s,u[3]=t,u[4]=r,u[5]=o,u[6]=n,u[7]=a,u[8]=l,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){let t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],this}extractBasis(e,t,n){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this}setFromMatrix4(e){let t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){let n=e.elements,i=t.elements,r=this.elements,a=n[0],s=n[3],o=n[6],l=n[1],u=n[4],c=n[7],h=n[2],d=n[5],p=n[8],f=i[0],m=i[3],g=i[6],v=i[1],_=i[4],y=i[7],x=i[2],b=i[5],S=i[8];return r[0]=a*f+s*v+o*x,r[3]=a*m+s*_+o*b,r[6]=a*g+s*y+o*S,r[1]=l*f+u*v+c*x,r[4]=l*m+u*_+c*b,r[7]=l*g+u*y+c*S,r[2]=h*f+d*v+p*x,r[5]=h*m+d*_+p*b,r[8]=h*g+d*y+p*S,this}multiplyScalar(e){let t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}determinant(){let e=this.elements,t=e[0],n=e[1],i=e[2],r=e[3],a=e[4],s=e[5],o=e[6],l=e[7],u=e[8];return t*a*u-t*s*l-n*r*u+n*s*o+i*r*l-i*a*o}invert(){let e=this.elements,t=e[0],n=e[1],i=e[2],r=e[3],a=e[4],s=e[5],o=e[6],l=e[7],u=e[8],c=u*a-s*l,h=s*o-u*r,d=l*r-a*o,p=t*c+n*h+i*d;if(0===p)return this.set(0,0,0,0,0,0,0,0,0);let f=1/p;return e[0]=c*f,e[1]=(i*l-u*n)*f,e[2]=(s*n-i*a)*f,e[3]=h*f,e[4]=(u*t-i*o)*f,e[5]=(i*r-s*t)*f,e[6]=d*f,e[7]=(n*o-l*t)*f,e[8]=(a*t-n*r)*f,this}transpose(){let e,t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){let t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}setUvTransform(e,t,n,i,r,a,s){let o=Math.cos(r),l=Math.sin(r);return this.set(n*o,n*l,-n*(o*a+l*s)+a+e,-i*l,i*o,-i*(-l*a+o*s)+s+t,0,0,1),this}scale(e,t){return this.premultiply(J.makeScale(e,t)),this}rotate(e){return this.premultiply(J.makeRotation(-e)),this}translate(e,t){return this.premultiply(J.makeTranslation(e,t)),this}makeTranslation(e,t){return e.isVector2?this.set(1,0,e.x,0,1,e.y,0,0,1):this.set(1,0,e,0,1,t,0,0,1),this}makeRotation(e){let t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,n,t,0,0,0,1),this}makeScale(e,t){return this.set(e,0,0,0,t,0,0,0,1),this}equals(e){let t=this.elements,n=e.elements;for(let e=0;e<9;e++)if(t[e]!==n[e])return!1;return!0}fromArray(e,t=0){for(let n=0;n<9;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){let n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e}clone(){return new this.constructor().fromArray(this.elements)}}let J=new Z;function K(e){for(let t=e.length-1;t>=0;--t)if(e[t]>=65535)return!0;return!1}let $={Int8Array:Int8Array,Uint8Array:Uint8Array,Uint8ClampedArray:Uint8ClampedArray,Int16Array:Int16Array,Uint16Array:Uint16Array,Int32Array:Int32Array,Uint32Array:Uint32Array,Float32Array:Float32Array,Float64Array:Float64Array};function Q(e,t){return new $[e](t)}function ee(e){return document.createElementNS("http://www.w3.org/1999/xhtml",e)}function et(){let e=ee("canvas");return e.style.display="block",e}let en={};function ei(e){e in en||(en[e]=!0,console.warn(e))}function er(e,t,n){return new Promise(function(i,r){setTimeout(function a(){switch(e.clientWaitSync(t,e.SYNC_FLUSH_COMMANDS_BIT,0)){case e.WAIT_FAILED:r();break;case e.TIMEOUT_EXPIRED:setTimeout(a,n);break;default:i()}},n)})}function ea(e){let t=e.elements;t[2]=.5*t[2]+.5*t[3],t[6]=.5*t[6]+.5*t[7],t[10]=.5*t[10]+.5*t[11],t[14]=.5*t[14]+.5*t[15]}function es(e){let t=e.elements;-1===t[11]?(t[10]=-t[10]-1,t[14]=-t[14]):(t[10]=-t[10],t[14]=-t[14]+1)}let eo=new Z().set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),el=new Z().set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715),eu=(d=[.64,.33,.3,.6,.15,.06],p=[.2126,.7152,.0722],f=[.3127,.329],(h={enabled:!0,workingColorSpace:L,spaces:{},convert:function(e,t,n){return!1!==this.enabled&&t!==n&&t&&n&&(this.spaces[t].transfer===U&&(e.r=ec(e.r),e.g=ec(e.g),e.b=ec(e.b)),this.spaces[t].primaries!==this.spaces[n].primaries&&(e.applyMatrix3(this.spaces[t].toXYZ),e.applyMatrix3(this.spaces[n].fromXYZ)),this.spaces[n].transfer===U&&(e.r=eh(e.r),e.g=eh(e.g),e.b=eh(e.b))),e},fromWorkingColorSpace:function(e,t){return this.convert(e,this.workingColorSpace,t)},toWorkingColorSpace:function(e,t){return this.convert(e,t,this.workingColorSpace)},getPrimaries:function(e){return this.spaces[e].primaries},getTransfer:function(e){return""===e?N:this.spaces[e].transfer},getLuminanceCoefficients:function(e,t=this.workingColorSpace){return e.fromArray(this.spaces[t].luminanceCoefficients)},define:function(e){Object.assign(this.spaces,e)},_getMatrix:function(e,t,n){return e.copy(this.spaces[t].toXYZ).multiply(this.spaces[n].fromXYZ)},_getDrawingBufferColorSpace:function(e){return this.spaces[e].outputColorSpaceConfig.drawingBufferColorSpace},_getUnpackColorSpace:function(e=this.workingColorSpace){return this.spaces[e].workingColorSpaceConfig.unpackColorSpace}}).define({[L]:{primaries:d,whitePoint:f,transfer:N,toXYZ:eo,fromXYZ:el,luminanceCoefficients:p,workingColorSpaceConfig:{unpackColorSpace:I},outputColorSpaceConfig:{drawingBufferColorSpace:I}},[I]:{primaries:d,whitePoint:f,transfer:U,toXYZ:eo,fromXYZ:el,luminanceCoefficients:p,outputColorSpaceConfig:{drawingBufferColorSpace:I}}}),h);function ec(e){return e<.04045?.0773993808*e:Math.pow(.9478672986*e+.0521327014,2.4)}function eh(e){return e<.0031308?12.92*e:1.055*Math.pow(e,.41666)-.055}class ed{static getDataURL(e){let n;if(/^data:/i.test(e.src)||"u"2048||n.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",e),n.toDataURL("image/jpeg",.6)):n.toDataURL("image/png")}static sRGBToLinear(e){if("u">typeof HTMLImageElement&&e instanceof HTMLImageElement||"u">typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"u">typeof ImageBitmap&&e instanceof ImageBitmap){let t=ee("canvas");t.width=e.width,t.height=e.height;let n=t.getContext("2d");n.drawImage(e,0,0,e.width,e.height);let i=n.getImageData(0,0,e.width,e.height),r=i.data;for(let e=0;etypeof HTMLImageElement&&e instanceof HTMLImageElement||"u">typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"u">typeof ImageBitmap&&e instanceof ImageBitmap?ed.getDataURL(e):e.data?{data:Array.from(e.data),width:e.width,height:e.height,type:e.data.constructor.name}:(console.warn("THREE.Texture: Unable to serialize Texture."),{})}let eg=0;class ev extends O{constructor(e=ev.DEFAULT_IMAGE,t=ev.DEFAULT_MAPPING,n=1001,i=1001,r=1006,a=1008,s=1023,o=1009,l=ev.DEFAULT_ANISOTROPY,u=""){super(),this.isTexture=!0,Object.defineProperty(this,"id",{value:eg++}),this.uuid=H(),this.name="",this.source=new ef(e),this.mipmaps=[],this.mapping=t,this.channel=0,this.wrapS=n,this.wrapT=i,this.magFilter=r,this.minFilter=a,this.anisotropy=l,this.format=s,this.internalFormat=null,this.type=o,this.offset=new Y(0,0),this.repeat=new Y(1,1),this.center=new Y(0,0),this.rotation=0,this.matrixAutoUpdate=!0,this.matrix=new Z,this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.colorSpace=u,this.userData={},this.version=0,this.onUpdate=null,this.isRenderTargetTexture=!1,this.pmremVersion=0}get image(){return this.source.data}set image(e=null){this.source.data=e}updateMatrix(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)}clone(){return new this.constructor().copy(this)}copy(e){return this.name=e.name,this.source=e.source,this.mipmaps=e.mipmaps.slice(0),this.mapping=e.mapping,this.channel=e.channel,this.wrapS=e.wrapS,this.wrapT=e.wrapT,this.magFilter=e.magFilter,this.minFilter=e.minFilter,this.anisotropy=e.anisotropy,this.format=e.format,this.internalFormat=e.internalFormat,this.type=e.type,this.offset.copy(e.offset),this.repeat.copy(e.repeat),this.center.copy(e.center),this.rotation=e.rotation,this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrix.copy(e.matrix),this.generateMipmaps=e.generateMipmaps,this.premultiplyAlpha=e.premultiplyAlpha,this.flipY=e.flipY,this.unpackAlignment=e.unpackAlignment,this.colorSpace=e.colorSpace,this.userData=JSON.parse(JSON.stringify(e.userData)),this.needsUpdate=!0,this}toJSON(e){let t=void 0===e||"string"==typeof e;if(!t&&void 0!==e.textures[this.uuid])return e.textures[this.uuid];let n={metadata:{version:4.6,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,image:this.source.toJSON(e).uuid,mapping:this.mapping,channel:this.channel,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,internalFormat:this.internalFormat,type:this.type,colorSpace:this.colorSpace,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,generateMipmaps:this.generateMipmaps,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};return Object.keys(this.userData).length>0&&(n.userData=this.userData),t||(e.textures[this.uuid]=n),n}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(e){if(300!==this.mapping)return e;if(e.applyMatrix3(this.matrix),e.x<0||e.x>1)switch(this.wrapS){case 1e3:e.x=e.x-Math.floor(e.x);break;case 1001:e.x=e.x<0?0:1;break;case 1002:1===Math.abs(Math.floor(e.x)%2)?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x)}if(e.y<0||e.y>1)switch(this.wrapT){case 1e3:e.y=e.y-Math.floor(e.y);break;case 1001:e.y=e.y<0?0:1;break;case 1002:1===Math.abs(Math.floor(e.y)%2)?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y)}return this.flipY&&(e.y=1-e.y),e}set needsUpdate(e){!0===e&&(this.version++,this.source.needsUpdate=!0)}set needsPMREMUpdate(e){!0===e&&this.pmremVersion++}}ev.DEFAULT_IMAGE=null,ev.DEFAULT_MAPPING=300,ev.DEFAULT_ANISOTROPY=1;class e_{constructor(e=0,t=0,n=0,i=1){e_.prototype.isVector4=!0,this.x=e,this.y=t,this.z=n,this.w=i}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,n,i){return this.x=e,this.y=t,this.z=n,this.w=i,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setW(e){return this.w=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=void 0!==e.w?e.w:1,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){let t=this.x,n=this.y,i=this.z,r=this.w,a=e.elements;return this.x=a[0]*t+a[4]*n+a[8]*i+a[12]*r,this.y=a[1]*t+a[5]*n+a[9]*i+a[13]*r,this.z=a[2]*t+a[6]*n+a[10]*i+a[14]*r,this.w=a[3]*t+a[7]*n+a[11]*i+a[15]*r,this}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this.w/=e.w,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);let t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this}setAxisAngleFromRotationMatrix(e){let t,n,i,r,a=e.elements,s=a[0],o=a[4],l=a[8],u=a[1],c=a[5],h=a[9],d=a[2],p=a[6],f=a[10];if(.01>Math.abs(o-u)&&.01>Math.abs(l-d)&&.01>Math.abs(h-p)){if(.1>Math.abs(o+u)&&.1>Math.abs(l+d)&&.1>Math.abs(h+p)&&.1>Math.abs(s+c+f-3))return this.set(1,0,0,0),this;t=Math.PI;let e=(s+1)/2,a=(c+1)/2,m=(f+1)/2,g=(o+u)/4,v=(l+d)/4,_=(h+p)/4;return e>a&&e>m?e<.01?(n=0,i=.707106781,r=.707106781):(i=g/(n=Math.sqrt(e)),r=v/n):a>m?a<.01?(n=.707106781,i=0,r=.707106781):(n=g/(i=Math.sqrt(a)),r=_/i):m<.01?(n=.707106781,i=.707106781,r=0):(n=v/(r=Math.sqrt(m)),i=_/r),this.set(n,i,r,t),this}let m=Math.sqrt((p-h)*(p-h)+(l-d)*(l-d)+(u-o)*(u-o));return .001>Math.abs(m)&&(m=1),this.x=(p-h)/m,this.y=(l-d)/m,this.z=(u-o)/m,this.w=Math.acos((s+c+f-1)/2),this}setFromMatrixPosition(e){let t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this.w=t[15],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this.w=Math.min(this.w,e.w),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this.w=Math.max(this.w,e.w),this}clamp(e,t){return this.x=V(this.x,e.x,t.x),this.y=V(this.y,e.y,t.y),this.z=V(this.z,e.z,t.z),this.w=V(this.w,e.w,t.w),this}clampScalar(e,t){return this.x=V(this.x,e,t),this.y=V(this.y,e,t),this.z=V(this.z,e,t),this.w=V(this.w,e,t),this}clampLength(e,t){let n=this.length();return this.divideScalar(n||1).multiplyScalar(V(n,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this.w=Math.trunc(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this.w+=(e.w-this.w)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this.w=e.w+(t.w-e.w)*n,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this.w=e.getW(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}}class ey extends O{constructor(e=1,t=1,n={}){super(),this.isRenderTarget=!0,this.width=e,this.height=t,this.depth=1,this.scissor=new e_(0,0,e,t),this.scissorTest=!1,this.viewport=new e_(0,0,e,t);const i=new ev({width:e,height:t,depth:1},(n=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:1006,depthBuffer:!0,stencilBuffer:!1,resolveDepthBuffer:!0,resolveStencilBuffer:!0,depthTexture:null,samples:0,count:1},n)).mapping,n.wrapS,n.wrapT,n.magFilter,n.minFilter,n.format,n.type,n.anisotropy,n.colorSpace);i.flipY=!1,i.generateMipmaps=n.generateMipmaps,i.internalFormat=n.internalFormat,this.textures=[];const r=n.count;for(let e=0;e=0?1:-1,i=1-t*t;if(i>Number.EPSILON){let r=Math.sqrt(i),a=Math.atan2(r,t*n);e=Math.sin(e*a)/r,s=Math.sin(s*a)/r}let r=s*n;if(o=o*e+h*r,l=l*e+d*r,u=u*e+p*r,c=c*e+f*r,e===1-s){let e=1/Math.sqrt(o*o+l*l+u*u+c*c);o*=e,l*=e,u*=e,c*=e}}e[t]=o,e[t+1]=l,e[t+2]=u,e[t+3]=c}static multiplyQuaternionsFlat(e,t,n,i,r,a){let s=n[i],o=n[i+1],l=n[i+2],u=n[i+3],c=r[a],h=r[a+1],d=r[a+2],p=r[a+3];return e[t]=s*p+u*c+o*d-l*h,e[t+1]=o*p+u*h+l*c-s*d,e[t+2]=l*p+u*d+s*h-o*c,e[t+3]=u*p-s*c-o*h-l*d,e}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get w(){return this._w}set w(e){this._w=e,this._onChangeCallback()}set(e,t,n,i){return this._x=e,this._y=t,this._z=n,this._w=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._onChangeCallback(),this}setFromEuler(e,t=!0){let n=e._x,i=e._y,r=e._z,a=e._order,s=Math.cos,o=Math.sin,l=s(n/2),u=s(i/2),c=s(r/2),h=o(n/2),d=o(i/2),p=o(r/2);switch(a){case"XYZ":this._x=h*u*c+l*d*p,this._y=l*d*c-h*u*p,this._z=l*u*p+h*d*c,this._w=l*u*c-h*d*p;break;case"YXZ":this._x=h*u*c+l*d*p,this._y=l*d*c-h*u*p,this._z=l*u*p-h*d*c,this._w=l*u*c+h*d*p;break;case"ZXY":this._x=h*u*c-l*d*p,this._y=l*d*c+h*u*p,this._z=l*u*p+h*d*c,this._w=l*u*c-h*d*p;break;case"ZYX":this._x=h*u*c-l*d*p,this._y=l*d*c+h*u*p,this._z=l*u*p-h*d*c,this._w=l*u*c+h*d*p;break;case"YZX":this._x=h*u*c+l*d*p,this._y=l*d*c+h*u*p,this._z=l*u*p-h*d*c,this._w=l*u*c-h*d*p;break;case"XZY":this._x=h*u*c-l*d*p,this._y=l*d*c-h*u*p,this._z=l*u*p+h*d*c,this._w=l*u*c+h*d*p;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+a)}return!0===t&&this._onChangeCallback(),this}setFromAxisAngle(e,t){let n=t/2,i=Math.sin(n);return this._x=e.x*i,this._y=e.y*i,this._z=e.z*i,this._w=Math.cos(n),this._onChangeCallback(),this}setFromRotationMatrix(e){let t=e.elements,n=t[0],i=t[4],r=t[8],a=t[1],s=t[5],o=t[9],l=t[2],u=t[6],c=t[10],h=n+s+c;if(h>0){let e=.5/Math.sqrt(h+1);this._w=.25/e,this._x=(u-o)*e,this._y=(r-l)*e,this._z=(a-i)*e}else if(n>s&&n>c){let e=2*Math.sqrt(1+n-s-c);this._w=(u-o)/e,this._x=.25*e,this._y=(i+a)/e,this._z=(r+l)/e}else if(s>c){let e=2*Math.sqrt(1+s-n-c);this._w=(r-l)/e,this._x=(i+a)/e,this._y=.25*e,this._z=(o+u)/e}else{let e=2*Math.sqrt(1+c-n-s);this._w=(a-i)/e,this._x=(r+l)/e,this._y=(o+u)/e,this._z=.25*e}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let n=e.dot(t)+1;return nMath.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0):(this._x=0,this._y=-e.z,this._z=e.y)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x),this._w=n,this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(V(this.dot(e),-1,1)))}rotateTowards(e,t){let n=this.angleTo(e);if(0===n)return this;let i=Math.min(1,t/n);return this.slerp(e,i),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let e=this.length();return 0===e?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this}multiply(e){return this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,t){let n=e._x,i=e._y,r=e._z,a=e._w,s=t._x,o=t._y,l=t._z,u=t._w;return this._x=n*u+a*s+i*l-r*o,this._y=i*u+a*o+r*s-n*l,this._z=r*u+a*l+n*o-i*s,this._w=a*u-n*s-i*o-r*l,this._onChangeCallback(),this}slerp(e,t){if(0===t)return this;if(1===t)return this.copy(e);let n=this._x,i=this._y,r=this._z,a=this._w,s=a*e._w+n*e._x+i*e._y+r*e._z;if(s<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,s=-s):this.copy(e),s>=1)return this._w=a,this._x=n,this._y=i,this._z=r,this;let o=1-s*s;if(o<=Number.EPSILON){let e=1-t;return this._w=e*a+t*this._w,this._x=e*n+t*this._x,this._y=e*i+t*this._y,this._z=e*r+t*this._z,this.normalize(),this}let l=Math.sqrt(o),u=Math.atan2(l,s),c=Math.sin((1-t)*u)/l,h=Math.sin(t*u)/l;return this._w=a*c+this._w*h,this._x=n*c+this._x*h,this._y=i*c+this._y*h,this._z=r*c+this._z*h,this._onChangeCallback(),this}slerpQuaternions(e,t,n){return this.copy(e).slerp(t,n)}random(){let e=2*Math.PI*Math.random(),t=2*Math.PI*Math.random(),n=Math.random(),i=Math.sqrt(1-n),r=Math.sqrt(n);return this.set(i*Math.sin(e),i*Math.cos(e),r*Math.sin(t),r*Math.cos(t))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,t=0){return this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e}fromBufferAttribute(e,t){return this._x=e.getX(t),this._y=e.getY(t),this._z=e.getZ(t),this._w=e.getW(t),this._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class eE{constructor(e=0,t=0,n=0){eE.prototype.isVector3=!0,this.x=e,this.y=t,this.z=n}set(e,t,n){return void 0===n&&(n=this.z),this.x=e,this.y=t,this.z=n,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}multiplyVectors(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}applyEuler(e){return this.applyQuaternion(eC.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(eC.setFromAxisAngle(e,t))}applyMatrix3(e){let t=this.x,n=this.y,i=this.z,r=e.elements;return this.x=r[0]*t+r[3]*n+r[6]*i,this.y=r[1]*t+r[4]*n+r[7]*i,this.z=r[2]*t+r[5]*n+r[8]*i,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){let t=this.x,n=this.y,i=this.z,r=e.elements,a=1/(r[3]*t+r[7]*n+r[11]*i+r[15]);return this.x=(r[0]*t+r[4]*n+r[8]*i+r[12])*a,this.y=(r[1]*t+r[5]*n+r[9]*i+r[13])*a,this.z=(r[2]*t+r[6]*n+r[10]*i+r[14])*a,this}applyQuaternion(e){let t=this.x,n=this.y,i=this.z,r=e.x,a=e.y,s=e.z,o=e.w,l=2*(a*i-s*n),u=2*(s*t-r*i),c=2*(r*n-a*t);return this.x=t+o*l+a*c-s*u,this.y=n+o*u+s*l-r*c,this.z=i+o*c+r*u-a*l,this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){let t=this.x,n=this.y,i=this.z,r=e.elements;return this.x=r[0]*t+r[4]*n+r[8]*i,this.y=r[1]*t+r[5]*n+r[9]*i,this.z=r[2]*t+r[6]*n+r[10]*i,this.normalize()}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}divideScalar(e){return this.multiplyScalar(1/e)}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}clamp(e,t){return this.x=V(this.x,e.x,t.x),this.y=V(this.y,e.y,t.y),this.z=V(this.z,e.z,t.z),this}clampScalar(e,t){return this.x=V(this.x,e,t),this.y=V(this.y,e,t),this.z=V(this.z,e,t),this}clampLength(e,t){let n=this.length();return this.divideScalar(n||1).multiplyScalar(V(n,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){let n=e.x,i=e.y,r=e.z,a=t.x,s=t.y,o=t.z;return this.x=i*o-r*s,this.y=r*a-n*o,this.z=n*s-i*a,this}projectOnVector(e){let t=e.lengthSq();if(0===t)return this.set(0,0,0);let n=e.dot(this)/t;return this.copy(e).multiplyScalar(n)}projectOnPlane(e){return eA.copy(this).projectOnVector(e),this.sub(eA)}reflect(e){return this.sub(eA.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){let t=Math.sqrt(this.lengthSq()*e.lengthSq());return 0===t?Math.PI/2:Math.acos(V(this.dot(e)/t,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){let t=this.x-e.x,n=this.y-e.y,i=this.z-e.z;return t*t+n*n+i*i}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromSpherical(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)}setFromSphericalCoords(e,t,n){let i=Math.sin(t)*e;return this.x=i*Math.sin(n),this.y=Math.cos(t)*e,this.z=i*Math.cos(n),this}setFromCylindrical(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)}setFromCylindricalCoords(e,t,n){return this.x=e*Math.sin(t),this.y=n,this.z=e*Math.cos(t),this}setFromMatrixPosition(e){let t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){let t=this.setFromMatrixColumn(e,0).length(),n=this.setFromMatrixColumn(e,1).length(),i=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=n,this.z=i,this}setFromMatrixColumn(e,t){return this.fromArray(e.elements,4*t)}setFromMatrix3Column(e,t){return this.fromArray(e.elements,3*t)}setFromEuler(e){return this.x=e._x,this.y=e._y,this.z=e._z,this}setFromColor(e){return this.x=e.r,this.y=e.g,this.z=e.b,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){let e=Math.random()*Math.PI*2,t=2*Math.random()-1,n=Math.sqrt(1-t*t);return this.x=n*Math.cos(e),this.y=t,this.z=n*Math.sin(e),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}let eA=new eE,eC=new ew;class eR{constructor(e=new eE(Infinity,Infinity,Infinity),t=new eE(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromArray(e){this.makeEmpty();for(let t=0,n=e.length;t=this.min.x&&e.x<=this.max.x&&e.y>=this.min.y&&e.y<=this.max.y&&e.z>=this.min.z&&e.z<=this.max.z}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(e){return e.max.x>=this.min.x&&e.min.x<=this.max.x&&e.max.y>=this.min.y&&e.min.y<=this.max.y&&e.max.z>=this.min.z&&e.min.z<=this.max.z}intersectsSphere(e){return this.clampPoint(e.center,eI),eI.distanceToSquared(e.center)<=e.radius*e.radius}intersectsPlane(e){let t,n;return e.normal.x>0?(t=e.normal.x*this.min.x,n=e.normal.x*this.max.x):(t=e.normal.x*this.max.x,n=e.normal.x*this.min.x),e.normal.y>0?(t+=e.normal.y*this.min.y,n+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,n+=e.normal.y*this.min.y),e.normal.z>0?(t+=e.normal.z*this.min.z,n+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,n+=e.normal.z*this.min.z),t<=-e.constant&&n>=-e.constant}intersectsTriangle(e){if(this.isEmpty())return!1;this.getCenter(eB),ek.subVectors(this.max,eB),eN.subVectors(e.a,eB),eU.subVectors(e.b,eB),eD.subVectors(e.c,eB),eO.subVectors(eU,eN),eF.subVectors(eD,eU),ez.subVectors(eN,eD);let t=[0,-eO.z,eO.y,0,-eF.z,eF.y,0,-ez.z,ez.y,eO.z,0,-eO.x,eF.z,0,-eF.x,ez.z,0,-ez.x,-eO.y,eO.x,0,-eF.y,eF.x,0,-ez.y,ez.x,0];return!!eG(t,eN,eU,eD,ek)&&!!eG(t=[1,0,0,0,1,0,0,0,1],eN,eU,eD,ek)&&(eH.crossVectors(eO,eF),eG(t=[eH.x,eH.y,eH.z],eN,eU,eD,ek))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,eI).distanceTo(e)}getBoundingSphere(e){return this.isEmpty()?e.makeEmpty():(this.getCenter(e.center),e.radius=.5*this.getSize(eI).length()),e}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}applyMatrix4(e){return this.isEmpty()||(eP[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),eP[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),eP[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),eP[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),eP[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),eP[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),eP[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),eP[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(eP)),this}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}}let eP=[new eE,new eE,new eE,new eE,new eE,new eE,new eE,new eE],eI=new eE,eL=new eR,eN=new eE,eU=new eE,eD=new eE,eO=new eE,eF=new eE,ez=new eE,eB=new eE,ek=new eE,eH=new eE,eV=new eE;function eG(e,t,n,i,r){for(let a=0,s=e.length-3;a<=s;a+=3){eV.fromArray(e,a);let s=r.x*Math.abs(eV.x)+r.y*Math.abs(eV.y)+r.z*Math.abs(eV.z),o=t.dot(eV),l=n.dot(eV),u=i.dot(eV);if(Math.max(-Math.max(o,l,u),Math.min(o,l,u))>s)return!1}return!0}let eW=new eR,ej=new eE,eX=new eE;class eq{constructor(e=new eE,t=-1){this.isSphere=!0,this.center=e,this.radius=t}set(e,t){return this.center.copy(e),this.radius=t,this}setFromPoints(e,t){let n=this.center;void 0!==t?n.copy(t):eW.setFromPoints(e).getCenter(n);let i=0;for(let t=0,r=e.length;tthis.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t}getBoundingBox(e){return this.isEmpty()?e.makeEmpty():(e.set(this.center,this.center),e.expandByScalar(this.radius)),e}applyMatrix4(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this}translate(e){return this.center.add(e),this}expandByPoint(e){if(this.isEmpty())return this.center.copy(e),this.radius=0,this;ej.subVectors(e,this.center);let t=ej.lengthSq();if(t>this.radius*this.radius){let e=Math.sqrt(t),n=(e-this.radius)*.5;this.center.addScaledVector(ej,n/e),this.radius+=n}return this}union(e){return e.isEmpty()||(this.isEmpty()?this.copy(e):!0===this.center.equals(e.center)?this.radius=Math.max(this.radius,e.radius):(eX.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(ej.copy(e.center).add(eX)),this.expandByPoint(ej.copy(e.center).sub(eX)))),this}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return new this.constructor().copy(this)}}let eY=new eE,eZ=new eE,eJ=new eE,eK=new eE,e$=new eE,eQ=new eE,e0=new eE;class e1{constructor(e=new eE,t=new eE(0,0,-1)){this.origin=e,this.direction=t}set(e,t){return this.origin.copy(e),this.direction.copy(t),this}copy(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this}at(e,t){return t.copy(this.origin).addScaledVector(this.direction,e)}lookAt(e){return this.direction.copy(e).sub(this.origin).normalize(),this}recast(e){return this.origin.copy(this.at(e,eY)),this}closestPointToPoint(e,t){t.subVectors(e,this.origin);let n=t.dot(this.direction);return n<0?t.copy(this.origin):t.copy(this.origin).addScaledVector(this.direction,n)}distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}distanceSqToPoint(e){let t=eY.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(eY.copy(this.origin).addScaledVector(this.direction,t),eY.distanceToSquared(e))}distanceSqToSegment(e,t,n,i){let r,a,s,o;eZ.copy(e).add(t).multiplyScalar(.5),eJ.copy(t).sub(e).normalize(),eK.copy(this.origin).sub(eZ);let l=.5*e.distanceTo(t),u=-this.direction.dot(eJ),c=eK.dot(this.direction),h=-eK.dot(eJ),d=eK.lengthSq(),p=Math.abs(1-u*u);if(p>0)if(r=u*h-c,a=u*c-h,o=l*p,r>=0)if(a>=-o)if(a<=o){let e=1/p;r*=e,a*=e,s=r*(r+u*a+2*c)+a*(u*r+a+2*h)+d}else s=-(r=Math.max(0,-(u*(a=l)+c)))*r+a*(a+2*h)+d;else s=-(r=Math.max(0,-(u*(a=-l)+c)))*r+a*(a+2*h)+d;else a<=-o?(a=(r=Math.max(0,-(-u*l+c)))>0?-l:Math.min(Math.max(-l,-h),l),s=-r*r+a*(a+2*h)+d):a<=o?(r=0,s=(a=Math.min(Math.max(-l,-h),l))*(a+2*h)+d):(a=(r=Math.max(0,-(u*l+c)))>0?l:Math.min(Math.max(-l,-h),l),s=-r*r+a*(a+2*h)+d);else a=u>0?-l:l,s=-(r=Math.max(0,-(u*a+c)))*r+a*(a+2*h)+d;return n&&n.copy(this.origin).addScaledVector(this.direction,r),i&&i.copy(eZ).addScaledVector(eJ,a),s}intersectSphere(e,t){eY.subVectors(e.center,this.origin);let n=eY.dot(this.direction),i=eY.dot(eY)-n*n,r=e.radius*e.radius;if(i>r)return null;let a=Math.sqrt(r-i),s=n-a,o=n+a;return o<0?null:s<0?this.at(o,t):this.at(s,t)}intersectsSphere(e){return this.distanceSqToPoint(e.center)<=e.radius*e.radius}distanceToPlane(e){let t=e.normal.dot(this.direction);if(0===t)return 0===e.distanceToPoint(this.origin)?0:null;let n=-(this.origin.dot(e.normal)+e.constant)/t;return n>=0?n:null}intersectPlane(e,t){let n=this.distanceToPlane(e);return null===n?null:this.at(n,t)}intersectsPlane(e){let t=e.distanceToPoint(this.origin);return!!(0===t||e.normal.dot(this.direction)*t<0)}intersectBox(e,t){let n,i,r,a,s,o,l=1/this.direction.x,u=1/this.direction.y,c=1/this.direction.z,h=this.origin;return(l>=0?(n=(e.min.x-h.x)*l,i=(e.max.x-h.x)*l):(n=(e.max.x-h.x)*l,i=(e.min.x-h.x)*l),u>=0?(r=(e.min.y-h.y)*u,a=(e.max.y-h.y)*u):(r=(e.max.y-h.y)*u,a=(e.min.y-h.y)*u),n>a||r>i||((r>n||isNaN(n))&&(n=r),(a=0?(s=(e.min.z-h.z)*c,o=(e.max.z-h.z)*c):(s=(e.max.z-h.z)*c,o=(e.min.z-h.z)*c),n>o||s>i||((s>n||n!=n)&&(n=s),(o=0?n:i,t)}intersectsBox(e){return null!==this.intersectBox(e,eY)}intersectTriangle(e,t,n,i,r){let a;e$.subVectors(t,e),eQ.subVectors(n,e),e0.crossVectors(e$,eQ);let s=this.direction.dot(e0);if(s>0){if(i)return null;a=1}else{if(!(s<0))return null;a=-1,s=-s}eK.subVectors(this.origin,e);let o=a*this.direction.dot(eQ.crossVectors(eK,eQ));if(o<0)return null;let l=a*this.direction.dot(e$.cross(eK));if(l<0||o+l>s)return null;let u=-a*eK.dot(e0);return u<0?null:this.at(u/s,r)}applyMatrix4(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this}equals(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}}class e2{constructor(e,t,n,i,r,a,s,o,l,u,c,h,d,p,f,m){e2.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],void 0!==e&&this.set(e,t,n,i,r,a,s,o,l,u,c,h,d,p,f,m)}set(e,t,n,i,r,a,s,o,l,u,c,h,d,p,f,m){let g=this.elements;return g[0]=e,g[4]=t,g[8]=n,g[12]=i,g[1]=r,g[5]=a,g[9]=s,g[13]=o,g[2]=l,g[6]=u,g[10]=c,g[14]=h,g[3]=d,g[7]=p,g[11]=f,g[15]=m,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new e2().fromArray(this.elements)}copy(e){let t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],t[9]=n[9],t[10]=n[10],t[11]=n[11],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15],this}copyPosition(e){let t=this.elements,n=e.elements;return t[12]=n[12],t[13]=n[13],t[14]=n[14],this}setFromMatrix3(e){let t=e.elements;return this.set(t[0],t[3],t[6],0,t[1],t[4],t[7],0,t[2],t[5],t[8],0,0,0,0,1),this}extractBasis(e,t,n){return e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this}makeBasis(e,t,n){return this.set(e.x,t.x,n.x,0,e.y,t.y,n.y,0,e.z,t.z,n.z,0,0,0,0,1),this}extractRotation(e){let t=this.elements,n=e.elements,i=1/e3.setFromMatrixColumn(e,0).length(),r=1/e3.setFromMatrixColumn(e,1).length(),a=1/e3.setFromMatrixColumn(e,2).length();return t[0]=n[0]*i,t[1]=n[1]*i,t[2]=n[2]*i,t[3]=0,t[4]=n[4]*r,t[5]=n[5]*r,t[6]=n[6]*r,t[7]=0,t[8]=n[8]*a,t[9]=n[9]*a,t[10]=n[10]*a,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(e){let t=this.elements,n=e.x,i=e.y,r=e.z,a=Math.cos(n),s=Math.sin(n),o=Math.cos(i),l=Math.sin(i),u=Math.cos(r),c=Math.sin(r);if("XYZ"===e.order){let e=a*u,n=a*c,i=s*u,r=s*c;t[0]=o*u,t[4]=-o*c,t[8]=l,t[1]=n+i*l,t[5]=e-r*l,t[9]=-s*o,t[2]=r-e*l,t[6]=i+n*l,t[10]=a*o}else if("YXZ"===e.order){let e=o*u,n=o*c,i=l*u,r=l*c;t[0]=e+r*s,t[4]=i*s-n,t[8]=a*l,t[1]=a*c,t[5]=a*u,t[9]=-s,t[2]=n*s-i,t[6]=r+e*s,t[10]=a*o}else if("ZXY"===e.order){let e=o*u,n=o*c,i=l*u,r=l*c;t[0]=e-r*s,t[4]=-a*c,t[8]=i+n*s,t[1]=n+i*s,t[5]=a*u,t[9]=r-e*s,t[2]=-a*l,t[6]=s,t[10]=a*o}else if("ZYX"===e.order){let e=a*u,n=a*c,i=s*u,r=s*c;t[0]=o*u,t[4]=i*l-n,t[8]=e*l+r,t[1]=o*c,t[5]=r*l+e,t[9]=n*l-i,t[2]=-l,t[6]=s*o,t[10]=a*o}else if("YZX"===e.order){let e=a*o,n=a*l,i=s*o,r=s*l;t[0]=o*u,t[4]=r-e*c,t[8]=i*c+n,t[1]=c,t[5]=a*u,t[9]=-s*u,t[2]=-l*u,t[6]=n*c+i,t[10]=e-r*c}else if("XZY"===e.order){let e=a*o,n=a*l,i=s*o,r=s*l;t[0]=o*u,t[4]=-c,t[8]=l*u,t[1]=e*c+r,t[5]=a*u,t[9]=n*c-i,t[2]=i*c-n,t[6]=s*u,t[10]=r*c+e}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromQuaternion(e){return this.compose(e5,e,e6)}lookAt(e,t,n){let i=this.elements;return e7.subVectors(e,t),0===e7.lengthSq()&&(e7.z=1),e7.normalize(),e8.crossVectors(n,e7),0===e8.lengthSq()&&(1===Math.abs(n.z)?e7.x+=1e-4:e7.z+=1e-4,e7.normalize(),e8.crossVectors(n,e7)),e8.normalize(),e9.crossVectors(e7,e8),i[0]=e8.x,i[4]=e9.x,i[8]=e7.x,i[1]=e8.y,i[5]=e9.y,i[9]=e7.y,i[2]=e8.z,i[6]=e9.z,i[10]=e7.z,this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){let n=e.elements,i=t.elements,r=this.elements,a=n[0],s=n[4],o=n[8],l=n[12],u=n[1],c=n[5],h=n[9],d=n[13],p=n[2],f=n[6],m=n[10],g=n[14],v=n[3],_=n[7],y=n[11],x=n[15],b=i[0],S=i[4],M=i[8],T=i[12],w=i[1],E=i[5],A=i[9],C=i[13],R=i[2],P=i[6],I=i[10],L=i[14],N=i[3],U=i[7],D=i[11],O=i[15];return r[0]=a*b+s*w+o*R+l*N,r[4]=a*S+s*E+o*P+l*U,r[8]=a*M+s*A+o*I+l*D,r[12]=a*T+s*C+o*L+l*O,r[1]=u*b+c*w+h*R+d*N,r[5]=u*S+c*E+h*P+d*U,r[9]=u*M+c*A+h*I+d*D,r[13]=u*T+c*C+h*L+d*O,r[2]=p*b+f*w+m*R+g*N,r[6]=p*S+f*E+m*P+g*U,r[10]=p*M+f*A+m*I+g*D,r[14]=p*T+f*C+m*L+g*O,r[3]=v*b+_*w+y*R+x*N,r[7]=v*S+_*E+y*P+x*U,r[11]=v*M+_*A+y*I+x*D,r[15]=v*T+_*C+y*L+x*O,this}multiplyScalar(e){let t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this}determinant(){let e=this.elements,t=e[0],n=e[4],i=e[8],r=e[12],a=e[1],s=e[5],o=e[9],l=e[13],u=e[2],c=e[6],h=e[10],d=e[14];return e[3]*(r*o*c-i*l*c-r*s*h+n*l*h+i*s*d-n*o*d)+e[7]*(t*o*d-t*l*h+r*a*h-i*a*d+i*l*u-r*o*u)+e[11]*(t*l*c-t*s*d-r*a*c+n*a*d+r*s*u-n*l*u)+e[15]*(-i*s*u-t*o*c+t*s*h+i*a*c-n*a*h+n*o*u)}transpose(){let e,t=this.elements;return e=t[1],t[1]=t[4],t[4]=e,e=t[2],t[2]=t[8],t[8]=e,e=t[6],t[6]=t[9],t[9]=e,e=t[3],t[3]=t[12],t[12]=e,e=t[7],t[7]=t[13],t[13]=e,e=t[11],t[11]=t[14],t[14]=e,this}setPosition(e,t,n){let i=this.elements;return e.isVector3?(i[12]=e.x,i[13]=e.y,i[14]=e.z):(i[12]=e,i[13]=t,i[14]=n),this}invert(){let e=this.elements,t=e[0],n=e[1],i=e[2],r=e[3],a=e[4],s=e[5],o=e[6],l=e[7],u=e[8],c=e[9],h=e[10],d=e[11],p=e[12],f=e[13],m=e[14],g=e[15],v=c*m*l-f*h*l+f*o*d-s*m*d-c*o*g+s*h*g,_=p*h*l-u*m*l-p*o*d+a*m*d+u*o*g-a*h*g,y=u*f*l-p*c*l+p*s*d-a*f*d-u*s*g+a*c*g,x=p*c*o-u*f*o-p*s*h+a*f*h+u*s*m-a*c*m,b=t*v+n*_+i*y+r*x;if(0===b)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);let S=1/b;return e[0]=v*S,e[1]=(f*h*r-c*m*r-f*i*d+n*m*d+c*i*g-n*h*g)*S,e[2]=(s*m*r-f*o*r+f*i*l-n*m*l-s*i*g+n*o*g)*S,e[3]=(c*o*r-s*h*r-c*i*l+n*h*l+s*i*d-n*o*d)*S,e[4]=_*S,e[5]=(u*m*r-p*h*r+p*i*d-t*m*d-u*i*g+t*h*g)*S,e[6]=(p*o*r-a*m*r-p*i*l+t*m*l+a*i*g-t*o*g)*S,e[7]=(a*h*r-u*o*r+u*i*l-t*h*l-a*i*d+t*o*d)*S,e[8]=y*S,e[9]=(p*c*r-u*f*r-p*n*d+t*f*d+u*n*g-t*c*g)*S,e[10]=(a*f*r-p*s*r+p*n*l-t*f*l-a*n*g+t*s*g)*S,e[11]=(u*s*r-a*c*r-u*n*l+t*c*l+a*n*d-t*s*d)*S,e[12]=x*S,e[13]=(u*f*i-p*c*i+p*n*h-t*f*h-u*n*m+t*c*m)*S,e[14]=(p*s*i-a*f*i-p*n*o+t*f*o+a*n*m-t*s*m)*S,e[15]=(a*c*i-u*s*i+u*n*o-t*c*o-a*n*h+t*s*h)*S,this}scale(e){let t=this.elements,n=e.x,i=e.y,r=e.z;return t[0]*=n,t[4]*=i,t[8]*=r,t[1]*=n,t[5]*=i,t[9]*=r,t[2]*=n,t[6]*=i,t[10]*=r,t[3]*=n,t[7]*=i,t[11]*=r,this}getMaxScaleOnAxis(){let e=this.elements;return Math.sqrt(Math.max(e[0]*e[0]+e[1]*e[1]+e[2]*e[2],e[4]*e[4]+e[5]*e[5]+e[6]*e[6],e[8]*e[8]+e[9]*e[9]+e[10]*e[10]))}makeTranslation(e,t,n){return e.isVector3?this.set(1,0,0,e.x,0,1,0,e.y,0,0,1,e.z,0,0,0,1):this.set(1,0,0,e,0,1,0,t,0,0,1,n,0,0,0,1),this}makeRotationX(e){let t=Math.cos(e),n=Math.sin(e);return this.set(1,0,0,0,0,t,-n,0,0,n,t,0,0,0,0,1),this}makeRotationY(e){let t=Math.cos(e),n=Math.sin(e);return this.set(t,0,n,0,0,1,0,0,-n,0,t,0,0,0,0,1),this}makeRotationZ(e){let t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,0,n,t,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(e,t){let n=Math.cos(t),i=Math.sin(t),r=1-n,a=e.x,s=e.y,o=e.z,l=r*a,u=r*s;return this.set(l*a+n,l*s-i*o,l*o+i*s,0,l*s+i*o,u*s+n,u*o-i*a,0,l*o-i*s,u*o+i*a,r*o*o+n,0,0,0,0,1),this}makeScale(e,t,n){return this.set(e,0,0,0,0,t,0,0,0,0,n,0,0,0,0,1),this}makeShear(e,t,n,i,r,a){return this.set(1,n,r,0,e,1,a,0,t,i,1,0,0,0,0,1),this}compose(e,t,n){let i=this.elements,r=t._x,a=t._y,s=t._z,o=t._w,l=r+r,u=a+a,c=s+s,h=r*l,d=r*u,p=r*c,f=a*u,m=a*c,g=s*c,v=o*l,_=o*u,y=o*c,x=n.x,b=n.y,S=n.z;return i[0]=(1-(f+g))*x,i[1]=(d+y)*x,i[2]=(p-_)*x,i[3]=0,i[4]=(d-y)*b,i[5]=(1-(h+g))*b,i[6]=(m+v)*b,i[7]=0,i[8]=(p+_)*S,i[9]=(m-v)*S,i[10]=(1-(h+f))*S,i[11]=0,i[12]=e.x,i[13]=e.y,i[14]=e.z,i[15]=1,this}decompose(e,t,n){let i=this.elements,r=e3.set(i[0],i[1],i[2]).length(),a=e3.set(i[4],i[5],i[6]).length(),s=e3.set(i[8],i[9],i[10]).length();0>this.determinant()&&(r=-r),e.x=i[12],e.y=i[13],e.z=i[14],e4.copy(this);let o=1/r,l=1/a,u=1/s;return e4.elements[0]*=o,e4.elements[1]*=o,e4.elements[2]*=o,e4.elements[4]*=l,e4.elements[5]*=l,e4.elements[6]*=l,e4.elements[8]*=u,e4.elements[9]*=u,e4.elements[10]*=u,t.setFromRotationMatrix(e4),n.x=r,n.y=a,n.z=s,this}makePerspective(e,t,n,i,r,a,s=2e3){let o,l,u=this.elements;if(2e3===s)o=-(a+r)/(a-r),l=-2*a*r/(a-r);else if(2001===s)o=-a/(a-r),l=-a*r/(a-r);else throw Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+s);return u[0]=2*r/(t-e),u[4]=0,u[8]=(t+e)/(t-e),u[12]=0,u[1]=0,u[5]=2*r/(n-i),u[9]=(n+i)/(n-i),u[13]=0,u[2]=0,u[6]=0,u[10]=o,u[14]=l,u[3]=0,u[7]=0,u[11]=-1,u[15]=0,this}makeOrthographic(e,t,n,i,r,a,s=2e3){let o,l,u=this.elements,c=1/(t-e),h=1/(n-i),d=1/(a-r);if(2e3===s)o=(a+r)*d,l=-2*d;else if(2001===s)o=r*d,l=-1*d;else throw Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+s);return u[0]=2*c,u[4]=0,u[8]=0,u[12]=-((t+e)*c),u[1]=0,u[5]=2*h,u[9]=0,u[13]=-((n+i)*h),u[2]=0,u[6]=0,u[10]=l,u[14]=-o,u[3]=0,u[7]=0,u[11]=0,u[15]=1,this}equals(e){let t=this.elements,n=e.elements;for(let e=0;e<16;e++)if(t[e]!==n[e])return!1;return!0}fromArray(e,t=0){for(let n=0;n<16;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){let n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e[t+9]=n[9],e[t+10]=n[10],e[t+11]=n[11],e[t+12]=n[12],e[t+13]=n[13],e[t+14]=n[14],e[t+15]=n[15],e}}let e3=new eE,e4=new e2,e5=new eE(0,0,0),e6=new eE(1,1,1),e8=new eE,e9=new eE,e7=new eE,te=new e2,tt=new ew;class tn{constructor(e=0,t=0,n=0,i=tn.DEFAULT_ORDER){this.isEuler=!0,this._x=e,this._y=t,this._z=n,this._order=i}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get order(){return this._order}set order(e){this._order=e,this._onChangeCallback()}set(e,t,n,i=this._order){return this._x=e,this._y=t,this._z=n,this._order=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this._onChangeCallback(),this}setFromRotationMatrix(e,t=this._order,n=!0){let i=e.elements,r=i[0],a=i[4],s=i[8],o=i[1],l=i[5],u=i[9],c=i[2],h=i[6],d=i[10];switch(t){case"XYZ":this._y=Math.asin(V(s,-1,1)),.9999999>Math.abs(s)?(this._x=Math.atan2(-u,d),this._z=Math.atan2(-a,r)):(this._x=Math.atan2(h,l),this._z=0);break;case"YXZ":this._x=Math.asin(-V(u,-1,1)),.9999999>Math.abs(u)?(this._y=Math.atan2(s,d),this._z=Math.atan2(o,l)):(this._y=Math.atan2(-c,r),this._z=0);break;case"ZXY":this._x=Math.asin(V(h,-1,1)),.9999999>Math.abs(h)?(this._y=Math.atan2(-c,d),this._z=Math.atan2(-a,l)):(this._y=0,this._z=Math.atan2(o,r));break;case"ZYX":this._y=Math.asin(-V(c,-1,1)),.9999999>Math.abs(c)?(this._x=Math.atan2(h,d),this._z=Math.atan2(o,r)):(this._x=0,this._z=Math.atan2(-a,l));break;case"YZX":this._z=Math.asin(V(o,-1,1)),.9999999>Math.abs(o)?(this._x=Math.atan2(-u,l),this._y=Math.atan2(-c,r)):(this._x=0,this._y=Math.atan2(s,d));break;case"XZY":this._z=Math.asin(-V(a,-1,1)),.9999999>Math.abs(a)?(this._x=Math.atan2(h,l),this._y=Math.atan2(s,r)):(this._x=Math.atan2(-u,d),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,!0===n&&this._onChangeCallback(),this}setFromQuaternion(e,t,n){return te.makeRotationFromQuaternion(e),this.setFromRotationMatrix(te,t,n)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return tt.setFromEuler(this),this.setFromQuaternion(tt,e)}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order}fromArray(e){return this._x=e[0],this._y=e[1],this._z=e[2],void 0!==e[3]&&(this._order=e[3]),this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}tn.DEFAULT_ORDER="XYZ";class ti{constructor(){this.mask=1}set(e){this.mask=1<>>0}enable(e){this.mask|=1<1){for(let e=0;e1){for(let e=0;e0&&(i.userData=this.userData),i.layers=this.layers.mask,i.matrix=this.matrix.toArray(),i.up=this.up.toArray(),!1===this.matrixAutoUpdate&&(i.matrixAutoUpdate=!1),this.isInstancedMesh&&(i.type="InstancedMesh",i.count=this.count,i.instanceMatrix=this.instanceMatrix.toJSON(),null!==this.instanceColor&&(i.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(i.type="BatchedMesh",i.perObjectFrustumCulled=this.perObjectFrustumCulled,i.sortObjects=this.sortObjects,i.drawRanges=this._drawRanges,i.reservedRanges=this._reservedRanges,i.visibility=this._visibility,i.active=this._active,i.bounds=this._bounds.map(e=>({boxInitialized:e.boxInitialized,boxMin:e.box.min.toArray(),boxMax:e.box.max.toArray(),sphereInitialized:e.sphereInitialized,sphereRadius:e.sphere.radius,sphereCenter:e.sphere.center.toArray()})),i.maxInstanceCount=this._maxInstanceCount,i.maxVertexCount=this._maxVertexCount,i.maxIndexCount=this._maxIndexCount,i.geometryInitialized=this._geometryInitialized,i.geometryCount=this._geometryCount,i.matricesTexture=this._matricesTexture.toJSON(e),null!==this._colorsTexture&&(i.colorsTexture=this._colorsTexture.toJSON(e)),null!==this.boundingSphere&&(i.boundingSphere={center:i.boundingSphere.center.toArray(),radius:i.boundingSphere.radius}),null!==this.boundingBox&&(i.boundingBox={min:i.boundingBox.min.toArray(),max:i.boundingBox.max.toArray()})),this.isScene)this.background&&(this.background.isColor?i.background=this.background.toJSON():this.background.isTexture&&(i.background=this.background.toJSON(e).uuid)),this.environment&&this.environment.isTexture&&!0!==this.environment.isRenderTargetTexture&&(i.environment=this.environment.toJSON(e).uuid);else if(this.isMesh||this.isLine||this.isPoints){i.geometry=r(e.geometries,this.geometry);let t=this.geometry.parameters;if(void 0!==t&&void 0!==t.shapes){let n=t.shapes;if(Array.isArray(n))for(let t=0,i=n.length;t0){i.children=[];for(let t=0;t0){i.animations=[];for(let t=0;t0&&(n.geometries=t),i.length>0&&(n.materials=i),r.length>0&&(n.textures=r),s.length>0&&(n.images=s),o.length>0&&(n.shapes=o),l.length>0&&(n.skeletons=l),u.length>0&&(n.animations=u),c.length>0&&(n.nodes=c)}return n.object=i,n;function a(e){let t=[];for(let n in e){let i=e[n];delete i.metadata,t.push(i)}return t}}clone(e){return new this.constructor().copy(this,e)}copy(e,t=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldAutoUpdate=e.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.animations=e.animations.slice(),this.userData=JSON.parse(JSON.stringify(e.userData)),!0===t)for(let t=0;t0?i.multiplyScalar(1/Math.sqrt(r)):i.set(0,0,0)}static getBarycoord(e,t,n,i,r){tx.subVectors(i,t),tb.subVectors(n,t),tS.subVectors(e,t);let a=tx.dot(tx),s=tx.dot(tb),o=tx.dot(tS),l=tb.dot(tb),u=tb.dot(tS),c=a*l-s*s;if(0===c)return r.set(0,0,0),null;let h=1/c,d=(l*o-s*u)*h,p=(a*u-s*o)*h;return r.set(1-d-p,p,d)}static containsPoint(e,t,n,i){return null!==this.getBarycoord(e,t,n,i,tM)&&tM.x>=0&&tM.y>=0&&tM.x+tM.y<=1}static getInterpolation(e,t,n,i,r,a,s,o){return null===this.getBarycoord(e,t,n,i,tM)?(o.x=0,o.y=0,"z"in o&&(o.z=0),"w"in o&&(o.w=0),null):(o.setScalar(0),o.addScaledVector(r,tM.x),o.addScaledVector(a,tM.y),o.addScaledVector(s,tM.z),o)}static getInterpolatedAttribute(e,t,n,i,r,a){return tP.setScalar(0),tI.setScalar(0),tL.setScalar(0),tP.fromBufferAttribute(e,t),tI.fromBufferAttribute(e,n),tL.fromBufferAttribute(e,i),a.setScalar(0),a.addScaledVector(tP,r.x),a.addScaledVector(tI,r.y),a.addScaledVector(tL,r.z),a}static isFrontFacing(e,t,n,i){return tx.subVectors(n,t),tb.subVectors(e,t),0>tx.cross(tb).dot(i)}set(e,t,n){return this.a.copy(e),this.b.copy(t),this.c.copy(n),this}setFromPointsAndIndices(e,t,n,i){return this.a.copy(e[t]),this.b.copy(e[n]),this.c.copy(e[i]),this}setFromAttributeAndIndices(e,t,n,i){return this.a.fromBufferAttribute(e,t),this.b.fromBufferAttribute(e,n),this.c.fromBufferAttribute(e,i),this}clone(){return new this.constructor().copy(this)}copy(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this}getArea(){return tx.subVectors(this.c,this.b),tb.subVectors(this.a,this.b),.5*tx.cross(tb).length()}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(e){return tN.getNormal(this.a,this.b,this.c,e)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(e,t){return tN.getBarycoord(e,this.a,this.b,this.c,t)}getInterpolation(e,t,n,i,r){return tN.getInterpolation(e,this.a,this.b,this.c,t,n,i,r)}containsPoint(e){return tN.containsPoint(e,this.a,this.b,this.c)}isFrontFacing(e){return tN.isFrontFacing(this.a,this.b,this.c,e)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,t){let n,i,r=this.a,a=this.b,s=this.c;tT.subVectors(a,r),tw.subVectors(s,r),tA.subVectors(e,r);let o=tT.dot(tA),l=tw.dot(tA);if(o<=0&&l<=0)return t.copy(r);tC.subVectors(e,a);let u=tT.dot(tC),c=tw.dot(tC);if(u>=0&&c<=u)return t.copy(a);let h=o*c-u*l;if(h<=0&&o>=0&&u<=0)return n=o/(o-u),t.copy(r).addScaledVector(tT,n);tR.subVectors(e,s);let d=tT.dot(tR),p=tw.dot(tR);if(p>=0&&d<=p)return t.copy(s);let f=d*l-o*p;if(f<=0&&l>=0&&p<=0)return i=l/(l-p),t.copy(r).addScaledVector(tw,i);let m=u*p-d*c;if(m<=0&&c-u>=0&&d-p>=0)return tE.subVectors(s,a),i=(c-u)/(c-u+(d-p)),t.copy(a).addScaledVector(tE,i);let g=1/(m+f+h);return n=f*g,i=h*g,t.copy(r).addScaledVector(tT,n).addScaledVector(tw,i)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}}let tU={aliceblue:0xf0f8ff,antiquewhite:0xfaebd7,aqua:65535,aquamarine:8388564,azure:0xf0ffff,beige:0xf5f5dc,bisque:0xffe4c4,black:0,blanchedalmond:0xffebcd,blue:255,blueviolet:9055202,brown:0xa52a2a,burlywood:0xdeb887,cadetblue:6266528,chartreuse:8388352,chocolate:0xd2691e,coral:0xff7f50,cornflowerblue:6591981,cornsilk:0xfff8dc,crimson:0xdc143c,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:0xb8860b,darkgray:0xa9a9a9,darkgreen:25600,darkgrey:0xa9a9a9,darkkhaki:0xbdb76b,darkmagenta:9109643,darkolivegreen:5597999,darkorange:0xff8c00,darkorchid:0x9932cc,darkred:9109504,darksalmon:0xe9967a,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:0xff1493,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:0xb22222,floralwhite:0xfffaf0,forestgreen:2263842,fuchsia:0xff00ff,gainsboro:0xdcdcdc,ghostwhite:0xf8f8ff,gold:0xffd700,goldenrod:0xdaa520,gray:8421504,green:32768,greenyellow:0xadff2f,grey:8421504,honeydew:0xf0fff0,hotpink:0xff69b4,indianred:0xcd5c5c,indigo:4915330,ivory:0xfffff0,khaki:0xf0e68c,lavender:0xe6e6fa,lavenderblush:0xfff0f5,lawngreen:8190976,lemonchiffon:0xfffacd,lightblue:0xadd8e6,lightcoral:0xf08080,lightcyan:0xe0ffff,lightgoldenrodyellow:0xfafad2,lightgray:0xd3d3d3,lightgreen:9498256,lightgrey:0xd3d3d3,lightpink:0xffb6c1,lightsalmon:0xffa07a,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:0xb0c4de,lightyellow:0xffffe0,lime:65280,limegreen:3329330,linen:0xfaf0e6,magenta:0xff00ff,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:0xba55d3,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:0xc71585,midnightblue:1644912,mintcream:0xf5fffa,mistyrose:0xffe4e1,moccasin:0xffe4b5,navajowhite:0xffdead,navy:128,oldlace:0xfdf5e6,olive:8421376,olivedrab:7048739,orange:0xffa500,orangered:0xff4500,orchid:0xda70d6,palegoldenrod:0xeee8aa,palegreen:0x98fb98,paleturquoise:0xafeeee,palevioletred:0xdb7093,papayawhip:0xffefd5,peachpuff:0xffdab9,peru:0xcd853f,pink:0xffc0cb,plum:0xdda0dd,powderblue:0xb0e0e6,purple:8388736,rebeccapurple:6697881,red:0xff0000,rosybrown:0xbc8f8f,royalblue:4286945,saddlebrown:9127187,salmon:0xfa8072,sandybrown:0xf4a460,seagreen:3050327,seashell:0xfff5ee,sienna:0xa0522d,silver:0xc0c0c0,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:0xfffafa,springgreen:65407,steelblue:4620980,tan:0xd2b48c,teal:32896,thistle:0xd8bfd8,tomato:0xff6347,turquoise:4251856,violet:0xee82ee,wheat:0xf5deb3,white:0xffffff,whitesmoke:0xf5f5f5,yellow:0xffff00,yellowgreen:0x9acd32},tD={h:0,s:0,l:0},tO={h:0,s:0,l:0};function tF(e,t,n){return(n<0&&(n+=1),n>1&&(n-=1),n<1/6)?e+(t-e)*6*n:n<.5?t:n<2/3?e+(t-e)*6*(2/3-n):e}class tz{constructor(e,t,n){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(e,t,n)}set(e,t,n){return void 0===t&&void 0===n?e&&e.isColor?this.copy(e):"number"==typeof e?this.setHex(e):"string"==typeof e&&this.setStyle(e):this.setRGB(e,t,n),this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e,t=I){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(255&e)/255,eu.toWorkingColorSpace(this,t),this}setRGB(e,t,n,i=eu.workingColorSpace){return this.r=e,this.g=t,this.b=n,eu.toWorkingColorSpace(this,i),this}setHSL(e,t,n,i=eu.workingColorSpace){if(e=G(e,1),t=V(t,0,1),n=V(n,0,1),0===t)this.r=this.g=this.b=n;else{let i=n<=.5?n*(1+t):n+t-n*t,r=2*n-i;this.r=tF(r,i,e+1/3),this.g=tF(r,i,e),this.b=tF(r,i,e-1/3)}return eu.toWorkingColorSpace(this,i),this}setStyle(e,t=I){let n;function i(t){void 0!==t&&1>parseFloat(t)&&console.warn("THREE.Color: Alpha component of "+e+" will be ignored.")}if(n=/^(\w+)\(([^\)]*)\)/.exec(e)){let r,a=n[1],s=n[2];switch(a){case"rgb":case"rgba":if(r=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return i(r[4]),this.setRGB(Math.min(255,parseInt(r[1],10))/255,Math.min(255,parseInt(r[2],10))/255,Math.min(255,parseInt(r[3],10))/255,t);if(r=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return i(r[4]),this.setRGB(Math.min(100,parseInt(r[1],10))/100,Math.min(100,parseInt(r[2],10))/100,Math.min(100,parseInt(r[3],10))/100,t);break;case"hsl":case"hsla":if(r=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return i(r[4]),this.setHSL(parseFloat(r[1])/360,parseFloat(r[2])/100,parseFloat(r[3])/100,t);break;default:console.warn("THREE.Color: Unknown color model "+e)}}else if(n=/^\#([A-Fa-f\d]+)$/.exec(e)){let i=n[1],r=i.length;if(3===r)return this.setRGB(parseInt(i.charAt(0),16)/15,parseInt(i.charAt(1),16)/15,parseInt(i.charAt(2),16)/15,t);if(6===r)return this.setHex(parseInt(i,16),t);console.warn("THREE.Color: Invalid hex color "+e)}else if(e&&e.length>0)return this.setColorName(e,t);return this}setColorName(e,t=I){let n=tU[e.toLowerCase()];return void 0!==n?this.setHex(n,t):console.warn("THREE.Color: Unknown color "+e),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copySRGBToLinear(e){return this.r=ec(e.r),this.g=ec(e.g),this.b=ec(e.b),this}copyLinearToSRGB(e){return this.r=eh(e.r),this.g=eh(e.g),this.b=eh(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=I){return eu.fromWorkingColorSpace(tB.copy(this),e),65536*Math.round(V(255*tB.r,0,255))+256*Math.round(V(255*tB.g,0,255))+Math.round(V(255*tB.b,0,255))}getHexString(e=I){return("000000"+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=eu.workingColorSpace){let n,i;eu.fromWorkingColorSpace(tB.copy(this),t);let r=tB.r,a=tB.g,s=tB.b,o=Math.max(r,a,s),l=Math.min(r,a,s),u=(l+o)/2;if(l===o)n=0,i=0;else{let e=o-l;switch(i=u<=.5?e/(o+l):e/(2-o-l),o){case r:n=(a-s)/e+6*(a0!=e>0&&this.version++,this._alphaTest=e}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(void 0!==e)for(let t in e){let n=e[t];if(void 0===n){console.warn(`THREE.Material: parameter '${t}' has value of undefined.`);continue}let i=this[t];if(void 0===i){console.warn(`THREE.Material: '${t}' is not a property of THREE.${this.type}.`);continue}i&&i.isColor?i.set(n):i&&i.isVector3&&n&&n.isVector3?i.copy(n):this[t]=n}}toJSON(e){let t=void 0===e||"string"==typeof e;t&&(e={textures:{},images:{}});let n={metadata:{version:4.6,type:"Material",generator:"Material.toJSON"}};function i(e){let t=[];for(let n in e){let i=e[n];delete i.metadata,t.push(i)}return t}if(n.uuid=this.uuid,n.type=this.type,""!==this.name&&(n.name=this.name),this.color&&this.color.isColor&&(n.color=this.color.getHex()),void 0!==this.roughness&&(n.roughness=this.roughness),void 0!==this.metalness&&(n.metalness=this.metalness),void 0!==this.sheen&&(n.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(n.sheenColor=this.sheenColor.getHex()),void 0!==this.sheenRoughness&&(n.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(n.emissive=this.emissive.getHex()),void 0!==this.emissiveIntensity&&1!==this.emissiveIntensity&&(n.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(n.specular=this.specular.getHex()),void 0!==this.specularIntensity&&(n.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(n.specularColor=this.specularColor.getHex()),void 0!==this.shininess&&(n.shininess=this.shininess),void 0!==this.clearcoat&&(n.clearcoat=this.clearcoat),void 0!==this.clearcoatRoughness&&(n.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(n.clearcoatMap=this.clearcoatMap.toJSON(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(n.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(n.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,n.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),void 0!==this.dispersion&&(n.dispersion=this.dispersion),void 0!==this.iridescence&&(n.iridescence=this.iridescence),void 0!==this.iridescenceIOR&&(n.iridescenceIOR=this.iridescenceIOR),void 0!==this.iridescenceThicknessRange&&(n.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(n.iridescenceMap=this.iridescenceMap.toJSON(e).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(n.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(e).uuid),void 0!==this.anisotropy&&(n.anisotropy=this.anisotropy),void 0!==this.anisotropyRotation&&(n.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(n.anisotropyMap=this.anisotropyMap.toJSON(e).uuid),this.map&&this.map.isTexture&&(n.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(n.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(n.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(n.lightMap=this.lightMap.toJSON(e).uuid,n.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(n.aoMap=this.aoMap.toJSON(e).uuid,n.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(n.bumpMap=this.bumpMap.toJSON(e).uuid,n.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(n.normalMap=this.normalMap.toJSON(e).uuid,n.normalMapType=this.normalMapType,n.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(n.displacementMap=this.displacementMap.toJSON(e).uuid,n.displacementScale=this.displacementScale,n.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(n.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(n.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(n.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(n.specularMap=this.specularMap.toJSON(e).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(n.specularIntensityMap=this.specularIntensityMap.toJSON(e).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(n.specularColorMap=this.specularColorMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(n.envMap=this.envMap.toJSON(e).uuid,void 0!==this.combine&&(n.combine=this.combine)),void 0!==this.envMapRotation&&(n.envMapRotation=this.envMapRotation.toArray()),void 0!==this.envMapIntensity&&(n.envMapIntensity=this.envMapIntensity),void 0!==this.reflectivity&&(n.reflectivity=this.reflectivity),void 0!==this.refractionRatio&&(n.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(n.gradientMap=this.gradientMap.toJSON(e).uuid),void 0!==this.transmission&&(n.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(n.transmissionMap=this.transmissionMap.toJSON(e).uuid),void 0!==this.thickness&&(n.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(n.thicknessMap=this.thicknessMap.toJSON(e).uuid),void 0!==this.attenuationDistance&&this.attenuationDistance!==1/0&&(n.attenuationDistance=this.attenuationDistance),void 0!==this.attenuationColor&&(n.attenuationColor=this.attenuationColor.getHex()),void 0!==this.size&&(n.size=this.size),null!==this.shadowSide&&(n.shadowSide=this.shadowSide),void 0!==this.sizeAttenuation&&(n.sizeAttenuation=this.sizeAttenuation),1!==this.blending&&(n.blending=this.blending),0!==this.side&&(n.side=this.side),!0===this.vertexColors&&(n.vertexColors=!0),this.opacity<1&&(n.opacity=this.opacity),!0===this.transparent&&(n.transparent=!0),204!==this.blendSrc&&(n.blendSrc=this.blendSrc),205!==this.blendDst&&(n.blendDst=this.blendDst),100!==this.blendEquation&&(n.blendEquation=this.blendEquation),null!==this.blendSrcAlpha&&(n.blendSrcAlpha=this.blendSrcAlpha),null!==this.blendDstAlpha&&(n.blendDstAlpha=this.blendDstAlpha),null!==this.blendEquationAlpha&&(n.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(n.blendColor=this.blendColor.getHex()),0!==this.blendAlpha&&(n.blendAlpha=this.blendAlpha),3!==this.depthFunc&&(n.depthFunc=this.depthFunc),!1===this.depthTest&&(n.depthTest=this.depthTest),!1===this.depthWrite&&(n.depthWrite=this.depthWrite),!1===this.colorWrite&&(n.colorWrite=this.colorWrite),255!==this.stencilWriteMask&&(n.stencilWriteMask=this.stencilWriteMask),519!==this.stencilFunc&&(n.stencilFunc=this.stencilFunc),0!==this.stencilRef&&(n.stencilRef=this.stencilRef),255!==this.stencilFuncMask&&(n.stencilFuncMask=this.stencilFuncMask),7680!==this.stencilFail&&(n.stencilFail=this.stencilFail),7680!==this.stencilZFail&&(n.stencilZFail=this.stencilZFail),7680!==this.stencilZPass&&(n.stencilZPass=this.stencilZPass),!0===this.stencilWrite&&(n.stencilWrite=this.stencilWrite),void 0!==this.rotation&&0!==this.rotation&&(n.rotation=this.rotation),!0===this.polygonOffset&&(n.polygonOffset=!0),0!==this.polygonOffsetFactor&&(n.polygonOffsetFactor=this.polygonOffsetFactor),0!==this.polygonOffsetUnits&&(n.polygonOffsetUnits=this.polygonOffsetUnits),void 0!==this.linewidth&&1!==this.linewidth&&(n.linewidth=this.linewidth),void 0!==this.dashSize&&(n.dashSize=this.dashSize),void 0!==this.gapSize&&(n.gapSize=this.gapSize),void 0!==this.scale&&(n.scale=this.scale),!0===this.dithering&&(n.dithering=!0),this.alphaTest>0&&(n.alphaTest=this.alphaTest),!0===this.alphaHash&&(n.alphaHash=!0),!0===this.alphaToCoverage&&(n.alphaToCoverage=!0),!0===this.premultipliedAlpha&&(n.premultipliedAlpha=!0),!0===this.forceSinglePass&&(n.forceSinglePass=!0),!0===this.wireframe&&(n.wireframe=!0),this.wireframeLinewidth>1&&(n.wireframeLinewidth=this.wireframeLinewidth),"round"!==this.wireframeLinecap&&(n.wireframeLinecap=this.wireframeLinecap),"round"!==this.wireframeLinejoin&&(n.wireframeLinejoin=this.wireframeLinejoin),!0===this.flatShading&&(n.flatShading=!0),!1===this.visible&&(n.visible=!1),!1===this.toneMapped&&(n.toneMapped=!1),!1===this.fog&&(n.fog=!1),Object.keys(this.userData).length>0&&(n.userData=this.userData),t){let t=i(e.textures),r=i(e.images);t.length>0&&(n.textures=t),r.length>0&&(n.images=r)}return n}clone(){return new this.constructor().copy(this)}copy(e){this.name=e.name,this.blending=e.blending,this.side=e.side,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.blendColor.copy(e.blendColor),this.blendAlpha=e.blendAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;let t=e.clippingPlanes,n=null;if(null!==t){let e=t.length;n=Array(e);for(let i=0;i!==e;++i)n[i]=t[i].clone()}return this.clippingPlanes=n,this.clipIntersection=e.clipIntersection,this.clipShadows=e.clipShadows,this.shadowSide=e.shadowSide,this.colorWrite=e.colorWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.alphaHash=e.alphaHash,this.alphaToCoverage=e.alphaToCoverage,this.premultipliedAlpha=e.premultipliedAlpha,this.forceSinglePass=e.forceSinglePass,this.visible=e.visible,this.toneMapped=e.toneMapped,this.userData=JSON.parse(JSON.stringify(e.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(e){!0===e&&this.version++}onBuild(){console.warn("Material: onBuild() has been removed.")}}class tV extends tH{constructor(e){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new tz(0xffffff),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new tn,this.combine=0,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}}let tG=function(){let e=new ArrayBuffer(4),t=new Float32Array(e),n=new Uint32Array(e),i=new Uint32Array(512),r=new Uint32Array(512);for(let e=0;e<256;++e){let t=e-127;t<-27?(i[e]=0,i[256|e]=32768,r[e]=24,r[256|e]=24):t<-14?(i[e]=1024>>-t-14,i[256|e]=1024>>-t-14|32768,r[e]=-t-1,r[256|e]=-t-1):t<=15?(i[e]=t+15<<10,i[256|e]=t+15<<10|32768,r[e]=13,r[256|e]=13):t<128?(i[e]=31744,i[256|e]=64512,r[e]=24,r[256|e]=24):(i[e]=31744,i[256|e]=64512,r[e]=13,r[256|e]=13)}let a=new Uint32Array(2048),s=new Uint32Array(64),o=new Uint32Array(64);for(let e=1;e<1024;++e){let t=e<<13,n=0;for(;(8388608&t)==0;)t<<=1,n-=8388608;t&=-8388609,n+=0x38800000,a[e]=t|n}for(let e=1024;e<2048;++e)a[e]=0x38000000+(e-1024<<13);for(let e=1;e<31;++e)s[e]=e<<23;s[31]=0x47800000,s[32]=0x80000000;for(let e=33;e<63;++e)s[e]=0x80000000+(e-32<<23);s[63]=0xc7800000;for(let e=1;e<64;++e)32!==e&&(o[e]=1024);return{floatView:t,uint32View:n,baseTable:i,shiftTable:r,mantissaTable:a,exponentTable:s,offsetTable:o}}();function tW(e){Math.abs(e)>65504&&console.warn("THREE.DataUtils.toHalfFloat(): Value out of range."),e=V(e,-65504,65504),tG.floatView[0]=e;let t=tG.uint32View[0],n=t>>23&511;return tG.baseTable[n]+((8388607&t)>>tG.shiftTable[n])}function tj(e){let t=e>>10;return tG.uint32View[0]=tG.mantissaTable[tG.offsetTable[t]+(1023&e)]+tG.exponentTable[t],tG.floatView[0]}let tX={toHalfFloat:tW,fromHalfFloat:tj},tq=new eE,tY=new Y;class tZ{constructor(e,t,n=!1){if(Array.isArray(e))throw TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,this.name="",this.array=e,this.itemSize=t,this.count=void 0!==e?e.length/t:0,this.normalized=n,this.usage=35044,this.updateRanges=[],this.gpuType=1015,this.version=0}onUploadCallback(){}set needsUpdate(e){!0===e&&this.version++}setUsage(e){return this.usage=e,this}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}copy(e){return this.name=e.name,this.array=new e.array.constructor(e.array),this.itemSize=e.itemSize,this.count=e.count,this.normalized=e.normalized,this.usage=e.usage,this.gpuType=e.gpuType,this}copyAt(e,t,n){e*=this.itemSize,n*=t.itemSize;for(let i=0,r=this.itemSize;it.count&&console.warn("THREE.BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry."),t.needsUpdate=!0}return this}computeBoundingBox(){null===this.boundingBox&&(this.boundingBox=new eR);let e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute){console.error("THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.",this),this.boundingBox.set(new eE(-1/0,-1/0,-1/0),new eE(Infinity,Infinity,Infinity));return}if(void 0!==e){if(this.boundingBox.setFromBufferAttribute(e),t)for(let e=0,n=t.length;e0&&(e.userData=this.userData),void 0!==this.parameters){let t=this.parameters;for(let n in t)void 0!==t[n]&&(e[n]=t[n]);return e}e.data={attributes:{}};let t=this.index;null!==t&&(e.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});let n=this.attributes;for(let t in n){let i=n[t];e.data.attributes[t]=i.toJSON(e.data)}let i={},r=!1;for(let t in this.morphAttributes){let n=this.morphAttributes[t],a=[];for(let t=0,i=n.length;t0&&(i[t]=a,r=!0)}r&&(e.data.morphAttributes=i,e.data.morphTargetsRelative=this.morphTargetsRelative);let a=this.groups;a.length>0&&(e.data.groups=JSON.parse(JSON.stringify(a)));let s=this.boundingSphere;return null!==s&&(e.data.boundingSphere={center:s.center.toArray(),radius:s.radius}),e}clone(){return new this.constructor().copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;let t={};this.name=e.name;let n=e.index;null!==n&&this.setIndex(n.clone(t));let i=e.attributes;for(let e in i){let n=i[e];this.setAttribute(e,n.clone(t))}let r=e.morphAttributes;for(let e in r){let n=[],i=r[e];for(let e=0,r=i.length;e0){let n=e[t[0]];if(void 0!==n){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=n.length;e(e.far-e.near)**2)||(ni.copy(r).invert(),nr.copy(e.ray).applyMatrix4(ni),(null===n.boundingBox||!1!==nr.intersectsBox(n.boundingBox))&&this._computeIntersections(e,t,nr)))}_computeIntersections(e,t,n){let i,r=this.geometry,a=this.material,s=r.index,o=r.attributes.position,l=r.attributes.uv,u=r.attributes.uv1,c=r.attributes.normal,h=r.groups,d=r.drawRange;if(null!==s)if(Array.isArray(a))for(let r=0,o=h.length;rn.far?null:{distance:l,point:np.clone(),object:e}}(e,t,n,i,no,nl,nu,nd);if(c){let e=new eE;tN.getBarycoord(nd,no,nl,nu,e),r&&(c.uv=tN.getInterpolatedAttribute(r,o,l,u,e,new Y)),a&&(c.uv1=tN.getInterpolatedAttribute(a,o,l,u,e,new Y)),s&&(c.normal=tN.getInterpolatedAttribute(s,o,l,u,e,new eE),c.normal.dot(i.direction)>0&&c.normal.multiplyScalar(-1));let t={a:o,b:l,c:u,normal:new eE,materialIndex:0};tN.getNormal(no,nl,nu,t.normal),c.face=t,c.barycoord=e}return c}class ng extends nn{constructor(e=1,t=1,n=1,i=1,r=1,a=1){super(),this.type="BoxGeometry",this.parameters={width:e,height:t,depth:n,widthSegments:i,heightSegments:r,depthSegments:a};const s=this;i=Math.floor(i),r=Math.floor(r);const o=[],l=[],u=[],c=[];let h=0,d=0;function p(e,t,n,i,r,a,p,f,m,g,v){let _=a/m,y=p/g,x=a/2,b=p/2,S=f/2,M=m+1,T=g+1,w=0,E=0,A=new eE;for(let a=0;a0?1:-1,u.push(A.x,A.y,A.z),c.push(o/m),c.push(1-a/g),w+=1}}for(let e=0;e0&&(t.defines=this.defines),t.vertexShader=this.vertexShader,t.fragmentShader=this.fragmentShader,t.lights=this.lights,t.clipping=this.clipping;let n={};for(let e in this.extensions)!0===this.extensions[e]&&(n[e]=!0);return Object.keys(n).length>0&&(t.extensions=n),t}}class nS extends ty{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new e2,this.projectionMatrix=new e2,this.projectionMatrixInverse=new e2,this.coordinateSystem=2e3}copy(e,t){return super.copy(e,t),this.matrixWorldInverse.copy(e.matrixWorldInverse),this.projectionMatrix.copy(e.projectionMatrix),this.projectionMatrixInverse.copy(e.projectionMatrixInverse),this.coordinateSystem=e.coordinateSystem,this}getWorldDirection(e){return super.getWorldDirection(e).negate()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return new this.constructor().copy(this)}}let nM=new eE,nT=new Y,nw=new Y;class nE extends nS{constructor(e=50,t=1,n=.1,i=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=e,this.zoom=1,this.near=n,this.far=i,this.focus=10,this.aspect=t,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.fov=e.fov,this.zoom=e.zoom,this.near=e.near,this.far=e.far,this.focus=e.focus,this.aspect=e.aspect,this.view=null===e.view?null:Object.assign({},e.view),this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this}setFocalLength(e){let t=.5*this.getFilmHeight()/e;this.fov=2*k*Math.atan(t),this.updateProjectionMatrix()}getFocalLength(){let e=Math.tan(.5*B*this.fov);return .5*this.getFilmHeight()/e}getEffectiveFOV(){return 2*k*Math.atan(Math.tan(.5*B*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}getViewBounds(e,t,n){nM.set(-1,-1,.5).applyMatrix4(this.projectionMatrixInverse),t.set(nM.x,nM.y).multiplyScalar(-e/nM.z),nM.set(1,1,.5).applyMatrix4(this.projectionMatrixInverse),n.set(nM.x,nM.y).multiplyScalar(-e/nM.z)}getViewSize(e,t){return this.getViewBounds(e,nT,nw),t.subVectors(nw,nT)}setViewOffset(e,t,n,i,r,a){this.aspect=e/t,null===this.view&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=n,this.view.offsetY=i,this.view.width=r,this.view.height=a,this.updateProjectionMatrix()}clearViewOffset(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){let e=this.near,t=e*Math.tan(.5*B*this.fov)/this.zoom,n=2*t,i=this.aspect*n,r=-.5*i,a=this.view;if(null!==this.view&&this.view.enabled){let e=a.fullWidth,s=a.fullHeight;r+=a.offsetX*i/e,t-=a.offsetY*n/s,i*=a.width/e,n*=a.height/s}let s=this.filmOffset;0!==s&&(r+=e*s/this.getFilmWidth()),this.projectionMatrix.makePerspective(r,r+i,t,t-n,e,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){let t=super.toJSON(e);return t.object.fov=this.fov,t.object.zoom=this.zoom,t.object.near=this.near,t.object.far=this.far,t.object.focus=this.focus,t.object.aspect=this.aspect,null!==this.view&&(t.object.view=Object.assign({},this.view)),t.object.filmGauge=this.filmGauge,t.object.filmOffset=this.filmOffset,t}}class nA extends ty{constructor(e,t,n){super(),this.type="CubeCamera",this.renderTarget=n,this.coordinateSystem=null,this.activeMipmapLevel=0;const i=new nE(-90,1,e,t);i.layers=this.layers,this.add(i);const r=new nE(-90,1,e,t);r.layers=this.layers,this.add(r);const a=new nE(-90,1,e,t);a.layers=this.layers,this.add(a);const s=new nE(-90,1,e,t);s.layers=this.layers,this.add(s);const o=new nE(-90,1,e,t);o.layers=this.layers,this.add(o);const l=new nE(-90,1,e,t);l.layers=this.layers,this.add(l)}updateCoordinateSystem(){let e=this.coordinateSystem,t=this.children.concat(),[n,i,r,a,s,o]=t;for(let e of t)this.remove(e);if(2e3===e)n.up.set(0,1,0),n.lookAt(1,0,0),i.up.set(0,1,0),i.lookAt(-1,0,0),r.up.set(0,0,-1),r.lookAt(0,1,0),a.up.set(0,0,1),a.lookAt(0,-1,0),s.up.set(0,1,0),s.lookAt(0,0,1),o.up.set(0,1,0),o.lookAt(0,0,-1);else if(2001===e)n.up.set(0,-1,0),n.lookAt(-1,0,0),i.up.set(0,-1,0),i.lookAt(1,0,0),r.up.set(0,0,1),r.lookAt(0,1,0),a.up.set(0,0,-1),a.lookAt(0,-1,0),s.up.set(0,-1,0),s.lookAt(0,0,1),o.up.set(0,-1,0),o.lookAt(0,0,-1);else throw Error("THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: "+e);for(let e of t)this.add(e),e.updateMatrixWorld()}update(e,t){null===this.parent&&this.updateMatrixWorld();let{renderTarget:n,activeMipmapLevel:i}=this;this.coordinateSystem!==e.coordinateSystem&&(this.coordinateSystem=e.coordinateSystem,this.updateCoordinateSystem());let[r,a,s,o,l,u]=this.children,c=e.getRenderTarget(),h=e.getActiveCubeFace(),d=e.getActiveMipmapLevel(),p=e.xr.enabled;e.xr.enabled=!1;let f=n.texture.generateMipmaps;n.texture.generateMipmaps=!1,e.setRenderTarget(n,0,i),e.render(t,r),e.setRenderTarget(n,1,i),e.render(t,a),e.setRenderTarget(n,2,i),e.render(t,s),e.setRenderTarget(n,3,i),e.render(t,o),e.setRenderTarget(n,4,i),e.render(t,l),n.texture.generateMipmaps=f,e.setRenderTarget(n,5,i),e.render(t,u),e.setRenderTarget(c,h,d),e.xr.enabled=p,n.texture.needsPMREMUpdate=!0}}class nC extends ev{constructor(e,t,n,i,r,a,s,o,l,u){super(e=void 0!==e?e:[],t=void 0!==t?t:301,n,i,r,a,s,o,l,u),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(e){this.image=e}}class nR extends ex{constructor(e=1,t={}){super(e,e,t),this.isWebGLCubeRenderTarget=!0;const n={width:e,height:e,depth:1};this.texture=new nC([n,n,n,n,n,n],t.mapping,t.wrapS,t.wrapT,t.magFilter,t.minFilter,t.format,t.type,t.anisotropy,t.colorSpace),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=void 0!==t.generateMipmaps&&t.generateMipmaps,this.texture.minFilter=void 0!==t.minFilter?t.minFilter:1006}fromEquirectangularTexture(e,t){this.texture.type=t.type,this.texture.colorSpace=t.colorSpace,this.texture.generateMipmaps=t.generateMipmaps,this.texture.minFilter=t.minFilter,this.texture.magFilter=t.magFilter;let n={uniforms:{tEquirect:{value:null}},vertexShader:` + + varying vec3 vWorldDirection; + + vec3 transformDirection( in vec3 dir, in mat4 matrix ) { + + return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); + + } + + void main() { + + vWorldDirection = transformDirection( position, modelMatrix ); + + #include + #include + + } + `,fragmentShader:` + + uniform sampler2D tEquirect; + + varying vec3 vWorldDirection; + + #include + + void main() { + + vec3 direction = normalize( vWorldDirection ); + + vec2 sampleUV = equirectUv( direction ); + + gl_FragColor = texture2D( tEquirect, sampleUV ); + + } + `},i=new ng(5,5,5),r=new nb({name:"CubemapFromEquirect",uniforms:nv(n.uniforms),vertexShader:n.vertexShader,fragmentShader:n.fragmentShader,side:1,blending:0});r.uniforms.tEquirect.value=t;let a=new nf(i,r),s=t.minFilter;return 1008===t.minFilter&&(t.minFilter=1006),new nA(1,10,this).update(e,a),t.minFilter=s,a.geometry.dispose(),a.material.dispose(),this}clear(e,t,n,i){let r=e.getRenderTarget();for(let r=0;r<6;r++)e.setRenderTarget(this,r),e.clear(t,n,i);e.setRenderTarget(r)}}class nP{constructor(e,t=25e-5){this.isFogExp2=!0,this.name="",this.color=new tz(e),this.density=t}clone(){return new nP(this.color,this.density)}toJSON(){return{type:"FogExp2",name:this.name,color:this.color.getHex(),density:this.density}}}class nI{constructor(e,t=1,n=1e3){this.isFog=!0,this.name="",this.color=new tz(e),this.near=t,this.far=n}clone(){return new nI(this.color,this.near,this.far)}toJSON(){return{type:"Fog",name:this.name,color:this.color.getHex(),near:this.near,far:this.far}}}class nL extends ty{constructor(){super(),this.isScene=!0,this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.backgroundBlurriness=0,this.backgroundIntensity=1,this.backgroundRotation=new tn,this.environmentIntensity=1,this.environmentRotation=new tn,this.overrideMaterial=null,"u">typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(e,t){return super.copy(e,t),null!==e.background&&(this.background=e.background.clone()),null!==e.environment&&(this.environment=e.environment.clone()),null!==e.fog&&(this.fog=e.fog.clone()),this.backgroundBlurriness=e.backgroundBlurriness,this.backgroundIntensity=e.backgroundIntensity,this.backgroundRotation.copy(e.backgroundRotation),this.environmentIntensity=e.environmentIntensity,this.environmentRotation.copy(e.environmentRotation),null!==e.overrideMaterial&&(this.overrideMaterial=e.overrideMaterial.clone()),this.matrixAutoUpdate=e.matrixAutoUpdate,this}toJSON(e){let t=super.toJSON(e);return null!==this.fog&&(t.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(t.object.backgroundBlurriness=this.backgroundBlurriness),1!==this.backgroundIntensity&&(t.object.backgroundIntensity=this.backgroundIntensity),t.object.backgroundRotation=this.backgroundRotation.toArray(),1!==this.environmentIntensity&&(t.object.environmentIntensity=this.environmentIntensity),t.object.environmentRotation=this.environmentRotation.toArray(),t}}class nN{constructor(e,t){this.isInterleavedBuffer=!0,this.array=e,this.stride=t,this.count=void 0!==e?e.length/t:0,this.usage=35044,this.updateRanges=[],this.version=0,this.uuid=H()}onUploadCallback(){}set needsUpdate(e){!0===e&&this.version++}setUsage(e){return this.usage=e,this}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}copy(e){return this.array=new e.array.constructor(e.array),this.count=e.count,this.stride=e.stride,this.usage=e.usage,this}copyAt(e,t,n){e*=this.stride,n*=t.stride;for(let i=0,r=this.stride;ie.far||t.push({distance:o,point:nF.clone(),uv:tN.getInterpolation(nF,nG,nW,nj,nX,nq,nY,new Y),face:null,object:this})}copy(e,t){return super.copy(e,t),void 0!==e.center&&this.center.copy(e.center),this.material=e.material,this}}function nJ(e,t,n,i,r,a){nk.subVectors(e,n).addScalar(.5).multiply(i),void 0!==r?(nH.x=a*nk.x-r*nk.y,nH.y=r*nk.x+a*nk.y):nH.copy(nk),e.copy(t),e.x+=nH.x,e.y+=nH.y,e.applyMatrix4(nV)}let nK=new eE,n$=new eE;class nQ extends ty{constructor(){super(),this._currentLevel=0,this.type="LOD",Object.defineProperties(this,{levels:{enumerable:!0,value:[]},isLOD:{value:!0}}),this.autoUpdate=!0}copy(e){super.copy(e,!1);let t=e.levels;for(let e=0,n=t.length;e0){let n,i;for(n=1,i=t.length;n0){nK.setFromMatrixPosition(this.matrixWorld);let n=e.ray.origin.distanceTo(nK);this.getObjectForDistance(n).raycast(e,t)}}update(e){let t=this.levels;if(t.length>1){let n,i;nK.setFromMatrixPosition(e.matrixWorld),n$.setFromMatrixPosition(this.matrixWorld);let r=nK.distanceTo(n$)/e.zoom;for(n=1,t[0].object.visible=!0,i=t.length;n=e)t[n-1].object.visible=!1,t[n].object.visible=!0;else break}for(this._currentLevel=n-1;n1?null:t.copy(e.start).addScaledVector(n,r)}intersectsLine(e){let t=this.distanceToPoint(e.start),n=this.distanceToPoint(e.end);return t<0&&n>0||n<0&&t>0}intersectsBox(e){return e.intersectsPlane(this)}intersectsSphere(e){return e.intersectsPlane(this)}coplanarPoint(e){return e.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(e,t){let n=t||i_.getNormalMatrix(e),i=this.coplanarPoint(ig).applyMatrix4(e),r=this.normal.applyMatrix3(n).normalize();return this.constant=-i.dot(r),this}translate(e){return this.constant-=e.dot(this.normal),this}equals(e){return e.normal.equals(this.normal)&&e.constant===this.constant}clone(){return new this.constructor().copy(this)}}let ix=new eq,ib=new eE;class iS{constructor(e=new iy,t=new iy,n=new iy,i=new iy,r=new iy,a=new iy){this.planes=[e,t,n,i,r,a]}set(e,t,n,i,r,a){let s=this.planes;return s[0].copy(e),s[1].copy(t),s[2].copy(n),s[3].copy(i),s[4].copy(r),s[5].copy(a),this}copy(e){let t=this.planes;for(let n=0;n<6;n++)t[n].copy(e.planes[n]);return this}setFromProjectionMatrix(e,t=2e3){let n=this.planes,i=e.elements,r=i[0],a=i[1],s=i[2],o=i[3],l=i[4],u=i[5],c=i[6],h=i[7],d=i[8],p=i[9],f=i[10],m=i[11],g=i[12],v=i[13],_=i[14],y=i[15];if(n[0].setComponents(o-r,h-l,m-d,y-g).normalize(),n[1].setComponents(o+r,h+l,m+d,y+g).normalize(),n[2].setComponents(o+a,h+u,m+p,y+v).normalize(),n[3].setComponents(o-a,h-u,m-p,y-v).normalize(),n[4].setComponents(o-s,h-c,m-f,y-_).normalize(),2e3===t)n[5].setComponents(o+s,h+c,m+f,y+_).normalize();else if(2001===t)n[5].setComponents(s,c,f,_).normalize();else throw Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+t);return this}intersectsObject(e){if(void 0!==e.boundingSphere)null===e.boundingSphere&&e.computeBoundingSphere(),ix.copy(e.boundingSphere).applyMatrix4(e.matrixWorld);else{let t=e.geometry;null===t.boundingSphere&&t.computeBoundingSphere(),ix.copy(t.boundingSphere).applyMatrix4(e.matrixWorld)}return this.intersectsSphere(ix)}intersectsSprite(e){return ix.center.set(0,0,0),ix.radius=.7071067811865476,ix.applyMatrix4(e.matrixWorld),this.intersectsSphere(ix)}intersectsSphere(e){let t=this.planes,n=e.center,i=-e.radius;for(let e=0;e<6;e++)if(t[e].distanceToPoint(n)0?e.max.x:e.min.x,ib.y=i.normal.y>0?e.max.y:e.min.y,ib.z=i.normal.z>0?e.max.z:e.min.z,0>i.distanceToPoint(ib))return!1}return!0}containsPoint(e){let t=this.planes;for(let n=0;n<6;n++)if(0>t[n].distanceToPoint(e))return!1;return!0}clone(){return new this.constructor().copy(this)}}function iM(e,t){return e-t}function iT(e,t){return e.z-t.z}function iw(e,t){return t.z-e.z}let iE=new e2,iA=new tz(1,1,1),iC=new iS,iR=new eR,iP=new eq,iI=new eE,iL=new eE,iN=new eE,iU=new class{constructor(){this.index=0,this.pool=[],this.list=[]}push(e,t,n,i){let r=this.pool,a=this.list;this.index>=r.length&&r.push({start:-1,count:-1,z:-1,index:-1});let s=r[this.index];a.push(s),this.index++,s.start=e,s.count=t,s.z=n,s.index=i}reset(){this.list.length=0,this.index=0}},iD=new nf,iO=[];function iF(e,t){if(e.constructor!==t.constructor){let n=Math.min(e.length,t.length);for(let i=0;i65535?new Uint32Array(i):new Uint16Array(i);t.setIndex(new tZ(e,1))}this._geometryInitialized=!0}}_validateGeometry(e){let t=this.geometry;if(!!e.getIndex()!=!!t.getIndex())throw Error('THREE.BatchedMesh: All geometries must consistently have "index".');for(let n in t.attributes){if(!e.hasAttribute(n))throw Error(`THREE.BatchedMesh: Added geometry missing "${n}". All geometries must have consistent attributes.`);let i=e.getAttribute(n),r=t.getAttribute(n);if(i.itemSize!==r.itemSize||i.normalized!==r.normalized)throw Error("THREE.BatchedMesh: All attributes must have a consistent itemSize and normalized value.")}}validateInstanceId(e){let t=this._instanceInfo;if(e<0||e>=t.length||!1===t[e].active)throw Error(`THREE.BatchedMesh: Invalid instanceId ${e}. Instance is either out of range or has been deleted.`)}validateGeometryId(e){let t=this._geometryInfo;if(e<0||e>=t.length||!1===t[e].active)throw Error(`THREE.BatchedMesh: Invalid geometryId ${e}. Geometry is either out of range or has been deleted.`)}setCustomSort(e){return this.customSort=e,this}computeBoundingBox(){null===this.boundingBox&&(this.boundingBox=new eR);let e=this.boundingBox,t=this._instanceInfo;e.makeEmpty();for(let n=0,i=t.length;n=this.maxInstanceCount&&0===this._availableInstanceIds.length)throw Error("THREE.BatchedMesh: Maximum item count reached.");let t={visible:!0,active:!0,geometryIndex:e},n=null;this._availableInstanceIds.length>0?(this._availableInstanceIds.sort(iM),n=this._availableInstanceIds.shift(),this._instanceInfo[n]=t):(n=this._instanceInfo.length,this._instanceInfo.push(t));let i=this._matricesTexture;iE.identity().toArray(i.image.data,16*n),i.needsUpdate=!0;let r=this._colorsTexture;return r&&(iA.toArray(r.image.data,4*n),r.needsUpdate=!0),this._visibilityChanged=!0,n}addGeometry(e,t=-1,n=-1){let i;this._initializeGeometry(e),this._validateGeometry(e);let r={vertexStart:-1,vertexCount:-1,reservedVertexCount:-1,indexStart:-1,indexCount:-1,reservedIndexCount:-1,start:-1,count:-1,boundingBox:null,boundingSphere:null,active:!0},a=this._geometryInfo;r.vertexStart=this._nextVertexStart,r.reservedVertexCount=-1===t?e.getAttribute("position").count:t;let s=e.getIndex();if(null!==s&&(r.indexStart=this._nextIndexStart,r.reservedIndexCount=-1===n?s.count:n),-1!==r.indexStart&&r.indexStart+r.reservedIndexCount>this._maxIndexCount||r.vertexStart+r.reservedVertexCount>this._maxVertexCount)throw Error("THREE.BatchedMesh: Reserved space request exceeds the maximum buffer size.");return this._availableGeometryIds.length>0?(this._availableGeometryIds.sort(iM),a[i=this._availableGeometryIds.shift()]=r):(i=this._geometryCount,this._geometryCount++,a.push(r)),this.setGeometryAt(i,e),this._nextIndexStart=r.indexStart+r.reservedIndexCount,this._nextVertexStart=r.vertexStart+r.reservedVertexCount,i}setGeometryAt(e,t){if(e>=this._geometryCount)throw Error("THREE.BatchedMesh: Maximum geometry count reached.");this._validateGeometry(t);let n=this.geometry,i=null!==n.getIndex(),r=n.getIndex(),a=t.getIndex(),s=this._geometryInfo[e];if(i&&a.count>s.reservedIndexCount||t.attributes.position.count>s.reservedVertexCount)throw Error("THREE.BatchedMesh: Reserved space not large enough for provided geometry.");let o=s.vertexStart,l=s.reservedVertexCount;for(let e in s.vertexCount=t.getAttribute("position").count,n.attributes){let i=t.getAttribute(e),r=n.getAttribute(e);!function(e,t,n=0){let i=t.itemSize;if(e.isInterleavedBufferAttribute||e.array.constructor!==t.array.constructor){let r=e.count;for(let a=0;a=t.length||!1===t[e].active)return this;let n=this._instanceInfo;for(let t=0,i=n.length;tt).sort((e,t)=>n[e].vertexStart-n[t].vertexStart),r=this.geometry;for(let a=0,s=n.length;a=this._geometryCount)return null;let n=this.geometry,i=this._geometryInfo[e];if(null===i.boundingBox){let e=new eR,t=n.index,r=n.attributes.position;for(let n=i.start,a=i.start+i.count;n=this._geometryCount)return null;let n=this.geometry,i=this._geometryInfo[e];if(null===i.boundingSphere){let t=new eq;this.getBoundingBoxAt(e,iR),iR.getCenter(t.center);let r=n.index,a=n.attributes.position,s=0;for(let e=i.start,n=i.start+i.count;ee.active);if(Math.max(...n.map(e=>e.vertexStart+e.reservedVertexCount))>e)throw Error(`BatchedMesh: Geometry vertex values are being used outside the range ${t}. Cannot shrink further.`);if(this.geometry.index&&Math.max(...n.map(e=>e.indexStart+e.reservedIndexCount))>t)throw Error(`BatchedMesh: Geometry index values are being used outside the range ${t}. Cannot shrink further.`);let i=this.geometry;i.dispose(),this._maxVertexCount=e,this._maxIndexCount=t,this._geometryInitialized&&(this._geometryInitialized=!1,this.geometry=new nn,this._initializeGeometry(i));let r=this.geometry;for(let e in i.index&&iF(i.index.array,r.index.array),i.attributes)iF(i.attributes[e].array,r.attributes[e].array)}raycast(e,t){let n=this._instanceInfo,i=this._geometryInfo,r=this.matrixWorld,a=this.geometry;iD.material=this.material,iD.geometry.index=a.index,iD.geometry.attributes=a.attributes,null===iD.geometry.boundingBox&&(iD.geometry.boundingBox=new eR),null===iD.geometry.boundingSphere&&(iD.geometry.boundingSphere=new eq);for(let a=0,s=n.length;a({...e,boundingBox:null!==e.boundingBox?e.boundingBox.clone():null,boundingSphere:null!==e.boundingSphere?e.boundingSphere.clone():null})),this._instanceInfo=e._instanceInfo.map(e=>({...e})),this._maxInstanceCount=e._maxInstanceCount,this._maxVertexCount=e._maxVertexCount,this._maxIndexCount=e._maxIndexCount,this._geometryInitialized=e._geometryInitialized,this._geometryCount=e._geometryCount,this._multiDrawCounts=e._multiDrawCounts.slice(),this._multiDrawStarts=e._multiDrawStarts.slice(),this._matricesTexture=e._matricesTexture.clone(),this._matricesTexture.image.data=this._matricesTexture.image.data.slice(),null!==this._colorsTexture&&(this._colorsTexture=e._colorsTexture.clone(),this._colorsTexture.image.data=this._colorsTexture.image.data.slice()),this}dispose(){return this.geometry.dispose(),this._matricesTexture.dispose(),this._matricesTexture=null,this._indirectTexture.dispose(),this._indirectTexture=null,null!==this._colorsTexture&&(this._colorsTexture.dispose(),this._colorsTexture=null),this}onBeforeRender(e,t,n,i,r){if(!this._visibilityChanged&&!this.perObjectFrustumCulled&&!this.sortObjects)return;let a=i.getIndex(),s=null===a?1:a.array.BYTES_PER_ELEMENT,o=this._instanceInfo,l=this._multiDrawStarts,u=this._multiDrawCounts,c=this._geometryInfo,h=this.perObjectFrustumCulled,d=this._indirectTexture,p=d.image.data;h&&(iE.multiplyMatrices(n.projectionMatrix,n.matrixWorldInverse).multiply(this.matrixWorld),iC.setFromProjectionMatrix(iE,e.coordinateSystem));let f=0;if(this.sortObjects){iE.copy(this.matrixWorld).invert(),iI.setFromMatrixPosition(n.matrixWorld).applyMatrix4(iE),iL.set(0,0,-1).transformDirection(n.matrixWorld).transformDirection(iE);for(let e=0,t=o.length;e0){let n=e[t[0]];if(void 0!==n){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=n.length;ei)return;ij.applyMatrix4(e.matrixWorld);let o=t.ray.origin.distanceTo(ij);if(!(ot.far))return{distance:o,point:iX.clone().applyMatrix4(e.matrixWorld),index:r,face:null,faceIndex:null,barycoord:null,object:e}}let iZ=new eE,iJ=new eE;class iK extends iq{constructor(e,t){super(e,t),this.isLineSegments=!0,this.type="LineSegments"}computeLineDistances(){let e=this.geometry;if(null===e.index){let t=e.attributes.position,n=[];for(let e=0,i=t.count;e0){let n=e[t[0]];if(void 0!==n){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=n.length;er.far)return;a.push({distance:l,distanceToRay:Math.sqrt(o),point:n,index:t,face:null,faceIndex:null,barycoord:null,object:s})}}class i6 extends ty{constructor(){super(),this.isGroup=!0,this.type="Group"}}class i8 extends ev{constructor(e,t,n,i,r,a,s,o,l){super(e,t,n,i,r,a,s,o,l),this.isVideoTexture=!0,this.minFilter=void 0!==a?a:1006,this.magFilter=void 0!==r?r:1006,this.generateMipmaps=!1;const u=this;"requestVideoFrameCallback"in e&&e.requestVideoFrameCallback(function t(){u.needsUpdate=!0,e.requestVideoFrameCallback(t)})}clone(){return new this.constructor(this.image).copy(this)}update(){let e=this.image;!1=="requestVideoFrameCallback"in e&&e.readyState>=e.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}}class i9 extends ev{constructor(e,t){super({width:e,height:t}),this.isFramebufferTexture=!0,this.magFilter=1003,this.minFilter=1003,this.generateMipmaps=!1,this.needsUpdate=!0}}class i7 extends ev{constructor(e,t,n,i,r,a,s,o,l,u,c,h){super(null,a,s,o,l,u,i,r,c,h),this.isCompressedTexture=!0,this.image={width:t,height:n},this.mipmaps=e,this.flipY=!1,this.generateMipmaps=!1}}class re extends i7{constructor(e,t,n,i,r,a){super(e,t,n,r,a),this.isCompressedArrayTexture=!0,this.image.depth=i,this.wrapR=1001,this.layerUpdates=new Set}addLayerUpdate(e){this.layerUpdates.add(e)}clearLayerUpdates(){this.layerUpdates.clear()}}class rt extends i7{constructor(e,t,n){super(void 0,e[0].width,e[0].height,t,n,301),this.isCompressedCubeTexture=!0,this.isCubeTexture=!0,this.image=e}}class rn extends ev{constructor(e,t,n,i,r,a,s,o,l){super(e,t,n,i,r,a,s,o,l),this.isCanvasTexture=!0,this.needsUpdate=!0}}class ri extends ev{constructor(e,t,n,i,r,a,s,o,l,u=1026){if(1026!==u&&1027!==u)throw Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");void 0===n&&1026===u&&(n=1014),void 0===n&&1027===u&&(n=1020),super(null,i,r,a,s,o,u,n,l),this.isDepthTexture=!0,this.image={width:e,height:t},this.magFilter=void 0!==s?s:1003,this.minFilter=void 0!==o?o:1003,this.flipY=!1,this.generateMipmaps=!1,this.compareFunction=null}copy(e){return super.copy(e),this.compareFunction=e.compareFunction,this}toJSON(e){let t=super.toJSON(e);return null!==this.compareFunction&&(t.compareFunction=this.compareFunction),t}}class rr{constructor(){this.type="Curve",this.arcLengthDivisions=200}getPoint(){return console.warn("THREE.Curve: .getPoint() not implemented."),null}getPointAt(e,t){let n=this.getUtoTmapping(e);return this.getPoint(n,t)}getPoints(e=5){let t=[];for(let n=0;n<=e;n++)t.push(this.getPoint(n/e));return t}getSpacedPoints(e=5){let t=[];for(let n=0;n<=e;n++)t.push(this.getPointAt(n/e));return t}getLength(){let e=this.getLengths();return e[e.length-1]}getLengths(e=this.arcLengthDivisions){if(this.cacheArcLengths&&this.cacheArcLengths.length===e+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;let t=[],n,i=this.getPoint(0),r=0;t.push(0);for(let a=1;a<=e;a++)t.push(r+=(n=this.getPoint(a/e)).distanceTo(i)),i=n;return this.cacheArcLengths=t,t}updateArcLengths(){this.needsUpdate=!0,this.getLengths()}getUtoTmapping(e,t){let n,i=this.getLengths(),r=0,a=i.length;n=t||e*i[a-1];let s=0,o=a-1,l;for(;s<=o;)if((l=i[r=Math.floor(s+(o-s)/2)]-n)<0)s=r+1;else if(l>0)o=r-1;else{o=r;break}if(i[r=o]===n)return r/(a-1);let u=i[r],c=i[r+1];return(r+(n-u)/(c-u))/(a-1)}getTangent(e,t){let n=e-1e-4,i=e+1e-4;n<0&&(n=0),i>1&&(i=1);let r=this.getPoint(n),a=this.getPoint(i),s=t||(r.isVector2?new Y:new eE);return s.copy(a).sub(r).normalize(),s}getTangentAt(e,t){let n=this.getUtoTmapping(e);return this.getTangent(n,t)}computeFrenetFrames(e,t){let n=new eE,i=[],r=[],a=[],s=new eE,o=new e2;for(let t=0;t<=e;t++){let n=t/e;i[t]=this.getTangentAt(n,new eE)}r[0]=new eE,a[0]=new eE;let l=Number.MAX_VALUE,u=Math.abs(i[0].x),c=Math.abs(i[0].y),h=Math.abs(i[0].z);u<=l&&(l=u,n.set(1,0,0)),c<=l&&(l=c,n.set(0,1,0)),h<=l&&n.set(0,0,1),s.crossVectors(i[0],n).normalize(),r[0].crossVectors(i[0],s),a[0].crossVectors(i[0],r[0]);for(let t=1;t<=e;t++){if(r[t]=r[t-1].clone(),a[t]=a[t-1].clone(),s.crossVectors(i[t-1],i[t]),s.length()>Number.EPSILON){s.normalize();let e=Math.acos(V(i[t-1].dot(i[t]),-1,1));r[t].applyMatrix4(o.makeRotationAxis(s,e))}a[t].crossVectors(i[t],r[t])}if(!0===t){let t=Math.acos(V(r[0].dot(r[e]),-1,1));t/=e,i[0].dot(s.crossVectors(r[0],r[e]))>0&&(t=-t);for(let n=1;n<=e;n++)r[n].applyMatrix4(o.makeRotationAxis(i[n],t*n)),a[n].crossVectors(i[n],r[n])}return{tangents:i,normals:r,binormals:a}}clone(){return new this.constructor().copy(this)}copy(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}toJSON(){let e={metadata:{version:4.6,type:"Curve",generator:"Curve.toJSON"}};return e.arcLengthDivisions=this.arcLengthDivisions,e.type=this.type,e}fromJSON(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}}class ra extends rr{constructor(e=0,t=0,n=1,i=1,r=0,a=2*Math.PI,s=!1,o=0){super(),this.isEllipseCurve=!0,this.type="EllipseCurve",this.aX=e,this.aY=t,this.xRadius=n,this.yRadius=i,this.aStartAngle=r,this.aEndAngle=a,this.aClockwise=s,this.aRotation=o}getPoint(e,t=new Y){let n=2*Math.PI,i=this.aEndAngle-this.aStartAngle,r=Math.abs(i)n;)i-=n;i0?0:(Math.floor(Math.abs(o)/a)+1)*a:0===l&&o===a-1&&(o=a-2,l=1),this.closed||o>0?n=r[(o-1)%a]:(rl.subVectors(r[0],r[1]).add(r[0]),n=rl);let u=r[o%a],c=r[(o+1)%a];if(this.closed||o+2n.length-2?n.length-1:r+1],u=n[r>n.length-3?n.length-1:r+2];return t.set(rp(a,s.x,o.x,l.x,u.x),rp(a,s.y,o.y,l.y,u.y)),t}copy(e){super.copy(e),this.points=[];for(let t=0,n=e.points.length;t=n){let e=i[r]-n,a=this.curves[r],s=a.getLength(),o=0===s?0:1-e/s;return a.getPointAt(o,t)}r++}return null}getLength(){let e=this.getCurveLengths();return e[e.length-1]}updateArcLengths(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()}getCurveLengths(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;let e=[],t=0;for(let n=0,i=this.curves.length;n1&&!n[n.length-1].equals(n[0])&&n.push(n[0]),n}copy(e){super.copy(e),this.curves=[];for(let t=0,n=e.curves.length;t0){let e=l.getPoint(0);e.equals(this.currentPoint)||this.lineTo(e.x,e.y)}this.curves.push(l);let u=l.getPoint(1);return this.currentPoint.copy(u),this}copy(e){return super.copy(e),this.currentPoint.copy(e.currentPoint),this}toJSON(){let e=super.toJSON();return e.currentPoint=this.currentPoint.toArray(),e}fromJSON(e){return super.fromJSON(e),this.currentPoint.fromArray(e.currentPoint),this}}class rE extends nn{constructor(e=[new Y(0,-.5),new Y(.5,0),new Y(0,.5)],t=12,n=0,i=2*Math.PI){super(),this.type="LatheGeometry",this.parameters={points:e,segments:t,phiStart:n,phiLength:i},t=Math.floor(t),i=V(i,0,2*Math.PI);const r=[],a=[],s=[],o=[],l=[],u=1/t,c=new eE,h=new Y,d=new eE,p=new eE,f=new eE;let m=0,g=0;for(let t=0;t<=e.length-1;t++)switch(t){case 0:m=e[t+1].x-e[t].x,d.x=+(g=e[t+1].y-e[t].y),d.y=-m,d.z=0*g,f.copy(d),d.normalize(),o.push(d.x,d.y,d.z);break;case e.length-1:o.push(f.x,f.y,f.z);break;default:m=e[t+1].x-e[t].x,d.x=+(g=e[t+1].y-e[t].y),d.y=-m,d.z=0*g,p.copy(d),d.x+=f.x,d.y+=f.y,d.z+=f.z,d.normalize(),o.push(d.x,d.y,d.z),f.copy(p)}for(let r=0;r<=t;r++){const d=n+r*u*i,p=Math.sin(d),f=Math.cos(d);for(let n=0;n<=e.length-1;n++){c.x=e[n].x*p,c.y=e[n].y,c.z=e[n].x*f,a.push(c.x,c.y,c.z),h.x=r/t,h.y=n/(e.length-1),s.push(h.x,h.y);const i=o[3*n+0]*p,u=o[3*n+1],d=o[3*n+0]*f;l.push(i,u,d)}}for(let n=0;n0||0!==i)&&(u.push(a,s,l),_+=3),(t>0||i!==r-1)&&(u.push(s,o,l),_+=3)}l.addGroup(g,_,0),g+=_})(),!1===a&&(e>0&&v(!0),t>0&&v(!1)),this.setIndex(u),this.setAttribute("position",new t4(c,3)),this.setAttribute("normal",new t4(h,3)),this.setAttribute("uv",new t4(d,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new rR(e.radiusTop,e.radiusBottom,e.height,e.radialSegments,e.heightSegments,e.openEnded,e.thetaStart,e.thetaLength)}}class rP extends rR{constructor(e=1,t=1,n=32,i=1,r=!1,a=0,s=2*Math.PI){super(0,e,t,n,i,r,a,s),this.type="ConeGeometry",this.parameters={radius:e,height:t,radialSegments:n,heightSegments:i,openEnded:r,thetaStart:a,thetaLength:s}}static fromJSON(e){return new rP(e.radius,e.height,e.radialSegments,e.heightSegments,e.openEnded,e.thetaStart,e.thetaLength)}}class rI extends nn{constructor(e=[],t=[],n=1,i=0){super(),this.type="PolyhedronGeometry",this.parameters={vertices:e,indices:t,radius:n,detail:i};const r=[],a=[];function s(e){r.push(e.x,e.y,e.z)}function o(t,n){let i=3*t;n.x=e[i+0],n.y=e[i+1],n.z=e[i+2]}function l(e,t,n,i){i<0&&1===e.x&&(a[t]=e.x-1),0===n.x&&0===n.z&&(a[t]=i/2/Math.PI+.5)}function u(e){return Math.atan2(e.z,-e.x)}(function(e){let n=new eE,i=new eE,r=new eE;for(let a=0;a.9&&s<.1&&(t<.2&&(a[e+0]+=1),n<.2&&(a[e+2]+=1),i<.2&&(a[e+4]+=1))}}()}(),this.setAttribute("position",new t4(r,3)),this.setAttribute("normal",new t4(r.slice(),3)),this.setAttribute("uv",new t4(a,2)),0===i?this.computeVertexNormals():this.normalizeNormals()}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new rI(e.vertices,e.indices,e.radius,e.details)}}class rL extends rI{constructor(e=1,t=0){const n=(1+Math.sqrt(5))/2,i=1/n;super([-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-i,-n,0,-i,n,0,i,-n,0,i,n,-i,-n,0,-i,n,0,i,-n,0,i,n,0,-n,0,-i,n,0,-i,-n,0,i,n,0,i],[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],e,t),this.type="DodecahedronGeometry",this.parameters={radius:e,detail:t}}static fromJSON(e){return new rL(e.radius,e.detail)}}let rN=new eE,rU=new eE,rD=new eE,rO=new tN;class rF extends nn{constructor(e=null,t=1){if(super(),this.type="EdgesGeometry",this.parameters={geometry:e,thresholdAngle:t},null!==e){const n=Math.cos(B*t),i=e.getIndex(),r=e.getAttribute("position"),a=i?i.count:r.count,s=[0,0,0],o=["a","b","c"],l=[,,,],u={},c=[];for(let e=0;e=n.next.y&&n.next.y!==n.y){let e=n.x+(s-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(e<=a&&e>i&&(i=e,r=n.x=n.x&&n.x>=l&&a!==n.x&&rW(sr.x||n.x===r.x&&(d=r,p=n,0>rj(d.prev,d,p.prev)&&0>rj(p.next,d,d.next))))&&(r=n,c=h)),n=n.next}while(n!==o)return r}(e,t);if(!n)return t;let i=rK(n,e);return rH(i,i.next),rH(n,n.next)}(u[r],n);return n}(e,t,d,n)),e.length>80*n){i=a=e[0],r=s=e[1];for(let t=n;ta&&(a=o),l>s&&(s=l);u=0!==(u=Math.max(a-i,s-r))?32767/u:0}return function e(t,n,i,r,a,s,o){if(!t)return;!o&&s&&function(e,t,n,i){let r=e;do 0===r.z&&(r.z=rG(r.x,r.y,t,n,i)),r.prevZ=r.prev,r.nextZ=r.next,r=r.next;while(r!==e)r.prevZ.nextZ=null,r.prevZ=null,function(e){let t,n,i,r,a,s,o,l,u=1;do{for(n=e,e=null,a=null,s=0;n;){for(s++,i=n,o=0,t=0;t0||l>0&&i;)0!==o&&(0===l||!i||n.z<=i.z)?(r=n,n=n.nextZ,o--):(r=i,i=i.nextZ,l--),a?a.nextZ=r:e=r,r.prevZ=a,a=r;n=i}a.nextZ=null,u*=2}while(s>1)}(r)}(t,r,a,s);let l=t,u,c;for(;t.prev!==t.next;){if(u=t.prev,c=t.next,s?function(e,t,n,i){let r=e.prev,a=e.next;if(rj(r,e,a)>=0)return!1;let s=r.x,o=e.x,l=a.x,u=r.y,c=e.y,h=a.y,d=so?s>l?s:l:o>l?o:l,m=u>c?u>h?u:h:c>h?c:h,g=rG(d,p,t,n,i),v=rG(f,m,t,n,i),_=e.prevZ,y=e.nextZ;for(;_&&_.z>=g&&y&&y.z<=v;){if(_.x>=d&&_.x<=f&&_.y>=p&&_.y<=m&&_!==r&&_!==a&&rW(s,u,o,c,l,h,_.x,_.y)&&rj(_.prev,_,_.next)>=0||(_=_.prevZ,y.x>=d&&y.x<=f&&y.y>=p&&y.y<=m&&y!==r&&y!==a&&rW(s,u,o,c,l,h,y.x,y.y)&&rj(y.prev,y,y.next)>=0))return!1;y=y.nextZ}for(;_&&_.z>=g;){if(_.x>=d&&_.x<=f&&_.y>=p&&_.y<=m&&_!==r&&_!==a&&rW(s,u,o,c,l,h,_.x,_.y)&&rj(_.prev,_,_.next)>=0)return!1;_=_.prevZ}for(;y&&y.z<=v;){if(y.x>=d&&y.x<=f&&y.y>=p&&y.y<=m&&y!==r&&y!==a&&rW(s,u,o,c,l,h,y.x,y.y)&&rj(y.prev,y,y.next)>=0)return!1;y=y.nextZ}return!0}(t,r,a,s):function(e){let t=e.prev,n=e.next;if(rj(t,e,n)>=0)return!1;let i=t.x,r=e.x,a=n.x,s=t.y,o=e.y,l=n.y,u=ir?i>a?i:a:r>a?r:a,d=s>o?s>l?s:l:o>l?o:l,p=n.next;for(;p!==t;){if(p.x>=u&&p.x<=h&&p.y>=c&&p.y<=d&&rW(i,s,r,o,a,l,p.x,p.y)&&rj(p.prev,p,p.next)>=0)return!1;p=p.next}return!0}(t)){n.push(u.i/i|0),n.push(t.i/i|0),n.push(c.i/i|0),rQ(t),t=c.next,l=c.next;continue}if((t=c)===l){o?1===o?e(t=function(e,t,n){let i=e;do{let r=i.prev,a=i.next.next;!rX(r,a)&&rq(r,i,i.next,a)&&rJ(r,a)&&rJ(a,r)&&(t.push(r.i/n|0),t.push(i.i/n|0),t.push(a.i/n|0),rQ(i),rQ(i.next),i=e=a),i=i.next}while(i!==e)return rH(i)}(rH(t),n,i),n,i,r,a,s,2):2===o&&function(t,n,i,r,a,s){let o=t;do{let t=o.next.next;for(;t!==o.prev;){var l,u;if(o.i!==t.i&&(l=o,u=t,l.next.i!==u.i&&l.prev.i!==u.i&&!function(e,t){let n=e;do{if(n.i!==e.i&&n.next.i!==e.i&&n.i!==t.i&&n.next.i!==t.i&&rq(n,n.next,e,t))return!0;n=n.next}while(n!==e)return!1}(l,u)&&(rJ(l,u)&&rJ(u,l)&&function(e,t){let n=e,i=!1,r=(e.x+t.x)/2,a=(e.y+t.y)/2;do n.y>a!=n.next.y>a&&n.next.y!==n.y&&r<(n.next.x-n.x)*(a-n.y)/(n.next.y-n.y)+n.x&&(i=!i),n=n.next;while(n!==e)return i}(l,u)&&(rj(l.prev,l,u.prev)||rj(l,u.prev,u))||rX(l,u)&&rj(l.prev,l,l.next)>0&&rj(u.prev,u,u.next)>0))){let l=rK(o,t);o=rH(o,o.next),l=rH(l,l.next),e(o,n,i,r,a,s,0),e(l,n,i,r,a,s,0);return}t=t.next}o=o.next}while(o!==t)}(t,n,i,r,a,s):e(rH(t),n,i,r,a,s,1);break}}}(d,p,n,i,r,u,0),p};function rk(e,t,n,i,r){let a,s;if(r===function(e,t,n,i){let r=0;for(let a=t,s=n-i;a0)for(a=t;a=t;a-=i)s=r$(a,e[a],e[a+1],s);return s&&rX(s,s.next)&&(rQ(s),s=s.next),s}function rH(e,t){if(!e)return e;t||(t=e);let n=e,i;do if(i=!1,!n.steiner&&(rX(n,n.next)||0===rj(n.prev,n,n.next))){if(rQ(n),(n=t=n.prev)===n.next)break;i=!0}else n=n.next;while(i||n!==t)return t}function rV(e,t){return e.x-t.x}function rG(e,t,n,i,r){return(e=((e=((e=((e=((e=(e-n)*r|0)|e<<8)&0xff00ff)|e<<4)&0xf0f0f0f)|e<<2)&0x33333333)|e<<1)&0x55555555)|(t=((t=((t=((t=((t=(t-i)*r|0)|t<<8)&0xff00ff)|t<<4)&0xf0f0f0f)|t<<2)&0x33333333)|t<<1)&0x55555555)<<1}function rW(e,t,n,i,r,a,s,o){return(r-s)*(t-o)>=(e-s)*(a-o)&&(e-s)*(i-o)>=(n-s)*(t-o)&&(n-s)*(a-o)>=(r-s)*(i-o)}function rj(e,t,n){return(t.y-e.y)*(n.x-t.x)-(t.x-e.x)*(n.y-t.y)}function rX(e,t){return e.x===t.x&&e.y===t.y}function rq(e,t,n,i){let r=rZ(rj(e,t,n)),a=rZ(rj(e,t,i)),s=rZ(rj(n,i,e)),o=rZ(rj(n,i,t));return!!(r!==a&&s!==o||0===r&&rY(e,n,t)||0===a&&rY(e,i,t)||0===s&&rY(n,e,i)||0===o&&rY(n,t,i))}function rY(e,t,n){return t.x<=Math.max(e.x,n.x)&&t.x>=Math.min(e.x,n.x)&&t.y<=Math.max(e.y,n.y)&&t.y>=Math.min(e.y,n.y)}function rZ(e){return e>0?1:e<0?-1:0}function rJ(e,t){return 0>rj(e.prev,e,e.next)?rj(e,t,e.next)>=0&&rj(e,e.prev,t)>=0:0>rj(e,t,e.prev)||0>rj(e,e.next,t)}function rK(e,t){let n=new r0(e.i,e.x,e.y),i=new r0(t.i,t.x,t.y),r=e.next,a=t.prev;return e.next=t,t.prev=e,n.next=r,r.prev=n,i.next=n,n.prev=i,a.next=i,i.prev=a,i}function r$(e,t,n,i){let r=new r0(e,t,n);return i?(r.next=i.next,r.prev=i,i.next.prev=r,i.next=r):(r.prev=r,r.next=r),r}function rQ(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function r0(e,t,n){this.i=e,this.x=t,this.y=n,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}class r1{static area(e){let t=e.length,n=0;for(let i=t-1,r=0;rr1.area(e)}static triangulateShape(e,t){let n=[],i=[],r=[];r2(e),r3(n,e);let a=e.length;t.forEach(r2);for(let e=0;e2&&e[t-1].equals(e[0])&&e.pop()}function r3(e,t){for(let n=0;nNumber.EPSILON){let h=Math.sqrt(c),d=Math.sqrt(l*l+u*u),p=t.x-o/h,f=t.y+s/h,m=((n.x-u/d-p)*u-(n.y+l/d-f)*l)/(s*u-o*l),g=(i=p+s*m-e.x)*i+(r=f+o*m-e.y)*r;if(g<=2)return new Y(i,r);a=Math.sqrt(g/2)}else{let e=!1;s>Number.EPSILON?l>Number.EPSILON&&(e=!0):s<-Number.EPSILON?l<-Number.EPSILON&&(e=!0):Math.sign(o)===Math.sign(u)&&(e=!0),e?(i=-o,r=s,a=Math.sqrt(c)):(i=s,r=o,a=Math.sqrt(c/2))}return new Y(i/a,r/a)}let I=[];for(let e=0,t=E.length,n=t-1,i=e+1;e=0;e--){let t=e/v,n=f*Math.cos(t*Math.PI/2),i=m*Math.sin(t*Math.PI/2)+g;for(let e=0,t=E.length;e=0;){let a=r,s=r-1;s<0&&(s=e.length-1);for(let e=0,r=h+2*v;e0)&&d.push(t,r,l),(e!==n-1||o0!=e>0&&this.version++,this._anisotropy=e}get clearcoat(){return this._clearcoat}set clearcoat(e){this._clearcoat>0!=e>0&&this.version++,this._clearcoat=e}get iridescence(){return this._iridescence}set iridescence(e){this._iridescence>0!=e>0&&this.version++,this._iridescence=e}get dispersion(){return this._dispersion}set dispersion(e){this._dispersion>0!=e>0&&this.version++,this._dispersion=e}get sheen(){return this._sheen}set sheen(e){this._sheen>0!=e>0&&this.version++,this._sheen=e}get transmission(){return this._transmission}set transmission(e){this._transmission>0!=e>0&&this.version++,this._transmission=e}copy(e){return super.copy(e),this.defines={STANDARD:"",PHYSICAL:""},this.anisotropy=e.anisotropy,this.anisotropyRotation=e.anisotropyRotation,this.anisotropyMap=e.anisotropyMap,this.clearcoat=e.clearcoat,this.clearcoatMap=e.clearcoatMap,this.clearcoatRoughness=e.clearcoatRoughness,this.clearcoatRoughnessMap=e.clearcoatRoughnessMap,this.clearcoatNormalMap=e.clearcoatNormalMap,this.clearcoatNormalScale.copy(e.clearcoatNormalScale),this.dispersion=e.dispersion,this.ior=e.ior,this.iridescence=e.iridescence,this.iridescenceMap=e.iridescenceMap,this.iridescenceIOR=e.iridescenceIOR,this.iridescenceThicknessRange=[...e.iridescenceThicknessRange],this.iridescenceThicknessMap=e.iridescenceThicknessMap,this.sheen=e.sheen,this.sheenColor.copy(e.sheenColor),this.sheenColorMap=e.sheenColorMap,this.sheenRoughness=e.sheenRoughness,this.sheenRoughnessMap=e.sheenRoughnessMap,this.transmission=e.transmission,this.transmissionMap=e.transmissionMap,this.thickness=e.thickness,this.thicknessMap=e.thicknessMap,this.attenuationDistance=e.attenuationDistance,this.attenuationColor.copy(e.attenuationColor),this.specularIntensity=e.specularIntensity,this.specularIntensityMap=e.specularIntensityMap,this.specularColor.copy(e.specularColor),this.specularColorMap=e.specularColorMap,this}}class ap extends tH{constructor(e){super(),this.isMeshPhongMaterial=!0,this.type="MeshPhongMaterial",this.color=new tz(0xffffff),this.specular=new tz(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new tz(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new Y(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new tn,this.combine=0,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.specular.copy(e.specular),this.shininess=e.shininess,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}}class af extends tH{constructor(e){super(),this.isMeshToonMaterial=!0,this.defines={TOON:""},this.type="MeshToonMaterial",this.color=new tz(0xffffff),this.map=null,this.gradientMap=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new tz(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new Y(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.gradientMap=e.gradientMap,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}}class am extends tH{constructor(e){super(),this.isMeshNormalMaterial=!0,this.type="MeshNormalMaterial",this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new Y(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.flatShading=!1,this.setValues(e)}copy(e){return super.copy(e),this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.flatShading=e.flatShading,this}}class ag extends tH{constructor(e){super(),this.isMeshLambertMaterial=!0,this.type="MeshLambertMaterial",this.color=new tz(0xffffff),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new tz(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new Y(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new tn,this.combine=0,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}}class av extends tH{constructor(e){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=3200,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(e)}copy(e){return super.copy(e),this.depthPacking=e.depthPacking,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this}}class a_ extends tH{constructor(e){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(e)}copy(e){return super.copy(e),this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this}}class ay extends tH{constructor(e){super(),this.isMeshMatcapMaterial=!0,this.defines={MATCAP:""},this.type="MeshMatcapMaterial",this.color=new tz(0xffffff),this.matcap=null,this.map=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new Y(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.defines={MATCAP:""},this.color.copy(e.color),this.matcap=e.matcap,this.map=e.map,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.flatShading=e.flatShading,this.fog=e.fog,this}}class ax extends iB{constructor(e){super(),this.isLineDashedMaterial=!0,this.type="LineDashedMaterial",this.scale=1,this.dashSize=3,this.gapSize=1,this.setValues(e)}copy(e){return super.copy(e),this.scale=e.scale,this.dashSize=e.dashSize,this.gapSize=e.gapSize,this}}function ab(e,t,n){return e&&(n||e.constructor!==t)?"number"==typeof t.BYTES_PER_ELEMENT?new t(e):Array.prototype.slice.call(e):e}function aS(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function aM(e){let t=e.length,n=Array(t);for(let e=0;e!==t;++e)n[e]=e;return n.sort(function(t,n){return e[t]-e[n]}),n}function aT(e,t,n){let i=e.length,r=new e.constructor(i);for(let a=0,s=0;s!==i;++a){let i=n[a]*t;for(let n=0;n!==t;++n)r[s++]=e[i+n]}return r}function aw(e,t,n,i){let r=1,a=e[0];for(;void 0!==a&&void 0===a[i];)a=e[r++];if(void 0===a)return;let s=a[i];if(void 0!==s)if(Array.isArray(s))do void 0!==(s=a[i])&&(t.push(a.time),n.push.apply(n,s)),a=e[r++];while(void 0!==a)else if(void 0!==s.toArray)do void 0!==(s=a[i])&&(t.push(a.time),s.toArray(n,n.length)),a=e[r++];while(void 0!==a)else do void 0!==(s=a[i])&&(t.push(a.time),n.push(s)),a=e[r++];while(void 0!==a)}let aE={convertArray:ab,isTypedArray:aS,getKeyframeOrder:aM,sortedArray:aT,flattenJSON:aw,subclip:function(e,t,n,i,r=30){let a=e.clone();a.name=t;let s=[];for(let e=0;e=i)){l.push(t.times[e]);for(let n=0;na.tracks[e].times[0]&&(o=a.tracks[e].times[0]);for(let e=0;e=r.times[d]){let e=d*u+l,t=e+u-l;i=r.values.slice(e,t)}else{let e=r.createInterpolant(),t=l,n=u-l;e.evaluate(a),i=e.resultBuffer.slice(t,n)}"quaternion"===s&&new ew().fromArray(i).normalize().conjugate().toArray(i);let p=o.times.length;for(let e=0;e=r)){let s=t[1];e=(r=t[--n-1]))break i}a=n,n=0;break r}break n}for(;n>>1;et;)--a;if(++a,0!==r||a!==i){r>=a&&(r=(a=Math.max(a,1))-1);let e=this.getValueSize();this.times=n.slice(r,a),this.values=this.values.slice(r*e,a*e)}return this}validate(){let e=!0,t=this.getValueSize();t-Math.floor(t)!=0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),e=!1);let n=this.times,i=this.values,r=n.length;0===r&&(console.error("THREE.KeyframeTrack: Track is empty.",this),e=!1);let a=null;for(let t=0;t!==r;t++){let i=n[t];if("number"==typeof i&&isNaN(i)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,t,i),e=!1;break}if(null!==a&&a>i){console.error("THREE.KeyframeTrack: Out of order keys.",this,t,i,a),e=!1;break}a=i}if(void 0!==i&&aS(i))for(let t=0,n=i.length;t!==n;++t){let n=i[t];if(isNaN(n)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,t,n),e=!1;break}}return e}optimize(){let e=this.times.slice(),t=this.values.slice(),n=this.getValueSize(),i=2302===this.getInterpolation(),r=e.length-1,a=1;for(let s=1;s0){e[a]=e[r];for(let e=r*n,i=a*n,s=0;s!==n;++s)t[i+s]=t[e+s];++a}return a!==e.length?(this.times=e.slice(0,a),this.values=t.slice(0,a*n)):(this.times=e,this.values=t),this}clone(){let e=this.times.slice(),t=this.values.slice(),n=new this.constructor(this.name,e,t);return n.createInterpolant=this.createInterpolant,n}}aI.prototype.TimeBufferType=Float32Array,aI.prototype.ValueBufferType=Float32Array,aI.prototype.DefaultInterpolation=2301;class aL extends aI{constructor(e,t,n){super(e,t,n)}}aL.prototype.ValueTypeName="bool",aL.prototype.ValueBufferType=Array,aL.prototype.DefaultInterpolation=2300,aL.prototype.InterpolantFactoryMethodLinear=void 0,aL.prototype.InterpolantFactoryMethodSmooth=void 0;class aN extends aI{}aN.prototype.ValueTypeName="color";class aU extends aI{}aU.prototype.ValueTypeName="number";class aD extends aA{constructor(e,t,n,i){super(e,t,n,i)}interpolate_(e,t,n,i){let r=this.resultBuffer,a=this.sampleValues,s=this.valueSize,o=(n-t)/(i-t),l=e*s;for(let e=l+s;l!==e;l+=4)ew.slerpFlat(r,0,a,l-s,a,l,o);return r}}class aO extends aI{InterpolantFactoryMethodLinear(e){return new aD(this.times,this.values,this.getValueSize(),e)}}aO.prototype.ValueTypeName="quaternion",aO.prototype.InterpolantFactoryMethodSmooth=void 0;class aF extends aI{constructor(e,t,n){super(e,t,n)}}aF.prototype.ValueTypeName="string",aF.prototype.ValueBufferType=Array,aF.prototype.DefaultInterpolation=2300,aF.prototype.InterpolantFactoryMethodLinear=void 0,aF.prototype.InterpolantFactoryMethodSmooth=void 0;class az extends aI{}az.prototype.ValueTypeName="vector";class aB{constructor(e="",t=-1,n=[],i=2500){this.name=e,this.tracks=n,this.duration=t,this.blendMode=i,this.uuid=H(),this.duration<0&&this.resetDuration()}static parse(e){let t=[],n=e.tracks,i=1/(e.fps||1);for(let e=0,r=n.length;e!==r;++e)t.push((function(e){if(void 0===e.type)throw Error("THREE.KeyframeTrack: track type undefined, can not parse");let t=function(e){switch(e.toLowerCase()){case"scalar":case"double":case"float":case"number":case"integer":return aU;case"vector":case"vector2":case"vector3":case"vector4":return az;case"color":return aN;case"quaternion":return aO;case"bool":case"boolean":return aL;case"string":return aF}throw Error("THREE.KeyframeTrack: Unsupported typeName: "+e)}(e.type);if(void 0===e.times){let t=[],n=[];aw(e.keys,t,n,"value"),e.times=t,e.values=n}return void 0!==t.parse?t.parse(e):new t(e.name,e.times,e.values,e.interpolation)})(n[e]).scale(i));let r=new this(e.name,e.duration,t,e.blendMode);return r.uuid=e.uuid,r}static toJSON(e){let t=[],n=e.tracks,i={name:e.name,duration:e.duration,tracks:t,uuid:e.uuid,blendMode:e.blendMode};for(let e=0,i=n.length;e!==i;++e)t.push(aI.toJSON(n[e]));return i}static CreateFromMorphTargetSequence(e,t,n,i){let r=t.length,a=[];for(let e=0;e1){let e=a[1],t=i[e];t||(i[e]=t=[]),t.push(n)}}let a=[];for(let e in i)a.push(this.CreateFromMorphTargetSequence(e,i[e],t,n));return a}static parseAnimation(e,t){if(!e)return console.error("THREE.AnimationClip: No animation in JSONLoader data."),null;let n=function(e,t,n,i,r){if(0!==n.length){let a=[],s=[];aw(n,a,s,i),0!==a.length&&r.push(new e(t,a,s))}},i=[],r=e.name||"default",a=e.fps||30,s=e.blendMode,o=e.length||-1,l=e.hierarchy||[];for(let e=0;e{t&&t(r),this.manager.itemEnd(e)},0),r;if(void 0!==aW[e])return void aW[e].push({onLoad:t,onProgress:n,onError:i});aW[e]=[],aW[e].push({onLoad:t,onProgress:n,onError:i});let a=new Request(e,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin"}),s=this.mimeType,o=this.responseType;fetch(a).then(t=>{if(200===t.status||0===t.status){if(0===t.status&&console.warn("THREE.FileLoader: HTTP Status 0 received."),"u"{if(i)e.close();else{let i=new ProgressEvent("progress",{lengthComputable:s,loaded:o+=r.byteLength,total:a});for(let e=0,t=n.length;e{e.error(t)})}()}}))}throw new aj(`fetch for "${t.url}" responded with ${t.status}: ${t.statusText}`,t)}).then(e=>{switch(o){case"arraybuffer":return e.arrayBuffer();case"blob":return e.blob();case"document":return e.text().then(e=>new DOMParser().parseFromString(e,s));case"json":return e.json();default:if(void 0===s)return e.text();{let t=/charset="?([^;"\s]*)"?/i.exec(s),n=new TextDecoder(t&&t[1]?t[1].toLowerCase():void 0);return e.arrayBuffer().then(e=>n.decode(e))}}}).then(t=>{ak.add(e,t);let n=aW[e];delete aW[e];for(let e=0,i=n.length;e{let n=aW[e];if(void 0===n)throw this.manager.itemError(e),t;delete aW[e];for(let e=0,i=n.length;e{this.manager.itemEnd(e)}),this.manager.itemStart(e)}setResponseType(e){return this.responseType=e,this}setMimeType(e){return this.mimeType=e,this}}class aq extends aG{constructor(e){super(e)}load(e,t,n,i){let r=this,a=new aX(this.manager);a.setPath(this.path),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(e,function(n){try{t(r.parse(JSON.parse(n)))}catch(t){i?i(t):console.error(t),r.manager.itemError(e)}},n,i)}parse(e){let t=[];for(let n=0;n0:i.vertexColors=e.vertexColors),void 0!==e.uniforms)for(let t in e.uniforms){let r=e.uniforms[t];switch(i.uniforms[t]={},r.type){case"t":i.uniforms[t].value=n(r.value);break;case"c":i.uniforms[t].value=new tz().setHex(r.value);break;case"v2":i.uniforms[t].value=new Y().fromArray(r.value);break;case"v3":i.uniforms[t].value=new eE().fromArray(r.value);break;case"v4":i.uniforms[t].value=new e_().fromArray(r.value);break;case"m3":i.uniforms[t].value=new Z().fromArray(r.value);break;case"m4":i.uniforms[t].value=new e2().fromArray(r.value);break;default:i.uniforms[t].value=r.value}}if(void 0!==e.defines&&(i.defines=e.defines),void 0!==e.vertexShader&&(i.vertexShader=e.vertexShader),void 0!==e.fragmentShader&&(i.fragmentShader=e.fragmentShader),void 0!==e.glslVersion&&(i.glslVersion=e.glslVersion),void 0!==e.extensions)for(let t in e.extensions)i.extensions[t]=e.extensions[t];if(void 0!==e.lights&&(i.lights=e.lights),void 0!==e.clipping&&(i.clipping=e.clipping),void 0!==e.size&&(i.size=e.size),void 0!==e.sizeAttenuation&&(i.sizeAttenuation=e.sizeAttenuation),void 0!==e.map&&(i.map=n(e.map)),void 0!==e.matcap&&(i.matcap=n(e.matcap)),void 0!==e.alphaMap&&(i.alphaMap=n(e.alphaMap)),void 0!==e.bumpMap&&(i.bumpMap=n(e.bumpMap)),void 0!==e.bumpScale&&(i.bumpScale=e.bumpScale),void 0!==e.normalMap&&(i.normalMap=n(e.normalMap)),void 0!==e.normalMapType&&(i.normalMapType=e.normalMapType),void 0!==e.normalScale){let t=e.normalScale;!1===Array.isArray(t)&&(t=[t,t]),i.normalScale=new Y().fromArray(t)}return void 0!==e.displacementMap&&(i.displacementMap=n(e.displacementMap)),void 0!==e.displacementScale&&(i.displacementScale=e.displacementScale),void 0!==e.displacementBias&&(i.displacementBias=e.displacementBias),void 0!==e.roughnessMap&&(i.roughnessMap=n(e.roughnessMap)),void 0!==e.metalnessMap&&(i.metalnessMap=n(e.metalnessMap)),void 0!==e.emissiveMap&&(i.emissiveMap=n(e.emissiveMap)),void 0!==e.emissiveIntensity&&(i.emissiveIntensity=e.emissiveIntensity),void 0!==e.specularMap&&(i.specularMap=n(e.specularMap)),void 0!==e.specularIntensityMap&&(i.specularIntensityMap=n(e.specularIntensityMap)),void 0!==e.specularColorMap&&(i.specularColorMap=n(e.specularColorMap)),void 0!==e.envMap&&(i.envMap=n(e.envMap)),void 0!==e.envMapRotation&&i.envMapRotation.fromArray(e.envMapRotation),void 0!==e.envMapIntensity&&(i.envMapIntensity=e.envMapIntensity),void 0!==e.reflectivity&&(i.reflectivity=e.reflectivity),void 0!==e.refractionRatio&&(i.refractionRatio=e.refractionRatio),void 0!==e.lightMap&&(i.lightMap=n(e.lightMap)),void 0!==e.lightMapIntensity&&(i.lightMapIntensity=e.lightMapIntensity),void 0!==e.aoMap&&(i.aoMap=n(e.aoMap)),void 0!==e.aoMapIntensity&&(i.aoMapIntensity=e.aoMapIntensity),void 0!==e.gradientMap&&(i.gradientMap=n(e.gradientMap)),void 0!==e.clearcoatMap&&(i.clearcoatMap=n(e.clearcoatMap)),void 0!==e.clearcoatRoughnessMap&&(i.clearcoatRoughnessMap=n(e.clearcoatRoughnessMap)),void 0!==e.clearcoatNormalMap&&(i.clearcoatNormalMap=n(e.clearcoatNormalMap)),void 0!==e.clearcoatNormalScale&&(i.clearcoatNormalScale=new Y().fromArray(e.clearcoatNormalScale)),void 0!==e.iridescenceMap&&(i.iridescenceMap=n(e.iridescenceMap)),void 0!==e.iridescenceThicknessMap&&(i.iridescenceThicknessMap=n(e.iridescenceThicknessMap)),void 0!==e.transmissionMap&&(i.transmissionMap=n(e.transmissionMap)),void 0!==e.thicknessMap&&(i.thicknessMap=n(e.thicknessMap)),void 0!==e.anisotropyMap&&(i.anisotropyMap=n(e.anisotropyMap)),void 0!==e.sheenColorMap&&(i.sheenColorMap=n(e.sheenColorMap)),void 0!==e.sheenRoughnessMap&&(i.sheenRoughnessMap=n(e.sheenRoughnessMap)),i}setTextures(e){return this.textures=e,this}createMaterialFromType(e){return su.createMaterialFromType(e)}static createMaterialFromType(e){return new({ShadowMaterial:au,SpriteMaterial:nO,RawShaderMaterial:ac,ShaderMaterial:nb,PointsMaterial:iQ,MeshPhysicalMaterial:ad,MeshStandardMaterial:ah,MeshPhongMaterial:ap,MeshToonMaterial:af,MeshNormalMaterial:am,MeshLambertMaterial:ag,MeshDepthMaterial:av,MeshDistanceMaterial:a_,MeshBasicMaterial:tV,MeshMatcapMaterial:ay,LineDashedMaterial:ax,LineBasicMaterial:iB,Material:tH})[e]}}class sc{static decodeText(e){if(console.warn("THREE.LoaderUtils: decodeText() has been deprecated with r165 and will be removed with r175. Use TextDecoder instead."),"u">typeof TextDecoder)return new TextDecoder().decode(e);let t="";for(let n=0,i=e.length;n0){(n=new aZ(new aH(t))).setCrossOrigin(this.crossOrigin);for(let t=0,n=e.length;t0){(t=new aZ(this.manager)).setCrossOrigin(this.crossOrigin);for(let t=0,n=e.length;t{let t=new eR;t.min.fromArray(e.boxMin),t.max.fromArray(e.boxMax);let n=new eq;return n.radius=e.sphereRadius,n.center.fromArray(e.sphereCenter),{boxInitialized:e.boxInitialized,box:t,sphereInitialized:e.sphereInitialized,sphere:n}}),a._maxInstanceCount=e.maxInstanceCount,a._maxVertexCount=e.maxVertexCount,a._maxIndexCount=e.maxIndexCount,a._geometryInitialized=e.geometryInitialized,a._geometryCount=e.geometryCount,a._matricesTexture=c(e.matricesTexture.uuid),void 0!==e.colorsTexture&&(a._colorsTexture=c(e.colorsTexture.uuid));break;case"LOD":a=new nQ;break;case"Line":a=new iq(l(e.geometry),u(e.material));break;case"LineLoop":a=new i$(l(e.geometry),u(e.material));break;case"LineSegments":a=new iK(l(e.geometry),u(e.material));break;case"PointCloud":case"Points":a=new i4(l(e.geometry),u(e.material));break;case"Sprite":a=new nZ(u(e.material));break;case"Group":a=new i6;break;case"Bone":a=new ie;break;default:a=new ty}if(a.uuid=e.uuid,void 0!==e.name&&(a.name=e.name),void 0!==e.matrix?(a.matrix.fromArray(e.matrix),void 0!==e.matrixAutoUpdate&&(a.matrixAutoUpdate=e.matrixAutoUpdate),a.matrixAutoUpdate&&a.matrix.decompose(a.position,a.quaternion,a.scale)):(void 0!==e.position&&a.position.fromArray(e.position),void 0!==e.rotation&&a.rotation.fromArray(e.rotation),void 0!==e.quaternion&&a.quaternion.fromArray(e.quaternion),void 0!==e.scale&&a.scale.fromArray(e.scale)),void 0!==e.up&&a.up.fromArray(e.up),void 0!==e.castShadow&&(a.castShadow=e.castShadow),void 0!==e.receiveShadow&&(a.receiveShadow=e.receiveShadow),e.shadow&&(void 0!==e.shadow.intensity&&(a.shadow.intensity=e.shadow.intensity),void 0!==e.shadow.bias&&(a.shadow.bias=e.shadow.bias),void 0!==e.shadow.normalBias&&(a.shadow.normalBias=e.shadow.normalBias),void 0!==e.shadow.radius&&(a.shadow.radius=e.shadow.radius),void 0!==e.shadow.mapSize&&a.shadow.mapSize.fromArray(e.shadow.mapSize),void 0!==e.shadow.camera&&(a.shadow.camera=this.parseObject(e.shadow.camera))),void 0!==e.visible&&(a.visible=e.visible),void 0!==e.frustumCulled&&(a.frustumCulled=e.frustumCulled),void 0!==e.renderOrder&&(a.renderOrder=e.renderOrder),void 0!==e.userData&&(a.userData=e.userData),void 0!==e.layers&&(a.layers.mask=e.layers),void 0!==e.children){let s=e.children;for(let e=0;e{t&&t(n),r.manager.itemEnd(e)}).catch(e=>{i&&i(e)}):(setTimeout(function(){t&&t(a),r.manager.itemEnd(e)},0),a);let s={};s.credentials="anonymous"===this.crossOrigin?"same-origin":"include",s.headers=this.requestHeader;let o=fetch(e,s).then(function(e){return e.blob()}).then(function(e){return createImageBitmap(e,Object.assign(r.options,{colorSpaceConversion:"none"}))}).then(function(n){return ak.add(e,n),t&&t(n),r.manager.itemEnd(e),n}).catch(function(t){i&&i(t),ak.remove(e),r.manager.itemError(e),r.manager.itemEnd(e)});ak.add(e,o),r.manager.itemStart(e)}}class s_{static getContext(){return void 0===i&&(i=new(window.AudioContext||window.webkitAudioContext)),i}static setContext(e){i=e}}class sy extends aG{constructor(e){super(e)}load(e,t,n,i){let r=this,a=new aX(this.manager);function s(t){i?i(t):console.error(t),r.manager.itemError(e)}a.setResponseType("arraybuffer"),a.setPath(this.path),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(e,function(e){try{let n=e.slice(0);s_.getContext().decodeAudioData(n,function(e){t(e)}).catch(s)}catch(e){s(e)}},n,i)}}let sx=new e2,sb=new e2,sS=new e2;class sM{constructor(){this.type="StereoCamera",this.aspect=1,this.eyeSep=.064,this.cameraL=new nE,this.cameraL.layers.enable(1),this.cameraL.matrixAutoUpdate=!1,this.cameraR=new nE,this.cameraR.layers.enable(2),this.cameraR.matrixAutoUpdate=!1,this._cache={focus:null,fov:null,aspect:null,near:null,far:null,zoom:null,eyeSep:null}}update(e){let t=this._cache;if(t.focus!==e.focus||t.fov!==e.fov||t.aspect!==e.aspect*this.aspect||t.near!==e.near||t.far!==e.far||t.zoom!==e.zoom||t.eyeSep!==this.eyeSep){let n,i;t.focus=e.focus,t.fov=e.fov,t.aspect=e.aspect*this.aspect,t.near=e.near,t.far=e.far,t.zoom=e.zoom,t.eyeSep=this.eyeSep,sS.copy(e.projectionMatrix);let r=t.eyeSep/2,a=r*t.near/t.focus,s=t.near*Math.tan(B*t.fov*.5)/t.zoom;sb.elements[12]=-r,sx.elements[12]=r,n=-s*t.aspect+a,i=s*t.aspect+a,sS.elements[0]=2*t.near/(i-n),sS.elements[8]=(i+n)/(i-n),this.cameraL.projectionMatrix.copy(sS),n=-s*t.aspect-a,i=s*t.aspect-a,sS.elements[0]=2*t.near/(i-n),sS.elements[8]=(i+n)/(i-n),this.cameraR.projectionMatrix.copy(sS)}this.cameraL.matrixWorld.copy(e.matrixWorld).multiply(sb),this.cameraR.matrixWorld.copy(e.matrixWorld).multiply(sx)}}class sT extends nE{constructor(e=[]){super(),this.isArrayCamera=!0,this.cameras=e}}class sw{constructor(e=!0){this.autoStart=e,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1}start(){this.startTime=sE(),this.oldTime=this.startTime,this.elapsedTime=0,this.running=!0}stop(){this.getElapsedTime(),this.running=!1,this.autoStart=!1}getElapsedTime(){return this.getDelta(),this.elapsedTime}getDelta(){let e=0;if(this.autoStart&&!this.running)return this.start(),0;if(this.running){let t=sE();e=(t-this.oldTime)/1e3,this.oldTime=t,this.elapsedTime+=e}return e}}function sE(){return performance.now()}let sA=new eE,sC=new ew,sR=new eE,sP=new eE;class sI extends ty{constructor(){super(),this.type="AudioListener",this.context=s_.getContext(),this.gain=this.context.createGain(),this.gain.connect(this.context.destination),this.filter=null,this.timeDelta=0,this._clock=new sw}getInput(){return this.gain}removeFilter(){return null!==this.filter&&(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination),this.gain.connect(this.context.destination),this.filter=null),this}getFilter(){return this.filter}setFilter(e){return null!==this.filter?(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination)):this.gain.disconnect(this.context.destination),this.filter=e,this.gain.connect(this.filter),this.filter.connect(this.context.destination),this}getMasterVolume(){return this.gain.gain.value}setMasterVolume(e){return this.gain.gain.setTargetAtTime(e,this.context.currentTime,.01),this}updateMatrixWorld(e){super.updateMatrixWorld(e);let t=this.context.listener,n=this.up;if(this.timeDelta=this._clock.getDelta(),this.matrixWorld.decompose(sA,sC,sR),sP.set(0,0,-1).applyQuaternion(sC),t.positionX){let e=this.context.currentTime+this.timeDelta;t.positionX.linearRampToValueAtTime(sA.x,e),t.positionY.linearRampToValueAtTime(sA.y,e),t.positionZ.linearRampToValueAtTime(sA.z,e),t.forwardX.linearRampToValueAtTime(sP.x,e),t.forwardY.linearRampToValueAtTime(sP.y,e),t.forwardZ.linearRampToValueAtTime(sP.z,e),t.upX.linearRampToValueAtTime(n.x,e),t.upY.linearRampToValueAtTime(n.y,e),t.upZ.linearRampToValueAtTime(n.z,e)}else t.setPosition(sA.x,sA.y,sA.z),t.setOrientation(sP.x,sP.y,sP.z,n.x,n.y,n.z)}}class sL extends ty{constructor(e){super(),this.type="Audio",this.listener=e,this.context=e.context,this.gain=this.context.createGain(),this.gain.connect(e.getInput()),this.autoplay=!1,this.buffer=null,this.detune=0,this.loop=!1,this.loopStart=0,this.loopEnd=0,this.offset=0,this.duration=void 0,this.playbackRate=1,this.isPlaying=!1,this.hasPlaybackControl=!0,this.source=null,this.sourceType="empty",this._startedAt=0,this._progress=0,this._connected=!1,this.filters=[]}getOutput(){return this.gain}setNodeSource(e){return this.hasPlaybackControl=!1,this.sourceType="audioNode",this.source=e,this.connect(),this}setMediaElementSource(e){return this.hasPlaybackControl=!1,this.sourceType="mediaNode",this.source=this.context.createMediaElementSource(e),this.connect(),this}setMediaStreamSource(e){return this.hasPlaybackControl=!1,this.sourceType="mediaStreamNode",this.source=this.context.createMediaStreamSource(e),this.connect(),this}setBuffer(e){return this.buffer=e,this.sourceType="buffer",this.autoplay&&this.play(),this}play(e=0){if(!0===this.isPlaying)return void console.warn("THREE.Audio: Audio is already playing.");if(!1===this.hasPlaybackControl)return void console.warn("THREE.Audio: this Audio has no playback control.");this._startedAt=this.context.currentTime+e;let t=this.context.createBufferSource();return t.buffer=this.buffer,t.loop=this.loop,t.loopStart=this.loopStart,t.loopEnd=this.loopEnd,t.onended=this.onEnded.bind(this),t.start(this._startedAt,this._progress+this.offset,this.duration),this.isPlaying=!0,this.source=t,this.setDetune(this.detune),this.setPlaybackRate(this.playbackRate),this.connect()}pause(){return!1===this.hasPlaybackControl?void console.warn("THREE.Audio: this Audio has no playback control."):(!0===this.isPlaying&&(this._progress+=Math.max(this.context.currentTime-this._startedAt,0)*this.playbackRate,!0===this.loop&&(this._progress=this._progress%(this.duration||this.buffer.duration)),this.source.stop(),this.source.onended=null,this.isPlaying=!1),this)}stop(e=0){return!1===this.hasPlaybackControl?void console.warn("THREE.Audio: this Audio has no playback control."):(this._progress=0,null!==this.source&&(this.source.stop(this.context.currentTime+e),this.source.onended=null),this.isPlaying=!1,this)}connect(){if(this.filters.length>0){this.source.connect(this.filters[0]);for(let e=1,t=this.filters.length;e0){this.source.disconnect(this.filters[0]);for(let e=1,t=this.filters.length;e0&&this._mixBufferRegionAdditive(n,i,this._addIndex*t,1,t);for(let e=t,r=t+t;e!==r;++e)if(n[e]!==n[e+t]){s.setValue(n,i);break}}saveOriginalState(){let e=this.binding,t=this.buffer,n=this.valueSize,i=n*this._origIndex;e.getValue(t,i);for(let e=n;e!==i;++e)t[e]=t[i+e%n];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0}restoreOriginalState(){let e=3*this.valueSize;this.binding.setValue(this.buffer,e)}_setAdditiveIdentityNumeric(){let e=this._addIndex*this.valueSize,t=e+this.valueSize;for(let n=e;n=.5)for(let i=0;i!==r;++i)e[t+i]=e[n+i]}_slerp(e,t,n,i){ew.slerpFlat(e,t,e,t,e,n,i)}_slerpAdditive(e,t,n,i,r){let a=this._workIndex*r;ew.multiplyQuaternionsFlat(e,a,e,t,e,n),ew.slerpFlat(e,t,e,t,e,a,i)}_lerp(e,t,n,i,r){let a=1-i;for(let s=0;s!==r;++s){let r=t+s;e[r]=e[r]*a+e[n+s]*i}}_lerpAdditive(e,t,n,i,r){for(let a=0;a!==r;++a){let r=t+a;e[r]=e[r]+e[n+a]*i}}}let sk="\\[\\]\\.:\\/",sH=RegExp("["+sk+"]","g"),sV="[^"+sk+"]",sG="[^"+sk.replace("\\.","")+"]",sW=RegExp("^"+/((?:WC+[\/:])*)/.source.replace("WC",sV)+/(WCOD+)?/.source.replace("WCOD",sG)+/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",sV)+/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",sV)+"$"),sj=["material","materials","bones","map"];class sX{constructor(e,t,n){this.path=t,this.parsedPath=n||sX.parseTrackName(t),this.node=sX.findNode(e,this.parsedPath.nodeName),this.rootNode=e,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(e,t,n){return e&&e.isAnimationObjectGroup?new sX.Composite(e,t,n):new sX(e,t,n)}static sanitizeNodeName(e){return e.replace(/\s/g,"_").replace(sH,"")}static parseTrackName(e){let t=sW.exec(e);if(null===t)throw Error("PropertyBinding: Cannot parse trackName: "+e);let n={nodeName:t[2],objectName:t[3],objectIndex:t[4],propertyName:t[5],propertyIndex:t[6]},i=n.nodeName&&n.nodeName.lastIndexOf(".");if(void 0!==i&&-1!==i){let e=n.nodeName.substring(i+1);-1!==sj.indexOf(e)&&(n.nodeName=n.nodeName.substring(0,i),n.objectName=e)}if(null===n.propertyName||0===n.propertyName.length)throw Error("PropertyBinding: can not parse propertyName from trackName: "+e);return n}static findNode(e,t){if(void 0===t||""===t||"."===t||-1===t||t===e.name||t===e.uuid)return e;if(e.skeleton){let n=e.skeleton.getBoneByName(t);if(void 0!==n)return n}if(e.children){let n=function(e){for(let i=0;i=r){let a=r++,u=e[a];t[u.uuid]=l,e[l]=u,t[o]=a,e[a]=s;for(let e=0;e!==i;++e){let t=n[e],i=t[a],r=t[l];t[l]=i,t[a]=r}}}this.nCachedObjects_=r}uncache(){let e=this._objects,t=this._indicesByUUID,n=this._bindings,i=n.length,r=this.nCachedObjects_,a=e.length;for(let s=0,o=arguments.length;s!==o;++s){let o=arguments[s],l=o.uuid,u=t[l];if(void 0!==u)if(delete t[l],u0&&(t[s.uuid]=u),e[u]=s,e.pop();for(let e=0;e!==i;++e){let t=n[e];t[u]=t[r],t.pop()}}}this.nCachedObjects_=r}subscribe_(e,t){let n=this._bindingsIndicesByPath,i=n[e],r=this._bindings;if(void 0!==i)return r[i];let a=this._paths,s=this._parsedPaths,o=this._objects,l=o.length,u=this.nCachedObjects_,c=Array(l);i=r.length,n[e]=i,a.push(e),s.push(t),r.push(c);for(let n=u,i=o.length;n!==i;++n){let i=o[n];c[n]=new sX(i,e,t)}return c}unsubscribe_(e){let t=this._bindingsIndicesByPath,n=t[e];if(void 0!==n){let i=this._paths,r=this._parsedPaths,a=this._bindings,s=a.length-1,o=a[s];t[e[s]]=n,a[n]=o,a.pop(),r[n]=r[s],r.pop(),i[n]=i[s],i.pop()}}}class sY{constructor(e,t,n=null,i=t.blendMode){this._mixer=e,this._clip=t,this._localRoot=n,this.blendMode=i;const r=t.tracks,a=r.length,s=Array(a),o={endingStart:2400,endingEnd:2400};for(let e=0;e!==a;++e){const t=r[e].createInterpolant(null);s[e]=t,t.settings=o}this._interpolantSettings=o,this._interpolants=s,this._propertyBindings=Array(a),this._cacheIndex=null,this._byClipCacheIndex=null,this._timeScaleInterpolant=null,this._weightInterpolant=null,this.loop=2201,this._loopCount=-1,this._startTime=null,this.time=0,this.timeScale=1,this._effectiveTimeScale=1,this.weight=1,this._effectiveWeight=1,this.repetitions=1/0,this.paused=!1,this.enabled=!0,this.clampWhenFinished=!1,this.zeroSlopeAtStart=!0,this.zeroSlopeAtEnd=!0}play(){return this._mixer._activateAction(this),this}stop(){return this._mixer._deactivateAction(this),this.reset()}reset(){return this.paused=!1,this.enabled=!0,this.time=0,this._loopCount=-1,this._startTime=null,this.stopFading().stopWarping()}isRunning(){return this.enabled&&!this.paused&&0!==this.timeScale&&null===this._startTime&&this._mixer._isActiveAction(this)}isScheduled(){return this._mixer._isActiveAction(this)}startAt(e){return this._startTime=e,this}setLoop(e,t){return this.loop=e,this.repetitions=t,this}setEffectiveWeight(e){return this.weight=e,this._effectiveWeight=this.enabled?e:0,this.stopFading()}getEffectiveWeight(){return this._effectiveWeight}fadeIn(e){return this._scheduleFading(e,0,1)}fadeOut(e){return this._scheduleFading(e,1,0)}crossFadeFrom(e,t,n){if(e.fadeOut(t),this.fadeIn(t),n){let n=this._clip.duration,i=e._clip.duration;e.warp(1,i/n,t),this.warp(n/i,1,t)}return this}crossFadeTo(e,t,n){return e.crossFadeFrom(this,t,n)}stopFading(){let e=this._weightInterpolant;return null!==e&&(this._weightInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}setEffectiveTimeScale(e){return this.timeScale=e,this._effectiveTimeScale=this.paused?0:e,this.stopWarping()}getEffectiveTimeScale(){return this._effectiveTimeScale}setDuration(e){return this.timeScale=this._clip.duration/e,this.stopWarping()}syncWith(e){return this.time=e.time,this.timeScale=e.timeScale,this.stopWarping()}halt(e){return this.warp(this._effectiveTimeScale,0,e)}warp(e,t,n){let i=this._mixer,r=i.time,a=this.timeScale,s=this._timeScaleInterpolant;null===s&&(s=i._lendControlInterpolant(),this._timeScaleInterpolant=s);let o=s.parameterPositions,l=s.sampleValues;return o[0]=r,o[1]=r+n,l[0]=e/a,l[1]=t/a,this}stopWarping(){let e=this._timeScaleInterpolant;return null!==e&&(this._timeScaleInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}getMixer(){return this._mixer}getClip(){return this._clip}getRoot(){return this._localRoot||this._mixer._root}_update(e,t,n,i){if(!this.enabled)return void this._updateWeight(e);let r=this._startTime;if(null!==r){let i=(e-r)*n;i<0||0===n?t=0:(this._startTime=null,t=n*i)}t*=this._updateTimeScale(e);let a=this._updateTime(t),s=this._updateWeight(e);if(s>0){let e=this._interpolants,t=this._propertyBindings;if(2501===this.blendMode)for(let n=0,i=e.length;n!==i;++n)e[n].evaluate(a),t[n].accumulateAdditive(s);else for(let n=0,r=e.length;n!==r;++n)e[n].evaluate(a),t[n].accumulate(i,s)}}_updateWeight(e){let t=0;if(this.enabled){t=this.weight;let n=this._weightInterpolant;if(null!==n){let i=n.evaluate(e)[0];t*=i,e>n.parameterPositions[1]&&(this.stopFading(),0===i&&(this.enabled=!1))}}return this._effectiveWeight=t,t}_updateTimeScale(e){let t=0;if(!this.paused){t=this.timeScale;let n=this._timeScaleInterpolant;null!==n&&(t*=n.evaluate(e)[0],e>n.parameterPositions[1]&&(this.stopWarping(),0===t?this.paused=!0:this.timeScale=t))}return this._effectiveTimeScale=t,t}_updateTime(e){let t=this._clip.duration,n=this.loop,i=this.time+e,r=this._loopCount,a=2202===n;if(0===e)return -1===r?i:a&&(1&r)==1?t-i:i;if(2200===n){-1===r&&(this._loopCount=0,this._setEndings(!0,!0,!1));s:{if(i>=t)i=t;else if(i<0)i=0;else{this.time=i;break s}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=i,this._mixer.dispatchEvent({type:"finished",action:this,direction:e<0?-1:1})}}else{if(-1===r&&(e>=0?(r=0,this._setEndings(!0,0===this.repetitions,a)):this._setEndings(0===this.repetitions,!0,a)),i>=t||i<0){let n=Math.floor(i/t);i-=t*n,r+=Math.abs(n);let s=this.repetitions-r;if(s<=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,i=e>0?t:0,this.time=i,this._mixer.dispatchEvent({type:"finished",action:this,direction:e>0?1:-1});else{if(1===s){let t=e<0;this._setEndings(t,!t,a)}else this._setEndings(!1,!1,a);this._loopCount=r,this.time=i,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:n})}}else this.time=i;if(a&&(1&r)==1)return t-i}return i}_setEndings(e,t,n){let i=this._interpolantSettings;n?(i.endingStart=2401,i.endingEnd=2401):(e?i.endingStart=this.zeroSlopeAtStart?2401:2400:i.endingStart=2402,t?i.endingEnd=this.zeroSlopeAtEnd?2401:2400:i.endingEnd=2402)}_scheduleFading(e,t,n){let i=this._mixer,r=i.time,a=this._weightInterpolant;null===a&&(a=i._lendControlInterpolant(),this._weightInterpolant=a);let s=a.parameterPositions,o=a.sampleValues;return s[0]=r,o[0]=t,s[1]=r+e,o[1]=n,this}}let sZ=new Float32Array(1);class sJ extends O{constructor(e){super(),this._root=e,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1}_bindAction(e,t){let n=e._localRoot||this._root,i=e._clip.tracks,r=i.length,a=e._propertyBindings,s=e._interpolants,o=n.uuid,l=this._bindingsByRootAndName,u=l[o];void 0===u&&(u={},l[o]=u);for(let e=0;e!==r;++e){let r=i[e],l=r.name,c=u[l];if(void 0!==c)++c.referenceCount,a[e]=c;else{if(void 0!==(c=a[e])){null===c._cacheIndex&&(++c.referenceCount,this._addInactiveBinding(c,o,l));continue}let i=t&&t._propertyBindings[e].binding.parsedPath;c=new sB(sX.create(n,l,i),r.ValueTypeName,r.getValueSize()),++c.referenceCount,this._addInactiveBinding(c,o,l),a[e]=c}s[e].resultBuffer=c.buffer}}_activateAction(e){if(!this._isActiveAction(e)){if(null===e._cacheIndex){let t=(e._localRoot||this._root).uuid,n=e._clip.uuid,i=this._actionsByClip[n];this._bindAction(e,i&&i.knownActions[0]),this._addInactiveAction(e,n,t)}let t=e._propertyBindings;for(let e=0,n=t.length;e!==n;++e){let n=t[e];0==n.useCount++&&(this._lendBinding(n),n.saveOriginalState())}this._lendAction(e)}}_deactivateAction(e){if(this._isActiveAction(e)){let t=e._propertyBindings;for(let e=0,n=t.length;e!==n;++e){let n=t[e];0==--n.useCount&&(n.restoreOriginalState(),this._takeBackBinding(n))}this._takeBackAction(e)}}_initMemoryManager(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;let e=this;this.stats={actions:{get total(){return e._actions.length},get inUse(){return e._nActiveActions}},bindings:{get total(){return e._bindings.length},get inUse(){return e._nActiveBindings}},controlInterpolants:{get total(){return e._controlInterpolants.length},get inUse(){return e._nActiveControlInterpolants}}}}_isActiveAction(e){let t=e._cacheIndex;return null!==t&&t=0;--n)e[n].stop();return this}update(e){e*=this.timeScale;let t=this._actions,n=this._nActiveActions,i=this.time+=e,r=Math.sign(e),a=this._accuIndex^=1;for(let s=0;s!==n;++s)t[s]._update(i,e,r,a);let s=this._bindings,o=this._nActiveBindings;for(let e=0;e!==o;++e)s[e].apply(a);return this}setTime(e){this.time=0;for(let e=0;e=this.min.x&&e.x<=this.max.x&&e.y>=this.min.y&&e.y<=this.max.y}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y))}intersectsBox(e){return e.max.x>=this.min.x&&e.min.x<=this.max.x&&e.max.y>=this.min.y&&e.min.y<=this.max.y}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,s7).distanceTo(e)}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}}let ot=new eE,on=new eE;class oi{constructor(e=new eE,t=new eE){this.start=e,this.end=t}set(e,t){return this.start.copy(e),this.end.copy(t),this}copy(e){return this.start.copy(e.start),this.end.copy(e.end),this}getCenter(e){return e.addVectors(this.start,this.end).multiplyScalar(.5)}delta(e){return e.subVectors(this.end,this.start)}distanceSq(){return this.start.distanceToSquared(this.end)}distance(){return this.start.distanceTo(this.end)}at(e,t){return this.delta(t).multiplyScalar(e).add(this.start)}closestPointToPointParameter(e,t){ot.subVectors(e,this.start),on.subVectors(this.end,this.start);let n=on.dot(on),i=on.dot(ot)/n;return t&&(i=V(i,0,1)),i}closestPointToPoint(e,t,n){let i=this.closestPointToPointParameter(e,t);return this.delta(n).multiplyScalar(i).add(this.start)}applyMatrix4(e){return this.start.applyMatrix4(e),this.end.applyMatrix4(e),this}equals(e){return e.start.equals(this.start)&&e.end.equals(this.end)}clone(){return new this.constructor().copy(this)}}let or=new eE;class oa extends ty{constructor(e,t){super(),this.light=e,this.matrixAutoUpdate=!1,this.color=t,this.type="SpotLightHelper";const n=new nn,i=[0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,-1,0,1,0,0,0,0,1,1,0,0,0,0,-1,1];for(let e=0,t=1;e<32;e++,t++){const n=e/32*Math.PI*2,r=t/32*Math.PI*2;i.push(Math.cos(n),Math.sin(n),1,Math.cos(r),Math.sin(r),1)}n.setAttribute("position",new t4(i,3));const r=new iB({fog:!1,toneMapped:!1});this.cone=new iK(n,r),this.add(this.cone),this.update()}dispose(){this.cone.geometry.dispose(),this.cone.material.dispose()}update(){this.light.updateWorldMatrix(!0,!1),this.light.target.updateWorldMatrix(!0,!1),this.parent?(this.parent.updateWorldMatrix(!0),this.matrix.copy(this.parent.matrixWorld).invert().multiply(this.light.matrixWorld)):this.matrix.copy(this.light.matrixWorld),this.matrixWorld.copy(this.light.matrixWorld);let e=this.light.distance?this.light.distance:1e3,t=e*Math.tan(this.light.angle);this.cone.scale.set(t,t,e),or.setFromMatrixPosition(this.light.target.matrixWorld),this.cone.lookAt(or),void 0!==this.color?this.cone.material.color.set(this.color):this.cone.material.color.copy(this.light.color)}}let os=new eE,oo=new e2,ol=new e2;class ou extends iK{constructor(e){const t=function e(t){let n=[];!0===t.isBone&&n.push(t);for(let i=0;i1)for(let n=0;n.99999)this.quaternion.set(0,0,0,1);else if(e.y<-.99999)this.quaternion.set(1,0,0,0);else{oR.set(e.z,0,-e.x).normalize();let t=Math.acos(e.y);this.quaternion.setFromAxisAngle(oR,t)}}setLength(e,t=.2*e,n=.2*t){this.line.scale.set(1,Math.max(1e-4,e-t),1),this.line.updateMatrix(),this.cone.scale.set(n,t,n),this.cone.position.y=e,this.cone.updateMatrix()}setColor(e){this.line.material.color.set(e),this.cone.material.color.set(e)}copy(e){return super.copy(e,!1),this.line.copy(e.line),this.cone.copy(e.cone),this}dispose(){this.line.geometry.dispose(),this.line.material.dispose(),this.cone.geometry.dispose(),this.cone.material.dispose()}}class oI extends iK{constructor(e=1){const t=new nn;t.setAttribute("position",new t4([0,0,0,e,0,0,0,0,0,0,e,0,0,0,0,0,0,e],3)),t.setAttribute("color",new t4([1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1],3)),super(t,new iB({vertexColors:!0,toneMapped:!1})),this.type="AxesHelper"}setColors(e,t,n){let i=new tz,r=this.geometry.attributes.color.array;return i.set(e),i.toArray(r,0),i.toArray(r,3),i.set(t),i.toArray(r,6),i.toArray(r,9),i.set(n),i.toArray(r,12),i.toArray(r,15),this.geometry.attributes.color.needsUpdate=!0,this}dispose(){this.geometry.dispose(),this.material.dispose()}}class oL{constructor(){this.type="ShapePath",this.color=new tz,this.subPaths=[],this.currentPath=null}moveTo(e,t){return this.currentPath=new rw,this.subPaths.push(this.currentPath),this.currentPath.moveTo(e,t),this}lineTo(e,t){return this.currentPath.lineTo(e,t),this}quadraticCurveTo(e,t,n,i){return this.currentPath.quadraticCurveTo(e,t,n,i),this}bezierCurveTo(e,t,n,i,r,a){return this.currentPath.bezierCurveTo(e,t,n,i,r,a),this}splineThru(e){return this.currentPath.splineThru(e),this}toShapes(e){let t,n,i,r,a,s=r1.isClockWise,o=this.subPaths;if(0===o.length)return[];let l=[];if(1===o.length)return n=o[0],(i=new rz).curves=n.curves,l.push(i),l;let u=!s(o[0].getPoints());u=e?!u:u;let c=[],h=[],d=[],p=0;h[0]=void 0,d[p]=[];for(let i=0,a=o.length;i1){let e=!1,t=0;for(let e=0,t=h.length;eNumber.EPSILON){if(l<0&&(n=t[a],o=-o,s=t[r],l=-l),e.ys.y)continue;if(e.y===n.y){if(e.x===n.x)return!0}else{let t=l*(e.x-n.x)-o*(e.y-n.y);if(0===t)return!0;if(t<0)continue;i=!i}}else{if(e.y!==n.y)continue;if(s.x<=e.x&&e.x<=n.x||n.x<=e.x&&e.x<=s.x)return!0}}return i})(a.p,h[i].p)&&(n!==i&&t++,s?(s=!1,c[i].push(a)):e=!0);s&&c[n].push(a)}}t>0&&!1===e&&(d=c)}for(let e=0,t=h.length;et?(e.repeat.x=1,e.repeat.y=n/t,e.offset.x=0,e.offset.y=(1-e.repeat.y)/2):(e.repeat.x=t/n,e.repeat.y=1,e.offset.x=(1-e.repeat.x)/2,e.offset.y=0),e},cover:function(e,t){let n=e.image&&e.image.width?e.image.width/e.image.height:1;return n>t?(e.repeat.x=t/n,e.repeat.y=1,e.offset.x=(1-e.repeat.x)/2,e.offset.y=0):(e.repeat.x=1,e.repeat.y=n/t,e.offset.x=0,e.offset.y=(1-e.repeat.y)/2),e},fill:function(e){return e.repeat.x=1,e.repeat.y=1,e.offset.x=0,e.offset.y=0,e},getByteLength:oU};class oO extends ex{constructor(e=1,t=1,n=1,i={}){console.warn('THREE.WebGLMultipleRenderTargets has been deprecated and will be removed in r172. Use THREE.WebGLRenderTarget and set the "count" parameter to enable MRT.'),super(e,t,{...i,count:n}),this.isWebGLMultipleRenderTargets=!0}get texture(){return this.textures}}function oF(){let e=null,t=!1,n=null,i=null;function r(t,a){n(t,a),i=e.requestAnimationFrame(r)}return{start:function(){!0===t||null!==n&&(i=e.requestAnimationFrame(r),t=!0)},stop:function(){e.cancelAnimationFrame(i),t=!1},setAnimationLoop:function(e){n=e},setContext:function(t){e=t}}}function oz(e){let t=new WeakMap;return{get:function(e){return e.isInterleavedBufferAttribute&&(e=e.data),t.get(e)},remove:function(n){n.isInterleavedBufferAttribute&&(n=n.data);let i=t.get(n);i&&(e.deleteBuffer(i.buffer),t.delete(n))},update:function(n,i){if(n.isInterleavedBufferAttribute&&(n=n.data),n.isGLBufferAttribute){let e=t.get(n);(!e||e.versione.start-t.start);let t=0;for(let e=1;etypeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:"171"}})),"u">typeof window&&(window.__THREE__?console.warn("WARNING: Multiple instances of Three.js being imported."):window.__THREE__="171"),e.s(["ACESFilmicToneMapping",0,4,"AddEquation",0,100,"AddOperation",0,2,"AdditiveAnimationBlendMode",0,2501,"AdditiveBlending",0,2,"AgXToneMapping",0,6,"AlphaFormat",0,1021,"AlwaysCompare",0,519,"AlwaysDepth",0,1,"AlwaysStencilFunc",0,519,"AmbientLight",0,sa,"AnimationAction",0,sY,"AnimationClip",0,aB,"AnimationLoader",0,aq,"AnimationMixer",0,sJ,"AnimationObjectGroup",0,sq,"AnimationUtils",0,aE,"ArcCurve",0,rs,"ArrayCamera",0,sT,"ArrowHelper",0,oP,"AttachedBindMode",0,R,"Audio",0,sL,"AudioAnalyser",0,sz,"AudioContext",0,s_,"AudioListener",0,sI,"AudioLoader",0,sy,"AxesHelper",0,oI,"BackSide",0,1,"BasicDepthPacking",0,3200,"BasicShadowMap",0,0,"BatchedMesh",0,iz,"Bone",0,ie,"BooleanKeyframeTrack",0,aL,"Box2",0,oe,"Box3",0,eR,"Box3Helper",0,oA,"BoxGeometry",0,ng,"BoxHelper",0,oE,"BufferAttribute",0,tZ,"BufferGeometry",0,nn,"BufferGeometryLoader",0,sd,"ByteType",0,1010,"Cache",0,ak,"Camera",0,nS,"CameraHelper",0,oM,"CanvasTexture",0,rn,"CapsuleGeometry",0,rA,"CatmullRomCurve3",0,rd,"CineonToneMapping",0,3,"CircleGeometry",0,rC,"ClampToEdgeWrapping",0,1001,"Clock",0,sw,"Color",0,tz,"ColorKeyframeTrack",0,aN,"ColorManagement",0,eu,"CompressedArrayTexture",0,re,"CompressedCubeTexture",0,rt,"CompressedTexture",0,i7,"CompressedTextureLoader",0,aY,"ConeGeometry",0,rP,"ConstantAlphaFactor",0,213,"ConstantColorFactor",0,211,"Controls",0,oN,"CubeCamera",0,nA,"CubeReflectionMapping",0,301,"CubeRefractionMapping",0,302,"CubeTexture",0,nC,"CubeTextureLoader",0,aJ,"CubeUVReflectionMapping",0,306,"CubicBezierCurve",0,rg,"CubicBezierCurve3",0,rv,"CubicInterpolant",0,aC,"CullFaceBack",0,1,"CullFaceFront",0,2,"CullFaceFrontBack",0,3,"CullFaceNone",0,0,"Curve",0,rr,"CurvePath",0,rT,"CustomBlending",0,5,"CustomToneMapping",0,5,"CylinderGeometry",0,rR,"Cylindrical",0,s8,"Data3DTexture",0,eM,"DataArrayTexture",0,eb,"DataTexture",0,it,"DataTextureLoader",0,aK,"DataUtils",0,tX,"DecrementStencilOp",0,7683,"DecrementWrapStencilOp",0,34056,"DefaultLoadingManager",0,aV,"DepthFormat",0,1026,"DepthStencilFormat",0,1027,"DepthTexture",0,ri,"DetachedBindMode",0,P,"DirectionalLight",0,sr,"DirectionalLightHelper",0,ox,"DiscreteInterpolant",0,aP,"DodecahedronGeometry",0,rL,"DoubleSide",0,2,"DstAlphaFactor",0,206,"DstColorFactor",0,208,"DynamicCopyUsage",0,35050,"DynamicDrawUsage",0,35048,"DynamicReadUsage",0,35049,"EdgesGeometry",0,rF,"EllipseCurve",0,ra,"EqualCompare",0,514,"EqualDepth",0,4,"EqualStencilFunc",0,514,"EquirectangularReflectionMapping",0,303,"EquirectangularRefractionMapping",0,304,"Euler",0,tn,"EventDispatcher",0,O,"ExtrudeGeometry",0,r4,"FileLoader",0,aX,"Float16BufferAttribute",0,t3,"Float32BufferAttribute",0,t4,"FloatType",0,1015,"Fog",0,nI,"FogExp2",0,nP,"FramebufferTexture",0,i9,"FrontSide",0,0,"Frustum",0,iS,"GLBufferAttribute",0,s1,"GLSL1",0,"100","GLSL3",0,D,"GreaterCompare",0,516,"GreaterDepth",0,6,"GreaterEqualCompare",0,518,"GreaterEqualDepth",0,5,"GreaterEqualStencilFunc",0,518,"GreaterStencilFunc",0,516,"GridHelper",0,om,"Group",0,i6,"HalfFloatType",0,1016,"HemisphereLight",0,a0,"HemisphereLightHelper",0,of,"IcosahedronGeometry",0,r6,"ImageBitmapLoader",0,sv,"ImageLoader",0,aZ,"ImageUtils",0,ed,"IncrementStencilOp",0,7682,"IncrementWrapStencilOp",0,34055,"InstancedBufferAttribute",0,is,"InstancedBufferGeometry",0,sh,"InstancedInterleavedBuffer",0,s0,"InstancedMesh",0,im,"Int16BufferAttribute",0,tQ,"Int32BufferAttribute",0,t1,"Int8BufferAttribute",0,tJ,"IntType",0,1013,"InterleavedBuffer",0,nN,"InterleavedBufferAttribute",0,nD,"Interpolant",0,aA,"InterpolateDiscrete",0,2300,"InterpolateLinear",0,2301,"InterpolateSmooth",0,2302,"InvertStencilOp",0,5386,"KeepStencilOp",0,7680,"KeyframeTrack",0,aI,"LOD",0,nQ,"LatheGeometry",0,rE,"Layers",0,ti,"LessCompare",0,513,"LessDepth",0,2,"LessEqualCompare",0,515,"LessEqualDepth",0,3,"LessEqualStencilFunc",0,515,"LessStencilFunc",0,513,"Light",0,aQ,"LightProbe",0,sl,"Line",0,iq,"Line3",0,oi,"LineBasicMaterial",0,iB,"LineCurve",0,r_,"LineCurve3",0,ry,"LineDashedMaterial",0,ax,"LineLoop",0,i$,"LineSegments",0,iK,"LinearFilter",0,1006,"LinearInterpolant",0,aR,"LinearMipMapLinearFilter",0,1008,"LinearMipMapNearestFilter",0,1007,"LinearMipmapLinearFilter",0,1008,"LinearMipmapNearestFilter",0,1007,"LinearSRGBColorSpace",0,L,"LinearToneMapping",0,1,"LinearTransfer",0,N,"Loader",0,aG,"LoaderUtils",0,sc,"LoadingManager",0,aH,"LoopOnce",0,2200,"LoopPingPong",0,2202,"LoopRepeat",0,2201,"LuminanceAlphaFormat",0,1025,"LuminanceFormat",0,1024,"MOUSE",0,A,"Material",0,tH,"MaterialLoader",0,su,"MathUtils",0,q,"Matrix2",0,s9,"Matrix3",0,Z,"Matrix4",0,e2,"MaxEquation",0,104,"Mesh",0,nf,"MeshBasicMaterial",0,tV,"MeshDepthMaterial",0,av,"MeshDistanceMaterial",0,a_,"MeshLambertMaterial",0,ag,"MeshMatcapMaterial",0,ay,"MeshNormalMaterial",0,am,"MeshPhongMaterial",0,ap,"MeshPhysicalMaterial",0,ad,"MeshStandardMaterial",0,ah,"MeshToonMaterial",0,af,"MinEquation",0,103,"MirroredRepeatWrapping",0,1002,"MixOperation",0,1,"MultiplyBlending",0,4,"MultiplyOperation",0,0,"NearestFilter",0,1003,"NearestMipMapLinearFilter",0,1005,"NearestMipMapNearestFilter",0,1004,"NearestMipmapLinearFilter",0,1005,"NearestMipmapNearestFilter",0,1004,"NeutralToneMapping",0,7,"NeverCompare",0,512,"NeverDepth",0,0,"NeverStencilFunc",0,512,"NoBlending",0,0,"NoColorSpace",0,"","NoToneMapping",0,0,"NormalAnimationBlendMode",0,2500,"NormalBlending",0,1,"NotEqualCompare",0,517,"NotEqualDepth",0,7,"NotEqualStencilFunc",0,517,"NumberKeyframeTrack",0,aU,"Object3D",0,ty,"ObjectLoader",0,sp,"ObjectSpaceNormalMap",0,1,"OctahedronGeometry",0,r8,"OneFactor",0,201,"OneMinusConstantAlphaFactor",0,214,"OneMinusConstantColorFactor",0,212,"OneMinusDstAlphaFactor",0,207,"OneMinusDstColorFactor",0,209,"OneMinusSrcAlphaFactor",0,205,"OneMinusSrcColorFactor",0,203,"OrthographicCamera",0,sn,"PCFShadowMap",0,1,"PCFSoftShadowMap",0,2,"Path",0,rw,"PerspectiveCamera",0,nE,"Plane",0,iy,"PlaneGeometry",0,r9,"PlaneHelper",0,oC,"PointLight",0,st,"PointLightHelper",0,oc,"Points",0,i4,"PointsMaterial",0,iQ,"PolarGridHelper",0,og,"PolyhedronGeometry",0,rI,"PositionalAudio",0,sF,"PropertyBinding",0,sX,"PropertyMixer",0,sB,"QuadraticBezierCurve",0,rx,"QuadraticBezierCurve3",0,rb,"Quaternion",0,ew,"QuaternionKeyframeTrack",0,aO,"QuaternionLinearInterpolant",0,aD,"RAD2DEG",0,k,"RED_GREEN_RGTC2_Format",0,36285,"RED_RGTC1_Format",0,36283,"REVISION",0,"171","RGBADepthPacking",0,3201,"RGBAFormat",0,1023,"RGBAIntegerFormat",0,1033,"RGBA_ASTC_10x10_Format",0,37819,"RGBA_ASTC_10x5_Format",0,37816,"RGBA_ASTC_10x6_Format",0,37817,"RGBA_ASTC_10x8_Format",0,37818,"RGBA_ASTC_12x10_Format",0,37820,"RGBA_ASTC_12x12_Format",0,37821,"RGBA_ASTC_4x4_Format",0,37808,"RGBA_ASTC_5x4_Format",0,37809,"RGBA_ASTC_5x5_Format",0,37810,"RGBA_ASTC_6x5_Format",0,37811,"RGBA_ASTC_6x6_Format",0,37812,"RGBA_ASTC_8x5_Format",0,37813,"RGBA_ASTC_8x6_Format",0,37814,"RGBA_ASTC_8x8_Format",0,37815,"RGBA_BPTC_Format",0,36492,"RGBA_ETC2_EAC_Format",0,37496,"RGBA_PVRTC_2BPPV1_Format",0,35843,"RGBA_PVRTC_4BPPV1_Format",0,35842,"RGBA_S3TC_DXT1_Format",0,33777,"RGBA_S3TC_DXT3_Format",0,33778,"RGBA_S3TC_DXT5_Format",0,33779,"RGBDepthPacking",0,3202,"RGBFormat",0,1022,"RGBIntegerFormat",0,1032,"RGB_BPTC_SIGNED_Format",0,36494,"RGB_BPTC_UNSIGNED_Format",0,36495,"RGB_ETC1_Format",0,36196,"RGB_ETC2_Format",0,37492,"RGB_PVRTC_2BPPV1_Format",0,35841,"RGB_PVRTC_4BPPV1_Format",0,35840,"RGB_S3TC_DXT1_Format",0,33776,"RGDepthPacking",0,3203,"RGFormat",0,1030,"RGIntegerFormat",0,1031,"RawShaderMaterial",0,ac,"Ray",0,e1,"Raycaster",0,s3,"RectAreaLight",0,ss,"RedFormat",0,1028,"RedIntegerFormat",0,1029,"ReinhardToneMapping",0,2,"RenderTarget",0,ey,"RepeatWrapping",0,1e3,"ReplaceStencilOp",0,7681,"ReverseSubtractEquation",0,102,"RingGeometry",0,r7,"SIGNED_RED_GREEN_RGTC2_Format",0,36286,"SIGNED_RED_RGTC1_Format",0,36284,"SRGBColorSpace",0,I,"SRGBTransfer",0,U,"Scene",0,nL,"ShaderMaterial",0,nb,"ShadowMaterial",0,au,"Shape",0,rz,"ShapeGeometry",0,ae,"ShapePath",0,oL,"ShapeUtils",0,r1,"ShortType",0,1011,"Skeleton",0,ia,"SkeletonHelper",0,ou,"SkinnedMesh",0,n7,"Source",0,ef,"Sphere",0,eq,"SphereGeometry",0,at,"Spherical",0,s6,"SphericalHarmonics3",0,so,"SplineCurve",0,rS,"SpotLight",0,a6,"SpotLightHelper",0,oa,"Sprite",0,nZ,"SpriteMaterial",0,nO,"SrcAlphaFactor",0,204,"SrcAlphaSaturateFactor",0,210,"SrcColorFactor",0,202,"StaticCopyUsage",0,35046,"StaticDrawUsage",0,35044,"StaticReadUsage",0,35045,"StereoCamera",0,sM,"StreamCopyUsage",0,35042,"StreamDrawUsage",0,35040,"StreamReadUsage",0,35041,"StringKeyframeTrack",0,aF,"SubtractEquation",0,101,"SubtractiveBlending",0,3,"TOUCH",0,C,"TangentSpaceNormalMap",0,0,"TetrahedronGeometry",0,an,"Texture",0,ev,"TextureLoader",0,a$,"TextureUtils",0,oD,"TorusGeometry",0,ai,"TorusKnotGeometry",0,ar,"Triangle",0,tN,"TriangleFanDrawMode",0,2,"TriangleStripDrawMode",0,1,"TrianglesDrawMode",0,0,"TubeGeometry",0,aa,"UVMapping",0,300,"Uint16BufferAttribute",0,t0,"Uint32BufferAttribute",0,t2,"Uint8BufferAttribute",0,tK,"Uint8ClampedBufferAttribute",0,t$,"Uniform",0,sK,"UniformsGroup",0,sQ,"UniformsUtils",0,nx,"UnsignedByteType",0,1009,"UnsignedInt248Type",0,1020,"UnsignedInt5999Type",0,35902,"UnsignedIntType",0,1014,"UnsignedShort4444Type",0,1017,"UnsignedShort5551Type",0,1018,"UnsignedShortType",0,1012,"VSMShadowMap",0,3,"Vector2",0,Y,"Vector3",0,eE,"Vector4",0,e_,"VectorKeyframeTrack",0,az,"VideoTexture",0,i8,"WebGL3DRenderTarget",0,eT,"WebGLArrayRenderTarget",0,eS,"WebGLCoordinateSystem",0,2e3,"WebGLCubeRenderTarget",0,nR,"WebGLMultipleRenderTargets",0,oO,"WebGLRenderTarget",0,ex,"WebGPUCoordinateSystem",0,2001,"WireframeGeometry",0,as,"WrapAroundEnding",0,2402,"ZeroCurvatureEnding",0,2400,"ZeroFactor",0,200,"ZeroSlopeEnding",0,2401,"ZeroStencilOp",0,0,"arrayNeedsUint32",0,K,"cloneUniforms",0,nv,"createCanvasElement",0,et,"createElementNS",0,ee,"getByteLength",0,oU,"getUnlitUniformColorSpace",0,ny,"mergeUniforms",0,n_,"probeAsync",0,er,"toNormalizedProjectionMatrix",0,ea,"toReversedProjectionMatrix",0,es,"warnOnce",0,ei],90072);let oB={alphahash_fragment:"#ifdef USE_ALPHAHASH\n if ( diffuseColor.a < getAlphaHashThreshold( vPosition ) ) discard;\n#endif",alphahash_pars_fragment:"#ifdef USE_ALPHAHASH\n const float ALPHA_HASH_SCALE = 0.05;\n float hash2D( vec2 value ) {\n return fract( 1.0e4 * sin( 17.0 * value.x + 0.1 * value.y ) * ( 0.1 + abs( sin( 13.0 * value.y + value.x ) ) ) );\n }\n float hash3D( vec3 value ) {\n return hash2D( vec2( hash2D( value.xy ), value.z ) );\n }\n float getAlphaHashThreshold( vec3 position ) {\n float maxDeriv = max(\n length( dFdx( position.xyz ) ),\n length( dFdy( position.xyz ) )\n );\n float pixScale = 1.0 / ( ALPHA_HASH_SCALE * maxDeriv );\n vec2 pixScales = vec2(\n exp2( floor( log2( pixScale ) ) ),\n exp2( ceil( log2( pixScale ) ) )\n );\n vec2 alpha = vec2(\n hash3D( floor( pixScales.x * position.xyz ) ),\n hash3D( floor( pixScales.y * position.xyz ) )\n );\n float lerpFactor = fract( log2( pixScale ) );\n float x = ( 1.0 - lerpFactor ) * alpha.x + lerpFactor * alpha.y;\n float a = min( lerpFactor, 1.0 - lerpFactor );\n vec3 cases = vec3(\n x * x / ( 2.0 * a * ( 1.0 - a ) ),\n ( x - 0.5 * a ) / ( 1.0 - a ),\n 1.0 - ( ( 1.0 - x ) * ( 1.0 - x ) / ( 2.0 * a * ( 1.0 - a ) ) )\n );\n float threshold = ( x < ( 1.0 - a ) )\n ? ( ( x < a ) ? cases.x : cases.y )\n : cases.z;\n return clamp( threshold , 1.0e-6, 1.0 );\n }\n#endif",alphamap_fragment:"#ifdef USE_ALPHAMAP\n diffuseColor.a *= texture2D( alphaMap, vAlphaMapUv ).g;\n#endif",alphamap_pars_fragment:"#ifdef USE_ALPHAMAP\n uniform sampler2D alphaMap;\n#endif",alphatest_fragment:"#ifdef USE_ALPHATEST\n #ifdef ALPHA_TO_COVERAGE\n diffuseColor.a = smoothstep( alphaTest, alphaTest + fwidth( diffuseColor.a ), diffuseColor.a );\n if ( diffuseColor.a == 0.0 ) discard;\n #else\n if ( diffuseColor.a < alphaTest ) discard;\n #endif\n#endif",alphatest_pars_fragment:"#ifdef USE_ALPHATEST\n uniform float alphaTest;\n#endif",aomap_fragment:"#ifdef USE_AOMAP\n float ambientOcclusion = ( texture2D( aoMap, vAoMapUv ).r - 1.0 ) * aoMapIntensity + 1.0;\n reflectedLight.indirectDiffuse *= ambientOcclusion;\n #if defined( USE_CLEARCOAT ) \n clearcoatSpecularIndirect *= ambientOcclusion;\n #endif\n #if defined( USE_SHEEN ) \n sheenSpecularIndirect *= ambientOcclusion;\n #endif\n #if defined( USE_ENVMAP ) && defined( STANDARD )\n float dotNV = saturate( dot( geometryNormal, geometryViewDir ) );\n reflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness );\n #endif\n#endif",aomap_pars_fragment:"#ifdef USE_AOMAP\n uniform sampler2D aoMap;\n uniform float aoMapIntensity;\n#endif",batching_pars_vertex:"#ifdef USE_BATCHING\n #if ! defined( GL_ANGLE_multi_draw )\n #define gl_DrawID _gl_DrawID\n uniform int _gl_DrawID;\n #endif\n uniform highp sampler2D batchingTexture;\n uniform highp usampler2D batchingIdTexture;\n mat4 getBatchingMatrix( const in float i ) {\n int size = textureSize( batchingTexture, 0 ).x;\n int j = int( i ) * 4;\n int x = j % size;\n int y = j / size;\n vec4 v1 = texelFetch( batchingTexture, ivec2( x, y ), 0 );\n vec4 v2 = texelFetch( batchingTexture, ivec2( x + 1, y ), 0 );\n vec4 v3 = texelFetch( batchingTexture, ivec2( x + 2, y ), 0 );\n vec4 v4 = texelFetch( batchingTexture, ivec2( x + 3, y ), 0 );\n return mat4( v1, v2, v3, v4 );\n }\n float getIndirectIndex( const in int i ) {\n int size = textureSize( batchingIdTexture, 0 ).x;\n int x = i % size;\n int y = i / size;\n return float( texelFetch( batchingIdTexture, ivec2( x, y ), 0 ).r );\n }\n#endif\n#ifdef USE_BATCHING_COLOR\n uniform sampler2D batchingColorTexture;\n vec3 getBatchingColor( const in float i ) {\n int size = textureSize( batchingColorTexture, 0 ).x;\n int j = int( i );\n int x = j % size;\n int y = j / size;\n return texelFetch( batchingColorTexture, ivec2( x, y ), 0 ).rgb;\n }\n#endif",batching_vertex:"#ifdef USE_BATCHING\n mat4 batchingMatrix = getBatchingMatrix( getIndirectIndex( gl_DrawID ) );\n#endif",begin_vertex:"vec3 transformed = vec3( position );\n#ifdef USE_ALPHAHASH\n vPosition = vec3( position );\n#endif",beginnormal_vertex:"vec3 objectNormal = vec3( normal );\n#ifdef USE_TANGENT\n vec3 objectTangent = vec3( tangent.xyz );\n#endif",bsdfs:"float G_BlinnPhong_Implicit( ) {\n return 0.25;\n}\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\n return RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\n}\nvec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) {\n vec3 halfDir = normalize( lightDir + viewDir );\n float dotNH = saturate( dot( normal, halfDir ) );\n float dotVH = saturate( dot( viewDir, halfDir ) );\n vec3 F = F_Schlick( specularColor, 1.0, dotVH );\n float G = G_BlinnPhong_Implicit( );\n float D = D_BlinnPhong( shininess, dotNH );\n return F * ( G * D );\n} // validated",iridescence_fragment:"#ifdef USE_IRIDESCENCE\n const mat3 XYZ_TO_REC709 = mat3(\n 3.2404542, -0.9692660, 0.0556434,\n -1.5371385, 1.8760108, -0.2040259,\n -0.4985314, 0.0415560, 1.0572252\n );\n vec3 Fresnel0ToIor( vec3 fresnel0 ) {\n vec3 sqrtF0 = sqrt( fresnel0 );\n return ( vec3( 1.0 ) + sqrtF0 ) / ( vec3( 1.0 ) - sqrtF0 );\n }\n vec3 IorToFresnel0( vec3 transmittedIor, float incidentIor ) {\n return pow2( ( transmittedIor - vec3( incidentIor ) ) / ( transmittedIor + vec3( incidentIor ) ) );\n }\n float IorToFresnel0( float transmittedIor, float incidentIor ) {\n return pow2( ( transmittedIor - incidentIor ) / ( transmittedIor + incidentIor ));\n }\n vec3 evalSensitivity( float OPD, vec3 shift ) {\n float phase = 2.0 * PI * OPD * 1.0e-9;\n vec3 val = vec3( 5.4856e-13, 4.4201e-13, 5.2481e-13 );\n vec3 pos = vec3( 1.6810e+06, 1.7953e+06, 2.2084e+06 );\n vec3 var = vec3( 4.3278e+09, 9.3046e+09, 6.6121e+09 );\n vec3 xyz = val * sqrt( 2.0 * PI * var ) * cos( pos * phase + shift ) * exp( - pow2( phase ) * var );\n xyz.x += 9.7470e-14 * sqrt( 2.0 * PI * 4.5282e+09 ) * cos( 2.2399e+06 * phase + shift[ 0 ] ) * exp( - 4.5282e+09 * pow2( phase ) );\n xyz /= 1.0685e-7;\n vec3 rgb = XYZ_TO_REC709 * xyz;\n return rgb;\n }\n vec3 evalIridescence( float outsideIOR, float eta2, float cosTheta1, float thinFilmThickness, vec3 baseF0 ) {\n vec3 I;\n float iridescenceIOR = mix( outsideIOR, eta2, smoothstep( 0.0, 0.03, thinFilmThickness ) );\n float sinTheta2Sq = pow2( outsideIOR / iridescenceIOR ) * ( 1.0 - pow2( cosTheta1 ) );\n float cosTheta2Sq = 1.0 - sinTheta2Sq;\n if ( cosTheta2Sq < 0.0 ) {\n return vec3( 1.0 );\n }\n float cosTheta2 = sqrt( cosTheta2Sq );\n float R0 = IorToFresnel0( iridescenceIOR, outsideIOR );\n float R12 = F_Schlick( R0, 1.0, cosTheta1 );\n float T121 = 1.0 - R12;\n float phi12 = 0.0;\n if ( iridescenceIOR < outsideIOR ) phi12 = PI;\n float phi21 = PI - phi12;\n vec3 baseIOR = Fresnel0ToIor( clamp( baseF0, 0.0, 0.9999 ) ); vec3 R1 = IorToFresnel0( baseIOR, iridescenceIOR );\n vec3 R23 = F_Schlick( R1, 1.0, cosTheta2 );\n vec3 phi23 = vec3( 0.0 );\n if ( baseIOR[ 0 ] < iridescenceIOR ) phi23[ 0 ] = PI;\n if ( baseIOR[ 1 ] < iridescenceIOR ) phi23[ 1 ] = PI;\n if ( baseIOR[ 2 ] < iridescenceIOR ) phi23[ 2 ] = PI;\n float OPD = 2.0 * iridescenceIOR * thinFilmThickness * cosTheta2;\n vec3 phi = vec3( phi21 ) + phi23;\n vec3 R123 = clamp( R12 * R23, 1e-5, 0.9999 );\n vec3 r123 = sqrt( R123 );\n vec3 Rs = pow2( T121 ) * R23 / ( vec3( 1.0 ) - R123 );\n vec3 C0 = R12 + Rs;\n I = C0;\n vec3 Cm = Rs - T121;\n for ( int m = 1; m <= 2; ++ m ) {\n Cm *= r123;\n vec3 Sm = 2.0 * evalSensitivity( float( m ) * OPD, float( m ) * phi );\n I += Cm * Sm;\n }\n return max( I, vec3( 0.0 ) );\n }\n#endif",bumpmap_pars_fragment:"#ifdef USE_BUMPMAP\n uniform sampler2D bumpMap;\n uniform float bumpScale;\n vec2 dHdxy_fwd() {\n vec2 dSTdx = dFdx( vBumpMapUv );\n vec2 dSTdy = dFdy( vBumpMapUv );\n float Hll = bumpScale * texture2D( bumpMap, vBumpMapUv ).x;\n float dBx = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdx ).x - Hll;\n float dBy = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdy ).x - Hll;\n return vec2( dBx, dBy );\n }\n vec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {\n vec3 vSigmaX = normalize( dFdx( surf_pos.xyz ) );\n vec3 vSigmaY = normalize( dFdy( surf_pos.xyz ) );\n vec3 vN = surf_norm;\n vec3 R1 = cross( vSigmaY, vN );\n vec3 R2 = cross( vN, vSigmaX );\n float fDet = dot( vSigmaX, R1 ) * faceDirection;\n vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\n return normalize( abs( fDet ) * surf_norm - vGrad );\n }\n#endif",clipping_planes_fragment:"#if NUM_CLIPPING_PLANES > 0\n vec4 plane;\n #ifdef ALPHA_TO_COVERAGE\n float distanceToPlane, distanceGradient;\n float clipOpacity = 1.0;\n #pragma unroll_loop_start\n for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n plane = clippingPlanes[ i ];\n distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w;\n distanceGradient = fwidth( distanceToPlane ) / 2.0;\n clipOpacity *= smoothstep( - distanceGradient, distanceGradient, distanceToPlane );\n if ( clipOpacity == 0.0 ) discard;\n }\n #pragma unroll_loop_end\n #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n float unionClipOpacity = 1.0;\n #pragma unroll_loop_start\n for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n plane = clippingPlanes[ i ];\n distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w;\n distanceGradient = fwidth( distanceToPlane ) / 2.0;\n unionClipOpacity *= 1.0 - smoothstep( - distanceGradient, distanceGradient, distanceToPlane );\n }\n #pragma unroll_loop_end\n clipOpacity *= 1.0 - unionClipOpacity;\n #endif\n diffuseColor.a *= clipOpacity;\n if ( diffuseColor.a == 0.0 ) discard;\n #else\n #pragma unroll_loop_start\n for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n plane = clippingPlanes[ i ];\n if ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\n }\n #pragma unroll_loop_end\n #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n bool clipped = true;\n #pragma unroll_loop_start\n for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n plane = clippingPlanes[ i ];\n clipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\n }\n #pragma unroll_loop_end\n if ( clipped ) discard;\n #endif\n #endif\n#endif",clipping_planes_pars_fragment:"#if NUM_CLIPPING_PLANES > 0\n varying vec3 vClipPosition;\n uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\n#endif",clipping_planes_pars_vertex:"#if NUM_CLIPPING_PLANES > 0\n varying vec3 vClipPosition;\n#endif",clipping_planes_vertex:"#if NUM_CLIPPING_PLANES > 0\n vClipPosition = - mvPosition.xyz;\n#endif",color_fragment:"#if defined( USE_COLOR_ALPHA )\n diffuseColor *= vColor;\n#elif defined( USE_COLOR )\n diffuseColor.rgb *= vColor;\n#endif",color_pars_fragment:"#if defined( USE_COLOR_ALPHA )\n varying vec4 vColor;\n#elif defined( USE_COLOR )\n varying vec3 vColor;\n#endif",color_pars_vertex:"#if defined( USE_COLOR_ALPHA )\n varying vec4 vColor;\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR )\n varying vec3 vColor;\n#endif",color_vertex:"#if defined( USE_COLOR_ALPHA )\n vColor = vec4( 1.0 );\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR )\n vColor = vec3( 1.0 );\n#endif\n#ifdef USE_COLOR\n vColor *= color;\n#endif\n#ifdef USE_INSTANCING_COLOR\n vColor.xyz *= instanceColor.xyz;\n#endif\n#ifdef USE_BATCHING_COLOR\n vec3 batchingColor = getBatchingColor( getIndirectIndex( gl_DrawID ) );\n vColor.xyz *= batchingColor.xyz;\n#endif",common:"#define PI 3.141592653589793\n#define PI2 6.283185307179586\n#define PI_HALF 1.5707963267948966\n#define RECIPROCAL_PI 0.3183098861837907\n#define RECIPROCAL_PI2 0.15915494309189535\n#define EPSILON 1e-6\n#ifndef saturate\n#define saturate( a ) clamp( a, 0.0, 1.0 )\n#endif\n#define whiteComplement( a ) ( 1.0 - saturate( a ) )\nfloat pow2( const in float x ) { return x*x; }\nvec3 pow2( const in vec3 x ) { return x*x; }\nfloat pow3( const in float x ) { return x*x*x; }\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\nfloat max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }\nfloat average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); }\nhighp float rand( const in vec2 uv ) {\n const highp float a = 12.9898, b = 78.233, c = 43758.5453;\n highp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\n return fract( sin( sn ) * c );\n}\n#ifdef HIGH_PRECISION\n float precisionSafeLength( vec3 v ) { return length( v ); }\n#else\n float precisionSafeLength( vec3 v ) {\n float maxComponent = max3( abs( v ) );\n return length( v / maxComponent ) * maxComponent;\n }\n#endif\nstruct IncidentLight {\n vec3 color;\n vec3 direction;\n bool visible;\n};\nstruct ReflectedLight {\n vec3 directDiffuse;\n vec3 directSpecular;\n vec3 indirectDiffuse;\n vec3 indirectSpecular;\n};\n#ifdef USE_ALPHAHASH\n varying vec3 vPosition;\n#endif\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n}\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\n return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\n}\nmat3 transposeMat3( const in mat3 m ) {\n mat3 tmp;\n tmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\n tmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\n tmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\n return tmp;\n}\nbool isPerspectiveMatrix( mat4 m ) {\n return m[ 2 ][ 3 ] == - 1.0;\n}\nvec2 equirectUv( in vec3 dir ) {\n float u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\n float v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n return vec2( u, v );\n}\nvec3 BRDF_Lambert( const in vec3 diffuseColor ) {\n return RECIPROCAL_PI * diffuseColor;\n}\nvec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {\n float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\n return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\n}\nfloat F_Schlick( const in float f0, const in float f90, const in float dotVH ) {\n float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\n return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\n} // validated",cube_uv_reflection_fragment:"#ifdef ENVMAP_TYPE_CUBE_UV\n #define cubeUV_minMipLevel 4.0\n #define cubeUV_minTileSize 16.0\n float getFace( vec3 direction ) {\n vec3 absDirection = abs( direction );\n float face = - 1.0;\n if ( absDirection.x > absDirection.z ) {\n if ( absDirection.x > absDirection.y )\n face = direction.x > 0.0 ? 0.0 : 3.0;\n else\n face = direction.y > 0.0 ? 1.0 : 4.0;\n } else {\n if ( absDirection.z > absDirection.y )\n face = direction.z > 0.0 ? 2.0 : 5.0;\n else\n face = direction.y > 0.0 ? 1.0 : 4.0;\n }\n return face;\n }\n vec2 getUV( vec3 direction, float face ) {\n vec2 uv;\n if ( face == 0.0 ) {\n uv = vec2( direction.z, direction.y ) / abs( direction.x );\n } else if ( face == 1.0 ) {\n uv = vec2( - direction.x, - direction.z ) / abs( direction.y );\n } else if ( face == 2.0 ) {\n uv = vec2( - direction.x, direction.y ) / abs( direction.z );\n } else if ( face == 3.0 ) {\n uv = vec2( - direction.z, direction.y ) / abs( direction.x );\n } else if ( face == 4.0 ) {\n uv = vec2( - direction.x, direction.z ) / abs( direction.y );\n } else {\n uv = vec2( direction.x, direction.y ) / abs( direction.z );\n }\n return 0.5 * ( uv + 1.0 );\n }\n vec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\n float face = getFace( direction );\n float filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\n mipInt = max( mipInt, cubeUV_minMipLevel );\n float faceSize = exp2( mipInt );\n highp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0;\n if ( face > 2.0 ) {\n uv.y += faceSize;\n face -= 3.0;\n }\n uv.x += face * faceSize;\n uv.x += filterInt * 3.0 * cubeUV_minTileSize;\n uv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize );\n uv.x *= CUBEUV_TEXEL_WIDTH;\n uv.y *= CUBEUV_TEXEL_HEIGHT;\n #ifdef texture2DGradEXT\n return texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb;\n #else\n return texture2D( envMap, uv ).rgb;\n #endif\n }\n #define cubeUV_r0 1.0\n #define cubeUV_m0 - 2.0\n #define cubeUV_r1 0.8\n #define cubeUV_m1 - 1.0\n #define cubeUV_r4 0.4\n #define cubeUV_m4 2.0\n #define cubeUV_r5 0.305\n #define cubeUV_m5 3.0\n #define cubeUV_r6 0.21\n #define cubeUV_m6 4.0\n float roughnessToMip( float roughness ) {\n float mip = 0.0;\n if ( roughness >= cubeUV_r1 ) {\n mip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0;\n } else if ( roughness >= cubeUV_r4 ) {\n mip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1;\n } else if ( roughness >= cubeUV_r5 ) {\n mip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4;\n } else if ( roughness >= cubeUV_r6 ) {\n mip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5;\n } else {\n mip = - 2.0 * log2( 1.16 * roughness ); }\n return mip;\n }\n vec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\n float mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP );\n float mipF = fract( mip );\n float mipInt = floor( mip );\n vec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\n if ( mipF == 0.0 ) {\n return vec4( color0, 1.0 );\n } else {\n vec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\n return vec4( mix( color0, color1, mipF ), 1.0 );\n }\n }\n#endif",defaultnormal_vertex:"vec3 transformedNormal = objectNormal;\n#ifdef USE_TANGENT\n vec3 transformedTangent = objectTangent;\n#endif\n#ifdef USE_BATCHING\n mat3 bm = mat3( batchingMatrix );\n transformedNormal /= vec3( dot( bm[ 0 ], bm[ 0 ] ), dot( bm[ 1 ], bm[ 1 ] ), dot( bm[ 2 ], bm[ 2 ] ) );\n transformedNormal = bm * transformedNormal;\n #ifdef USE_TANGENT\n transformedTangent = bm * transformedTangent;\n #endif\n#endif\n#ifdef USE_INSTANCING\n mat3 im = mat3( instanceMatrix );\n transformedNormal /= vec3( dot( im[ 0 ], im[ 0 ] ), dot( im[ 1 ], im[ 1 ] ), dot( im[ 2 ], im[ 2 ] ) );\n transformedNormal = im * transformedNormal;\n #ifdef USE_TANGENT\n transformedTangent = im * transformedTangent;\n #endif\n#endif\ntransformedNormal = normalMatrix * transformedNormal;\n#ifdef FLIP_SIDED\n transformedNormal = - transformedNormal;\n#endif\n#ifdef USE_TANGENT\n transformedTangent = ( modelViewMatrix * vec4( transformedTangent, 0.0 ) ).xyz;\n #ifdef FLIP_SIDED\n transformedTangent = - transformedTangent;\n #endif\n#endif",displacementmap_pars_vertex:"#ifdef USE_DISPLACEMENTMAP\n uniform sampler2D displacementMap;\n uniform float displacementScale;\n uniform float displacementBias;\n#endif",displacementmap_vertex:"#ifdef USE_DISPLACEMENTMAP\n transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias );\n#endif",emissivemap_fragment:"#ifdef USE_EMISSIVEMAP\n vec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv );\n #ifdef DECODE_VIDEO_TEXTURE_EMISSIVE\n emissiveColor = sRGBTransferEOTF( emissiveColor );\n #endif\n totalEmissiveRadiance *= emissiveColor.rgb;\n#endif",emissivemap_pars_fragment:"#ifdef USE_EMISSIVEMAP\n uniform sampler2D emissiveMap;\n#endif",colorspace_fragment:"gl_FragColor = linearToOutputTexel( gl_FragColor );",colorspace_pars_fragment:"vec4 LinearTransferOETF( in vec4 value ) {\n return value;\n}\nvec4 sRGBTransferEOTF( in vec4 value ) {\n return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a );\n}\nvec4 sRGBTransferOETF( in vec4 value ) {\n return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\n}",envmap_fragment:"#ifdef USE_ENVMAP\n #ifdef ENV_WORLDPOS\n vec3 cameraToFrag;\n if ( isOrthographic ) {\n cameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n } else {\n cameraToFrag = normalize( vWorldPosition - cameraPosition );\n }\n vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n #ifdef ENVMAP_MODE_REFLECTION\n vec3 reflectVec = reflect( cameraToFrag, worldNormal );\n #else\n vec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\n #endif\n #else\n vec3 reflectVec = vReflect;\n #endif\n #ifdef ENVMAP_TYPE_CUBE\n vec4 envColor = textureCube( envMap, envMapRotation * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n #else\n vec4 envColor = vec4( 0.0 );\n #endif\n #ifdef ENVMAP_BLENDING_MULTIPLY\n outgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\n #elif defined( ENVMAP_BLENDING_MIX )\n outgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\n #elif defined( ENVMAP_BLENDING_ADD )\n outgoingLight += envColor.xyz * specularStrength * reflectivity;\n #endif\n#endif",envmap_common_pars_fragment:"#ifdef USE_ENVMAP\n uniform float envMapIntensity;\n uniform float flipEnvMap;\n uniform mat3 envMapRotation;\n #ifdef ENVMAP_TYPE_CUBE\n uniform samplerCube envMap;\n #else\n uniform sampler2D envMap;\n #endif\n \n#endif",envmap_pars_fragment:"#ifdef USE_ENVMAP\n uniform float reflectivity;\n #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\n #define ENV_WORLDPOS\n #endif\n #ifdef ENV_WORLDPOS\n varying vec3 vWorldPosition;\n uniform float refractionRatio;\n #else\n varying vec3 vReflect;\n #endif\n#endif",envmap_pars_vertex:"#ifdef USE_ENVMAP\n #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\n #define ENV_WORLDPOS\n #endif\n #ifdef ENV_WORLDPOS\n \n varying vec3 vWorldPosition;\n #else\n varying vec3 vReflect;\n uniform float refractionRatio;\n #endif\n#endif",envmap_physical_pars_fragment:"#ifdef USE_ENVMAP\n vec3 getIBLIrradiance( const in vec3 normal ) {\n #ifdef ENVMAP_TYPE_CUBE_UV\n vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n vec4 envMapColor = textureCubeUV( envMap, envMapRotation * worldNormal, 1.0 );\n return PI * envMapColor.rgb * envMapIntensity;\n #else\n return vec3( 0.0 );\n #endif\n }\n vec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {\n #ifdef ENVMAP_TYPE_CUBE_UV\n vec3 reflectVec = reflect( - viewDir, normal );\n reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\n reflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n vec4 envMapColor = textureCubeUV( envMap, envMapRotation * reflectVec, roughness );\n return envMapColor.rgb * envMapIntensity;\n #else\n return vec3( 0.0 );\n #endif\n }\n #ifdef USE_ANISOTROPY\n vec3 getIBLAnisotropyRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in vec3 bitangent, const in float anisotropy ) {\n #ifdef ENVMAP_TYPE_CUBE_UV\n vec3 bentNormal = cross( bitangent, viewDir );\n bentNormal = normalize( cross( bentNormal, bitangent ) );\n bentNormal = normalize( mix( bentNormal, normal, pow2( pow2( 1.0 - anisotropy * ( 1.0 - roughness ) ) ) ) );\n return getIBLRadiance( viewDir, bentNormal, roughness );\n #else\n return vec3( 0.0 );\n #endif\n }\n #endif\n#endif",envmap_vertex:"#ifdef USE_ENVMAP\n #ifdef ENV_WORLDPOS\n vWorldPosition = worldPosition.xyz;\n #else\n vec3 cameraToVertex;\n if ( isOrthographic ) {\n cameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n } else {\n cameraToVertex = normalize( worldPosition.xyz - cameraPosition );\n }\n vec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n #ifdef ENVMAP_MODE_REFLECTION\n vReflect = reflect( cameraToVertex, worldNormal );\n #else\n vReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n #endif\n #endif\n#endif",fog_vertex:"#ifdef USE_FOG\n vFogDepth = - mvPosition.z;\n#endif",fog_pars_vertex:"#ifdef USE_FOG\n varying float vFogDepth;\n#endif",fog_fragment:"#ifdef USE_FOG\n #ifdef FOG_EXP2\n float fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );\n #else\n float fogFactor = smoothstep( fogNear, fogFar, vFogDepth );\n #endif\n gl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\n#endif",fog_pars_fragment:"#ifdef USE_FOG\n uniform vec3 fogColor;\n varying float vFogDepth;\n #ifdef FOG_EXP2\n uniform float fogDensity;\n #else\n uniform float fogNear;\n uniform float fogFar;\n #endif\n#endif",gradientmap_pars_fragment:"#ifdef USE_GRADIENTMAP\n uniform sampler2D gradientMap;\n#endif\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\n float dotNL = dot( normal, lightDirection );\n vec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\n #ifdef USE_GRADIENTMAP\n return vec3( texture2D( gradientMap, coord ).r );\n #else\n vec2 fw = fwidth( coord ) * 0.5;\n return mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) );\n #endif\n}",lightmap_pars_fragment:"#ifdef USE_LIGHTMAP\n uniform sampler2D lightMap;\n uniform float lightMapIntensity;\n#endif",lights_lambert_fragment:"LambertMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularStrength = specularStrength;",lights_lambert_pars_fragment:"varying vec3 vViewPosition;\nstruct LambertMaterial {\n vec3 diffuseColor;\n float specularStrength;\n};\nvoid RE_Direct_Lambert( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\n float dotNL = saturate( dot( geometryNormal, directLight.direction ) );\n vec3 irradiance = dotNL * directLight.color;\n reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\n reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct RE_Direct_Lambert\n#define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert",lights_pars_begin:"uniform bool receiveShadow;\nuniform vec3 ambientLightColor;\n#if defined( USE_LIGHT_PROBES )\n uniform vec3 lightProbe[ 9 ];\n#endif\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\n float x = normal.x, y = normal.y, z = normal.z;\n vec3 result = shCoefficients[ 0 ] * 0.886227;\n result += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\n result += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\n result += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\n result += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\n result += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\n result += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\n result += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\n result += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\n return result;\n}\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) {\n vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n vec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\n return irradiance;\n}\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\n vec3 irradiance = ambientLightColor;\n return irradiance;\n}\nfloat getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\n float distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\n if ( cutoffDistance > 0.0 ) {\n distanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\n }\n return distanceFalloff;\n}\nfloat getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {\n return smoothstep( coneCosine, penumbraCosine, angleCosine );\n}\n#if NUM_DIR_LIGHTS > 0\n struct DirectionalLight {\n vec3 direction;\n vec3 color;\n };\n uniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\n void getDirectionalLightInfo( const in DirectionalLight directionalLight, out IncidentLight light ) {\n light.color = directionalLight.color;\n light.direction = directionalLight.direction;\n light.visible = true;\n }\n#endif\n#if NUM_POINT_LIGHTS > 0\n struct PointLight {\n vec3 position;\n vec3 color;\n float distance;\n float decay;\n };\n uniform PointLight pointLights[ NUM_POINT_LIGHTS ];\n void getPointLightInfo( const in PointLight pointLight, const in vec3 geometryPosition, out IncidentLight light ) {\n vec3 lVector = pointLight.position - geometryPosition;\n light.direction = normalize( lVector );\n float lightDistance = length( lVector );\n light.color = pointLight.color;\n light.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );\n light.visible = ( light.color != vec3( 0.0 ) );\n }\n#endif\n#if NUM_SPOT_LIGHTS > 0\n struct SpotLight {\n vec3 position;\n vec3 direction;\n vec3 color;\n float distance;\n float decay;\n float coneCos;\n float penumbraCos;\n };\n uniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\n void getSpotLightInfo( const in SpotLight spotLight, const in vec3 geometryPosition, out IncidentLight light ) {\n vec3 lVector = spotLight.position - geometryPosition;\n light.direction = normalize( lVector );\n float angleCos = dot( light.direction, spotLight.direction );\n float spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );\n if ( spotAttenuation > 0.0 ) {\n float lightDistance = length( lVector );\n light.color = spotLight.color * spotAttenuation;\n light.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );\n light.visible = ( light.color != vec3( 0.0 ) );\n } else {\n light.color = vec3( 0.0 );\n light.visible = false;\n }\n }\n#endif\n#if NUM_RECT_AREA_LIGHTS > 0\n struct RectAreaLight {\n vec3 color;\n vec3 position;\n vec3 halfWidth;\n vec3 halfHeight;\n };\n uniform sampler2D ltc_1; uniform sampler2D ltc_2;\n uniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\n#endif\n#if NUM_HEMI_LIGHTS > 0\n struct HemisphereLight {\n vec3 direction;\n vec3 skyColor;\n vec3 groundColor;\n };\n uniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\n vec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) {\n float dotNL = dot( normal, hemiLight.direction );\n float hemiDiffuseWeight = 0.5 * dotNL + 0.5;\n vec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\n return irradiance;\n }\n#endif",lights_toon_fragment:"ToonMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;",lights_toon_pars_fragment:"varying vec3 vViewPosition;\nstruct ToonMaterial {\n vec3 diffuseColor;\n};\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n vec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color;\n reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct RE_Direct_Toon\n#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon",lights_phong_fragment:"BlinnPhongMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularColor = specular;\nmaterial.specularShininess = shininess;\nmaterial.specularStrength = specularStrength;",lights_phong_pars_fragment:"varying vec3 vViewPosition;\nstruct BlinnPhongMaterial {\n vec3 diffuseColor;\n vec3 specularColor;\n float specularShininess;\n float specularStrength;\n};\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n float dotNL = saturate( dot( geometryNormal, directLight.direction ) );\n vec3 irradiance = dotNL * directLight.color;\n reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength;\n}\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct RE_Direct_BlinnPhong\n#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong",lights_physical_fragment:"PhysicalMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\nvec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) );\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\nmaterial.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;\nmaterial.roughness = min( material.roughness, 1.0 );\n#ifdef IOR\n material.ior = ior;\n #ifdef USE_SPECULAR\n float specularIntensityFactor = specularIntensity;\n vec3 specularColorFactor = specularColor;\n #ifdef USE_SPECULAR_COLORMAP\n specularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb;\n #endif\n #ifdef USE_SPECULAR_INTENSITYMAP\n specularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a;\n #endif\n material.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );\n #else\n float specularIntensityFactor = 1.0;\n vec3 specularColorFactor = vec3( 1.0 );\n material.specularF90 = 1.0;\n #endif\n material.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );\n#else\n material.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\n material.specularF90 = 1.0;\n#endif\n#ifdef USE_CLEARCOAT\n material.clearcoat = clearcoat;\n material.clearcoatRoughness = clearcoatRoughness;\n material.clearcoatF0 = vec3( 0.04 );\n material.clearcoatF90 = 1.0;\n #ifdef USE_CLEARCOATMAP\n material.clearcoat *= texture2D( clearcoatMap, vClearcoatMapUv ).x;\n #endif\n #ifdef USE_CLEARCOAT_ROUGHNESSMAP\n material.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).y;\n #endif\n material.clearcoat = saturate( material.clearcoat ); material.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\n material.clearcoatRoughness += geometryRoughness;\n material.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\n#endif\n#ifdef USE_DISPERSION\n material.dispersion = dispersion;\n#endif\n#ifdef USE_IRIDESCENCE\n material.iridescence = iridescence;\n material.iridescenceIOR = iridescenceIOR;\n #ifdef USE_IRIDESCENCEMAP\n material.iridescence *= texture2D( iridescenceMap, vIridescenceMapUv ).r;\n #endif\n #ifdef USE_IRIDESCENCE_THICKNESSMAP\n material.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).g + iridescenceThicknessMinimum;\n #else\n material.iridescenceThickness = iridescenceThicknessMaximum;\n #endif\n#endif\n#ifdef USE_SHEEN\n material.sheenColor = sheenColor;\n #ifdef USE_SHEEN_COLORMAP\n material.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb;\n #endif\n material.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );\n #ifdef USE_SHEEN_ROUGHNESSMAP\n material.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a;\n #endif\n#endif\n#ifdef USE_ANISOTROPY\n #ifdef USE_ANISOTROPYMAP\n mat2 anisotropyMat = mat2( anisotropyVector.x, anisotropyVector.y, - anisotropyVector.y, anisotropyVector.x );\n vec3 anisotropyPolar = texture2D( anisotropyMap, vAnisotropyMapUv ).rgb;\n vec2 anisotropyV = anisotropyMat * normalize( 2.0 * anisotropyPolar.rg - vec2( 1.0 ) ) * anisotropyPolar.b;\n #else\n vec2 anisotropyV = anisotropyVector;\n #endif\n material.anisotropy = length( anisotropyV );\n if( material.anisotropy == 0.0 ) {\n anisotropyV = vec2( 1.0, 0.0 );\n } else {\n anisotropyV /= material.anisotropy;\n material.anisotropy = saturate( material.anisotropy );\n }\n material.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) );\n material.anisotropyT = tbn[ 0 ] * anisotropyV.x + tbn[ 1 ] * anisotropyV.y;\n material.anisotropyB = tbn[ 1 ] * anisotropyV.x - tbn[ 0 ] * anisotropyV.y;\n#endif",lights_physical_pars_fragment:"struct PhysicalMaterial {\n vec3 diffuseColor;\n float roughness;\n vec3 specularColor;\n float specularF90;\n float dispersion;\n #ifdef USE_CLEARCOAT\n float clearcoat;\n float clearcoatRoughness;\n vec3 clearcoatF0;\n float clearcoatF90;\n #endif\n #ifdef USE_IRIDESCENCE\n float iridescence;\n float iridescenceIOR;\n float iridescenceThickness;\n vec3 iridescenceFresnel;\n vec3 iridescenceF0;\n #endif\n #ifdef USE_SHEEN\n vec3 sheenColor;\n float sheenRoughness;\n #endif\n #ifdef IOR\n float ior;\n #endif\n #ifdef USE_TRANSMISSION\n float transmission;\n float transmissionAlpha;\n float thickness;\n float attenuationDistance;\n vec3 attenuationColor;\n #endif\n #ifdef USE_ANISOTROPY\n float anisotropy;\n float alphaT;\n vec3 anisotropyT;\n vec3 anisotropyB;\n #endif\n};\nvec3 clearcoatSpecularDirect = vec3( 0.0 );\nvec3 clearcoatSpecularIndirect = vec3( 0.0 );\nvec3 sheenSpecularDirect = vec3( 0.0 );\nvec3 sheenSpecularIndirect = vec3(0.0 );\nvec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) {\n float x = clamp( 1.0 - dotVH, 0.0, 1.0 );\n float x2 = x * x;\n float x5 = clamp( x * x2 * x2, 0.0, 0.9999 );\n return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 );\n}\nfloat V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\n float a2 = pow2( alpha );\n float gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n float gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n return 0.5 / max( gv + gl, EPSILON );\n}\nfloat D_GGX( const in float alpha, const in float dotNH ) {\n float a2 = pow2( alpha );\n float denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\n return RECIPROCAL_PI * a2 / pow2( denom );\n}\n#ifdef USE_ANISOTROPY\n float V_GGX_SmithCorrelated_Anisotropic( const in float alphaT, const in float alphaB, const in float dotTV, const in float dotBV, const in float dotTL, const in float dotBL, const in float dotNV, const in float dotNL ) {\n float gv = dotNL * length( vec3( alphaT * dotTV, alphaB * dotBV, dotNV ) );\n float gl = dotNV * length( vec3( alphaT * dotTL, alphaB * dotBL, dotNL ) );\n float v = 0.5 / ( gv + gl );\n return saturate(v);\n }\n float D_GGX_Anisotropic( const in float alphaT, const in float alphaB, const in float dotNH, const in float dotTH, const in float dotBH ) {\n float a2 = alphaT * alphaB;\n highp vec3 v = vec3( alphaB * dotTH, alphaT * dotBH, a2 * dotNH );\n highp float v2 = dot( v, v );\n float w2 = a2 / v2;\n return RECIPROCAL_PI * a2 * pow2 ( w2 );\n }\n#endif\n#ifdef USE_CLEARCOAT\n vec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) {\n vec3 f0 = material.clearcoatF0;\n float f90 = material.clearcoatF90;\n float roughness = material.clearcoatRoughness;\n float alpha = pow2( roughness );\n vec3 halfDir = normalize( lightDir + viewDir );\n float dotNL = saturate( dot( normal, lightDir ) );\n float dotNV = saturate( dot( normal, viewDir ) );\n float dotNH = saturate( dot( normal, halfDir ) );\n float dotVH = saturate( dot( viewDir, halfDir ) );\n vec3 F = F_Schlick( f0, f90, dotVH );\n float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n float D = D_GGX( alpha, dotNH );\n return F * ( V * D );\n }\n#endif\nvec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) {\n vec3 f0 = material.specularColor;\n float f90 = material.specularF90;\n float roughness = material.roughness;\n float alpha = pow2( roughness );\n vec3 halfDir = normalize( lightDir + viewDir );\n float dotNL = saturate( dot( normal, lightDir ) );\n float dotNV = saturate( dot( normal, viewDir ) );\n float dotNH = saturate( dot( normal, halfDir ) );\n float dotVH = saturate( dot( viewDir, halfDir ) );\n vec3 F = F_Schlick( f0, f90, dotVH );\n #ifdef USE_IRIDESCENCE\n F = mix( F, material.iridescenceFresnel, material.iridescence );\n #endif\n #ifdef USE_ANISOTROPY\n float dotTL = dot( material.anisotropyT, lightDir );\n float dotTV = dot( material.anisotropyT, viewDir );\n float dotTH = dot( material.anisotropyT, halfDir );\n float dotBL = dot( material.anisotropyB, lightDir );\n float dotBV = dot( material.anisotropyB, viewDir );\n float dotBH = dot( material.anisotropyB, halfDir );\n float V = V_GGX_SmithCorrelated_Anisotropic( material.alphaT, alpha, dotTV, dotBV, dotTL, dotBL, dotNV, dotNL );\n float D = D_GGX_Anisotropic( material.alphaT, alpha, dotNH, dotTH, dotBH );\n #else\n float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n float D = D_GGX( alpha, dotNH );\n #endif\n return F * ( V * D );\n}\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\n const float LUT_SIZE = 64.0;\n const float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\n const float LUT_BIAS = 0.5 / LUT_SIZE;\n float dotNV = saturate( dot( N, V ) );\n vec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\n uv = uv * LUT_SCALE + LUT_BIAS;\n return uv;\n}\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\n float l = length( f );\n return max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\n}\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\n float x = dot( v1, v2 );\n float y = abs( x );\n float a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\n float b = 3.4175940 + ( 4.1616724 + y ) * y;\n float v = a / b;\n float theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\n return cross( v1, v2 ) * theta_sintheta;\n}\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\n vec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\n vec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\n vec3 lightNormal = cross( v1, v2 );\n if( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\n vec3 T1, T2;\n T1 = normalize( V - N * dot( V, N ) );\n T2 = - cross( N, T1 );\n mat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\n vec3 coords[ 4 ];\n coords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\n coords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\n coords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\n coords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\n coords[ 0 ] = normalize( coords[ 0 ] );\n coords[ 1 ] = normalize( coords[ 1 ] );\n coords[ 2 ] = normalize( coords[ 2 ] );\n coords[ 3 ] = normalize( coords[ 3 ] );\n vec3 vectorFormFactor = vec3( 0.0 );\n vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\n vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\n vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\n vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\n float result = LTC_ClippedSphereFormFactor( vectorFormFactor );\n return vec3( result );\n}\n#if defined( USE_SHEEN )\nfloat D_Charlie( float roughness, float dotNH ) {\n float alpha = pow2( roughness );\n float invAlpha = 1.0 / alpha;\n float cos2h = dotNH * dotNH;\n float sin2h = max( 1.0 - cos2h, 0.0078125 );\n return ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );\n}\nfloat V_Neubelt( float dotNV, float dotNL ) {\n return saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) );\n}\nvec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {\n vec3 halfDir = normalize( lightDir + viewDir );\n float dotNL = saturate( dot( normal, lightDir ) );\n float dotNV = saturate( dot( normal, viewDir ) );\n float dotNH = saturate( dot( normal, halfDir ) );\n float D = D_Charlie( sheenRoughness, dotNH );\n float V = V_Neubelt( dotNV, dotNL );\n return sheenColor * ( D * V );\n}\n#endif\nfloat IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\n float dotNV = saturate( dot( normal, viewDir ) );\n float r2 = roughness * roughness;\n float a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95;\n float b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72;\n float DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) );\n return saturate( DG * RECIPROCAL_PI );\n}\nvec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\n float dotNV = saturate( dot( normal, viewDir ) );\n const vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\n const vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\n vec4 r = roughness * c0 + c1;\n float a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\n vec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;\n return fab;\n}\nvec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {\n vec2 fab = DFGApprox( normal, viewDir, roughness );\n return specularColor * fab.x + specularF90 * fab.y;\n}\n#ifdef USE_IRIDESCENCE\nvoid computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n#else\nvoid computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n#endif\n vec2 fab = DFGApprox( normal, viewDir, roughness );\n #ifdef USE_IRIDESCENCE\n vec3 Fr = mix( specularColor, iridescenceF0, iridescence );\n #else\n vec3 Fr = specularColor;\n #endif\n vec3 FssEss = Fr * fab.x + specularF90 * fab.y;\n float Ess = fab.x + fab.y;\n float Ems = 1.0 - Ess;\n vec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619; vec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\n singleScatter += FssEss;\n multiScatter += Fms * Ems;\n}\n#if NUM_RECT_AREA_LIGHTS > 0\n void RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n vec3 normal = geometryNormal;\n vec3 viewDir = geometryViewDir;\n vec3 position = geometryPosition;\n vec3 lightPos = rectAreaLight.position;\n vec3 halfWidth = rectAreaLight.halfWidth;\n vec3 halfHeight = rectAreaLight.halfHeight;\n vec3 lightColor = rectAreaLight.color;\n float roughness = material.roughness;\n vec3 rectCoords[ 4 ];\n rectCoords[ 0 ] = lightPos + halfWidth - halfHeight; rectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\n rectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\n rectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\n vec2 uv = LTC_Uv( normal, viewDir, roughness );\n vec4 t1 = texture2D( ltc_1, uv );\n vec4 t2 = texture2D( ltc_2, uv );\n mat3 mInv = mat3(\n vec3( t1.x, 0, t1.y ),\n vec3( 0, 1, 0 ),\n vec3( t1.z, 0, t1.w )\n );\n vec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\n reflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\n reflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\n }\n#endif\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n float dotNL = saturate( dot( geometryNormal, directLight.direction ) );\n vec3 irradiance = dotNL * directLight.color;\n #ifdef USE_CLEARCOAT\n float dotNLcc = saturate( dot( geometryClearcoatNormal, directLight.direction ) );\n vec3 ccIrradiance = dotNLcc * directLight.color;\n clearcoatSpecularDirect += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometryViewDir, geometryClearcoatNormal, material );\n #endif\n #ifdef USE_SHEEN\n sheenSpecularDirect += irradiance * BRDF_Sheen( directLight.direction, geometryViewDir, geometryNormal, material.sheenColor, material.sheenRoughness );\n #endif\n reflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometryViewDir, geometryNormal, material );\n reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\n #ifdef USE_CLEARCOAT\n clearcoatSpecularIndirect += clearcoatRadiance * EnvironmentBRDF( geometryClearcoatNormal, geometryViewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\n #endif\n #ifdef USE_SHEEN\n sheenSpecularIndirect += irradiance * material.sheenColor * IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness );\n #endif\n vec3 singleScattering = vec3( 0.0 );\n vec3 multiScattering = vec3( 0.0 );\n vec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\n #ifdef USE_IRIDESCENCE\n computeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering );\n #else\n computeMultiscattering( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );\n #endif\n vec3 totalScattering = singleScattering + multiScattering;\n vec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) );\n reflectedLight.indirectSpecular += radiance * singleScattering;\n reflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\n reflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\n}\n#define RE_Direct RE_Direct_Physical\n#define RE_Direct_RectArea RE_Direct_RectArea_Physical\n#define RE_IndirectDiffuse RE_IndirectDiffuse_Physical\n#define RE_IndirectSpecular RE_IndirectSpecular_Physical\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\n return saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\n}",lights_fragment_begin:"\nvec3 geometryPosition = - vViewPosition;\nvec3 geometryNormal = normal;\nvec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\nvec3 geometryClearcoatNormal = vec3( 0.0 );\n#ifdef USE_CLEARCOAT\n geometryClearcoatNormal = clearcoatNormal;\n#endif\n#ifdef USE_IRIDESCENCE\n float dotNVi = saturate( dot( normal, geometryViewDir ) );\n if ( material.iridescenceThickness == 0.0 ) {\n material.iridescence = 0.0;\n } else {\n material.iridescence = saturate( material.iridescence );\n }\n if ( material.iridescence > 0.0 ) {\n material.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor );\n material.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi );\n }\n#endif\nIncidentLight directLight;\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\n PointLight pointLight;\n #if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\n PointLightShadow pointLightShadow;\n #endif\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n pointLight = pointLights[ i ];\n getPointLightInfo( pointLight, geometryPosition, directLight );\n #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\n pointLightShadow = pointLightShadows[ i ];\n directLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowIntensity, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\n #endif\n RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n }\n #pragma unroll_loop_end\n#endif\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\n SpotLight spotLight;\n vec4 spotColor;\n vec3 spotLightCoord;\n bool inSpotLightMap;\n #if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\n SpotLightShadow spotLightShadow;\n #endif\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n spotLight = spotLights[ i ];\n getSpotLightInfo( spotLight, geometryPosition, directLight );\n #if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\n #define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX\n #elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n #define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS\n #else\n #define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\n #endif\n #if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS )\n spotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w;\n inSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) );\n spotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy );\n directLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color;\n #endif\n #undef SPOT_LIGHT_MAP_INDEX\n #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n spotLightShadow = spotLightShadows[ i ];\n directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowIntensity, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\n #endif\n RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n }\n #pragma unroll_loop_end\n#endif\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\n DirectionalLight directionalLight;\n #if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\n DirectionalLightShadow directionalLightShadow;\n #endif\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n directionalLight = directionalLights[ i ];\n getDirectionalLightInfo( directionalLight, directLight );\n #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\n directionalLightShadow = directionalLightShadows[ i ];\n directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowIntensity, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n #endif\n RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n }\n #pragma unroll_loop_end\n#endif\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\n RectAreaLight rectAreaLight;\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\n rectAreaLight = rectAreaLights[ i ];\n RE_Direct_RectArea( rectAreaLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n }\n #pragma unroll_loop_end\n#endif\n#if defined( RE_IndirectDiffuse )\n vec3 iblIrradiance = vec3( 0.0 );\n vec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\n #if defined( USE_LIGHT_PROBES )\n irradiance += getLightProbeIrradiance( lightProbe, geometryNormal );\n #endif\n #if ( NUM_HEMI_LIGHTS > 0 )\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal );\n }\n #pragma unroll_loop_end\n #endif\n#endif\n#if defined( RE_IndirectSpecular )\n vec3 radiance = vec3( 0.0 );\n vec3 clearcoatRadiance = vec3( 0.0 );\n#endif",lights_fragment_maps:"#if defined( RE_IndirectDiffuse )\n #ifdef USE_LIGHTMAP\n vec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\n vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\n irradiance += lightMapIrradiance;\n #endif\n #if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\n iblIrradiance += getIBLIrradiance( geometryNormal );\n #endif\n#endif\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\n #ifdef USE_ANISOTROPY\n radiance += getIBLAnisotropyRadiance( geometryViewDir, geometryNormal, material.roughness, material.anisotropyB, material.anisotropy );\n #else\n radiance += getIBLRadiance( geometryViewDir, geometryNormal, material.roughness );\n #endif\n #ifdef USE_CLEARCOAT\n clearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness );\n #endif\n#endif",lights_fragment_end:"#if defined( RE_IndirectDiffuse )\n RE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n#endif\n#if defined( RE_IndirectSpecular )\n RE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n#endif",logdepthbuf_fragment:"#if defined( USE_LOGDEPTHBUF )\n gl_FragDepth = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\n#endif",logdepthbuf_pars_fragment:"#if defined( USE_LOGDEPTHBUF )\n uniform float logDepthBufFC;\n varying float vFragDepth;\n varying float vIsPerspective;\n#endif",logdepthbuf_pars_vertex:"#ifdef USE_LOGDEPTHBUF\n varying float vFragDepth;\n varying float vIsPerspective;\n#endif",logdepthbuf_vertex:"#ifdef USE_LOGDEPTHBUF\n vFragDepth = 1.0 + gl_Position.w;\n vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\n#endif",map_fragment:"#ifdef USE_MAP\n vec4 sampledDiffuseColor = texture2D( map, vMapUv );\n #ifdef DECODE_VIDEO_TEXTURE\n sampledDiffuseColor = sRGBTransferEOTF( sampledDiffuseColor );\n #endif\n diffuseColor *= sampledDiffuseColor;\n#endif",map_pars_fragment:"#ifdef USE_MAP\n uniform sampler2D map;\n#endif",map_particle_fragment:"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n #if defined( USE_POINTS_UV )\n vec2 uv = vUv;\n #else\n vec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\n #endif\n#endif\n#ifdef USE_MAP\n diffuseColor *= texture2D( map, uv );\n#endif\n#ifdef USE_ALPHAMAP\n diffuseColor.a *= texture2D( alphaMap, uv ).g;\n#endif",map_particle_pars_fragment:"#if defined( USE_POINTS_UV )\n varying vec2 vUv;\n#else\n #if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n uniform mat3 uvTransform;\n #endif\n#endif\n#ifdef USE_MAP\n uniform sampler2D map;\n#endif\n#ifdef USE_ALPHAMAP\n uniform sampler2D alphaMap;\n#endif",metalnessmap_fragment:"float metalnessFactor = metalness;\n#ifdef USE_METALNESSMAP\n vec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv );\n metalnessFactor *= texelMetalness.b;\n#endif",metalnessmap_pars_fragment:"#ifdef USE_METALNESSMAP\n uniform sampler2D metalnessMap;\n#endif",morphinstance_vertex:"#ifdef USE_INSTANCING_MORPH\n float morphTargetInfluences[ MORPHTARGETS_COUNT ];\n float morphTargetBaseInfluence = texelFetch( morphTexture, ivec2( 0, gl_InstanceID ), 0 ).r;\n for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n morphTargetInfluences[i] = texelFetch( morphTexture, ivec2( i + 1, gl_InstanceID ), 0 ).r;\n }\n#endif",morphcolor_vertex:"#if defined( USE_MORPHCOLORS )\n vColor *= morphTargetBaseInfluence;\n for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n #if defined( USE_COLOR_ALPHA )\n if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ];\n #elif defined( USE_COLOR )\n if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ];\n #endif\n }\n#endif",morphnormal_vertex:"#ifdef USE_MORPHNORMALS\n objectNormal *= morphTargetBaseInfluence;\n for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n if ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ];\n }\n#endif",morphtarget_pars_vertex:"#ifdef USE_MORPHTARGETS\n #ifndef USE_INSTANCING_MORPH\n uniform float morphTargetBaseInfluence;\n uniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];\n #endif\n uniform sampler2DArray morphTargetsTexture;\n uniform ivec2 morphTargetsTextureSize;\n vec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) {\n int texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset;\n int y = texelIndex / morphTargetsTextureSize.x;\n int x = texelIndex - y * morphTargetsTextureSize.x;\n ivec3 morphUV = ivec3( x, y, morphTargetIndex );\n return texelFetch( morphTargetsTexture, morphUV, 0 );\n }\n#endif",morphtarget_vertex:"#ifdef USE_MORPHTARGETS\n transformed *= morphTargetBaseInfluence;\n for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n if ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ];\n }\n#endif",normal_fragment_begin:"float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\n#ifdef FLAT_SHADED\n vec3 fdx = dFdx( vViewPosition );\n vec3 fdy = dFdy( vViewPosition );\n vec3 normal = normalize( cross( fdx, fdy ) );\n#else\n vec3 normal = normalize( vNormal );\n #ifdef DOUBLE_SIDED\n normal *= faceDirection;\n #endif\n#endif\n#if defined( USE_NORMALMAP_TANGENTSPACE ) || defined( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY )\n #ifdef USE_TANGENT\n mat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\n #else\n mat3 tbn = getTangentFrame( - vViewPosition, normal,\n #if defined( USE_NORMALMAP )\n vNormalMapUv\n #elif defined( USE_CLEARCOAT_NORMALMAP )\n vClearcoatNormalMapUv\n #else\n vUv\n #endif\n );\n #endif\n #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\n tbn[0] *= faceDirection;\n tbn[1] *= faceDirection;\n #endif\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n #ifdef USE_TANGENT\n mat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\n #else\n mat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv );\n #endif\n #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\n tbn2[0] *= faceDirection;\n tbn2[1] *= faceDirection;\n #endif\n#endif\nvec3 nonPerturbedNormal = normal;",normal_fragment_maps:"#ifdef USE_NORMALMAP_OBJECTSPACE\n normal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;\n #ifdef FLIP_SIDED\n normal = - normal;\n #endif\n #ifdef DOUBLE_SIDED\n normal = normal * faceDirection;\n #endif\n normal = normalize( normalMatrix * normal );\n#elif defined( USE_NORMALMAP_TANGENTSPACE )\n vec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;\n mapN.xy *= normalScale;\n normal = normalize( tbn * mapN );\n#elif defined( USE_BUMPMAP )\n normal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\n#endif",normal_pars_fragment:"#ifndef FLAT_SHADED\n varying vec3 vNormal;\n #ifdef USE_TANGENT\n varying vec3 vTangent;\n varying vec3 vBitangent;\n #endif\n#endif",normal_pars_vertex:"#ifndef FLAT_SHADED\n varying vec3 vNormal;\n #ifdef USE_TANGENT\n varying vec3 vTangent;\n varying vec3 vBitangent;\n #endif\n#endif",normal_vertex:"#ifndef FLAT_SHADED\n vNormal = normalize( transformedNormal );\n #ifdef USE_TANGENT\n vTangent = normalize( transformedTangent );\n vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n #endif\n#endif",normalmap_pars_fragment:"#ifdef USE_NORMALMAP\n uniform sampler2D normalMap;\n uniform vec2 normalScale;\n#endif\n#ifdef USE_NORMALMAP_OBJECTSPACE\n uniform mat3 normalMatrix;\n#endif\n#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) )\n mat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) {\n vec3 q0 = dFdx( eye_pos.xyz );\n vec3 q1 = dFdy( eye_pos.xyz );\n vec2 st0 = dFdx( uv.st );\n vec2 st1 = dFdy( uv.st );\n vec3 N = surf_norm;\n vec3 q1perp = cross( q1, N );\n vec3 q0perp = cross( N, q0 );\n vec3 T = q1perp * st0.x + q0perp * st1.x;\n vec3 B = q1perp * st0.y + q0perp * st1.y;\n float det = max( dot( T, T ), dot( B, B ) );\n float scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det );\n return mat3( T * scale, B * scale, N );\n }\n#endif",clearcoat_normal_fragment_begin:"#ifdef USE_CLEARCOAT\n vec3 clearcoatNormal = nonPerturbedNormal;\n#endif",clearcoat_normal_fragment_maps:"#ifdef USE_CLEARCOAT_NORMALMAP\n vec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0;\n clearcoatMapN.xy *= clearcoatNormalScale;\n clearcoatNormal = normalize( tbn2 * clearcoatMapN );\n#endif",clearcoat_pars_fragment:"#ifdef USE_CLEARCOATMAP\n uniform sampler2D clearcoatMap;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n uniform sampler2D clearcoatNormalMap;\n uniform vec2 clearcoatNormalScale;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n uniform sampler2D clearcoatRoughnessMap;\n#endif",iridescence_pars_fragment:"#ifdef USE_IRIDESCENCEMAP\n uniform sampler2D iridescenceMap;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n uniform sampler2D iridescenceThicknessMap;\n#endif",opaque_fragment:"#ifdef OPAQUE\ndiffuseColor.a = 1.0;\n#endif\n#ifdef USE_TRANSMISSION\ndiffuseColor.a *= material.transmissionAlpha;\n#endif\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );",packing:"vec3 packNormalToRGB( const in vec3 normal ) {\n return normalize( normal ) * 0.5 + 0.5;\n}\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\n return 2.0 * rgb.xyz - 1.0;\n}\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;const float ShiftRight8 = 1. / 256.;\nconst float Inv255 = 1. / 255.;\nconst vec4 PackFactors = vec4( 1.0, 256.0, 256.0 * 256.0, 256.0 * 256.0 * 256.0 );\nconst vec2 UnpackFactors2 = vec2( UnpackDownscale, 1.0 / PackFactors.g );\nconst vec3 UnpackFactors3 = vec3( UnpackDownscale / PackFactors.rg, 1.0 / PackFactors.b );\nconst vec4 UnpackFactors4 = vec4( UnpackDownscale / PackFactors.rgb, 1.0 / PackFactors.a );\nvec4 packDepthToRGBA( const in float v ) {\n if( v <= 0.0 )\n return vec4( 0., 0., 0., 0. );\n if( v >= 1.0 )\n return vec4( 1., 1., 1., 1. );\n float vuf;\n float af = modf( v * PackFactors.a, vuf );\n float bf = modf( vuf * ShiftRight8, vuf );\n float gf = modf( vuf * ShiftRight8, vuf );\n return vec4( vuf * Inv255, gf * PackUpscale, bf * PackUpscale, af );\n}\nvec3 packDepthToRGB( const in float v ) {\n if( v <= 0.0 )\n return vec3( 0., 0., 0. );\n if( v >= 1.0 )\n return vec3( 1., 1., 1. );\n float vuf;\n float bf = modf( v * PackFactors.b, vuf );\n float gf = modf( vuf * ShiftRight8, vuf );\n return vec3( vuf * Inv255, gf * PackUpscale, bf );\n}\nvec2 packDepthToRG( const in float v ) {\n if( v <= 0.0 )\n return vec2( 0., 0. );\n if( v >= 1.0 )\n return vec2( 1., 1. );\n float vuf;\n float gf = modf( v * 256., vuf );\n return vec2( vuf * Inv255, gf );\n}\nfloat unpackRGBAToDepth( const in vec4 v ) {\n return dot( v, UnpackFactors4 );\n}\nfloat unpackRGBToDepth( const in vec3 v ) {\n return dot( v, UnpackFactors3 );\n}\nfloat unpackRGToDepth( const in vec2 v ) {\n return v.r * UnpackFactors2.r + v.g * UnpackFactors2.g;\n}\nvec4 pack2HalfToRGBA( const in vec2 v ) {\n vec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );\n return vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );\n}\nvec2 unpackRGBATo2Half( const in vec4 v ) {\n return vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\n}\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\n return ( viewZ + near ) / ( near - far );\n}\nfloat orthographicDepthToViewZ( const in float depth, const in float near, const in float far ) {\n return depth * ( near - far ) - near;\n}\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\n return ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ );\n}\nfloat perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) {\n return ( near * far ) / ( ( far - near ) * depth - far );\n}",premultiplied_alpha_fragment:"#ifdef PREMULTIPLIED_ALPHA\n gl_FragColor.rgb *= gl_FragColor.a;\n#endif",project_vertex:"vec4 mvPosition = vec4( transformed, 1.0 );\n#ifdef USE_BATCHING\n mvPosition = batchingMatrix * mvPosition;\n#endif\n#ifdef USE_INSTANCING\n mvPosition = instanceMatrix * mvPosition;\n#endif\nmvPosition = modelViewMatrix * mvPosition;\ngl_Position = projectionMatrix * mvPosition;",dithering_fragment:"#ifdef DITHERING\n gl_FragColor.rgb = dithering( gl_FragColor.rgb );\n#endif",dithering_pars_fragment:"#ifdef DITHERING\n vec3 dithering( vec3 color ) {\n float grid_position = rand( gl_FragCoord.xy );\n vec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\n dither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\n return color + dither_shift_RGB;\n }\n#endif",roughnessmap_fragment:"float roughnessFactor = roughness;\n#ifdef USE_ROUGHNESSMAP\n vec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv );\n roughnessFactor *= texelRoughness.g;\n#endif",roughnessmap_pars_fragment:"#ifdef USE_ROUGHNESSMAP\n uniform sampler2D roughnessMap;\n#endif",shadowmap_pars_fragment:"#if NUM_SPOT_LIGHT_COORDS > 0\n varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\n#endif\n#if NUM_SPOT_LIGHT_MAPS > 0\n uniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ];\n#endif\n#ifdef USE_SHADOWMAP\n #if NUM_DIR_LIGHT_SHADOWS > 0\n uniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\n varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n struct DirectionalLightShadow {\n float shadowIntensity;\n float shadowBias;\n float shadowNormalBias;\n float shadowRadius;\n vec2 shadowMapSize;\n };\n uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n #endif\n #if NUM_SPOT_LIGHT_SHADOWS > 0\n uniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\n struct SpotLightShadow {\n float shadowIntensity;\n float shadowBias;\n float shadowNormalBias;\n float shadowRadius;\n vec2 shadowMapSize;\n };\n uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n #endif\n #if NUM_POINT_LIGHT_SHADOWS > 0\n uniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\n varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n struct PointLightShadow {\n float shadowIntensity;\n float shadowBias;\n float shadowNormalBias;\n float shadowRadius;\n vec2 shadowMapSize;\n float shadowCameraNear;\n float shadowCameraFar;\n };\n uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n #endif\n float texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\n return step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\n }\n vec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\n return unpackRGBATo2Half( texture2D( shadow, uv ) );\n }\n float VSMShadow (sampler2D shadow, vec2 uv, float compare ){\n float occlusion = 1.0;\n vec2 distribution = texture2DDistribution( shadow, uv );\n float hard_shadow = step( compare , distribution.x );\n if (hard_shadow != 1.0 ) {\n float distance = compare - distribution.x ;\n float variance = max( 0.00000, distribution.y * distribution.y );\n float softness_probability = variance / (variance + distance * distance ); softness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 ); occlusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\n }\n return occlusion;\n }\n float getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\n float shadow = 1.0;\n shadowCoord.xyz /= shadowCoord.w;\n shadowCoord.z += shadowBias;\n bool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0;\n bool frustumTest = inFrustum && shadowCoord.z <= 1.0;\n if ( frustumTest ) {\n #if defined( SHADOWMAP_TYPE_PCF )\n vec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n float dx0 = - texelSize.x * shadowRadius;\n float dy0 = - texelSize.y * shadowRadius;\n float dx1 = + texelSize.x * shadowRadius;\n float dy1 = + texelSize.y * shadowRadius;\n float dx2 = dx0 / 2.0;\n float dy2 = dy0 / 2.0;\n float dx3 = dx1 / 2.0;\n float dy3 = dy1 / 2.0;\n shadow = (\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n ) * ( 1.0 / 17.0 );\n #elif defined( SHADOWMAP_TYPE_PCF_SOFT )\n vec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n float dx = texelSize.x;\n float dy = texelSize.y;\n vec2 uv = shadowCoord.xy;\n vec2 f = fract( uv * shadowMapSize + 0.5 );\n uv -= f * texelSize;\n shadow = (\n texture2DCompare( shadowMap, uv, shadowCoord.z ) +\n texture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\n texture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\n mix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ),\n texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\n f.x ) +\n mix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ),\n texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\n f.x ) +\n mix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ),\n texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\n f.y ) +\n mix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ),\n texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\n f.y ) +\n mix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ),\n texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\n f.x ),\n mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ),\n texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\n f.x ),\n f.y )\n ) * ( 1.0 / 9.0 );\n #elif defined( SHADOWMAP_TYPE_VSM )\n shadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\n #else\n shadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\n #endif\n }\n return mix( 1.0, shadow, shadowIntensity );\n }\n vec2 cubeToUV( vec3 v, float texelSizeY ) {\n vec3 absV = abs( v );\n float scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\n absV *= scaleToCube;\n v *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\n vec2 planar = v.xy;\n float almostATexel = 1.5 * texelSizeY;\n float almostOne = 1.0 - almostATexel;\n if ( absV.z >= almostOne ) {\n if ( v.z > 0.0 )\n planar.x = 4.0 - v.x;\n } else if ( absV.x >= almostOne ) {\n float signX = sign( v.x );\n planar.x = v.z * signX + 2.0 * signX;\n } else if ( absV.y >= almostOne ) {\n float signY = sign( v.y );\n planar.x = v.x + 2.0 * signY + 2.0;\n planar.y = v.z * signY - 2.0;\n }\n return vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\n }\n float getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\n float shadow = 1.0;\n vec3 lightToPosition = shadowCoord.xyz;\n \n float lightToPositionLength = length( lightToPosition );\n if ( lightToPositionLength - shadowCameraFar <= 0.0 && lightToPositionLength - shadowCameraNear >= 0.0 ) {\n float dp = ( lightToPositionLength - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear ); dp += shadowBias;\n vec3 bd3D = normalize( lightToPosition );\n vec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\n #if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\n vec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\n shadow = (\n texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\n texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\n texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\n texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\n texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\n texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\n texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\n texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\n texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\n ) * ( 1.0 / 9.0 );\n #else\n shadow = texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\n #endif\n }\n return mix( 1.0, shadow, shadowIntensity );\n }\n#endif",shadowmap_pars_vertex:"#if NUM_SPOT_LIGHT_COORDS > 0\n uniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ];\n varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\n#endif\n#ifdef USE_SHADOWMAP\n #if NUM_DIR_LIGHT_SHADOWS > 0\n uniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\n varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n struct DirectionalLightShadow {\n float shadowIntensity;\n float shadowBias;\n float shadowNormalBias;\n float shadowRadius;\n vec2 shadowMapSize;\n };\n uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n #endif\n #if NUM_SPOT_LIGHT_SHADOWS > 0\n struct SpotLightShadow {\n float shadowIntensity;\n float shadowBias;\n float shadowNormalBias;\n float shadowRadius;\n vec2 shadowMapSize;\n };\n uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n #endif\n #if NUM_POINT_LIGHT_SHADOWS > 0\n uniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\n varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n struct PointLightShadow {\n float shadowIntensity;\n float shadowBias;\n float shadowNormalBias;\n float shadowRadius;\n vec2 shadowMapSize;\n float shadowCameraNear;\n float shadowCameraFar;\n };\n uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n #endif\n#endif",shadowmap_vertex:"#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 )\n vec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n vec4 shadowWorldPosition;\n#endif\n#if defined( USE_SHADOWMAP )\n #if NUM_DIR_LIGHT_SHADOWS > 0\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\n vDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\n }\n #pragma unroll_loop_end\n #endif\n #if NUM_POINT_LIGHT_SHADOWS > 0\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\n vPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\n }\n #pragma unroll_loop_end\n #endif\n#endif\n#if NUM_SPOT_LIGHT_COORDS > 0\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) {\n shadowWorldPosition = worldPosition;\n #if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n shadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias;\n #endif\n vSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition;\n }\n #pragma unroll_loop_end\n#endif",shadowmask_pars_fragment:"float getShadowMask() {\n float shadow = 1.0;\n #ifdef USE_SHADOWMAP\n #if NUM_DIR_LIGHT_SHADOWS > 0\n DirectionalLightShadow directionalLight;\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n directionalLight = directionalLightShadows[ i ];\n shadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowIntensity, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n }\n #pragma unroll_loop_end\n #endif\n #if NUM_SPOT_LIGHT_SHADOWS > 0\n SpotLightShadow spotLight;\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\n spotLight = spotLightShadows[ i ];\n shadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowIntensity, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\n }\n #pragma unroll_loop_end\n #endif\n #if NUM_POINT_LIGHT_SHADOWS > 0\n PointLightShadow pointLight;\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n pointLight = pointLightShadows[ i ];\n shadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowIntensity, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n }\n #pragma unroll_loop_end\n #endif\n #endif\n return shadow;\n}",skinbase_vertex:"#ifdef USE_SKINNING\n mat4 boneMatX = getBoneMatrix( skinIndex.x );\n mat4 boneMatY = getBoneMatrix( skinIndex.y );\n mat4 boneMatZ = getBoneMatrix( skinIndex.z );\n mat4 boneMatW = getBoneMatrix( skinIndex.w );\n#endif",skinning_pars_vertex:"#ifdef USE_SKINNING\n uniform mat4 bindMatrix;\n uniform mat4 bindMatrixInverse;\n uniform highp sampler2D boneTexture;\n mat4 getBoneMatrix( const in float i ) {\n int size = textureSize( boneTexture, 0 ).x;\n int j = int( i ) * 4;\n int x = j % size;\n int y = j / size;\n vec4 v1 = texelFetch( boneTexture, ivec2( x, y ), 0 );\n vec4 v2 = texelFetch( boneTexture, ivec2( x + 1, y ), 0 );\n vec4 v3 = texelFetch( boneTexture, ivec2( x + 2, y ), 0 );\n vec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 );\n return mat4( v1, v2, v3, v4 );\n }\n#endif",skinning_vertex:"#ifdef USE_SKINNING\n vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\n vec4 skinned = vec4( 0.0 );\n skinned += boneMatX * skinVertex * skinWeight.x;\n skinned += boneMatY * skinVertex * skinWeight.y;\n skinned += boneMatZ * skinVertex * skinWeight.z;\n skinned += boneMatW * skinVertex * skinWeight.w;\n transformed = ( bindMatrixInverse * skinned ).xyz;\n#endif",skinnormal_vertex:"#ifdef USE_SKINNING\n mat4 skinMatrix = mat4( 0.0 );\n skinMatrix += skinWeight.x * boneMatX;\n skinMatrix += skinWeight.y * boneMatY;\n skinMatrix += skinWeight.z * boneMatZ;\n skinMatrix += skinWeight.w * boneMatW;\n skinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\n objectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\n #ifdef USE_TANGENT\n objectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n #endif\n#endif",specularmap_fragment:"float specularStrength;\n#ifdef USE_SPECULARMAP\n vec4 texelSpecular = texture2D( specularMap, vSpecularMapUv );\n specularStrength = texelSpecular.r;\n#else\n specularStrength = 1.0;\n#endif",specularmap_pars_fragment:"#ifdef USE_SPECULARMAP\n uniform sampler2D specularMap;\n#endif",tonemapping_fragment:"#if defined( TONE_MAPPING )\n gl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\n#endif",tonemapping_pars_fragment:"#ifndef saturate\n#define saturate( a ) clamp( a, 0.0, 1.0 )\n#endif\nuniform float toneMappingExposure;\nvec3 LinearToneMapping( vec3 color ) {\n return saturate( toneMappingExposure * color );\n}\nvec3 ReinhardToneMapping( vec3 color ) {\n color *= toneMappingExposure;\n return saturate( color / ( vec3( 1.0 ) + color ) );\n}\nvec3 CineonToneMapping( vec3 color ) {\n color *= toneMappingExposure;\n color = max( vec3( 0.0 ), color - 0.004 );\n return pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\n}\nvec3 RRTAndODTFit( vec3 v ) {\n vec3 a = v * ( v + 0.0245786 ) - 0.000090537;\n vec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\n return a / b;\n}\nvec3 ACESFilmicToneMapping( vec3 color ) {\n const mat3 ACESInputMat = mat3(\n vec3( 0.59719, 0.07600, 0.02840 ), vec3( 0.35458, 0.90834, 0.13383 ),\n vec3( 0.04823, 0.01566, 0.83777 )\n );\n const mat3 ACESOutputMat = mat3(\n vec3( 1.60475, -0.10208, -0.00327 ), vec3( -0.53108, 1.10813, -0.07276 ),\n vec3( -0.07367, -0.00605, 1.07602 )\n );\n color *= toneMappingExposure / 0.6;\n color = ACESInputMat * color;\n color = RRTAndODTFit( color );\n color = ACESOutputMat * color;\n return saturate( color );\n}\nconst mat3 LINEAR_REC2020_TO_LINEAR_SRGB = mat3(\n vec3( 1.6605, - 0.1246, - 0.0182 ),\n vec3( - 0.5876, 1.1329, - 0.1006 ),\n vec3( - 0.0728, - 0.0083, 1.1187 )\n);\nconst mat3 LINEAR_SRGB_TO_LINEAR_REC2020 = mat3(\n vec3( 0.6274, 0.0691, 0.0164 ),\n vec3( 0.3293, 0.9195, 0.0880 ),\n vec3( 0.0433, 0.0113, 0.8956 )\n);\nvec3 agxDefaultContrastApprox( vec3 x ) {\n vec3 x2 = x * x;\n vec3 x4 = x2 * x2;\n return + 15.5 * x4 * x2\n - 40.14 * x4 * x\n + 31.96 * x4\n - 6.868 * x2 * x\n + 0.4298 * x2\n + 0.1191 * x\n - 0.00232;\n}\nvec3 AgXToneMapping( vec3 color ) {\n const mat3 AgXInsetMatrix = mat3(\n vec3( 0.856627153315983, 0.137318972929847, 0.11189821299995 ),\n vec3( 0.0951212405381588, 0.761241990602591, 0.0767994186031903 ),\n vec3( 0.0482516061458583, 0.101439036467562, 0.811302368396859 )\n );\n const mat3 AgXOutsetMatrix = mat3(\n vec3( 1.1271005818144368, - 0.1413297634984383, - 0.14132976349843826 ),\n vec3( - 0.11060664309660323, 1.157823702216272, - 0.11060664309660294 ),\n vec3( - 0.016493938717834573, - 0.016493938717834257, 1.2519364065950405 )\n );\n const float AgxMinEv = - 12.47393; const float AgxMaxEv = 4.026069;\n color *= toneMappingExposure;\n color = LINEAR_SRGB_TO_LINEAR_REC2020 * color;\n color = AgXInsetMatrix * color;\n color = max( color, 1e-10 ); color = log2( color );\n color = ( color - AgxMinEv ) / ( AgxMaxEv - AgxMinEv );\n color = clamp( color, 0.0, 1.0 );\n color = agxDefaultContrastApprox( color );\n color = AgXOutsetMatrix * color;\n color = pow( max( vec3( 0.0 ), color ), vec3( 2.2 ) );\n color = LINEAR_REC2020_TO_LINEAR_SRGB * color;\n color = clamp( color, 0.0, 1.0 );\n return color;\n}\nvec3 NeutralToneMapping( vec3 color ) {\n const float StartCompression = 0.8 - 0.04;\n const float Desaturation = 0.15;\n color *= toneMappingExposure;\n float x = min( color.r, min( color.g, color.b ) );\n float offset = x < 0.08 ? x - 6.25 * x * x : 0.04;\n color -= offset;\n float peak = max( color.r, max( color.g, color.b ) );\n if ( peak < StartCompression ) return color;\n float d = 1. - StartCompression;\n float newPeak = 1. - d * d / ( peak + d - StartCompression );\n color *= newPeak / peak;\n float g = 1. - 1. / ( Desaturation * ( peak - newPeak ) + 1. );\n return mix( color, vec3( newPeak ), g );\n}\nvec3 CustomToneMapping( vec3 color ) { return color; }",transmission_fragment:"#ifdef USE_TRANSMISSION\n material.transmission = transmission;\n material.transmissionAlpha = 1.0;\n material.thickness = thickness;\n material.attenuationDistance = attenuationDistance;\n material.attenuationColor = attenuationColor;\n #ifdef USE_TRANSMISSIONMAP\n material.transmission *= texture2D( transmissionMap, vTransmissionMapUv ).r;\n #endif\n #ifdef USE_THICKNESSMAP\n material.thickness *= texture2D( thicknessMap, vThicknessMapUv ).g;\n #endif\n vec3 pos = vWorldPosition;\n vec3 v = normalize( cameraPosition - pos );\n vec3 n = inverseTransformDirection( normal, viewMatrix );\n vec4 transmitted = getIBLVolumeRefraction(\n n, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90,\n pos, modelMatrix, viewMatrix, projectionMatrix, material.dispersion, material.ior, material.thickness,\n material.attenuationColor, material.attenuationDistance );\n material.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission );\n totalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission );\n#endif",transmission_pars_fragment:"#ifdef USE_TRANSMISSION\n uniform float transmission;\n uniform float thickness;\n uniform float attenuationDistance;\n uniform vec3 attenuationColor;\n #ifdef USE_TRANSMISSIONMAP\n uniform sampler2D transmissionMap;\n #endif\n #ifdef USE_THICKNESSMAP\n uniform sampler2D thicknessMap;\n #endif\n uniform vec2 transmissionSamplerSize;\n uniform sampler2D transmissionSamplerMap;\n uniform mat4 modelMatrix;\n uniform mat4 projectionMatrix;\n varying vec3 vWorldPosition;\n float w0( float a ) {\n return ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 );\n }\n float w1( float a ) {\n return ( 1.0 / 6.0 ) * ( a * a * ( 3.0 * a - 6.0 ) + 4.0 );\n }\n float w2( float a ){\n return ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 );\n }\n float w3( float a ) {\n return ( 1.0 / 6.0 ) * ( a * a * a );\n }\n float g0( float a ) {\n return w0( a ) + w1( a );\n }\n float g1( float a ) {\n return w2( a ) + w3( a );\n }\n float h0( float a ) {\n return - 1.0 + w1( a ) / ( w0( a ) + w1( a ) );\n }\n float h1( float a ) {\n return 1.0 + w3( a ) / ( w2( a ) + w3( a ) );\n }\n vec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) {\n uv = uv * texelSize.zw + 0.5;\n vec2 iuv = floor( uv );\n vec2 fuv = fract( uv );\n float g0x = g0( fuv.x );\n float g1x = g1( fuv.x );\n float h0x = h0( fuv.x );\n float h1x = h1( fuv.x );\n float h0y = h0( fuv.y );\n float h1y = h1( fuv.y );\n vec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\n vec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\n vec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\n vec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\n return g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) +\n g1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) );\n }\n vec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) {\n vec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) );\n vec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) );\n vec2 fLodSizeInv = 1.0 / fLodSize;\n vec2 cLodSizeInv = 1.0 / cLodSize;\n vec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) );\n vec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) );\n return mix( fSample, cSample, fract( lod ) );\n }\n vec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) {\n vec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );\n vec3 modelScale;\n modelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );\n modelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );\n modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );\n return normalize( refractionVector ) * thickness * modelScale;\n }\n float applyIorToRoughness( const in float roughness, const in float ior ) {\n return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );\n }\n vec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) {\n float lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\n return textureBicubic( transmissionSamplerMap, fragCoord.xy, lod );\n }\n vec3 volumeAttenuation( const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {\n if ( isinf( attenuationDistance ) ) {\n return vec3( 1.0 );\n } else {\n vec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\n vec3 transmittance = exp( - attenuationCoefficient * transmissionDistance ); return transmittance;\n }\n }\n vec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor,\n const in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix,\n const in mat4 viewMatrix, const in mat4 projMatrix, const in float dispersion, const in float ior, const in float thickness,\n const in vec3 attenuationColor, const in float attenuationDistance ) {\n vec4 transmittedLight;\n vec3 transmittance;\n #ifdef USE_DISPERSION\n float halfSpread = ( ior - 1.0 ) * 0.025 * dispersion;\n vec3 iors = vec3( ior - halfSpread, ior, ior + halfSpread );\n for ( int i = 0; i < 3; i ++ ) {\n vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, iors[ i ], modelMatrix );\n vec3 refractedRayExit = position + transmissionRay;\n \n vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\n vec2 refractionCoords = ndcPos.xy / ndcPos.w;\n refractionCoords += 1.0;\n refractionCoords /= 2.0;\n \n vec4 transmissionSample = getTransmissionSample( refractionCoords, roughness, iors[ i ] );\n transmittedLight[ i ] = transmissionSample[ i ];\n transmittedLight.a += transmissionSample.a;\n transmittance[ i ] = diffuseColor[ i ] * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance )[ i ];\n }\n transmittedLight.a /= 3.0;\n \n #else\n \n vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\n vec3 refractedRayExit = position + transmissionRay;\n vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\n vec2 refractionCoords = ndcPos.xy / ndcPos.w;\n refractionCoords += 1.0;\n refractionCoords /= 2.0;\n transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\n transmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance );\n \n #endif\n vec3 attenuatedColor = transmittance * transmittedLight.rgb;\n vec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\n float transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0;\n return vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor );\n }\n#endif",uv_pars_fragment:"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\n varying vec2 vUv;\n#endif\n#ifdef USE_MAP\n varying vec2 vMapUv;\n#endif\n#ifdef USE_ALPHAMAP\n varying vec2 vAlphaMapUv;\n#endif\n#ifdef USE_LIGHTMAP\n varying vec2 vLightMapUv;\n#endif\n#ifdef USE_AOMAP\n varying vec2 vAoMapUv;\n#endif\n#ifdef USE_BUMPMAP\n varying vec2 vBumpMapUv;\n#endif\n#ifdef USE_NORMALMAP\n varying vec2 vNormalMapUv;\n#endif\n#ifdef USE_EMISSIVEMAP\n varying vec2 vEmissiveMapUv;\n#endif\n#ifdef USE_METALNESSMAP\n varying vec2 vMetalnessMapUv;\n#endif\n#ifdef USE_ROUGHNESSMAP\n varying vec2 vRoughnessMapUv;\n#endif\n#ifdef USE_ANISOTROPYMAP\n varying vec2 vAnisotropyMapUv;\n#endif\n#ifdef USE_CLEARCOATMAP\n varying vec2 vClearcoatMapUv;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n varying vec2 vClearcoatNormalMapUv;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n varying vec2 vClearcoatRoughnessMapUv;\n#endif\n#ifdef USE_IRIDESCENCEMAP\n varying vec2 vIridescenceMapUv;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n varying vec2 vIridescenceThicknessMapUv;\n#endif\n#ifdef USE_SHEEN_COLORMAP\n varying vec2 vSheenColorMapUv;\n#endif\n#ifdef USE_SHEEN_ROUGHNESSMAP\n varying vec2 vSheenRoughnessMapUv;\n#endif\n#ifdef USE_SPECULARMAP\n varying vec2 vSpecularMapUv;\n#endif\n#ifdef USE_SPECULAR_COLORMAP\n varying vec2 vSpecularColorMapUv;\n#endif\n#ifdef USE_SPECULAR_INTENSITYMAP\n varying vec2 vSpecularIntensityMapUv;\n#endif\n#ifdef USE_TRANSMISSIONMAP\n uniform mat3 transmissionMapTransform;\n varying vec2 vTransmissionMapUv;\n#endif\n#ifdef USE_THICKNESSMAP\n uniform mat3 thicknessMapTransform;\n varying vec2 vThicknessMapUv;\n#endif",uv_pars_vertex:"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\n varying vec2 vUv;\n#endif\n#ifdef USE_MAP\n uniform mat3 mapTransform;\n varying vec2 vMapUv;\n#endif\n#ifdef USE_ALPHAMAP\n uniform mat3 alphaMapTransform;\n varying vec2 vAlphaMapUv;\n#endif\n#ifdef USE_LIGHTMAP\n uniform mat3 lightMapTransform;\n varying vec2 vLightMapUv;\n#endif\n#ifdef USE_AOMAP\n uniform mat3 aoMapTransform;\n varying vec2 vAoMapUv;\n#endif\n#ifdef USE_BUMPMAP\n uniform mat3 bumpMapTransform;\n varying vec2 vBumpMapUv;\n#endif\n#ifdef USE_NORMALMAP\n uniform mat3 normalMapTransform;\n varying vec2 vNormalMapUv;\n#endif\n#ifdef USE_DISPLACEMENTMAP\n uniform mat3 displacementMapTransform;\n varying vec2 vDisplacementMapUv;\n#endif\n#ifdef USE_EMISSIVEMAP\n uniform mat3 emissiveMapTransform;\n varying vec2 vEmissiveMapUv;\n#endif\n#ifdef USE_METALNESSMAP\n uniform mat3 metalnessMapTransform;\n varying vec2 vMetalnessMapUv;\n#endif\n#ifdef USE_ROUGHNESSMAP\n uniform mat3 roughnessMapTransform;\n varying vec2 vRoughnessMapUv;\n#endif\n#ifdef USE_ANISOTROPYMAP\n uniform mat3 anisotropyMapTransform;\n varying vec2 vAnisotropyMapUv;\n#endif\n#ifdef USE_CLEARCOATMAP\n uniform mat3 clearcoatMapTransform;\n varying vec2 vClearcoatMapUv;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n uniform mat3 clearcoatNormalMapTransform;\n varying vec2 vClearcoatNormalMapUv;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n uniform mat3 clearcoatRoughnessMapTransform;\n varying vec2 vClearcoatRoughnessMapUv;\n#endif\n#ifdef USE_SHEEN_COLORMAP\n uniform mat3 sheenColorMapTransform;\n varying vec2 vSheenColorMapUv;\n#endif\n#ifdef USE_SHEEN_ROUGHNESSMAP\n uniform mat3 sheenRoughnessMapTransform;\n varying vec2 vSheenRoughnessMapUv;\n#endif\n#ifdef USE_IRIDESCENCEMAP\n uniform mat3 iridescenceMapTransform;\n varying vec2 vIridescenceMapUv;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n uniform mat3 iridescenceThicknessMapTransform;\n varying vec2 vIridescenceThicknessMapUv;\n#endif\n#ifdef USE_SPECULARMAP\n uniform mat3 specularMapTransform;\n varying vec2 vSpecularMapUv;\n#endif\n#ifdef USE_SPECULAR_COLORMAP\n uniform mat3 specularColorMapTransform;\n varying vec2 vSpecularColorMapUv;\n#endif\n#ifdef USE_SPECULAR_INTENSITYMAP\n uniform mat3 specularIntensityMapTransform;\n varying vec2 vSpecularIntensityMapUv;\n#endif\n#ifdef USE_TRANSMISSIONMAP\n uniform mat3 transmissionMapTransform;\n varying vec2 vTransmissionMapUv;\n#endif\n#ifdef USE_THICKNESSMAP\n uniform mat3 thicknessMapTransform;\n varying vec2 vThicknessMapUv;\n#endif",uv_vertex:"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\n vUv = vec3( uv, 1 ).xy;\n#endif\n#ifdef USE_MAP\n vMapUv = ( mapTransform * vec3( MAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_ALPHAMAP\n vAlphaMapUv = ( alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_LIGHTMAP\n vLightMapUv = ( lightMapTransform * vec3( LIGHTMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_AOMAP\n vAoMapUv = ( aoMapTransform * vec3( AOMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_BUMPMAP\n vBumpMapUv = ( bumpMapTransform * vec3( BUMPMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_NORMALMAP\n vNormalMapUv = ( normalMapTransform * vec3( NORMALMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_DISPLACEMENTMAP\n vDisplacementMapUv = ( displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_EMISSIVEMAP\n vEmissiveMapUv = ( emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_METALNESSMAP\n vMetalnessMapUv = ( metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_ROUGHNESSMAP\n vRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_ANISOTROPYMAP\n vAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_CLEARCOATMAP\n vClearcoatMapUv = ( clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n vClearcoatNormalMapUv = ( clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n vClearcoatRoughnessMapUv = ( clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_IRIDESCENCEMAP\n vIridescenceMapUv = ( iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n vIridescenceThicknessMapUv = ( iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SHEEN_COLORMAP\n vSheenColorMapUv = ( sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SHEEN_ROUGHNESSMAP\n vSheenRoughnessMapUv = ( sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SPECULARMAP\n vSpecularMapUv = ( specularMapTransform * vec3( SPECULARMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SPECULAR_COLORMAP\n vSpecularColorMapUv = ( specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SPECULAR_INTENSITYMAP\n vSpecularIntensityMapUv = ( specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_TRANSMISSIONMAP\n vTransmissionMapUv = ( transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_THICKNESSMAP\n vThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy;\n#endif",worldpos_vertex:"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0\n vec4 worldPosition = vec4( transformed, 1.0 );\n #ifdef USE_BATCHING\n worldPosition = batchingMatrix * worldPosition;\n #endif\n #ifdef USE_INSTANCING\n worldPosition = instanceMatrix * worldPosition;\n #endif\n worldPosition = modelMatrix * worldPosition;\n#endif",background_vert:"varying vec2 vUv;\nuniform mat3 uvTransform;\nvoid main() {\n vUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n gl_Position = vec4( position.xy, 1.0, 1.0 );\n}",background_frag:"uniform sampler2D t2D;\nuniform float backgroundIntensity;\nvarying vec2 vUv;\nvoid main() {\n vec4 texColor = texture2D( t2D, vUv );\n #ifdef DECODE_VIDEO_TEXTURE\n texColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w );\n #endif\n texColor.rgb *= backgroundIntensity;\n gl_FragColor = texColor;\n #include \n #include \n}",backgroundCube_vert:"varying vec3 vWorldDirection;\n#include \nvoid main() {\n vWorldDirection = transformDirection( position, modelMatrix );\n #include \n #include \n gl_Position.z = gl_Position.w;\n}",backgroundCube_frag:"#ifdef ENVMAP_TYPE_CUBE\n uniform samplerCube envMap;\n#elif defined( ENVMAP_TYPE_CUBE_UV )\n uniform sampler2D envMap;\n#endif\nuniform float flipEnvMap;\nuniform float backgroundBlurriness;\nuniform float backgroundIntensity;\nuniform mat3 backgroundRotation;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n #ifdef ENVMAP_TYPE_CUBE\n vec4 texColor = textureCube( envMap, backgroundRotation * vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) );\n #elif defined( ENVMAP_TYPE_CUBE_UV )\n vec4 texColor = textureCubeUV( envMap, backgroundRotation * vWorldDirection, backgroundBlurriness );\n #else\n vec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n #endif\n texColor.rgb *= backgroundIntensity;\n gl_FragColor = texColor;\n #include \n #include \n}",cube_vert:"varying vec3 vWorldDirection;\n#include \nvoid main() {\n vWorldDirection = transformDirection( position, modelMatrix );\n #include \n #include \n gl_Position.z = gl_Position.w;\n}",cube_frag:"uniform samplerCube tCube;\nuniform float tFlip;\nuniform float opacity;\nvarying vec3 vWorldDirection;\nvoid main() {\n vec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );\n gl_FragColor = texColor;\n gl_FragColor.a *= opacity;\n #include \n #include \n}",depth_vert:"#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvarying vec2 vHighPrecisionZW;\nvoid main() {\n #include \n #include \n #include \n #include \n #ifdef USE_DISPLACEMENTMAP\n #include \n #include \n #include \n #endif\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n vHighPrecisionZW = gl_Position.zw;\n}",depth_frag:"#if DEPTH_PACKING == 3200\n uniform float opacity;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvarying vec2 vHighPrecisionZW;\nvoid main() {\n vec4 diffuseColor = vec4( 1.0 );\n #include \n #if DEPTH_PACKING == 3200\n diffuseColor.a = opacity;\n #endif\n #include \n #include \n #include \n #include \n #include \n float fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\n #if DEPTH_PACKING == 3200\n gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\n #elif DEPTH_PACKING == 3201\n gl_FragColor = packDepthToRGBA( fragCoordZ );\n #elif DEPTH_PACKING == 3202\n gl_FragColor = vec4( packDepthToRGB( fragCoordZ ), 1.0 );\n #elif DEPTH_PACKING == 3203\n gl_FragColor = vec4( packDepthToRG( fragCoordZ ), 0.0, 1.0 );\n #endif\n}",distanceRGBA_vert:"#define DISTANCE\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n #include \n #include \n #include \n #include \n #ifdef USE_DISPLACEMENTMAP\n #include \n #include \n #include \n #endif\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n vWorldPosition = worldPosition.xyz;\n}",distanceRGBA_frag:"#define DISTANCE\nuniform vec3 referencePosition;\nuniform float nearDistance;\nuniform float farDistance;\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main () {\n vec4 diffuseColor = vec4( 1.0 );\n #include \n #include \n #include \n #include \n #include \n float dist = length( vWorldPosition - referencePosition );\n dist = ( dist - nearDistance ) / ( farDistance - nearDistance );\n dist = saturate( dist );\n gl_FragColor = packDepthToRGBA( dist );\n}",equirect_vert:"varying vec3 vWorldDirection;\n#include \nvoid main() {\n vWorldDirection = transformDirection( position, modelMatrix );\n #include \n #include \n}",equirect_frag:"uniform sampler2D tEquirect;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n vec3 direction = normalize( vWorldDirection );\n vec2 sampleUV = equirectUv( direction );\n gl_FragColor = texture2D( tEquirect, sampleUV );\n #include \n #include \n}",linedashed_vert:"uniform float scale;\nattribute float lineDistance;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n vLineDistance = scale * lineDistance;\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n}",linedashed_frag:"uniform vec3 diffuse;\nuniform float opacity;\nuniform float dashSize;\nuniform float totalSize;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n vec4 diffuseColor = vec4( diffuse, opacity );\n #include \n if ( mod( vLineDistance, totalSize ) > dashSize ) {\n discard;\n }\n vec3 outgoingLight = vec3( 0.0 );\n #include \n #include \n #include \n outgoingLight = diffuseColor.rgb;\n #include \n #include \n #include \n #include \n #include \n}",meshbasic_vert:"#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n #include \n #include \n #include \n #include \n #include \n #if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\n #include \n #include \n #include \n #include \n #include \n #endif\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n}",meshbasic_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#ifndef FLAT_SHADED\n varying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n vec4 diffuseColor = vec4( diffuse, opacity );\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n #ifdef USE_LIGHTMAP\n vec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\n reflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI;\n #else\n reflectedLight.indirectDiffuse += vec3( 1.0 );\n #endif\n #include \n reflectedLight.indirectDiffuse *= diffuseColor.rgb;\n vec3 outgoingLight = reflectedLight.indirectDiffuse;\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n}",meshlambert_vert:"#define LAMBERT\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n vViewPosition = - mvPosition.xyz;\n #include \n #include \n #include \n #include \n}",meshlambert_frag:"#define LAMBERT\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n vec4 diffuseColor = vec4( diffuse, opacity );\n #include \n ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n vec3 totalEmissiveRadiance = emissive;\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n}",meshmatcap_vert:"#define MATCAP\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n vViewPosition = - mvPosition.xyz;\n}",meshmatcap_frag:"#define MATCAP\nuniform vec3 diffuse;\nuniform float opacity;\nuniform sampler2D matcap;\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n vec4 diffuseColor = vec4( diffuse, opacity );\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n vec3 viewDir = normalize( vViewPosition );\n vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\n vec3 y = cross( viewDir, x );\n vec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\n #ifdef USE_MATCAP\n vec4 matcapColor = texture2D( matcap, uv );\n #else\n vec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 );\n #endif\n vec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\n #include \n #include \n #include \n #include \n #include \n #include \n}",meshnormal_vert:"#define NORMAL\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\n varying vec3 vViewPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\n vViewPosition = - mvPosition.xyz;\n#endif\n}",meshnormal_frag:"#define NORMAL\nuniform float opacity;\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\n varying vec3 vViewPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n vec4 diffuseColor = vec4( 0.0, 0.0, 0.0, opacity );\n #include \n #include \n #include \n #include \n gl_FragColor = vec4( packNormalToRGB( normal ), diffuseColor.a );\n #ifdef OPAQUE\n gl_FragColor.a = 1.0;\n #endif\n}",meshphong_vert:"#define PHONG\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n vViewPosition = - mvPosition.xyz;\n #include \n #include \n #include \n #include \n}",meshphong_frag:"#define PHONG\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n vec4 diffuseColor = vec4( diffuse, opacity );\n #include \n ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n vec3 totalEmissiveRadiance = emissive;\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n}",meshphysical_vert:"#define STANDARD\nvarying vec3 vViewPosition;\n#ifdef USE_TRANSMISSION\n varying vec3 vWorldPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n vViewPosition = - mvPosition.xyz;\n #include \n #include \n #include \n#ifdef USE_TRANSMISSION\n vWorldPosition = worldPosition.xyz;\n#endif\n}",meshphysical_frag:"#define STANDARD\n#ifdef PHYSICAL\n #define IOR\n #define USE_SPECULAR\n#endif\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifdef IOR\n uniform float ior;\n#endif\n#ifdef USE_SPECULAR\n uniform float specularIntensity;\n uniform vec3 specularColor;\n #ifdef USE_SPECULAR_COLORMAP\n uniform sampler2D specularColorMap;\n #endif\n #ifdef USE_SPECULAR_INTENSITYMAP\n uniform sampler2D specularIntensityMap;\n #endif\n#endif\n#ifdef USE_CLEARCOAT\n uniform float clearcoat;\n uniform float clearcoatRoughness;\n#endif\n#ifdef USE_DISPERSION\n uniform float dispersion;\n#endif\n#ifdef USE_IRIDESCENCE\n uniform float iridescence;\n uniform float iridescenceIOR;\n uniform float iridescenceThicknessMinimum;\n uniform float iridescenceThicknessMaximum;\n#endif\n#ifdef USE_SHEEN\n uniform vec3 sheenColor;\n uniform float sheenRoughness;\n #ifdef USE_SHEEN_COLORMAP\n uniform sampler2D sheenColorMap;\n #endif\n #ifdef USE_SHEEN_ROUGHNESSMAP\n uniform sampler2D sheenRoughnessMap;\n #endif\n#endif\n#ifdef USE_ANISOTROPY\n uniform vec2 anisotropyVector;\n #ifdef USE_ANISOTROPYMAP\n uniform sampler2D anisotropyMap;\n #endif\n#endif\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n vec4 diffuseColor = vec4( diffuse, opacity );\n #include \n ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n vec3 totalEmissiveRadiance = emissive;\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n vec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\n vec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\n #include \n vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\n #ifdef USE_SHEEN\n float sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );\n outgoingLight = outgoingLight * sheenEnergyComp + sheenSpecularDirect + sheenSpecularIndirect;\n #endif\n #ifdef USE_CLEARCOAT\n float dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) );\n vec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\n outgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat;\n #endif\n #include \n #include \n #include \n #include \n #include \n #include \n}",meshtoon_vert:"#define TOON\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n vViewPosition = - mvPosition.xyz;\n #include \n #include \n #include \n}",meshtoon_frag:"#define TOON\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n vec4 diffuseColor = vec4( diffuse, opacity );\n #include \n ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n vec3 totalEmissiveRadiance = emissive;\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n #include \n #include \n #include \n #include \n #include \n #include \n}",points_vert:"uniform float size;\nuniform float scale;\n#include \n#include \n#include \n#include \n#include \n#include \n#ifdef USE_POINTS_UV\n varying vec2 vUv;\n uniform mat3 uvTransform;\n#endif\nvoid main() {\n #ifdef USE_POINTS_UV\n vUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n #endif\n #include \n #include \n #include \n #include \n #include \n #include \n gl_PointSize = size;\n #ifdef USE_SIZEATTENUATION\n bool isPerspective = isPerspectiveMatrix( projectionMatrix );\n if ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\n #endif\n #include \n #include \n #include \n #include \n}",points_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n vec4 diffuseColor = vec4( diffuse, opacity );\n #include \n vec3 outgoingLight = vec3( 0.0 );\n #include \n #include \n #include \n #include \n #include \n outgoingLight = diffuseColor.rgb;\n #include \n #include \n #include \n #include \n #include \n}",shadow_vert:"#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n}",shadow_frag:"uniform vec3 color;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n #include \n gl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\n #include \n #include \n #include \n}",sprite_vert:"uniform float rotation;\nuniform vec2 center;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n #include \n vec4 mvPosition = modelViewMatrix[ 3 ];\n vec2 scale = vec2( length( modelMatrix[ 0 ].xyz ), length( modelMatrix[ 1 ].xyz ) );\n #ifndef USE_SIZEATTENUATION\n bool isPerspective = isPerspectiveMatrix( projectionMatrix );\n if ( isPerspective ) scale *= - mvPosition.z;\n #endif\n vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\n vec2 rotatedPosition;\n rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\n rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\n mvPosition.xy += rotatedPosition;\n gl_Position = projectionMatrix * mvPosition;\n #include \n #include \n #include \n}",sprite_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n vec4 diffuseColor = vec4( diffuse, opacity );\n #include \n vec3 outgoingLight = vec3( 0.0 );\n #include \n #include \n #include \n #include \n #include \n outgoingLight = diffuseColor.rgb;\n #include \n #include \n #include \n #include \n}"},ok={common:{diffuse:{value:new tz(0xffffff)},opacity:{value:1},map:{value:null},mapTransform:{value:new Z},alphaMap:{value:null},alphaMapTransform:{value:new Z},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new Z}},envmap:{envMap:{value:null},envMapRotation:{value:new Z},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new Z}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new Z}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new Z},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new Z},normalScale:{value:new Y(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new Z},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new Z}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new Z}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new Z}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new tz(0xffffff)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new tz(0xffffff)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new Z},alphaTest:{value:0},uvTransform:{value:new Z}},sprite:{diffuse:{value:new tz(0xffffff)},opacity:{value:1},center:{value:new Y(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new Z},alphaMap:{value:null},alphaMapTransform:{value:new Z},alphaTest:{value:0}}},oH={basic:{uniforms:n_([ok.common,ok.specularmap,ok.envmap,ok.aomap,ok.lightmap,ok.fog]),vertexShader:oB.meshbasic_vert,fragmentShader:oB.meshbasic_frag},lambert:{uniforms:n_([ok.common,ok.specularmap,ok.envmap,ok.aomap,ok.lightmap,ok.emissivemap,ok.bumpmap,ok.normalmap,ok.displacementmap,ok.fog,ok.lights,{emissive:{value:new tz(0)}}]),vertexShader:oB.meshlambert_vert,fragmentShader:oB.meshlambert_frag},phong:{uniforms:n_([ok.common,ok.specularmap,ok.envmap,ok.aomap,ok.lightmap,ok.emissivemap,ok.bumpmap,ok.normalmap,ok.displacementmap,ok.fog,ok.lights,{emissive:{value:new tz(0)},specular:{value:new tz(1118481)},shininess:{value:30}}]),vertexShader:oB.meshphong_vert,fragmentShader:oB.meshphong_frag},standard:{uniforms:n_([ok.common,ok.envmap,ok.aomap,ok.lightmap,ok.emissivemap,ok.bumpmap,ok.normalmap,ok.displacementmap,ok.roughnessmap,ok.metalnessmap,ok.fog,ok.lights,{emissive:{value:new tz(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:oB.meshphysical_vert,fragmentShader:oB.meshphysical_frag},toon:{uniforms:n_([ok.common,ok.aomap,ok.lightmap,ok.emissivemap,ok.bumpmap,ok.normalmap,ok.displacementmap,ok.gradientmap,ok.fog,ok.lights,{emissive:{value:new tz(0)}}]),vertexShader:oB.meshtoon_vert,fragmentShader:oB.meshtoon_frag},matcap:{uniforms:n_([ok.common,ok.bumpmap,ok.normalmap,ok.displacementmap,ok.fog,{matcap:{value:null}}]),vertexShader:oB.meshmatcap_vert,fragmentShader:oB.meshmatcap_frag},points:{uniforms:n_([ok.points,ok.fog]),vertexShader:oB.points_vert,fragmentShader:oB.points_frag},dashed:{uniforms:n_([ok.common,ok.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:oB.linedashed_vert,fragmentShader:oB.linedashed_frag},depth:{uniforms:n_([ok.common,ok.displacementmap]),vertexShader:oB.depth_vert,fragmentShader:oB.depth_frag},normal:{uniforms:n_([ok.common,ok.bumpmap,ok.normalmap,ok.displacementmap,{opacity:{value:1}}]),vertexShader:oB.meshnormal_vert,fragmentShader:oB.meshnormal_frag},sprite:{uniforms:n_([ok.sprite,ok.fog]),vertexShader:oB.sprite_vert,fragmentShader:oB.sprite_frag},background:{uniforms:{uvTransform:{value:new Z},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:oB.background_vert,fragmentShader:oB.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new Z}},vertexShader:oB.backgroundCube_vert,fragmentShader:oB.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:oB.cube_vert,fragmentShader:oB.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:oB.equirect_vert,fragmentShader:oB.equirect_frag},distanceRGBA:{uniforms:n_([ok.common,ok.displacementmap,{referencePosition:{value:new eE},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:oB.distanceRGBA_vert,fragmentShader:oB.distanceRGBA_frag},shadow:{uniforms:n_([ok.lights,ok.fog,{color:{value:new tz(0)},opacity:{value:1}}]),vertexShader:oB.shadow_vert,fragmentShader:oB.shadow_frag}};oH.physical={uniforms:n_([oH.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new Z},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new Z},clearcoatNormalScale:{value:new Y(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new Z},dispersion:{value:0},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new Z},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new Z},sheen:{value:0},sheenColor:{value:new tz(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new Z},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new Z},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new Z},transmissionSamplerSize:{value:new Y},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new Z},attenuationDistance:{value:0},attenuationColor:{value:new tz(0)},specularColor:{value:new tz(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new Z},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new Z},anisotropyVector:{value:new Y},anisotropyMap:{value:null},anisotropyMapTransform:{value:new Z}}]),vertexShader:oB.meshphysical_vert,fragmentShader:oB.meshphysical_frag};let oV={r:0,b:0,g:0},oG=new tn,oW=new e2;function oj(e,t,n,i,r,a,s){let o,l,u=new tz(0),c=+(!0!==a),h=null,d=0,p=null;function f(e){let i=!0===e.isScene?e.background:null;return i&&i.isTexture&&(i=(e.backgroundBlurriness>0?n:t).get(i)),i}function m(t,n){t.getRGB(oV,ny(e)),i.buffers.color.setClear(oV.r,oV.g,oV.b,n,s)}return{getClearColor:function(){return u},setClearColor:function(e,t=1){u.set(e),m(u,c=t)},getClearAlpha:function(){return c},setClearAlpha:function(e){m(u,c=e)},render:function(t){let n=!1,r=f(t);null===r?m(u,c):r&&r.isColor&&(m(r,1),n=!0);let a=e.xr.getEnvironmentBlendMode();"additive"===a?i.buffers.color.setClear(0,0,0,1,s):"alpha-blend"===a&&i.buffers.color.setClear(0,0,0,0,s),(e.autoClear||n)&&(i.buffers.depth.setTest(!0),i.buffers.depth.setMask(!0),i.buffers.color.setMask(!0),e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil))},addToRenderList:function(t,n){let i=f(n);i&&(i.isCubeTexture||306===i.mapping)?(void 0===l&&((l=new nf(new ng(1,1,1),new nb({name:"BackgroundCubeMaterial",uniforms:nv(oH.backgroundCube.uniforms),vertexShader:oH.backgroundCube.vertexShader,fragmentShader:oH.backgroundCube.fragmentShader,side:1,depthTest:!1,depthWrite:!1,fog:!1}))).geometry.deleteAttribute("normal"),l.geometry.deleteAttribute("uv"),l.onBeforeRender=function(e,t,n){this.matrixWorld.copyPosition(n.matrixWorld)},Object.defineProperty(l.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),r.update(l)),oG.copy(n.backgroundRotation),oG.x*=-1,oG.y*=-1,oG.z*=-1,i.isCubeTexture&&!1===i.isRenderTargetTexture&&(oG.y*=-1,oG.z*=-1),l.material.uniforms.envMap.value=i,l.material.uniforms.flipEnvMap.value=i.isCubeTexture&&!1===i.isRenderTargetTexture?-1:1,l.material.uniforms.backgroundBlurriness.value=n.backgroundBlurriness,l.material.uniforms.backgroundIntensity.value=n.backgroundIntensity,l.material.uniforms.backgroundRotation.value.setFromMatrix4(oW.makeRotationFromEuler(oG)),l.material.toneMapped=eu.getTransfer(i.colorSpace)!==U,(h!==i||d!==i.version||p!==e.toneMapping)&&(l.material.needsUpdate=!0,h=i,d=i.version,p=e.toneMapping),l.layers.enableAll(),t.unshift(l,l.geometry,l.material,0,0,null)):i&&i.isTexture&&(void 0===o&&((o=new nf(new r9(2,2),new nb({name:"BackgroundMaterial",uniforms:nv(oH.background.uniforms),vertexShader:oH.background.vertexShader,fragmentShader:oH.background.fragmentShader,side:0,depthTest:!1,depthWrite:!1,fog:!1}))).geometry.deleteAttribute("normal"),Object.defineProperty(o.material,"map",{get:function(){return this.uniforms.t2D.value}}),r.update(o)),o.material.uniforms.t2D.value=i,o.material.uniforms.backgroundIntensity.value=n.backgroundIntensity,o.material.toneMapped=eu.getTransfer(i.colorSpace)!==U,!0===i.matrixAutoUpdate&&i.updateMatrix(),o.material.uniforms.uvTransform.value.copy(i.matrix),(h!==i||d!==i.version||p!==e.toneMapping)&&(o.material.needsUpdate=!0,h=i,d=i.version,p=e.toneMapping),o.layers.enableAll(),t.unshift(o,o.geometry,o.material,0,0,null))},dispose:function(){void 0!==l&&(l.geometry.dispose(),l.material.dispose()),void 0!==o&&(o.geometry.dispose(),o.material.dispose())}}}function oX(e,t){let n=e.getParameter(e.MAX_VERTEX_ATTRIBS),i={},r=u(null),a=r,s=!1;function o(t){return e.bindVertexArray(t)}function l(t){return e.deleteVertexArray(t)}function u(e){let t=[],i=[],r=[];for(let e=0;e=0){let n=r[t],i=s[t];if(void 0===i&&("instanceMatrix"===t&&e.instanceMatrix&&(i=e.instanceMatrix),"instanceColor"===t&&e.instanceColor&&(i=e.instanceColor)),void 0===n||n.attribute!==i||i&&n.data!==i.data)return!0;o++}return a.attributesNum!==o||a.index!==i}(n,m,l,g))&&function(e,t,n,i){let r={},s=t.attributes,o=0,l=n.getAttributes();for(let t in l)if(l[t].location>=0){let n=s[t];void 0===n&&("instanceMatrix"===t&&e.instanceMatrix&&(n=e.instanceMatrix),"instanceColor"===t&&e.instanceColor&&(n=e.instanceColor));let i={};i.attribute=n,n&&n.data&&(i.data=n.data),r[t]=i,o++}a.attributes=r,a.attributesNum=o,a.index=i}(n,m,l,g),null!==g&&t.update(g,e.ELEMENT_ARRAY_BUFFER),(M||s)&&(s=!1,function(n,i,r,a){c();let s=a.attributes,o=r.getAttributes(),l=i.defaultAttributeValues;for(let i in o){let r=o[i];if(r.location>=0){let o=s[i];if(void 0===o&&("instanceMatrix"===i&&n.instanceMatrix&&(o=n.instanceMatrix),"instanceColor"===i&&n.instanceColor&&(o=n.instanceColor)),void 0!==o){let i=o.normalized,s=o.itemSize,l=t.get(o);if(void 0===l)continue;let u=l.buffer,c=l.type,p=l.bytesPerElement,m=c===e.INT||c===e.UNSIGNED_INT||1013===o.gpuType;if(o.isInterleavedBufferAttribute){let t=o.data,l=t.stride,g=o.offset;if(t.isInstancedInterleavedBuffer){for(let e=0;e0&&e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.HIGH_FLOAT).precision>0)return"highp";t="mediump"}return"mediump"===t&&e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.MEDIUM_FLOAT).precision>0&&e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}let s=void 0!==n.precision?n.precision:"highp",o=a(s);o!==s&&(console.warn("THREE.WebGLRenderer:",s,"not supported, using",o,"instead."),s=o);let l=!0===n.logarithmicDepthBuffer,u=!0===n.reverseDepthBuffer&&t.has("EXT_clip_control"),c=e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS),h=e.getParameter(e.MAX_VERTEX_TEXTURE_IMAGE_UNITS);return{isWebGL2:!0,getMaxAnisotropy:function(){if(void 0!==r)return r;if(!0===t.has("EXT_texture_filter_anisotropic")){let n=t.get("EXT_texture_filter_anisotropic");r=e.getParameter(n.MAX_TEXTURE_MAX_ANISOTROPY_EXT)}else r=0;return r},getMaxPrecision:a,textureFormatReadable:function(t){return 1023===t||i.convert(t)===e.getParameter(e.IMPLEMENTATION_COLOR_READ_FORMAT)},textureTypeReadable:function(n){let r=1016===n&&(t.has("EXT_color_buffer_half_float")||t.has("EXT_color_buffer_float"));return 1009===n||i.convert(n)===e.getParameter(e.IMPLEMENTATION_COLOR_READ_TYPE)||1015===n||!!r},precision:s,logarithmicDepthBuffer:l,reverseDepthBuffer:u,maxTextures:c,maxVertexTextures:h,maxTextureSize:e.getParameter(e.MAX_TEXTURE_SIZE),maxCubemapSize:e.getParameter(e.MAX_CUBE_MAP_TEXTURE_SIZE),maxAttributes:e.getParameter(e.MAX_VERTEX_ATTRIBS),maxVertexUniforms:e.getParameter(e.MAX_VERTEX_UNIFORM_VECTORS),maxVaryings:e.getParameter(e.MAX_VARYING_VECTORS),maxFragmentUniforms:e.getParameter(e.MAX_FRAGMENT_UNIFORM_VECTORS),vertexTextures:h>0,maxSamples:e.getParameter(e.MAX_SAMPLES)}}function oZ(e){let t=this,n=null,i=0,r=!1,a=!1,s=new iy,o=new Z,l={value:null,needsUpdate:!1};function u(e,n,i,r){let a=null!==e?e.length:0,u=null;if(0!==a){if(u=l.value,!0!==r||null===u){let t=i+4*a,r=n.matrixWorldInverse;o.getNormalMatrix(r),(null===u||u.length0),t.numPlanes=i,t.numIntersection=0)}}function oJ(e){let t=new WeakMap;function n(e,t){return 303===t?e.mapping=301:304===t&&(e.mapping=302),e}function i(e){let n=e.target;n.removeEventListener("dispose",i);let r=t.get(n);void 0!==r&&(t.delete(n),r.dispose())}return{get:function(r){if(r&&r.isTexture){let a=r.mapping;if(303===a||304===a)if(t.has(r))return n(t.get(r).texture,r.mapping);else{let a=r.image;if(!a||!(a.height>0))return null;{let s=new nR(a.height);return s.fromEquirectangularTexture(e,r),t.set(r,s),r.addEventListener("dispose",i),n(s.texture,r.mapping)}}}return r},dispose:function(){t=new WeakMap}}}let oK=[.125,.215,.35,.446,.526,.582],o$=new sn,oQ=new tz,o0=null,o1=0,o2=0,o3=!1,o4=(1+Math.sqrt(5))/2,o5=1/o4,o6=[new eE(-o4,o5,0),new eE(o4,o5,0),new eE(-o5,0,o4),new eE(o5,0,o4),new eE(0,o4,-o5),new eE(0,o4,o5),new eE(-1,1,-1),new eE(1,1,-1),new eE(-1,1,1),new eE(1,1,1)];class o8{constructor(e){this._renderer=e,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._lodPlanes=[],this._sizeLods=[],this._sigmas=[],this._blurMaterial=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._compileMaterial(this._blurMaterial)}fromScene(e,t=0,n=.1,i=100){o0=this._renderer.getRenderTarget(),o1=this._renderer.getActiveCubeFace(),o2=this._renderer.getActiveMipmapLevel(),o3=this._renderer.xr.enabled,this._renderer.xr.enabled=!1,this._setSize(256);let r=this._allocateTargets();return r.depthBuffer=!0,this._sceneToCubeUV(e,n,i,r),t>0&&this._blur(r,0,0,t),this._applyPMREM(r),this._cleanup(r),r}fromEquirectangular(e,t=null){return this._fromTexture(e,t)}fromCubemap(e,t=null){return this._fromTexture(e,t)}compileCubemapShader(){null===this._cubemapMaterial&&(this._cubemapMaterial=lt(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){null===this._equirectMaterial&&(this._equirectMaterial=le(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),null!==this._cubemapMaterial&&this._cubemapMaterial.dispose(),null!==this._equirectMaterial&&this._equirectMaterial.dispose()}_setSize(e){this._lodMax=Math.floor(Math.log2(e)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){null!==this._blurMaterial&&this._blurMaterial.dispose(),null!==this._pingPongRenderTarget&&this._pingPongRenderTarget.dispose();for(let e=0;ee-4?o=oK[s-e+4-1]:0===s&&(o=0),i.push(o);let l=1/(a-2),u=-l,c=1+l,h=[u,u,c,u,c,c,u,u,c,c,u,c],d=new Float32Array(108),p=new Float32Array(72),f=new Float32Array(36);for(let e=0;e<6;e++){let t=e%3*2/3-1,n=e>2?0:-1,i=[t,n,0,t+2/3,n,0,t+2/3,n+1,0,t,n,0,t+2/3,n+1,0,t,n+1,0];d.set(i,18*e),p.set(h,12*e);let r=[e,e,e,e,e,e];f.set(r,6*e)}let m=new nn;m.setAttribute("position",new tZ(d,3)),m.setAttribute("uv",new tZ(p,2)),m.setAttribute("faceIndex",new tZ(f,1)),t.push(m),r>4&&r--}return{lodPlanes:t,sizeLods:n,sigmas:i}}(i)),this._blurMaterial=(r=i,new nb({name:"SphericalGaussianBlur",defines:{n:20,CUBEUV_TEXEL_WIDTH:1/e,CUBEUV_TEXEL_HEIGHT:1/t,CUBEUV_MAX_MIP:`${r}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:new Float32Array(20)},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:new eE(0,1,0)}},vertexShader:ln(),fragmentShader:` + + precision mediump float; + precision mediump int; + + varying vec3 vOutputDirection; + + uniform sampler2D envMap; + uniform int samples; + uniform float weights[ n ]; + uniform bool latitudinal; + uniform float dTheta; + uniform float mipInt; + uniform vec3 poleAxis; + + #define ENVMAP_TYPE_CUBE_UV + #include + + vec3 getSample( float theta, vec3 axis ) { + + float cosTheta = cos( theta ); + // Rodrigues' axis-angle rotation + vec3 sampleDirection = vOutputDirection * cosTheta + + cross( axis, vOutputDirection ) * sin( theta ) + + axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta ); + + return bilinearCubeUV( envMap, sampleDirection, mipInt ); + + } + + void main() { + + vec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection ); + + if ( all( equal( axis, vec3( 0.0 ) ) ) ) { + + axis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x ); + + } + + axis = normalize( axis ); + + gl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 ); + gl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis ); + + for ( int i = 1; i < n; i++ ) { + + if ( i >= samples ) { + + break; + + } + + float theta = dTheta * float( i ); + gl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis ); + gl_FragColor.rgb += weights[ i ] * getSample( theta, axis ); + + } + + } + `,blending:0,depthTest:!1,depthWrite:!1}))}return i}_compileMaterial(e){let t=new nf(this._lodPlanes[0],e);this._renderer.compile(t,o$)}_sceneToCubeUV(e,t,n,i){let r=new nE(90,1,t,n),a=[1,-1,1,1,1,1],s=[1,1,1,-1,-1,-1],o=this._renderer,l=o.autoClear,u=o.toneMapping;o.getClearColor(oQ),o.toneMapping=0,o.autoClear=!1;let c=new tV({name:"PMREM.Background",side:1,depthWrite:!1,depthTest:!1}),h=new nf(new ng,c),d=!1,p=e.background;p?p.isColor&&(c.color.copy(p),e.background=null,d=!0):(c.color.copy(oQ),d=!0);for(let t=0;t<6;t++){let n=t%3;0===n?(r.up.set(0,a[t],0),r.lookAt(s[t],0,0)):1===n?(r.up.set(0,0,a[t]),r.lookAt(0,s[t],0)):(r.up.set(0,a[t],0),r.lookAt(0,0,s[t]));let l=this._cubeSize;o7(i,n*l,t>2?l:0,l,l),o.setRenderTarget(i),d&&o.render(h,r),o.render(e,r)}h.geometry.dispose(),h.material.dispose(),o.toneMapping=u,o.autoClear=l,e.background=p}_textureToCubeUV(e,t){let n=this._renderer,i=301===e.mapping||302===e.mapping;i?(null===this._cubemapMaterial&&(this._cubemapMaterial=lt()),this._cubemapMaterial.uniforms.flipEnvMap.value=!1===e.isRenderTargetTexture?-1:1):null===this._equirectMaterial&&(this._equirectMaterial=le());let r=i?this._cubemapMaterial:this._equirectMaterial,a=new nf(this._lodPlanes[0],r);r.uniforms.envMap.value=e;let s=this._cubeSize;o7(t,0,0,3*s,2*s),n.setRenderTarget(t),n.render(a,o$)}_applyPMREM(e){let t=this._renderer,n=t.autoClear;t.autoClear=!1;let i=this._lodPlanes.length;for(let t=1;t20&&console.warn(`sigmaRadians, ${r}, is too large and will clip, as it requested ${f} samples when the maximum is set to 20`);let m=[],g=0;for(let e=0;e<20;++e){let t=e/p,n=Math.exp(-t*t/2);m.push(n),0===e?g+=n:ev-4?i-v+4:0),y,3*_,2*_),o.setRenderTarget(t),o.render(u,o$)}}function o9(e,t,n){let i=new ex(e,t,n);return i.texture.mapping=306,i.texture.name="PMREM.cubeUv",i.scissorTest=!0,i}function o7(e,t,n,i,r){e.viewport.set(t,n,i,r),e.scissor.set(t,n,i,r)}function le(){return new nb({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:ln(),fragmentShader:` + + precision mediump float; + precision mediump int; + + varying vec3 vOutputDirection; + + uniform sampler2D envMap; + + #include + + void main() { + + vec3 outputDirection = normalize( vOutputDirection ); + vec2 uv = equirectUv( outputDirection ); + + gl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 ); + + } + `,blending:0,depthTest:!1,depthWrite:!1})}function lt(){return new nb({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:ln(),fragmentShader:` + + precision mediump float; + precision mediump int; + + uniform float flipEnvMap; + + varying vec3 vOutputDirection; + + uniform samplerCube envMap; + + void main() { + + gl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) ); + + } + `,blending:0,depthTest:!1,depthWrite:!1})}function ln(){return` + + precision mediump float; + precision mediump int; + + attribute float faceIndex; + + varying vec3 vOutputDirection; + + // RH coordinate system; PMREM face-indexing convention + vec3 getDirection( vec2 uv, float face ) { + + uv = 2.0 * uv - 1.0; + + vec3 direction = vec3( uv, 1.0 ); + + if ( face == 0.0 ) { + + direction = direction.zyx; // ( 1, v, u ) pos x + + } else if ( face == 1.0 ) { + + direction = direction.xzy; + direction.xz *= -1.0; // ( -u, 1, -v ) pos y + + } else if ( face == 2.0 ) { + + direction.x *= -1.0; // ( -u, v, 1 ) pos z + + } else if ( face == 3.0 ) { + + direction = direction.zyx; + direction.xz *= -1.0; // ( -1, v, -u ) neg x + + } else if ( face == 4.0 ) { + + direction = direction.xzy; + direction.xy *= -1.0; // ( -u, -1, v ) neg y + + } else if ( face == 5.0 ) { + + direction.z *= -1.0; // ( u, v, -1 ) neg z + + } + + return direction; + + } + + void main() { + + vOutputDirection = getDirection( uv, faceIndex ); + gl_Position = vec4( position, 1.0 ); + + } + `}function li(e){let t=new WeakMap,n=null;function i(e){let n=e.target;n.removeEventListener("dispose",i);let r=t.get(n);void 0!==r&&(t.delete(n),r.dispose())}return{get:function(r){if(r&&r.isTexture){let a=r.mapping,s=303===a||304===a,o=301===a||302===a;if(s||o){let a=t.get(r),l=void 0!==a?a.texture.pmremVersion:0;if(r.isRenderTargetTexture&&r.pmremVersion!==l)return null===n&&(n=new o8(e)),(a=s?n.fromEquirectangular(r,a):n.fromCubemap(r,a)).texture.pmremVersion=r.pmremVersion,t.set(r,a),a.texture;{if(void 0!==a)return a.texture;let l=r.image;return s&&l&&l.height>0||o&&l&&function(e){let t=0;for(let n=0;n<6;n++)void 0!==e[n]&&t++;return 6===t}(l)?(null===n&&(n=new o8(e)),(a=s?n.fromEquirectangular(r):n.fromCubemap(r)).texture.pmremVersion=r.pmremVersion,t.set(r,a),r.addEventListener("dispose",i),a.texture):null}}}return r},dispose:function(){t=new WeakMap,null!==n&&(n.dispose(),n=null)}}}function lr(e){let t={};function n(n){let i;if(void 0!==t[n])return t[n];switch(n){case"WEBGL_depth_texture":i=e.getExtension("WEBGL_depth_texture")||e.getExtension("MOZ_WEBGL_depth_texture")||e.getExtension("WEBKIT_WEBGL_depth_texture");break;case"EXT_texture_filter_anisotropic":i=e.getExtension("EXT_texture_filter_anisotropic")||e.getExtension("MOZ_EXT_texture_filter_anisotropic")||e.getExtension("WEBKIT_EXT_texture_filter_anisotropic");break;case"WEBGL_compressed_texture_s3tc":i=e.getExtension("WEBGL_compressed_texture_s3tc")||e.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||e.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");break;case"WEBGL_compressed_texture_pvrtc":i=e.getExtension("WEBGL_compressed_texture_pvrtc")||e.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc");break;default:i=e.getExtension(n)}return t[n]=i,i}return{has:function(e){return null!==n(e)},init:function(){n("EXT_color_buffer_float"),n("WEBGL_clip_cull_distance"),n("OES_texture_float_linear"),n("EXT_color_buffer_half_float"),n("WEBGL_multisampled_render_to_texture"),n("WEBGL_render_shared_exponent")},get:function(e){let t=n(e);return null===t&&ei("THREE.WebGLRenderer: "+e+" extension not supported."),t}}}function la(e,t,n,i){let r={},a=new WeakMap;function s(e){let o=e.target;for(let e in null!==o.index&&t.remove(o.index),o.attributes)t.remove(o.attributes[e]);o.removeEventListener("dispose",s),delete r[o.id];let l=a.get(o);l&&(t.remove(l),a.delete(o)),i.releaseStatesOfGeometry(o),!0===o.isInstancedBufferGeometry&&delete o._maxInstanceCount,n.memory.geometries--}function o(e){let n=[],i=e.index,r=e.attributes.position,s=0;if(null!==i){let e=i.array;s=i.version;for(let t=0,i=e.length;tt.maxTextureSize&&(f=Math.ceil(p/t.maxTextureSize),p=t.maxTextureSize);let m=new Float32Array(p*f*4*c),g=new eb(m,p,f,c);g.type=1015,g.needsUpdate=!0;let v=4*d;for(let t=0;t0)return e;let r=t*n,a=lm[r];if(void 0===a&&(a=new Float32Array(r),lm[r]=a),0!==t){i.toArray(a,0);for(let i=1,r=0;i!==t;++i)r+=n,e[i].toArray(a,r)}return a}function lb(e,t){if(e.length!==t.length)return!1;for(let n=0,i=e.length;n":" "} ${r}: ${n[e]}`)}return i.join("\n")}(e.getShaderSource(t),i)}}let ul=new eE;function uu(e){return""!==e}function uc(e,t){let n=t.numSpotLightShadows+t.numSpotLightMaps-t.numSpotLightShadowsWithMaps;return e.replace(/NUM_DIR_LIGHTS/g,t.numDirLights).replace(/NUM_SPOT_LIGHTS/g,t.numSpotLights).replace(/NUM_SPOT_LIGHT_MAPS/g,t.numSpotLightMaps).replace(/NUM_SPOT_LIGHT_COORDS/g,n).replace(/NUM_RECT_AREA_LIGHTS/g,t.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g,t.numPointLights).replace(/NUM_HEMI_LIGHTS/g,t.numHemiLights).replace(/NUM_DIR_LIGHT_SHADOWS/g,t.numDirLightShadows).replace(/NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS/g,t.numSpotLightShadowsWithMaps).replace(/NUM_SPOT_LIGHT_SHADOWS/g,t.numSpotLightShadows).replace(/NUM_POINT_LIGHT_SHADOWS/g,t.numPointLightShadows)}function uh(e,t){return e.replace(/NUM_CLIPPING_PLANES/g,t.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g,t.numClippingPlanes-t.numClipIntersection)}let ud=/^[ \t]*#include +<([\w\d./]+)>/gm;function up(e){return e.replace(ud,um)}let uf=new Map;function um(e,t){let n=oB[t];if(void 0===n){let e=uf.get(t);if(void 0!==e)n=oB[e],console.warn('THREE.WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.',t,e);else throw Error("Can not resolve #include <"+t+">")}return up(n)}let ug=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;function uv(e){return e.replace(ug,u_)}function u_(e,t,n,i){let r="";for(let e=parseInt(t);e0&&(r+="\n"),(a=["#define SHADER_TYPE "+n.shaderType,"#define SHADER_NAME "+n.shaderName,x].filter(uu).join("\n")).length>0&&(a+="\n");else{let e,t,i,s;r=[uy(n),"#define SHADER_TYPE "+n.shaderType,"#define SHADER_NAME "+n.shaderName,x,n.extensionClipCullDistance?"#define USE_CLIP_DISTANCE":"",n.batching?"#define USE_BATCHING":"",n.batchingColor?"#define USE_BATCHING_COLOR":"",n.instancing?"#define USE_INSTANCING":"",n.instancingColor?"#define USE_INSTANCING_COLOR":"",n.instancingMorph?"#define USE_INSTANCING_MORPH":"",n.useFog&&n.fog?"#define USE_FOG":"",n.useFog&&n.fogExp2?"#define FOG_EXP2":"",n.map?"#define USE_MAP":"",n.envMap?"#define USE_ENVMAP":"",n.envMap?"#define "+g:"",n.lightMap?"#define USE_LIGHTMAP":"",n.aoMap?"#define USE_AOMAP":"",n.bumpMap?"#define USE_BUMPMAP":"",n.normalMap?"#define USE_NORMALMAP":"",n.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",n.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",n.displacementMap?"#define USE_DISPLACEMENTMAP":"",n.emissiveMap?"#define USE_EMISSIVEMAP":"",n.anisotropy?"#define USE_ANISOTROPY":"",n.anisotropyMap?"#define USE_ANISOTROPYMAP":"",n.clearcoatMap?"#define USE_CLEARCOATMAP":"",n.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",n.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",n.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",n.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",n.specularMap?"#define USE_SPECULARMAP":"",n.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",n.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",n.roughnessMap?"#define USE_ROUGHNESSMAP":"",n.metalnessMap?"#define USE_METALNESSMAP":"",n.alphaMap?"#define USE_ALPHAMAP":"",n.alphaHash?"#define USE_ALPHAHASH":"",n.transmission?"#define USE_TRANSMISSION":"",n.transmissionMap?"#define USE_TRANSMISSIONMAP":"",n.thicknessMap?"#define USE_THICKNESSMAP":"",n.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",n.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",n.mapUv?"#define MAP_UV "+n.mapUv:"",n.alphaMapUv?"#define ALPHAMAP_UV "+n.alphaMapUv:"",n.lightMapUv?"#define LIGHTMAP_UV "+n.lightMapUv:"",n.aoMapUv?"#define AOMAP_UV "+n.aoMapUv:"",n.emissiveMapUv?"#define EMISSIVEMAP_UV "+n.emissiveMapUv:"",n.bumpMapUv?"#define BUMPMAP_UV "+n.bumpMapUv:"",n.normalMapUv?"#define NORMALMAP_UV "+n.normalMapUv:"",n.displacementMapUv?"#define DISPLACEMENTMAP_UV "+n.displacementMapUv:"",n.metalnessMapUv?"#define METALNESSMAP_UV "+n.metalnessMapUv:"",n.roughnessMapUv?"#define ROUGHNESSMAP_UV "+n.roughnessMapUv:"",n.anisotropyMapUv?"#define ANISOTROPYMAP_UV "+n.anisotropyMapUv:"",n.clearcoatMapUv?"#define CLEARCOATMAP_UV "+n.clearcoatMapUv:"",n.clearcoatNormalMapUv?"#define CLEARCOAT_NORMALMAP_UV "+n.clearcoatNormalMapUv:"",n.clearcoatRoughnessMapUv?"#define CLEARCOAT_ROUGHNESSMAP_UV "+n.clearcoatRoughnessMapUv:"",n.iridescenceMapUv?"#define IRIDESCENCEMAP_UV "+n.iridescenceMapUv:"",n.iridescenceThicknessMapUv?"#define IRIDESCENCE_THICKNESSMAP_UV "+n.iridescenceThicknessMapUv:"",n.sheenColorMapUv?"#define SHEEN_COLORMAP_UV "+n.sheenColorMapUv:"",n.sheenRoughnessMapUv?"#define SHEEN_ROUGHNESSMAP_UV "+n.sheenRoughnessMapUv:"",n.specularMapUv?"#define SPECULARMAP_UV "+n.specularMapUv:"",n.specularColorMapUv?"#define SPECULAR_COLORMAP_UV "+n.specularColorMapUv:"",n.specularIntensityMapUv?"#define SPECULAR_INTENSITYMAP_UV "+n.specularIntensityMapUv:"",n.transmissionMapUv?"#define TRANSMISSIONMAP_UV "+n.transmissionMapUv:"",n.thicknessMapUv?"#define THICKNESSMAP_UV "+n.thicknessMapUv:"",n.vertexTangents&&!1===n.flatShading?"#define USE_TANGENT":"",n.vertexColors?"#define USE_COLOR":"",n.vertexAlphas?"#define USE_COLOR_ALPHA":"",n.vertexUv1s?"#define USE_UV1":"",n.vertexUv2s?"#define USE_UV2":"",n.vertexUv3s?"#define USE_UV3":"",n.pointsUvs?"#define USE_POINTS_UV":"",n.flatShading?"#define FLAT_SHADED":"",n.skinning?"#define USE_SKINNING":"",n.morphTargets?"#define USE_MORPHTARGETS":"",n.morphNormals&&!1===n.flatShading?"#define USE_MORPHNORMALS":"",n.morphColors?"#define USE_MORPHCOLORS":"",n.morphTargetsCount>0?"#define MORPHTARGETS_TEXTURE_STRIDE "+n.morphTextureStride:"",n.morphTargetsCount>0?"#define MORPHTARGETS_COUNT "+n.morphTargetsCount:"",n.doubleSided?"#define DOUBLE_SIDED":"",n.flipSided?"#define FLIP_SIDED":"",n.shadowMapEnabled?"#define USE_SHADOWMAP":"",n.shadowMapEnabled?"#define "+f:"",n.sizeAttenuation?"#define USE_SIZEATTENUATION":"",n.numLightProbes>0?"#define USE_LIGHT_PROBES":"",n.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",n.reverseDepthBuffer?"#define USE_REVERSEDEPTHBUF":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING"," attribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR"," attribute vec3 instanceColor;","#endif","#ifdef USE_INSTANCING_MORPH"," uniform sampler2D morphTexture;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_UV1"," attribute vec2 uv1;","#endif","#ifdef USE_UV2"," attribute vec2 uv2;","#endif","#ifdef USE_UV3"," attribute vec2 uv3;","#endif","#ifdef USE_TANGENT"," attribute vec4 tangent;","#endif","#if defined( USE_COLOR_ALPHA )"," attribute vec4 color;","#elif defined( USE_COLOR )"," attribute vec3 color;","#endif","#ifdef USE_SKINNING"," attribute vec4 skinIndex;"," attribute vec4 skinWeight;","#endif","\n"].filter(uu).join("\n"),a=[uy(n),"#define SHADER_TYPE "+n.shaderType,"#define SHADER_NAME "+n.shaderName,x,n.useFog&&n.fog?"#define USE_FOG":"",n.useFog&&n.fogExp2?"#define FOG_EXP2":"",n.alphaToCoverage?"#define ALPHA_TO_COVERAGE":"",n.map?"#define USE_MAP":"",n.matcap?"#define USE_MATCAP":"",n.envMap?"#define USE_ENVMAP":"",n.envMap?"#define "+m:"",n.envMap?"#define "+g:"",n.envMap?"#define "+v:"",_?"#define CUBEUV_TEXEL_WIDTH "+_.texelWidth:"",_?"#define CUBEUV_TEXEL_HEIGHT "+_.texelHeight:"",_?"#define CUBEUV_MAX_MIP "+_.maxMip+".0":"",n.lightMap?"#define USE_LIGHTMAP":"",n.aoMap?"#define USE_AOMAP":"",n.bumpMap?"#define USE_BUMPMAP":"",n.normalMap?"#define USE_NORMALMAP":"",n.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",n.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",n.emissiveMap?"#define USE_EMISSIVEMAP":"",n.anisotropy?"#define USE_ANISOTROPY":"",n.anisotropyMap?"#define USE_ANISOTROPYMAP":"",n.clearcoat?"#define USE_CLEARCOAT":"",n.clearcoatMap?"#define USE_CLEARCOATMAP":"",n.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",n.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",n.dispersion?"#define USE_DISPERSION":"",n.iridescence?"#define USE_IRIDESCENCE":"",n.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",n.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",n.specularMap?"#define USE_SPECULARMAP":"",n.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",n.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",n.roughnessMap?"#define USE_ROUGHNESSMAP":"",n.metalnessMap?"#define USE_METALNESSMAP":"",n.alphaMap?"#define USE_ALPHAMAP":"",n.alphaTest?"#define USE_ALPHATEST":"",n.alphaHash?"#define USE_ALPHAHASH":"",n.sheen?"#define USE_SHEEN":"",n.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",n.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",n.transmission?"#define USE_TRANSMISSION":"",n.transmissionMap?"#define USE_TRANSMISSIONMAP":"",n.thicknessMap?"#define USE_THICKNESSMAP":"",n.vertexTangents&&!1===n.flatShading?"#define USE_TANGENT":"",n.vertexColors||n.instancingColor||n.batchingColor?"#define USE_COLOR":"",n.vertexAlphas?"#define USE_COLOR_ALPHA":"",n.vertexUv1s?"#define USE_UV1":"",n.vertexUv2s?"#define USE_UV2":"",n.vertexUv3s?"#define USE_UV3":"",n.pointsUvs?"#define USE_POINTS_UV":"",n.gradientMap?"#define USE_GRADIENTMAP":"",n.flatShading?"#define FLAT_SHADED":"",n.doubleSided?"#define DOUBLE_SIDED":"",n.flipSided?"#define FLIP_SIDED":"",n.shadowMapEnabled?"#define USE_SHADOWMAP":"",n.shadowMapEnabled?"#define "+f:"",n.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",n.numLightProbes>0?"#define USE_LIGHT_PROBES":"",n.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",n.decodeVideoTextureEmissive?"#define DECODE_VIDEO_TEXTURE_EMISSIVE":"",n.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",n.reverseDepthBuffer?"#define USE_REVERSEDEPTHBUF":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",0!==n.toneMapping?"#define TONE_MAPPING":"",0!==n.toneMapping?oB.tonemapping_pars_fragment:"",0!==n.toneMapping?function(e,t){let n;switch(t){case 1:n="Linear";break;case 2:n="Reinhard";break;case 3:n="Cineon";break;case 4:n="ACESFilmic";break;case 6:n="AgX";break;case 7:n="Neutral";break;case 5:n="Custom";break;default:console.warn("THREE.WebGLProgram: Unsupported toneMapping:",t),n="Linear"}return"vec3 "+e+"( vec3 color ) { return "+n+"ToneMapping( color ); }"}("toneMapping",n.toneMapping):"",n.dithering?"#define DITHERING":"",n.opaque?"#define OPAQUE":"",oB.colorspace_pars_fragment,(e=function(e){eu._getMatrix(us,eu.workingColorSpace,e);let t=`mat3( ${us.elements.map(e=>e.toFixed(4))} )`;switch(eu.getTransfer(e)){case N:return[t,"LinearTransferOETF"];case U:return[t,"sRGBTransferOETF"];default:return console.warn("THREE.WebGLProgram: Unsupported color space: ",e),[t,"LinearTransferOETF"]}}(n.outputColorSpace),`vec4 linearToOutputTexel( vec4 value ) { + return ${e[1]}( vec4( value.rgb * ${e[0]}, value.a ) ); +}`),(eu.getLuminanceCoefficients(ul),t=ul.x.toFixed(4),i=ul.y.toFixed(4),s=ul.z.toFixed(4),`float luminance( const in vec3 rgb ) { + const vec3 weights = vec3( ${t}, ${i}, ${s} ); + return dot( weights, rgb ); +}`),n.useDepthPacking?"#define DEPTH_PACKING "+n.depthPacking:"","\n"].filter(uu).join("\n")}d=uh(d=uc(d=up(d),n),n),p=uh(p=uc(p=up(p),n),n),d=uv(d),p=uv(p),!0!==n.isRawShaderMaterial&&(S="#version 300 es\n",r=[y,"#define attribute in\n#define varying out\n#define texture2D texture"].join("\n")+"\n"+r,a=["#define varying in",n.glslVersion===D?"":"layout(location = 0) out highp vec4 pc_fragColor;",n.glslVersion===D?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth\n#define texture2D texture\n#define textureCube texture\n#define texture2DProj textureProj\n#define texture2DLodEXT textureLod\n#define texture2DProjLodEXT textureProjLod\n#define textureCubeLodEXT textureLod\n#define texture2DGradEXT textureGrad\n#define texture2DProjGradEXT textureProjGrad\n#define textureCubeGradEXT textureGrad"].join("\n")+"\n"+a);let M=S+r+d,T=S+a+p,w=ur(c,c.VERTEX_SHADER,M),E=ur(c,c.FRAGMENT_SHADER,T);function A(t){if(e.debug.checkShaderErrors){let n=c.getProgramInfoLog(b).trim(),i=c.getShaderInfoLog(w).trim(),s=c.getShaderInfoLog(E).trim(),o=!0,l=!0;if(!1===c.getProgramParameter(b,c.LINK_STATUS))if(o=!1,"function"==typeof e.debug.onShaderError)e.debug.onShaderError(c,b,w,E);else{let e=uo(c,w,"vertex"),i=uo(c,E,"fragment");console.error("THREE.WebGLProgram: Shader Error "+c.getError()+" - VALIDATE_STATUS "+c.getProgramParameter(b,c.VALIDATE_STATUS)+"\n\nMaterial Name: "+t.name+"\nMaterial Type: "+t.type+"\n\nProgram Info Log: "+n+"\n"+e+"\n"+i)}else""!==n?console.warn("THREE.WebGLProgram: Program Info Log:",n):(""===i||""===s)&&(l=!1);l&&(t.diagnostics={runnable:o,programLog:n,vertexShader:{log:i,prefix:r},fragmentShader:{log:s,prefix:a}})}c.deleteShader(w),c.deleteShader(E),s=new ui(c,b),o=function(e,t){let n={},i=e.getProgramParameter(t,e.ACTIVE_ATTRIBUTES);for(let r=0;r0,Z=a.clearcoat>0,J=a.dispersion>0,K=a.iridescence>0,$=a.sheen>0,Q=a.transmission>0,ee=Y&&!!a.anisotropyMap,et=Z&&!!a.clearcoatMap,en=Z&&!!a.clearcoatNormalMap,ei=Z&&!!a.clearcoatRoughnessMap,er=K&&!!a.iridescenceMap,ea=K&&!!a.iridescenceThicknessMap,es=$&&!!a.sheenColorMap,eo=$&&!!a.sheenRoughnessMap,el=!!a.specularMap,ec=!!a.specularColorMap,eh=!!a.specularIntensityMap,ed=Q&&!!a.transmissionMap,ep=Q&&!!a.thicknessMap,ef=!!a.gradientMap,em=!!a.alphaMap,eg=a.alphaTest>0,ev=!!a.alphaHash,e_=!!a.extensions,ey=0;a.toneMapped&&(null===I||!0===I.isXRRenderTarget)&&(ey=e.toneMapping);let ex={shaderID:A,shaderType:a.type,shaderName:a.name,vertexShader:_,fragmentShader:y,defines:a.defines,customVertexShaderID:x,customFragmentShaderID:b,isRawShaderMaterial:!0===a.isRawShaderMaterial,glslVersion:a.glslVersion,precision:p,batching:O,batchingColor:O&&null!==v._colorsTexture,instancing:D,instancingColor:D&&null!==v.instanceColor,instancingMorph:D&&null!==v.morphTexture,supportsVertexTextures:d,outputColorSpace:null===I?e.outputColorSpace:!0===I.isXRRenderTarget?I.texture.colorSpace:L,alphaToCoverage:!!a.alphaToCoverage,map:F,matcap:z,envMap:B,envMapMode:B&&w.mapping,envMapCubeUVHeight:E,aoMap:k,lightMap:H,bumpMap:V,normalMap:G,displacementMap:d&&W,emissiveMap:j,normalMapObjectSpace:G&&1===a.normalMapType,normalMapTangentSpace:G&&0===a.normalMapType,metalnessMap:X,roughnessMap:q,anisotropy:Y,anisotropyMap:ee,clearcoat:Z,clearcoatMap:et,clearcoatNormalMap:en,clearcoatRoughnessMap:ei,dispersion:J,iridescence:K,iridescenceMap:er,iridescenceThicknessMap:ea,sheen:$,sheenColorMap:es,sheenRoughnessMap:eo,specularMap:el,specularColorMap:ec,specularIntensityMap:eh,transmission:Q,transmissionMap:ed,thicknessMap:ep,gradientMap:ef,opaque:!1===a.transparent&&1===a.blending&&!1===a.alphaToCoverage,alphaMap:em,alphaTest:eg,alphaHash:ev,combine:a.combine,mapUv:F&&m(a.map.channel),aoMapUv:k&&m(a.aoMap.channel),lightMapUv:H&&m(a.lightMap.channel),bumpMapUv:V&&m(a.bumpMap.channel),normalMapUv:G&&m(a.normalMap.channel),displacementMapUv:W&&m(a.displacementMap.channel),emissiveMapUv:j&&m(a.emissiveMap.channel),metalnessMapUv:X&&m(a.metalnessMap.channel),roughnessMapUv:q&&m(a.roughnessMap.channel),anisotropyMapUv:ee&&m(a.anisotropyMap.channel),clearcoatMapUv:et&&m(a.clearcoatMap.channel),clearcoatNormalMapUv:en&&m(a.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:ei&&m(a.clearcoatRoughnessMap.channel),iridescenceMapUv:er&&m(a.iridescenceMap.channel),iridescenceThicknessMapUv:ea&&m(a.iridescenceThicknessMap.channel),sheenColorMapUv:es&&m(a.sheenColorMap.channel),sheenRoughnessMapUv:eo&&m(a.sheenRoughnessMap.channel),specularMapUv:el&&m(a.specularMap.channel),specularColorMapUv:ec&&m(a.specularColorMap.channel),specularIntensityMapUv:eh&&m(a.specularIntensityMap.channel),transmissionMapUv:ed&&m(a.transmissionMap.channel),thicknessMapUv:ep&&m(a.thicknessMap.channel),alphaMapUv:em&&m(a.alphaMap.channel),vertexTangents:!!M.attributes.tangent&&(G||Y),vertexColors:a.vertexColors,vertexAlphas:!0===a.vertexColors&&!!M.attributes.color&&4===M.attributes.color.itemSize,pointsUvs:!0===v.isPoints&&!!M.attributes.uv&&(F||em),fog:!!S,useFog:!0===a.fog,fogExp2:!!S&&S.isFogExp2,flatShading:!0===a.flatShading,sizeAttenuation:!0===a.sizeAttenuation,logarithmicDepthBuffer:h,reverseDepthBuffer:N,skinning:!0===v.isSkinnedMesh,morphTargets:void 0!==M.morphAttributes.position,morphNormals:void 0!==M.morphAttributes.normal,morphColors:void 0!==M.morphAttributes.color,morphTargetsCount:R,morphTextureStride:P,numDirLights:o.directional.length,numPointLights:o.point.length,numSpotLights:o.spot.length,numSpotLightMaps:o.spotLightMap.length,numRectAreaLights:o.rectArea.length,numHemiLights:o.hemi.length,numDirLightShadows:o.directionalShadowMap.length,numPointLightShadows:o.pointShadowMap.length,numSpotLightShadows:o.spotShadowMap.length,numSpotLightShadowsWithMaps:o.numSpotLightShadowsWithMaps,numLightProbes:o.numLightProbes,numClippingPlanes:s.numPlanes,numClipIntersection:s.numIntersection,dithering:a.dithering,shadowMapEnabled:e.shadowMap.enabled&&c.length>0,shadowMapType:e.shadowMap.type,toneMapping:ey,decodeVideoTexture:F&&!0===a.map.isVideoTexture&&eu.getTransfer(a.map.colorSpace)===U,decodeVideoTextureEmissive:j&&!0===a.emissiveMap.isVideoTexture&&eu.getTransfer(a.emissiveMap.colorSpace)===U,premultipliedAlpha:a.premultipliedAlpha,doubleSided:2===a.side,flipSided:1===a.side,useDepthPacking:a.depthPacking>=0,depthPacking:a.depthPacking||0,index0AttributeName:a.index0AttributeName,extensionClipCullDistance:e_&&!0===a.extensions.clipCullDistance&&i.has("WEBGL_clip_cull_distance"),extensionMultiDraw:(e_&&!0===a.extensions.multiDraw||O)&&i.has("WEBGL_multi_draw"),rendererExtensionParallelShaderCompile:i.has("KHR_parallel_shader_compile"),customProgramCacheKey:a.customProgramCacheKey()};return ex.vertexUv1s=u.has(1),ex.vertexUv2s=u.has(2),ex.vertexUv3s=u.has(3),u.clear(),ex},getProgramCacheKey:function(t){var n,i,r,a;let s=[];if(t.shaderID?s.push(t.shaderID):(s.push(t.customVertexShaderID),s.push(t.customFragmentShaderID)),void 0!==t.defines)for(let e in t.defines)s.push(e),s.push(t.defines[e]);return!1===t.isRawShaderMaterial&&(n=s,i=t,n.push(i.precision),n.push(i.outputColorSpace),n.push(i.envMapMode),n.push(i.envMapCubeUVHeight),n.push(i.mapUv),n.push(i.alphaMapUv),n.push(i.lightMapUv),n.push(i.aoMapUv),n.push(i.bumpMapUv),n.push(i.normalMapUv),n.push(i.displacementMapUv),n.push(i.emissiveMapUv),n.push(i.metalnessMapUv),n.push(i.roughnessMapUv),n.push(i.anisotropyMapUv),n.push(i.clearcoatMapUv),n.push(i.clearcoatNormalMapUv),n.push(i.clearcoatRoughnessMapUv),n.push(i.iridescenceMapUv),n.push(i.iridescenceThicknessMapUv),n.push(i.sheenColorMapUv),n.push(i.sheenRoughnessMapUv),n.push(i.specularMapUv),n.push(i.specularColorMapUv),n.push(i.specularIntensityMapUv),n.push(i.transmissionMapUv),n.push(i.thicknessMapUv),n.push(i.combine),n.push(i.fogExp2),n.push(i.sizeAttenuation),n.push(i.morphTargetsCount),n.push(i.morphAttributeCount),n.push(i.numDirLights),n.push(i.numPointLights),n.push(i.numSpotLights),n.push(i.numSpotLightMaps),n.push(i.numHemiLights),n.push(i.numRectAreaLights),n.push(i.numDirLightShadows),n.push(i.numPointLightShadows),n.push(i.numSpotLightShadows),n.push(i.numSpotLightShadowsWithMaps),n.push(i.numLightProbes),n.push(i.shadowMapType),n.push(i.toneMapping),n.push(i.numClippingPlanes),n.push(i.numClipIntersection),n.push(i.depthPacking),r=s,a=t,o.disableAll(),a.supportsVertexTextures&&o.enable(0),a.instancing&&o.enable(1),a.instancingColor&&o.enable(2),a.instancingMorph&&o.enable(3),a.matcap&&o.enable(4),a.envMap&&o.enable(5),a.normalMapObjectSpace&&o.enable(6),a.normalMapTangentSpace&&o.enable(7),a.clearcoat&&o.enable(8),a.iridescence&&o.enable(9),a.alphaTest&&o.enable(10),a.vertexColors&&o.enable(11),a.vertexAlphas&&o.enable(12),a.vertexUv1s&&o.enable(13),a.vertexUv2s&&o.enable(14),a.vertexUv3s&&o.enable(15),a.vertexTangents&&o.enable(16),a.anisotropy&&o.enable(17),a.alphaHash&&o.enable(18),a.batching&&o.enable(19),a.dispersion&&o.enable(20),a.batchingColor&&o.enable(21),r.push(o.mask),o.disableAll(),a.fog&&o.enable(0),a.useFog&&o.enable(1),a.flatShading&&o.enable(2),a.logarithmicDepthBuffer&&o.enable(3),a.reverseDepthBuffer&&o.enable(4),a.skinning&&o.enable(5),a.morphTargets&&o.enable(6),a.morphNormals&&o.enable(7),a.morphColors&&o.enable(8),a.premultipliedAlpha&&o.enable(9),a.shadowMapEnabled&&o.enable(10),a.doubleSided&&o.enable(11),a.flipSided&&o.enable(12),a.useDepthPacking&&o.enable(13),a.dithering&&o.enable(14),a.transmission&&o.enable(15),a.sheen&&o.enable(16),a.opaque&&o.enable(17),a.pointsUvs&&o.enable(18),a.decodeVideoTexture&&o.enable(19),a.decodeVideoTextureEmissive&&o.enable(20),a.alphaToCoverage&&o.enable(21),r.push(o.mask),s.push(e.outputColorSpace)),s.push(t.customProgramCacheKey),s.join()},getUniforms:function(e){let t,n=f[e.type];if(n){let e=oH[n];t=nx.clone(e.uniforms)}else t=e.uniforms;return t},acquireProgram:function(t,n){let i;for(let e=0,t=c.length;e0?i.push(c):!0===s.transparent?r.push(c):n.push(c)},unshift:function(e,t,s,o,l,u){let c=a(e,t,s,o,l,u);s.transmission>0?i.unshift(c):!0===s.transparent?r.unshift(c):n.unshift(c)},finish:function(){for(let n=t,i=e.length;n1&&n.sort(e||uE),i.length>1&&i.sort(t||uA),r.length>1&&r.sort(t||uA)}}}function uR(){let e=new WeakMap;return{get:function(t,n){let i,r=e.get(t);return void 0===r?(i=new uC,e.set(t,[i])):n>=r.length?(i=new uC,r.push(i)):i=r[n],i},dispose:function(){e=new WeakMap}}}function uP(){let e={};return{get:function(t){let n;if(void 0!==e[t.id])return e[t.id];switch(t.type){case"DirectionalLight":n={direction:new eE,color:new tz};break;case"SpotLight":n={position:new eE,direction:new eE,color:new tz,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":n={position:new eE,color:new tz,distance:0,decay:0};break;case"HemisphereLight":n={direction:new eE,skyColor:new tz,groundColor:new tz};break;case"RectAreaLight":n={color:new tz,position:new eE,halfWidth:new eE,halfHeight:new eE}}return e[t.id]=n,n}}}let uI=0;function uL(e,t){return 2*!!t.castShadow-2*!!e.castShadow+ +!!t.map-!!e.map}function uN(e){let t,n=new uP,i=(t={},{get:function(e){let n;if(void 0!==t[e.id])return t[e.id];switch(e.type){case"DirectionalLight":case"SpotLight":n={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Y};break;case"PointLight":n={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Y,shadowCameraNear:1,shadowCameraFar:1e3}}return t[e.id]=n,n}}),r={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1,numLightProbes:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0,numLightProbes:0};for(let e=0;e<9;e++)r.probe.push(new eE);let a=new eE,s=new e2,o=new e2;return{setup:function(t){let a=0,s=0,o=0;for(let e=0;e<9;e++)r.probe[e].set(0,0,0);let l=0,u=0,c=0,h=0,d=0,p=0,f=0,m=0,g=0,v=0,_=0;t.sort(uL);for(let e=0,y=t.length;e0&&(!0===e.has("OES_texture_float_linear")?(r.rectAreaLTC1=ok.LTC_FLOAT_1,r.rectAreaLTC2=ok.LTC_FLOAT_2):(r.rectAreaLTC1=ok.LTC_HALF_1,r.rectAreaLTC2=ok.LTC_HALF_2)),r.ambient[0]=a,r.ambient[1]=s,r.ambient[2]=o;let y=r.hash;(y.directionalLength!==l||y.pointLength!==u||y.spotLength!==c||y.rectAreaLength!==h||y.hemiLength!==d||y.numDirectionalShadows!==p||y.numPointShadows!==f||y.numSpotShadows!==m||y.numSpotMaps!==g||y.numLightProbes!==_)&&(r.directional.length=l,r.spot.length=c,r.rectArea.length=h,r.point.length=u,r.hemi.length=d,r.directionalShadow.length=p,r.directionalShadowMap.length=p,r.pointShadow.length=f,r.pointShadowMap.length=f,r.spotShadow.length=m,r.spotShadowMap.length=m,r.directionalShadowMatrix.length=p,r.pointShadowMatrix.length=f,r.spotLightMatrix.length=m+g-v,r.spotLightMap.length=g,r.numSpotLightShadowsWithMaps=v,r.numLightProbes=_,y.directionalLength=l,y.pointLength=u,y.spotLength=c,y.rectAreaLength=h,y.hemiLength=d,y.numDirectionalShadows=p,y.numPointShadows=f,y.numSpotShadows=m,y.numSpotMaps=g,y.numLightProbes=_,r.version=uI++)},setupView:function(e,t){let n=0,i=0,l=0,u=0,c=0,h=t.matrixWorldInverse;for(let t=0,d=e.length;t=a.length?(r=new uU(e),a.push(r)):r=a[i],r},dispose:function(){t=new WeakMap}}}function uO(e,t,n){let i=new iS,r=new Y,a=new Y,s=new e_,o=new av({depthPacking:3201}),l=new a_,u={},c=n.maxTextureSize,h={0:1,1:0,2:2},d=new nb({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new Y},radius:{value:4}},vertexShader:"void main() {\n gl_Position = vec4( position, 1.0 );\n}",fragmentShader:"uniform sampler2D shadow_pass;\nuniform vec2 resolution;\nuniform float radius;\n#include \nvoid main() {\n const float samples = float( VSM_SAMPLES );\n float mean = 0.0;\n float squared_mean = 0.0;\n float uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );\n float uvStart = samples <= 1.0 ? 0.0 : - 1.0;\n for ( float i = 0.0; i < samples; i ++ ) {\n float uvOffset = uvStart + i * uvStride;\n #ifdef HORIZONTAL_PASS\n vec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );\n mean += distribution.x;\n squared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\n #else\n float depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );\n mean += depth;\n squared_mean += depth * depth;\n #endif\n }\n mean = mean / samples;\n squared_mean = squared_mean / samples;\n float std_dev = sqrt( squared_mean - mean * mean );\n gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\n}"}),p=d.clone();p.defines.HORIZONTAL_PASS=1;let f=new nn;f.setAttribute("position",new tZ(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));let m=new nf(f,d),g=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=1;let v=this.type;function _(t,n,i,r){let a=null,s=!0===i.isPointLight?t.customDistanceMaterial:t.customDepthMaterial;if(void 0!==s)a=s;else if(a=!0===i.isPointLight?l:o,e.localClippingEnabled&&!0===n.clipShadows&&Array.isArray(n.clippingPlanes)&&0!==n.clippingPlanes.length||n.displacementMap&&0!==n.displacementScale||n.alphaMap&&n.alphaTest>0||n.map&&n.alphaTest>0){let e=a.uuid,t=n.uuid,i=u[e];void 0===i&&(i={},u[e]=i);let r=i[t];void 0===r&&(r=a.clone(),i[t]=r,n.addEventListener("dispose",y)),a=r}return a.visible=n.visible,a.wireframe=n.wireframe,3===r?a.side=null!==n.shadowSide?n.shadowSide:n.side:a.side=null!==n.shadowSide?n.shadowSide:h[n.side],a.alphaMap=n.alphaMap,a.alphaTest=n.alphaTest,a.map=n.map,a.clipShadows=n.clipShadows,a.clippingPlanes=n.clippingPlanes,a.clipIntersection=n.clipIntersection,a.displacementMap=n.displacementMap,a.displacementScale=n.displacementScale,a.displacementBias=n.displacementBias,a.wireframeLinewidth=n.wireframeLinewidth,a.linewidth=n.linewidth,!0===i.isPointLight&&!0===a.isMeshDistanceMaterial&&(e.properties.get(a).light=i),a}function y(e){for(let t in e.target.removeEventListener("dispose",y),u){let n=u[t],i=e.target.uuid;i in n&&(n[i].dispose(),delete n[i])}}this.render=function(n,o,l){if(!1===g.enabled||!1===g.autoUpdate&&!1===g.needsUpdate||0===n.length)return;let u=e.getRenderTarget(),h=e.getActiveCubeFace(),f=e.getActiveMipmapLevel(),y=e.state;y.setBlending(0),y.buffers.color.setClear(1,1,1,1),y.buffers.depth.setTest(!0),y.setScissorTest(!1);let x=3!==v&&3===this.type,b=3===v&&3!==this.type;for(let u=0,h=n.length;uc||r.y>c)&&(r.x>c&&(a.x=Math.floor(c/g.x),r.x=a.x*g.x,f.mapSize.x=a.x),r.y>c&&(a.y=Math.floor(c/g.y),r.y=a.y*g.y,f.mapSize.y=a.y)),null===f.map||!0===x||!0===b){let e=3!==this.type?{minFilter:1003,magFilter:1003}:{};null!==f.map&&f.map.dispose(),f.map=new ex(r.x,r.y,e),f.map.texture.name=h.name+".shadowMap",f.camera.updateProjectionMatrix()}e.setRenderTarget(f.map),e.clear();let v=f.getViewportCount();for(let n=0;n=1:-1!==P.indexOf("OpenGL ES")&&(R=parseFloat(/^OpenGL ES (\d)/.exec(P)[1])>=2);let I=null,L={},N=e.getParameter(e.SCISSOR_BOX),U=e.getParameter(e.VIEWPORT),D=new e_().fromArray(N),O=new e_().fromArray(U);function F(t,n,i,r){let a=new Uint8Array(4),s=e.createTexture();e.bindTexture(t,s),e.texParameteri(t,e.TEXTURE_MIN_FILTER,e.NEAREST),e.texParameteri(t,e.TEXTURE_MAG_FILTER,e.NEAREST);for(let s=0;stypeof navigator&&/OculusBrowser/g.test(navigator.userAgent),c=new Y,h=new WeakMap,d=new WeakMap,p=!1;try{p="u">typeof OffscreenCanvas&&null!==new OffscreenCanvas(1,1).getContext("2d")}catch(e){}function f(e,t){return p?new OffscreenCanvas(e,t):ee("canvas")}function m(e,t,n){let i=1,r=G(e);if((r.width>n||r.height>n)&&(i=n/Math.max(r.width,r.height)),i<1)if("u">typeof HTMLImageElement&&e instanceof HTMLImageElement||"u">typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"u">typeof ImageBitmap&&e instanceof ImageBitmap||"u">typeof VideoFrame&&e instanceof VideoFrame){let n=Math.floor(i*r.width),a=Math.floor(i*r.height);void 0===o&&(o=f(n,a));let s=t?f(n,a):o;return s.width=n,s.height=a,s.getContext("2d").drawImage(e,0,0,n,a),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+r.width+"x"+r.height+") to ("+n+"x"+a+")."),s}else"data"in e&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+r.width+"x"+r.height+").");return e}function g(e){return e.generateMipmaps}function v(t){e.generateMipmap(t)}function _(n,i,r,a,s=!1){if(null!==n){if(void 0!==e[n])return e[n];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+n+"'")}let o=i;if(i===e.RED&&(r===e.FLOAT&&(o=e.R32F),r===e.HALF_FLOAT&&(o=e.R16F),r===e.UNSIGNED_BYTE&&(o=e.R8)),i===e.RED_INTEGER&&(r===e.UNSIGNED_BYTE&&(o=e.R8UI),r===e.UNSIGNED_SHORT&&(o=e.R16UI),r===e.UNSIGNED_INT&&(o=e.R32UI),r===e.BYTE&&(o=e.R8I),r===e.SHORT&&(o=e.R16I),r===e.INT&&(o=e.R32I)),i===e.RG&&(r===e.FLOAT&&(o=e.RG32F),r===e.HALF_FLOAT&&(o=e.RG16F),r===e.UNSIGNED_BYTE&&(o=e.RG8)),i===e.RG_INTEGER&&(r===e.UNSIGNED_BYTE&&(o=e.RG8UI),r===e.UNSIGNED_SHORT&&(o=e.RG16UI),r===e.UNSIGNED_INT&&(o=e.RG32UI),r===e.BYTE&&(o=e.RG8I),r===e.SHORT&&(o=e.RG16I),r===e.INT&&(o=e.RG32I)),i===e.RGB_INTEGER&&(r===e.UNSIGNED_BYTE&&(o=e.RGB8UI),r===e.UNSIGNED_SHORT&&(o=e.RGB16UI),r===e.UNSIGNED_INT&&(o=e.RGB32UI),r===e.BYTE&&(o=e.RGB8I),r===e.SHORT&&(o=e.RGB16I),r===e.INT&&(o=e.RGB32I)),i===e.RGBA_INTEGER&&(r===e.UNSIGNED_BYTE&&(o=e.RGBA8UI),r===e.UNSIGNED_SHORT&&(o=e.RGBA16UI),r===e.UNSIGNED_INT&&(o=e.RGBA32UI),r===e.BYTE&&(o=e.RGBA8I),r===e.SHORT&&(o=e.RGBA16I),r===e.INT&&(o=e.RGBA32I)),i===e.RGB&&r===e.UNSIGNED_INT_5_9_9_9_REV&&(o=e.RGB9_E5),i===e.RGBA){let t=s?N:eu.getTransfer(a);r===e.FLOAT&&(o=e.RGBA32F),r===e.HALF_FLOAT&&(o=e.RGBA16F),r===e.UNSIGNED_BYTE&&(o=t===U?e.SRGB8_ALPHA8:e.RGBA8),r===e.UNSIGNED_SHORT_4_4_4_4&&(o=e.RGBA4),r===e.UNSIGNED_SHORT_5_5_5_1&&(o=e.RGB5_A1)}return(o===e.R16F||o===e.R32F||o===e.RG16F||o===e.RG32F||o===e.RGBA16F||o===e.RGBA32F)&&t.get("EXT_color_buffer_float"),o}function y(t,n){let i;return t?null===n||1014===n||1020===n?i=e.DEPTH24_STENCIL8:1015===n?i=e.DEPTH32F_STENCIL8:1012===n&&(i=e.DEPTH24_STENCIL8,console.warn("DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.")):null===n||1014===n||1020===n?i=e.DEPTH_COMPONENT24:1015===n?i=e.DEPTH_COMPONENT32F:1012===n&&(i=e.DEPTH_COMPONENT16),i}function x(e,t){return!0===g(e)||e.isFramebufferTexture&&1003!==e.minFilter&&1006!==e.minFilter?Math.log2(Math.max(t.width,t.height))+1:void 0!==e.mipmaps&&e.mipmaps.length>0?e.mipmaps.length:e.isCompressedTexture&&Array.isArray(e.image)?t.mipmaps.length:1}function b(e){let t=e.target;t.removeEventListener("dispose",b),function(e){let t=i.get(e);if(void 0===t.__webglInit)return;let n=e.source,r=d.get(n);if(r){let i=r[t.__cacheKey];i.usedTimes--,0===i.usedTimes&&M(e),0===Object.keys(r).length&&d.delete(n)}i.remove(e)}(t),t.isVideoTexture&&h.delete(t)}function S(t){let n=t.target;n.removeEventListener("dispose",S),function(t){let n=i.get(t);if(t.depthTexture&&(t.depthTexture.dispose(),i.remove(t.depthTexture)),t.isWebGLCubeRenderTarget)for(let t=0;t<6;t++){if(Array.isArray(n.__webglFramebuffer[t]))for(let i=0;i0&&l.__version!==t.version){let e=t.image;if(null===e)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else{if(!1!==e.complete)return void I(l,t,r);console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete")}}n.bindTexture(e.TEXTURE_2D,l.__webglTexture,e.TEXTURE0+r)}let E={1e3:e.REPEAT,1001:e.CLAMP_TO_EDGE,1002:e.MIRRORED_REPEAT},A={1003:e.NEAREST,1004:e.NEAREST_MIPMAP_NEAREST,1005:e.NEAREST_MIPMAP_LINEAR,1006:e.LINEAR,1007:e.LINEAR_MIPMAP_NEAREST,1008:e.LINEAR_MIPMAP_LINEAR},C={512:e.NEVER,519:e.ALWAYS,513:e.LESS,515:e.LEQUAL,514:e.EQUAL,518:e.GEQUAL,516:e.GREATER,517:e.NOTEQUAL};function R(n,a){if((1015===a.type&&!1===t.has("OES_texture_float_linear")&&(1006===a.magFilter||1007===a.magFilter||1005===a.magFilter||1008===a.magFilter||1006===a.minFilter||1007===a.minFilter||1005===a.minFilter||1008===a.minFilter)&&console.warn("THREE.WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device."),e.texParameteri(n,e.TEXTURE_WRAP_S,E[a.wrapS]),e.texParameteri(n,e.TEXTURE_WRAP_T,E[a.wrapT]),(n===e.TEXTURE_3D||n===e.TEXTURE_2D_ARRAY)&&e.texParameteri(n,e.TEXTURE_WRAP_R,E[a.wrapR]),e.texParameteri(n,e.TEXTURE_MAG_FILTER,A[a.magFilter]),e.texParameteri(n,e.TEXTURE_MIN_FILTER,A[a.minFilter]),a.compareFunction&&(e.texParameteri(n,e.TEXTURE_COMPARE_MODE,e.COMPARE_REF_TO_TEXTURE),e.texParameteri(n,e.TEXTURE_COMPARE_FUNC,C[a.compareFunction])),!0===t.has("EXT_texture_filter_anisotropic"))&&1003!==a.magFilter&&(1005===a.minFilter||1008===a.minFilter)&&(1015!==a.type||!1!==t.has("OES_texture_float_linear"))&&(a.anisotropy>1||i.get(a).__currentAnisotropy)){let s=t.get("EXT_texture_filter_anisotropic");e.texParameterf(n,s.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(a.anisotropy,r.getMaxAnisotropy())),i.get(a).__currentAnisotropy=a.anisotropy}}function P(t,n){let i,r=!1;void 0===t.__webglInit&&(t.__webglInit=!0,n.addEventListener("dispose",b));let a=n.source,o=d.get(a);void 0===o&&(o={},d.set(a,o));let l=((i=[]).push(n.wrapS),i.push(n.wrapT),i.push(n.wrapR||0),i.push(n.magFilter),i.push(n.minFilter),i.push(n.anisotropy),i.push(n.internalFormat),i.push(n.format),i.push(n.type),i.push(n.generateMipmaps),i.push(n.premultiplyAlpha),i.push(n.flipY),i.push(n.unpackAlignment),i.push(n.colorSpace),i.join());if(l!==t.__cacheKey){void 0===o[l]&&(o[l]={texture:e.createTexture(),usedTimes:0},s.memory.textures++,r=!0),o[l].usedTimes++;let i=o[t.__cacheKey];void 0!==i&&(o[t.__cacheKey].usedTimes--,0===i.usedTimes&&M(n)),t.__cacheKey=l,t.__webglTexture=o[l].texture}return r}function I(t,s,o){let l=e.TEXTURE_2D;(s.isDataArrayTexture||s.isCompressedArrayTexture)&&(l=e.TEXTURE_2D_ARRAY),s.isData3DTexture&&(l=e.TEXTURE_3D);let u=P(t,s),c=s.source;n.bindTexture(l,t.__webglTexture,e.TEXTURE0+o);let h=i.get(c);if(c.version!==h.__version||!0===u){let t;n.activeTexture(e.TEXTURE0+o);let i=eu.getPrimaries(eu.workingColorSpace),d=""===s.colorSpace?null:eu.getPrimaries(s.colorSpace),p=""===s.colorSpace||i===d?e.NONE:e.BROWSER_DEFAULT_WEBGL;e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,s.flipY),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,s.premultiplyAlpha),e.pixelStorei(e.UNPACK_ALIGNMENT,s.unpackAlignment),e.pixelStorei(e.UNPACK_COLORSPACE_CONVERSION_WEBGL,p);let f=m(s.image,!1,r.maxTextureSize);f=V(s,f);let b=a.convert(s.format,s.colorSpace),S=a.convert(s.type),M=_(s.internalFormat,b,S,s.colorSpace,s.isVideoTexture);R(l,s);let T=s.mipmaps,w=!0!==s.isVideoTexture,E=void 0===h.__version||!0===u,A=c.dataReady,C=x(s,f);if(s.isDepthTexture)M=y(1027===s.format,s.type),E&&(w?n.texStorage2D(e.TEXTURE_2D,1,M,f.width,f.height):n.texImage2D(e.TEXTURE_2D,0,M,f.width,f.height,0,b,S,null));else if(s.isDataTexture)if(T.length>0){w&&E&&n.texStorage2D(e.TEXTURE_2D,C,M,T[0].width,T[0].height);for(let i=0,r=T.length;i0){let r=oU(t.width,t.height,s.format,s.type);for(let a of s.layerUpdates){let s=t.data.subarray(a*r/t.data.BYTES_PER_ELEMENT,(a+1)*r/t.data.BYTES_PER_ELEMENT);n.compressedTexSubImage3D(e.TEXTURE_2D_ARRAY,i,0,0,a,t.width,t.height,1,b,s)}s.clearLayerUpdates()}else n.compressedTexSubImage3D(e.TEXTURE_2D_ARRAY,i,0,0,0,t.width,t.height,f.depth,b,t.data)}else n.compressedTexImage3D(e.TEXTURE_2D_ARRAY,i,M,t.width,t.height,f.depth,0,t.data,0,0);else console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()");else w?A&&n.texSubImage3D(e.TEXTURE_2D_ARRAY,i,0,0,0,t.width,t.height,f.depth,b,S,t.data):n.texImage3D(e.TEXTURE_2D_ARRAY,i,M,t.width,t.height,f.depth,0,b,S,t.data)}else{w&&E&&n.texStorage2D(e.TEXTURE_2D,C,M,T[0].width,T[0].height);for(let i=0,r=T.length;i0){let t=oU(f.width,f.height,s.format,s.type);for(let i of s.layerUpdates){let r=f.data.subarray(i*t/f.data.BYTES_PER_ELEMENT,(i+1)*t/f.data.BYTES_PER_ELEMENT);n.texSubImage3D(e.TEXTURE_2D_ARRAY,0,0,0,i,f.width,f.height,1,b,S,r)}s.clearLayerUpdates()}else n.texSubImage3D(e.TEXTURE_2D_ARRAY,0,0,0,0,f.width,f.height,f.depth,b,S,f.data)}else n.texImage3D(e.TEXTURE_2D_ARRAY,0,M,f.width,f.height,f.depth,0,b,S,f.data);else if(s.isData3DTexture)w?(E&&n.texStorage3D(e.TEXTURE_3D,C,M,f.width,f.height,f.depth),A&&n.texSubImage3D(e.TEXTURE_3D,0,0,0,0,f.width,f.height,f.depth,b,S,f.data)):n.texImage3D(e.TEXTURE_3D,0,M,f.width,f.height,f.depth,0,b,S,f.data);else if(s.isFramebufferTexture){if(E)if(w)n.texStorage2D(e.TEXTURE_2D,C,M,f.width,f.height);else{let t=f.width,i=f.height;for(let r=0;r>=1,i>>=1}}else if(T.length>0){if(w&&E){let t=G(T[0]);n.texStorage2D(e.TEXTURE_2D,C,M,t.width,t.height)}for(let i=0,r=T.length;i>c),i=Math.max(1,r.height>>c);u===e.TEXTURE_3D||u===e.TEXTURE_2D_ARRAY?n.texImage3D(u,c,p,t,i,r.depth,0,h,d,null):n.texImage2D(u,c,p,t,i,0,h,d,null)}n.bindFramebuffer(e.FRAMEBUFFER,t),H(r)?l.framebufferTexture2DMultisampleEXT(e.FRAMEBUFFER,o,u,m.__webglTexture,0,k(r)):(u===e.TEXTURE_2D||u>=e.TEXTURE_CUBE_MAP_POSITIVE_X&&u<=e.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&e.framebufferTexture2D(e.FRAMEBUFFER,o,u,m.__webglTexture,c),n.bindFramebuffer(e.FRAMEBUFFER,null)}function O(t,n,i){if(e.bindRenderbuffer(e.RENDERBUFFER,t),n.depthBuffer){let r=n.depthTexture,a=r&&r.isDepthTexture?r.type:null,s=y(n.stencilBuffer,a),o=n.stencilBuffer?e.DEPTH_STENCIL_ATTACHMENT:e.DEPTH_ATTACHMENT,u=k(n);H(n)?l.renderbufferStorageMultisampleEXT(e.RENDERBUFFER,u,s,n.width,n.height):i?e.renderbufferStorageMultisample(e.RENDERBUFFER,u,s,n.width,n.height):e.renderbufferStorage(e.RENDERBUFFER,s,n.width,n.height),e.framebufferRenderbuffer(e.FRAMEBUFFER,o,e.RENDERBUFFER,t)}else{let t=n.textures;for(let r=0;r{delete r.__boundDepthTexture,delete r.__depthDisposeCallback,e.removeEventListener("dispose",t)};e.addEventListener("dispose",t),r.__depthDisposeCallback=t}r.__boundDepthTexture=e}if(t.depthTexture&&!r.__autoAllocateDepthBuffer){if(a)throw Error("target.depthTexture not supported in Cube render targets");!function(t,r){if(r&&r.isWebGLCubeRenderTarget)throw Error("Depth Texture with cube render targets is not supported");if(n.bindFramebuffer(e.FRAMEBUFFER,t),!(r.depthTexture&&r.depthTexture.isDepthTexture))throw Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");let a=i.get(r.depthTexture);a.__renderTarget=r,a.__webglTexture&&r.depthTexture.image.width===r.width&&r.depthTexture.image.height===r.height||(r.depthTexture.image.width=r.width,r.depthTexture.image.height=r.height,r.depthTexture.needsUpdate=!0),w(r.depthTexture,0);let s=a.__webglTexture,o=k(r);if(1026===r.depthTexture.format)H(r)?l.framebufferTexture2DMultisampleEXT(e.FRAMEBUFFER,e.DEPTH_ATTACHMENT,e.TEXTURE_2D,s,0,o):e.framebufferTexture2D(e.FRAMEBUFFER,e.DEPTH_ATTACHMENT,e.TEXTURE_2D,s,0);else if(1027===r.depthTexture.format)H(r)?l.framebufferTexture2DMultisampleEXT(e.FRAMEBUFFER,e.DEPTH_STENCIL_ATTACHMENT,e.TEXTURE_2D,s,0,o):e.framebufferTexture2D(e.FRAMEBUFFER,e.DEPTH_STENCIL_ATTACHMENT,e.TEXTURE_2D,s,0);else throw Error("Unknown depthTexture format")}(r.__webglFramebuffer,t)}else if(a){r.__webglDepthbuffer=[];for(let i=0;i<6;i++)if(n.bindFramebuffer(e.FRAMEBUFFER,r.__webglFramebuffer[i]),void 0===r.__webglDepthbuffer[i])r.__webglDepthbuffer[i]=e.createRenderbuffer(),O(r.__webglDepthbuffer[i],t,!1);else{let n=t.stencilBuffer?e.DEPTH_STENCIL_ATTACHMENT:e.DEPTH_ATTACHMENT,a=r.__webglDepthbuffer[i];e.bindRenderbuffer(e.RENDERBUFFER,a),e.framebufferRenderbuffer(e.FRAMEBUFFER,n,e.RENDERBUFFER,a)}}else if(n.bindFramebuffer(e.FRAMEBUFFER,r.__webglFramebuffer),void 0===r.__webglDepthbuffer)r.__webglDepthbuffer=e.createRenderbuffer(),O(r.__webglDepthbuffer,t,!1);else{let n=t.stencilBuffer?e.DEPTH_STENCIL_ATTACHMENT:e.DEPTH_ATTACHMENT,i=r.__webglDepthbuffer;e.bindRenderbuffer(e.RENDERBUFFER,i),e.framebufferRenderbuffer(e.FRAMEBUFFER,n,e.RENDERBUFFER,i)}n.bindFramebuffer(e.FRAMEBUFFER,null)}let z=[],B=[];function k(e){return Math.min(r.maxSamples,e.samples)}function H(e){let n=i.get(e);return e.samples>0&&!0===t.has("WEBGL_multisampled_render_to_texture")&&!1!==n.__useRenderToTexture}function V(e,t){let n=e.colorSpace,i=e.format,r=e.type;return!0===e.isCompressedTexture||!0===e.isVideoTexture||n!==L&&""!==n&&(eu.getTransfer(n)===U?(1023!==i||1009!==r)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture color space:",n)),t}function G(e){return"u">typeof HTMLImageElement&&e instanceof HTMLImageElement?(c.width=e.naturalWidth||e.width,c.height=e.naturalHeight||e.height):"u">typeof VideoFrame&&e instanceof VideoFrame?(c.width=e.displayWidth,c.height=e.displayHeight):(c.width=e.width,c.height=e.height),c}this.allocateTextureUnit=function(){let e=T;return e>=r.maxTextures&&console.warn("THREE.WebGLTextures: Trying to use "+e+" texture units while this GPU supports only "+r.maxTextures),T+=1,e},this.resetTextureUnits=function(){T=0},this.setTexture2D=w,this.setTexture2DArray=function(t,r){let a=i.get(t);t.version>0&&a.__version!==t.version?I(a,t,r):n.bindTexture(e.TEXTURE_2D_ARRAY,a.__webglTexture,e.TEXTURE0+r)},this.setTexture3D=function(t,r){let a=i.get(t);t.version>0&&a.__version!==t.version?I(a,t,r):n.bindTexture(e.TEXTURE_3D,a.__webglTexture,e.TEXTURE0+r)},this.setTextureCube=function(t,s){let o=i.get(t);t.version>0&&o.__version!==t.version?function(t,s,o){if(6!==s.image.length)return;let l=P(t,s),u=s.source;n.bindTexture(e.TEXTURE_CUBE_MAP,t.__webglTexture,e.TEXTURE0+o);let c=i.get(u);if(u.version!==c.__version||!0===l){let t;n.activeTexture(e.TEXTURE0+o);let i=eu.getPrimaries(eu.workingColorSpace),h=""===s.colorSpace?null:eu.getPrimaries(s.colorSpace),d=""===s.colorSpace||i===h?e.NONE:e.BROWSER_DEFAULT_WEBGL;e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,s.flipY),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,s.premultiplyAlpha),e.pixelStorei(e.UNPACK_ALIGNMENT,s.unpackAlignment),e.pixelStorei(e.UNPACK_COLORSPACE_CONVERSION_WEBGL,d);let p=s.isCompressedTexture||s.image[0].isCompressedTexture,f=s.image[0]&&s.image[0].isDataTexture,y=[];for(let e=0;e<6;e++)p||f?y[e]=f?s.image[e].image:s.image[e]:y[e]=m(s.image[e],!0,r.maxCubemapSize),y[e]=V(s,y[e]);let b=y[0],S=a.convert(s.format,s.colorSpace),M=a.convert(s.type),T=_(s.internalFormat,S,M,s.colorSpace),w=!0!==s.isVideoTexture,E=void 0===c.__version||!0===l,A=u.dataReady,C=x(s,b);if(R(e.TEXTURE_CUBE_MAP,s),p){w&&E&&n.texStorage2D(e.TEXTURE_CUBE_MAP,C,T,b.width,b.height);for(let i=0;i<6;i++){t=y[i].mipmaps;for(let r=0;r0&&C++;let i=G(y[0]);n.texStorage2D(e.TEXTURE_CUBE_MAP,C,T,i.width,i.height)}for(let i=0;i<6;i++)if(f){w?A&&n.texSubImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+i,0,0,0,y[i].width,y[i].height,S,M,y[i].data):n.texImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+i,0,T,y[i].width,y[i].height,0,S,M,y[i].data);for(let r=0;r1;if(!h&&(void 0===l.__webglTexture&&(l.__webglTexture=e.createTexture()),l.__version=r.version,s.memory.textures++),c){o.__webglFramebuffer=[];for(let t=0;t<6;t++)if(r.mipmaps&&r.mipmaps.length>0){o.__webglFramebuffer[t]=[];for(let n=0;n0){o.__webglFramebuffer=[];for(let t=0;t0&&!1===H(t)){o.__webglMultisampledFramebuffer=e.createFramebuffer(),o.__webglColorRenderbuffer=[],n.bindFramebuffer(e.FRAMEBUFFER,o.__webglMultisampledFramebuffer);for(let n=0;n0)for(let i=0;i0)for(let n=0;n0){if(!1===H(t)){let r=t.textures,a=t.width,s=t.height,o=e.COLOR_BUFFER_BIT,l=t.stencilBuffer?e.DEPTH_STENCIL_ATTACHMENT:e.DEPTH_ATTACHMENT,c=i.get(t),h=r.length>1;if(h)for(let t=0;t.025?(l.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!l.inputState.pinching&&s<=.015&&(l.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else null!==o&&e.gripSpace&&null!==(r=t.getPose(e.gripSpace,n))&&(o.matrix.fromArray(r.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),o.matrixWorldNeedsUpdate=!0,r.linearVelocity?(o.hasLinearVelocity=!0,o.linearVelocity.copy(r.linearVelocity)):o.hasLinearVelocity=!1,r.angularVelocity?(o.hasAngularVelocity=!0,o.angularVelocity.copy(r.angularVelocity)):o.hasAngularVelocity=!1);null!==s&&(null===(i=t.getPose(e.targetRaySpace,n))&&null!==r&&(i=r),null!==i&&(s.matrix.fromArray(i.transform.matrix),s.matrix.decompose(s.position,s.rotation,s.scale),s.matrixWorldNeedsUpdate=!0,i.linearVelocity?(s.hasLinearVelocity=!0,s.linearVelocity.copy(i.linearVelocity)):s.hasLinearVelocity=!1,i.angularVelocity?(s.hasAngularVelocity=!0,s.angularVelocity.copy(i.angularVelocity)):s.hasAngularVelocity=!1,this.dispatchEvent(uH)))}return null!==s&&(s.visible=null!==i),null!==o&&(o.visible=null!==r),null!==l&&(l.visible=null!==a),this}_getHandJoint(e,t){if(void 0===e.joints[t.jointName]){let n=new i6;n.matrixAutoUpdate=!1,n.visible=!1,e.joints[t.jointName]=n,e.add(n)}return e.joints[t.jointName]}}let uG=` +void main() { + + gl_Position = vec4( position, 1.0 ); + +}`,uW=` +uniform sampler2DArray depthColor; +uniform float depthWidth; +uniform float depthHeight; + +void main() { + + vec2 coord = vec2( gl_FragCoord.x / depthWidth, gl_FragCoord.y / depthHeight ); + + if ( coord.x >= 1.0 ) { + + gl_FragDepth = texture( depthColor, vec3( coord.x - 1.0, coord.y, 1 ) ).r; + + } else { + + gl_FragDepth = texture( depthColor, vec3( coord.x, coord.y, 0 ) ).r; + + } + +}`;class uj{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(e,t,n){if(null===this.texture){let i=new ev;e.properties.get(i).__webglTexture=t.texture,(t.depthNear!=n.depthNear||t.depthFar!=n.depthFar)&&(this.depthNear=t.depthNear,this.depthFar=t.depthFar),this.texture=i}}getMesh(e){if(null!==this.texture&&null===this.mesh){let t=e.cameras[0].viewport,n=new nb({vertexShader:uG,fragmentShader:uW,uniforms:{depthColor:{value:this.texture},depthWidth:{value:t.z},depthHeight:{value:t.w}}});this.mesh=new nf(new r9(20,20),n)}return this.mesh}reset(){this.texture=null,this.mesh=null}getDepthTexture(){return this.texture}}class uX extends O{constructor(e,t){super();const n=this;let i=null,r=1,a=null,s="local-floor",o=1,l=null,u=null,c=null,h=null,d=null,p=null;const f=new uj,m=t.getContextAttributes();let g=null,v=null;const _=[],y=[],x=new Y;let b=null;const S=new nE;S.viewport=new e_;const M=new nE;M.viewport=new e_;const T=[S,M],w=new sT;let E=null,A=null;function C(e){let t=y.indexOf(e.inputSource);if(-1===t)return;let n=_[t];void 0!==n&&(n.update(e.inputSource,e.frame,l||a),n.dispatchEvent({type:e.type,data:e.inputSource}))}function R(){i.removeEventListener("select",C),i.removeEventListener("selectstart",C),i.removeEventListener("selectend",C),i.removeEventListener("squeeze",C),i.removeEventListener("squeezestart",C),i.removeEventListener("squeezeend",C),i.removeEventListener("end",R),i.removeEventListener("inputsourceschange",P);for(let e=0;e<_.length;e++){let t=y[e];null!==t&&(y[e]=null,_[e].disconnect(t))}E=null,A=null,f.reset(),e.setRenderTarget(g),d=null,h=null,c=null,i=null,v=null,D.stop(),n.isPresenting=!1,e.setPixelRatio(b),e.setSize(x.width,x.height,!1),n.dispatchEvent({type:"sessionend"})}function P(e){for(let t=0;t=0&&(y[i]=null,_[i].disconnect(n))}for(let t=0;t=y.length){y.push(n),i=e;break}else if(null===y[e]){y[e]=n,i=e;break}if(-1===i)break}let r=_[i];r&&r.connect(n)}}this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(e){let t=_[e];return void 0===t&&(t=new uV,_[e]=t),t.getTargetRaySpace()},this.getControllerGrip=function(e){let t=_[e];return void 0===t&&(t=new uV,_[e]=t),t.getGripSpace()},this.getHand=function(e){let t=_[e];return void 0===t&&(t=new uV,_[e]=t),t.getHandSpace()},this.setFramebufferScaleFactor=function(e){r=e,!0===n.isPresenting&&console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(e){s=e,!0===n.isPresenting&&console.warn("THREE.WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return l||a},this.setReferenceSpace=function(e){l=e},this.getBaseLayer=function(){return null!==h?h:d},this.getBinding=function(){return c},this.getFrame=function(){return p},this.getSession=function(){return i},this.setSession=async function(u){if(null!==(i=u)){if(g=e.getRenderTarget(),i.addEventListener("select",C),i.addEventListener("selectstart",C),i.addEventListener("selectend",C),i.addEventListener("squeeze",C),i.addEventListener("squeezestart",C),i.addEventListener("squeezeend",C),i.addEventListener("end",R),i.addEventListener("inputsourceschange",P),!0!==m.xrCompatible&&await t.makeXRCompatible(),b=e.getPixelRatio(),e.getSize(x),void 0===i.renderState.layers){let n={antialias:m.antialias,alpha:!0,depth:m.depth,stencil:m.stencil,framebufferScaleFactor:r};d=new XRWebGLLayer(i,t,n),i.updateRenderState({baseLayer:d}),e.setPixelRatio(1),e.setSize(d.framebufferWidth,d.framebufferHeight,!1),v=new ex(d.framebufferWidth,d.framebufferHeight,{format:1023,type:1009,colorSpace:e.outputColorSpace,stencilBuffer:m.stencil})}else{let n=null,a=null,s=null;m.depth&&(s=m.stencil?t.DEPTH24_STENCIL8:t.DEPTH_COMPONENT24,n=m.stencil?1027:1026,a=m.stencil?1020:1014);let o={colorFormat:t.RGBA8,depthFormat:s,scaleFactor:r};h=(c=new XRWebGLBinding(i,t)).createProjectionLayer(o),i.updateRenderState({layers:[h]}),e.setPixelRatio(1),e.setSize(h.textureWidth,h.textureHeight,!1),v=new ex(h.textureWidth,h.textureHeight,{format:1023,type:1009,depthTexture:new ri(h.textureWidth,h.textureHeight,a,void 0,void 0,void 0,void 0,void 0,void 0,n),stencilBuffer:m.stencil,colorSpace:e.outputColorSpace,samples:4*!!m.antialias,resolveDepthBuffer:!1===h.ignoreDepthValues})}v.isXRRenderTarget=!0,this.setFoveation(o),l=null,a=await i.requestReferenceSpace(s),D.setContext(i),D.start(),n.isPresenting=!0,n.dispatchEvent({type:"sessionstart"})}},this.getEnvironmentBlendMode=function(){if(null!==i)return i.environmentBlendMode},this.getDepthTexture=function(){return f.getDepthTexture()};const I=new eE,L=new eE;function N(e,t){null===t?e.matrixWorld.copy(e.matrix):e.matrixWorld.multiplyMatrices(t.matrixWorld,e.matrix),e.matrixWorldInverse.copy(e.matrixWorld).invert()}this.updateCamera=function(e){var t,n,r;if(null===i)return;let a=e.near,s=e.far;null!==f.texture&&(f.depthNear>0&&(a=f.depthNear),f.depthFar>0&&(s=f.depthFar)),w.near=M.near=S.near=a,w.far=M.far=S.far=s,(E!==w.near||A!==w.far)&&(i.updateRenderState({depthNear:w.near,depthFar:w.far}),E=w.near,A=w.far),S.layers.mask=2|e.layers.mask,M.layers.mask=4|e.layers.mask,w.layers.mask=S.layers.mask|M.layers.mask;let o=e.parent,l=w.cameras;N(w,o);for(let e=0;e0&&(e.alphaTest.value=i.alphaTest);let r=t.get(i),a=r.envMap,s=r.envMapRotation;a&&(e.envMap.value=a,uq.copy(s),uq.x*=-1,uq.y*=-1,uq.z*=-1,a.isCubeTexture&&!1===a.isRenderTargetTexture&&(uq.y*=-1,uq.z*=-1),e.envMapRotation.value.setFromMatrix4(uY.makeRotationFromEuler(uq)),e.flipEnvMap.value=a.isCubeTexture&&!1===a.isRenderTargetTexture?-1:1,e.reflectivity.value=i.reflectivity,e.ior.value=i.ior,e.refractionRatio.value=i.refractionRatio),i.lightMap&&(e.lightMap.value=i.lightMap,e.lightMapIntensity.value=i.lightMapIntensity,n(i.lightMap,e.lightMapTransform)),i.aoMap&&(e.aoMap.value=i.aoMap,e.aoMapIntensity.value=i.aoMapIntensity,n(i.aoMap,e.aoMapTransform))}return{refreshFogUniforms:function(t,n){n.color.getRGB(t.fogColor.value,ny(e)),n.isFog?(t.fogNear.value=n.near,t.fogFar.value=n.far):n.isFogExp2&&(t.fogDensity.value=n.density)},refreshMaterialUniforms:function(e,r,a,s,o){var l,u,c,h,d,p,f,m,g,v,_,y,x,b,S,M,T,w,E,A,C,R,P;let I;r.isMeshBasicMaterial||r.isMeshLambertMaterial?i(e,r):r.isMeshToonMaterial?(i(e,r),l=e,(u=r).gradientMap&&(l.gradientMap.value=u.gradientMap)):r.isMeshPhongMaterial?(i(e,r),c=e,h=r,c.specular.value.copy(h.specular),c.shininess.value=Math.max(h.shininess,1e-4)):r.isMeshStandardMaterial?(i(e,r),d=e,p=r,d.metalness.value=p.metalness,p.metalnessMap&&(d.metalnessMap.value=p.metalnessMap,n(p.metalnessMap,d.metalnessMapTransform)),d.roughness.value=p.roughness,p.roughnessMap&&(d.roughnessMap.value=p.roughnessMap,n(p.roughnessMap,d.roughnessMapTransform)),p.envMap&&(d.envMapIntensity.value=p.envMapIntensity),r.isMeshPhysicalMaterial&&(f=e,m=r,g=o,f.ior.value=m.ior,m.sheen>0&&(f.sheenColor.value.copy(m.sheenColor).multiplyScalar(m.sheen),f.sheenRoughness.value=m.sheenRoughness,m.sheenColorMap&&(f.sheenColorMap.value=m.sheenColorMap,n(m.sheenColorMap,f.sheenColorMapTransform)),m.sheenRoughnessMap&&(f.sheenRoughnessMap.value=m.sheenRoughnessMap,n(m.sheenRoughnessMap,f.sheenRoughnessMapTransform))),m.clearcoat>0&&(f.clearcoat.value=m.clearcoat,f.clearcoatRoughness.value=m.clearcoatRoughness,m.clearcoatMap&&(f.clearcoatMap.value=m.clearcoatMap,n(m.clearcoatMap,f.clearcoatMapTransform)),m.clearcoatRoughnessMap&&(f.clearcoatRoughnessMap.value=m.clearcoatRoughnessMap,n(m.clearcoatRoughnessMap,f.clearcoatRoughnessMapTransform)),m.clearcoatNormalMap&&(f.clearcoatNormalMap.value=m.clearcoatNormalMap,n(m.clearcoatNormalMap,f.clearcoatNormalMapTransform),f.clearcoatNormalScale.value.copy(m.clearcoatNormalScale),1===m.side&&f.clearcoatNormalScale.value.negate())),m.dispersion>0&&(f.dispersion.value=m.dispersion),m.iridescence>0&&(f.iridescence.value=m.iridescence,f.iridescenceIOR.value=m.iridescenceIOR,f.iridescenceThicknessMinimum.value=m.iridescenceThicknessRange[0],f.iridescenceThicknessMaximum.value=m.iridescenceThicknessRange[1],m.iridescenceMap&&(f.iridescenceMap.value=m.iridescenceMap,n(m.iridescenceMap,f.iridescenceMapTransform)),m.iridescenceThicknessMap&&(f.iridescenceThicknessMap.value=m.iridescenceThicknessMap,n(m.iridescenceThicknessMap,f.iridescenceThicknessMapTransform))),m.transmission>0&&(f.transmission.value=m.transmission,f.transmissionSamplerMap.value=g.texture,f.transmissionSamplerSize.value.set(g.width,g.height),m.transmissionMap&&(f.transmissionMap.value=m.transmissionMap,n(m.transmissionMap,f.transmissionMapTransform)),f.thickness.value=m.thickness,m.thicknessMap&&(f.thicknessMap.value=m.thicknessMap,n(m.thicknessMap,f.thicknessMapTransform)),f.attenuationDistance.value=m.attenuationDistance,f.attenuationColor.value.copy(m.attenuationColor)),m.anisotropy>0&&(f.anisotropyVector.value.set(m.anisotropy*Math.cos(m.anisotropyRotation),m.anisotropy*Math.sin(m.anisotropyRotation)),m.anisotropyMap&&(f.anisotropyMap.value=m.anisotropyMap,n(m.anisotropyMap,f.anisotropyMapTransform))),f.specularIntensity.value=m.specularIntensity,f.specularColor.value.copy(m.specularColor),m.specularColorMap&&(f.specularColorMap.value=m.specularColorMap,n(m.specularColorMap,f.specularColorMapTransform)),m.specularIntensityMap&&(f.specularIntensityMap.value=m.specularIntensityMap,n(m.specularIntensityMap,f.specularIntensityMapTransform)))):r.isMeshMatcapMaterial?(i(e,r),v=e,(_=r).matcap&&(v.matcap.value=_.matcap)):r.isMeshDepthMaterial?i(e,r):r.isMeshDistanceMaterial?(i(e,r),y=e,x=r,I=t.get(x).light,y.referencePosition.value.setFromMatrixPosition(I.matrixWorld),y.nearDistance.value=I.shadow.camera.near,y.farDistance.value=I.shadow.camera.far):r.isMeshNormalMaterial?i(e,r):r.isLineBasicMaterial?(b=e,S=r,b.diffuse.value.copy(S.color),b.opacity.value=S.opacity,S.map&&(b.map.value=S.map,n(S.map,b.mapTransform)),r.isLineDashedMaterial&&(M=e,T=r,M.dashSize.value=T.dashSize,M.totalSize.value=T.dashSize+T.gapSize,M.scale.value=T.scale)):r.isPointsMaterial?(w=e,E=r,A=a,C=s,w.diffuse.value.copy(E.color),w.opacity.value=E.opacity,w.size.value=E.size*A,w.scale.value=.5*C,E.map&&(w.map.value=E.map,n(E.map,w.uvTransform)),E.alphaMap&&(w.alphaMap.value=E.alphaMap,n(E.alphaMap,w.alphaMapTransform)),E.alphaTest>0&&(w.alphaTest.value=E.alphaTest)):r.isSpriteMaterial?(R=e,P=r,R.diffuse.value.copy(P.color),R.opacity.value=P.opacity,R.rotation.value=P.rotation,P.map&&(R.map.value=P.map,n(P.map,R.mapTransform)),P.alphaMap&&(R.alphaMap.value=P.alphaMap,n(P.alphaMap,R.alphaMapTransform)),P.alphaTest>0&&(R.alphaTest.value=P.alphaTest)):r.isShadowMaterial?(e.color.value.copy(r.color),e.opacity.value=r.opacity):r.isShaderMaterial&&(r.uniformsNeedUpdate=!1)}}}function uJ(e,t,n,i){let r={},a={},s=[],o=e.getParameter(e.MAX_UNIFORM_BUFFER_BINDINGS);function l(e){let t={boundary:0,storage:0};return"number"==typeof e||"boolean"==typeof e?(t.boundary=4,t.storage=4):e.isVector2?(t.boundary=8,t.storage=8):e.isVector3||e.isColor?(t.boundary=16,t.storage=12):e.isVector4?(t.boundary=16,t.storage=16):e.isMatrix3?(t.boundary=48,t.storage=48):e.isMatrix4?(t.boundary=64,t.storage=64):e.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",e),t}function u(t){let n=t.target;n.removeEventListener("dispose",u);let i=s.indexOf(n.__bindingPointIndex);s.splice(i,1),e.deleteBuffer(r[n.id]),delete r[n.id],delete a[n.id]}return{bind:function(e,t){let n=t.program;i.uniformBlockBinding(e,n)},update:function(n,c){var h;let d,p,f,m,g=r[n.id];void 0===g&&(function(e){let t=e.uniforms,n=0;for(let e=0,i=t.length;e0&&(n+=16-i),e.__size=n,e.__cache={}}(n),(h=n).__bindingPointIndex=d=function(){for(let e=0;etypeof WebGLRenderingContext&&A instanceof WebGLRenderingContext)throw Error("THREE.WebGLRenderer: WebGL 1 is not supported since r163.");t=A.getContextAttributes().alpha}else t=P;const B=new Uint32Array(4),k=new Int32Array(4);let H=null,V=null;const G=[],W=[];this.domElement=E,this.debug={checkShaderErrors:!0,onShaderError:null},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this._outputColorSpace=I,this.toneMapping=0,this.toneMappingExposure=1;const j=this;let X=!1,q=0,Y=0,Z=null,J=-1,K=null;const $=new e_,Q=new e_;let ee=null;const en=new tz(0);let eo=0,el=E.width,ec=E.height,eh=1,ed=null,ep=null;const ef=new e_(0,0,el,ec),em=new e_(0,0,el,ec);let eg=!1;const ev=new iS;let ey=!1,eb=!1;const eS=new e2,eM=new e2,eT=new eE,ew=new e_,eA={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};let eC=!1;function eR(){return null===Z?eh:1}let eP=A;function eI(e,t){return E.getContext(e,t)}try{if("setAttribute"in E&&E.setAttribute("data-engine","three.js r171"),E.addEventListener("webglcontextlost",eU,!1),E.addEventListener("webglcontextrestored",eD,!1),E.addEventListener("webglcontextcreationerror",eO,!1),null===eP){const e="webgl2";if(eP=eI(e,{alpha:!0,depth:C,stencil:R,antialias:N,premultipliedAlpha:U,preserveDrawingBuffer:D,powerPreference:O,failIfMajorPerformanceCaveat:F}),null===eP)if(eI(e))throw Error("Error creating WebGL context with your selected attributes.");else throw Error("Error creating WebGL context.")}}catch(e){throw console.error("THREE.WebGLRenderer: "+e.message),e}function eL(){(n=new lr(eP)).init(),M=new uk(eP,n),i=new oY(eP,n,e,M),r=new uz(eP,n),i.reverseDepthBuffer&&z&&r.buffers.depth.setReversed(!0),a=new lo(eP),s=new uw,o=new uB(eP,n,r,s,i,M,a),l=new oJ(j),u=new li(j),c=new oz(eP),T=new oX(eP,c),h=new la(eP,c,a,T),d=new lu(eP,h,c,a),x=new ll(eP,i,o),v=new oZ(s),p=new uT(j,l,u,n,i,T,v),f=new uZ(j,s),m=new uR,g=new uD(n),y=new oj(j,l,u,r,d,t,U),_=new uO(j,d,i),w=new uJ(eP,a,i,r),b=new oq(eP,n,a),S=new ls(eP,n,a),a.programs=p.programs,j.capabilities=i,j.extensions=n,j.properties=s,j.renderLists=m,j.shadowMap=_,j.state=r,j.info=a}eL();const eN=new uX(j,eP);function eU(e){e.preventDefault(),console.log("THREE.WebGLRenderer: Context Lost."),X=!0}function eD(){console.log("THREE.WebGLRenderer: Context Restored."),X=!1;let e=a.autoReset,t=_.enabled,n=_.autoUpdate,i=_.needsUpdate,r=_.type;eL(),a.autoReset=e,_.enabled=t,_.autoUpdate=n,_.needsUpdate=i,_.type=r}function eO(e){console.error("THREE.WebGLRenderer: A WebGL context could not be created. Reason: ",e.statusMessage)}function eF(e){var t,n;let i,r=e.target;r.removeEventListener("dispose",eF),n=t=r,void 0!==(i=s.get(n).programs)&&(i.forEach(function(e){p.releaseProgram(e)}),n.isShaderMaterial&&p.releaseShaderCache(n)),s.remove(t)}function ez(e,t,n){!0===e.transparent&&2===e.side&&!1===e.forceSinglePass?(e.side=1,e.needsUpdate=!0,eY(e,t,n),e.side=0,e.needsUpdate=!0,eY(e,t,n),e.side=2):eY(e,t,n)}this.xr=eN,this.getContext=function(){return eP},this.getContextAttributes=function(){return eP.getContextAttributes()},this.forceContextLoss=function(){let e=n.get("WEBGL_lose_context");e&&e.loseContext()},this.forceContextRestore=function(){let e=n.get("WEBGL_lose_context");e&&e.restoreContext()},this.getPixelRatio=function(){return eh},this.setPixelRatio=function(e){void 0!==e&&(eh=e,this.setSize(el,ec,!1))},this.getSize=function(e){return e.set(el,ec)},this.setSize=function(e,t,n=!0){eN.isPresenting?console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting."):(el=e,ec=t,E.width=Math.floor(e*eh),E.height=Math.floor(t*eh),!0===n&&(E.style.width=e+"px",E.style.height=t+"px"),this.setViewport(0,0,e,t))},this.getDrawingBufferSize=function(e){return e.set(el*eh,ec*eh).floor()},this.setDrawingBufferSize=function(e,t,n){el=e,ec=t,eh=n,E.width=Math.floor(e*n),E.height=Math.floor(t*n),this.setViewport(0,0,e,t)},this.getCurrentViewport=function(e){return e.copy($)},this.getViewport=function(e){return e.copy(ef)},this.setViewport=function(e,t,n,i){e.isVector4?ef.set(e.x,e.y,e.z,e.w):ef.set(e,t,n,i),r.viewport($.copy(ef).multiplyScalar(eh).round())},this.getScissor=function(e){return e.copy(em)},this.setScissor=function(e,t,n,i){e.isVector4?em.set(e.x,e.y,e.z,e.w):em.set(e,t,n,i),r.scissor(Q.copy(em).multiplyScalar(eh).round())},this.getScissorTest=function(){return eg},this.setScissorTest=function(e){r.setScissorTest(eg=e)},this.setOpaqueSort=function(e){ed=e},this.setTransparentSort=function(e){ep=e},this.getClearColor=function(e){return e.copy(y.getClearColor())},this.setClearColor=function(){y.setClearColor.apply(y,arguments)},this.getClearAlpha=function(){return y.getClearAlpha()},this.setClearAlpha=function(){y.setClearAlpha.apply(y,arguments)},this.clear=function(e=!0,t=!0,n=!0){let i=0;if(e){let e=!1;if(null!==Z){let t=Z.texture.format;e=1033===t||1031===t||1029===t}if(e){let e=Z.texture.type,t=1009===e||1014===e||1012===e||1020===e||1017===e||1018===e,n=y.getClearColor(),i=y.getClearAlpha(),r=n.r,a=n.g,s=n.b;t?(B[0]=r,B[1]=a,B[2]=s,B[3]=i,eP.clearBufferuiv(eP.COLOR,0,B)):(k[0]=r,k[1]=a,k[2]=s,k[3]=i,eP.clearBufferiv(eP.COLOR,0,k))}else i|=eP.COLOR_BUFFER_BIT}t&&(i|=eP.DEPTH_BUFFER_BIT),n&&(i|=eP.STENCIL_BUFFER_BIT,this.state.buffers.stencil.setMask(0xffffffff)),eP.clear(i)},this.clearColor=function(){this.clear(!0,!1,!1)},this.clearDepth=function(){this.clear(!1,!0,!1)},this.clearStencil=function(){this.clear(!1,!1,!0)},this.dispose=function(){E.removeEventListener("webglcontextlost",eU,!1),E.removeEventListener("webglcontextrestored",eD,!1),E.removeEventListener("webglcontextcreationerror",eO,!1),y.dispose(),m.dispose(),g.dispose(),s.dispose(),l.dispose(),u.dispose(),d.dispose(),T.dispose(),w.dispose(),p.dispose(),eN.dispose(),eN.removeEventListener("sessionstart",ek),eN.removeEventListener("sessionend",eH),eV.stop()},this.renderBufferDirect=function(e,t,a,d,p,m){let g;null===t&&(t=eA);let _=p.isMesh&&0>p.matrixWorld.determinant(),y=function(e,t,n,a,c){var h,d;!0!==t.isScene&&(t=eA),o.resetTextureUnits();let p=t.fog,m=a.isMeshStandardMaterial?t.environment:null,g=null===Z?j.outputColorSpace:!0===Z.isXRRenderTarget?Z.texture.colorSpace:L,_=(a.isMeshStandardMaterial?u:l).get(a.envMap||m),y=!0===a.vertexColors&&!!n.attributes.color&&4===n.attributes.color.itemSize,b=!!n.attributes.tangent&&(!!a.normalMap||a.anisotropy>0),S=!!n.morphAttributes.position,M=!!n.morphAttributes.normal,T=!!n.morphAttributes.color,E=0;a.toneMapped&&(null===Z||!0===Z.isXRRenderTarget)&&(E=j.toneMapping);let A=n.morphAttributes.position||n.morphAttributes.normal||n.morphAttributes.color,C=void 0!==A?A.length:0,R=s.get(a),P=V.state.lights;if(!0===ey&&(!0===eb||e!==K)){let t=e===K&&a.id===J;v.setState(a,e,t)}let I=!1;a.version===R.__version?R.needsLights&&R.lightsStateVersion!==P.state.version||R.outputColorSpace!==g||c.isBatchedMesh&&!1===R.batching?I=!0:c.isBatchedMesh||!0!==R.batching?c.isBatchedMesh&&!0===R.batchingColor&&null===c.colorTexture||c.isBatchedMesh&&!1===R.batchingColor&&null!==c.colorTexture||c.isInstancedMesh&&!1===R.instancing?I=!0:c.isInstancedMesh||!0!==R.instancing?c.isSkinnedMesh&&!1===R.skinning?I=!0:c.isSkinnedMesh||!0!==R.skinning?c.isInstancedMesh&&!0===R.instancingColor&&null===c.instanceColor||c.isInstancedMesh&&!1===R.instancingColor&&null!==c.instanceColor||c.isInstancedMesh&&!0===R.instancingMorph&&null===c.morphTexture||c.isInstancedMesh&&!1===R.instancingMorph&&null!==c.morphTexture||R.envMap!==_||!0===a.fog&&R.fog!==p||void 0!==R.numClippingPlanes&&(R.numClippingPlanes!==v.numPlanes||R.numIntersection!==v.numIntersection)||R.vertexAlphas!==y||R.vertexTangents!==b||R.morphTargets!==S||R.morphNormals!==M||R.morphColors!==T||R.toneMapping!==E?I=!0:R.morphTargetsCount!==C&&(I=!0):I=!0:I=!0:I=!0:(I=!0,R.__version=a.version);let N=R.currentProgram;!0===I&&(N=eY(a,t,c));let U=!1,D=!1,O=!1,F=N.getUniforms(),z=R.uniforms;if(r.useProgram(N.program)&&(U=!0,D=!0,O=!0),a.id!==J&&(J=a.id,D=!0),U||K!==e){r.buffers.depth.getReversed()?(eS.copy(e.projectionMatrix),ea(eS),es(eS),F.setValue(eP,"projectionMatrix",eS)):F.setValue(eP,"projectionMatrix",e.projectionMatrix),F.setValue(eP,"viewMatrix",e.matrixWorldInverse);let t=F.map.cameraPosition;void 0!==t&&t.setValue(eP,eT.setFromMatrixPosition(e.matrixWorld)),i.logarithmicDepthBuffer&&F.setValue(eP,"logDepthBufFC",2/(Math.log(e.far+1)/Math.LN2)),(a.isMeshPhongMaterial||a.isMeshToonMaterial||a.isMeshLambertMaterial||a.isMeshBasicMaterial||a.isMeshStandardMaterial||a.isShaderMaterial)&&F.setValue(eP,"isOrthographic",!0===e.isOrthographicCamera),K!==e&&(K=e,D=!0,O=!0)}if(c.isSkinnedMesh){F.setOptional(eP,c,"bindMatrix"),F.setOptional(eP,c,"bindMatrixInverse");let e=c.skeleton;e&&(null===e.boneTexture&&e.computeBoneTexture(),F.setValue(eP,"boneTexture",e.boneTexture,o))}c.isBatchedMesh&&(F.setOptional(eP,c,"batchingTexture"),F.setValue(eP,"batchingTexture",c._matricesTexture,o),F.setOptional(eP,c,"batchingIdTexture"),F.setValue(eP,"batchingIdTexture",c._indirectTexture,o),F.setOptional(eP,c,"batchingColorTexture"),null!==c._colorsTexture&&F.setValue(eP,"batchingColorTexture",c._colorsTexture,o));let B=n.morphAttributes;if((void 0!==B.position||void 0!==B.normal||void 0!==B.color)&&x.update(c,n,N),(D||R.receiveShadow!==c.receiveShadow)&&(R.receiveShadow=c.receiveShadow,F.setValue(eP,"receiveShadow",c.receiveShadow)),a.isMeshGouraudMaterial&&null!==a.envMap&&(z.envMap.value=_,z.flipEnvMap.value=_.isCubeTexture&&!1===_.isRenderTargetTexture?-1:1),a.isMeshStandardMaterial&&null===a.envMap&&null!==t.environment&&(z.envMapIntensity.value=t.environmentIntensity),D&&(F.setValue(eP,"toneMappingExposure",j.toneMappingExposure),R.needsLights&&(h=z,d=O,h.ambientLightColor.needsUpdate=d,h.lightProbe.needsUpdate=d,h.directionalLights.needsUpdate=d,h.directionalLightShadows.needsUpdate=d,h.pointLights.needsUpdate=d,h.pointLightShadows.needsUpdate=d,h.spotLights.needsUpdate=d,h.spotLightShadows.needsUpdate=d,h.rectAreaLights.needsUpdate=d,h.hemisphereLights.needsUpdate=d),p&&!0===a.fog&&f.refreshFogUniforms(z,p),f.refreshMaterialUniforms(z,a,eh,ec,V.state.transmissionRenderTarget[e.id]),ui.upload(eP,eZ(R),z,o)),a.isShaderMaterial&&!0===a.uniformsNeedUpdate&&(ui.upload(eP,eZ(R),z,o),a.uniformsNeedUpdate=!1),a.isSpriteMaterial&&F.setValue(eP,"center",c.center),F.setValue(eP,"modelViewMatrix",c.modelViewMatrix),F.setValue(eP,"normalMatrix",c.normalMatrix),F.setValue(eP,"modelMatrix",c.matrixWorld),a.isShaderMaterial||a.isRawShaderMaterial){let e=a.uniformsGroups;for(let t=0,n=e.length;t{function i(){(r.forEach(function(e){s.get(e).currentProgram.isReady()&&r.delete(e)}),0===r.size)?t(e):setTimeout(i,10)}null!==n.get("KHR_parallel_shader_compile")?i():setTimeout(i,10)})};let eB=null;function ek(){eV.stop()}function eH(){eV.start()}const eV=new oF;function eG(e,t,n,i){if(!1===e.visible)return;if(e.layers.test(t.layers)){if(e.isGroup)n=e.renderOrder;else if(e.isLOD)!0===e.autoUpdate&&e.update(t);else if(e.isLight)V.pushLight(e),e.castShadow&&V.pushShadow(e);else if(e.isSprite){if(!e.frustumCulled||ev.intersectsSprite(e)){i&&ew.setFromMatrixPosition(e.matrixWorld).applyMatrix4(eM);let t=d.update(e),r=e.material;r.visible&&H.push(e,t,r,n,ew.z,null)}}else if((e.isMesh||e.isLine||e.isPoints)&&(!e.frustumCulled||ev.intersectsObject(e))){let t=d.update(e),r=e.material;if(i&&(void 0!==e.boundingSphere?(null===e.boundingSphere&&e.computeBoundingSphere(),ew.copy(e.boundingSphere.center)):(null===t.boundingSphere&&t.computeBoundingSphere(),ew.copy(t.boundingSphere.center)),ew.applyMatrix4(e.matrixWorld).applyMatrix4(eM)),Array.isArray(r)){let i=t.groups;for(let a=0,s=i.length;a0&&eX(a,t,n),s.length>0&&eX(s,t,n),o.length>0&&eX(o,t,n),r.buffers.depth.setTest(!0),r.buffers.depth.setMask(!0),r.buffers.color.setMask(!0),r.setPolygonOffset(!1)}function ej(e,t,i,r){if(null!==(!0===i.isScene?i.overrideMaterial:null))return;void 0===V.state.transmissionRenderTarget[r.id]&&(V.state.transmissionRenderTarget[r.id]=new ex(1,1,{generateMipmaps:!0,type:n.has("EXT_color_buffer_half_float")||n.has("EXT_color_buffer_float")?1016:1009,minFilter:1008,samples:4,stencilBuffer:R,resolveDepthBuffer:!1,resolveStencilBuffer:!1,colorSpace:eu.workingColorSpace}));let a=V.state.transmissionRenderTarget[r.id],s=r.viewport||$;a.setSize(s.z,s.w);let l=j.getRenderTarget();j.setRenderTarget(a),j.getClearColor(en),(eo=j.getClearAlpha())<1&&j.setClearColor(0xffffff,.5),j.clear(),eC&&y.render(i);let u=j.toneMapping;j.toneMapping=0;let c=r.viewport;if(void 0!==r.viewport&&(r.viewport=void 0),V.setupLightsView(r),!0===ey&&v.setGlobalState(j.clippingPlanes,r),eX(e,i,r),o.updateMultisampleRenderTarget(a),o.updateRenderTargetMipmap(a),!1===n.has("WEBGL_multisampled_render_to_texture")){let e=!1;for(let n=0,a=t.length;ntypeof self&&eV.setContext(self),this.setAnimationLoop=function(e){eB=e,eN.setAnimationLoop(e),null===e?eV.stop():eV.start()},eN.addEventListener("sessionstart",ek),eN.addEventListener("sessionend",eH),this.render=function(e,t){if(void 0!==t&&!0!==t.isCamera)return void console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");if(!0===X)return;if(!0===e.matrixWorldAutoUpdate&&e.updateMatrixWorld(),null===t.parent&&!0===t.matrixWorldAutoUpdate&&t.updateMatrixWorld(),!0===eN.enabled&&!0===eN.isPresenting&&(!0===eN.cameraAutoUpdate&&eN.updateCamera(t),t=eN.getCamera()),!0===e.isScene&&e.onBeforeRender(j,e,t,Z),(V=g.get(e,W.length)).init(t),W.push(V),eM.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),ev.setFromProjectionMatrix(eM),eb=this.localClippingEnabled,ey=v.init(this.clippingPlanes,eb),(H=m.get(e,G.length)).init(),G.push(H),!0===eN.enabled&&!0===eN.isPresenting){let e=j.xr.getDepthSensingMesh();null!==e&&eG(e,t,-1/0,j.sortObjects)}eG(e,t,0,j.sortObjects),H.finish(),!0===j.sortObjects&&H.sort(ed,ep),(eC=!1===eN.enabled||!1===eN.isPresenting||!1===eN.hasDepthSensing())&&y.addToRenderList(H,e),this.info.render.frame++,!0===ey&&v.beginShadows();let n=V.state.shadowsArray;_.render(n,e,t),!0===ey&&v.endShadows(),!0===this.info.autoReset&&this.info.reset();let i=H.opaque,r=H.transmissive;if(V.setupLights(),t.isArrayCamera){let n=t.cameras;if(r.length>0)for(let t=0,a=n.length;t0&&ej(i,r,e,t),eC&&y.render(e),eW(H,e,t);null!==Z&&(o.updateMultisampleRenderTarget(Z),o.updateRenderTargetMipmap(Z)),!0===e.isScene&&e.onAfterRender(j,e,t),T.resetDefaultState(),J=-1,K=null,W.pop(),W.length>0?(V=W[W.length-1],!0===ey&&v.setGlobalState(j.clippingPlanes,V.state.camera)):V=null,G.pop(),H=G.length>0?G[G.length-1]:null},this.getActiveCubeFace=function(){return q},this.getActiveMipmapLevel=function(){return Y},this.getRenderTarget=function(){return Z},this.setRenderTargetTextures=function(e,t,i){s.get(e.texture).__webglTexture=t,s.get(e.depthTexture).__webglTexture=i;let r=s.get(e);r.__hasExternalTextures=!0,r.__autoAllocateDepthBuffer=void 0===i,r.__autoAllocateDepthBuffer||!0!==n.has("WEBGL_multisampled_render_to_texture")||(console.warn("THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided"),r.__useRenderToTexture=!1)},this.setRenderTargetFramebuffer=function(e,t){let n=s.get(e);n.__webglFramebuffer=t,n.__useDefaultFramebuffer=void 0===t},this.setRenderTarget=function(e,t=0,n=0){Z=e,q=t,Y=n;let i=!0,a=null,l=!1,u=!1;if(e){let c=s.get(e);if(void 0!==c.__useDefaultFramebuffer)r.bindFramebuffer(eP.FRAMEBUFFER,null),i=!1;else if(void 0===c.__webglFramebuffer)o.setupRenderTarget(e);else if(c.__hasExternalTextures)o.rebindTextures(e,s.get(e.texture).__webglTexture,s.get(e.depthTexture).__webglTexture);else if(e.depthBuffer){let t=e.depthTexture;if(c.__boundDepthTexture!==t){if(null!==t&&s.has(t)&&(e.width!==t.image.width||e.height!==t.image.height))throw Error("WebGLRenderTarget: Attached DepthTexture is initialized to the incorrect size.");o.setupDepthRenderbuffer(e)}}let h=e.texture;(h.isData3DTexture||h.isDataArrayTexture||h.isCompressedArrayTexture)&&(u=!0);let d=s.get(e).__webglFramebuffer;e.isWebGLCubeRenderTarget?(a=Array.isArray(d[t])?d[t][n]:d[t],l=!0):a=e.samples>0&&!1===o.useMultisampledRTT(e)?s.get(e).__webglMultisampledFramebuffer:Array.isArray(d)?d[n]:d,$.copy(e.viewport),Q.copy(e.scissor),ee=e.scissorTest}else $.copy(ef).multiplyScalar(eh).floor(),Q.copy(em).multiplyScalar(eh).floor(),ee=eg;if(r.bindFramebuffer(eP.FRAMEBUFFER,a)&&i&&r.drawBuffers(e,a),r.viewport($),r.scissor(Q),r.setScissorTest(ee),l){let i=s.get(e.texture);eP.framebufferTexture2D(eP.FRAMEBUFFER,eP.COLOR_ATTACHMENT0,eP.TEXTURE_CUBE_MAP_POSITIVE_X+t,i.__webglTexture,n)}else if(u){let i=s.get(e.texture);eP.framebufferTextureLayer(eP.FRAMEBUFFER,eP.COLOR_ATTACHMENT0,i.__webglTexture,n||0,t||0)}J=-1},this.readRenderTargetPixels=function(e,t,n,a,o,l,u){if(!(e&&e.isWebGLRenderTarget))return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let c=s.get(e).__webglFramebuffer;if(e.isWebGLCubeRenderTarget&&void 0!==u&&(c=c[u]),c){r.bindFramebuffer(eP.FRAMEBUFFER,c);try{let r=e.texture,s=r.format,u=r.type;if(!i.textureFormatReadable(s))return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");if(!i.textureTypeReadable(u))return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");t>=0&&t<=e.width-a&&n>=0&&n<=e.height-o&&eP.readPixels(t,n,a,o,M.convert(s),M.convert(u),l)}finally{let e=null!==Z?s.get(Z).__webglFramebuffer:null;r.bindFramebuffer(eP.FRAMEBUFFER,e)}}},this.readRenderTargetPixelsAsync=async function(e,t,n,a,o,l,u){if(!(e&&e.isWebGLRenderTarget))throw Error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let c=s.get(e).__webglFramebuffer;if(e.isWebGLCubeRenderTarget&&void 0!==u&&(c=c[u]),c){let u=e.texture,h=u.format,d=u.type;if(!i.textureFormatReadable(h))throw Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.");if(!i.textureTypeReadable(d))throw Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.");if(t>=0&&t<=e.width-a&&n>=0&&n<=e.height-o){r.bindFramebuffer(eP.FRAMEBUFFER,c);let e=eP.createBuffer();eP.bindBuffer(eP.PIXEL_PACK_BUFFER,e),eP.bufferData(eP.PIXEL_PACK_BUFFER,l.byteLength,eP.STREAM_READ),eP.readPixels(t,n,a,o,M.convert(h),M.convert(d),0);let i=null!==Z?s.get(Z).__webglFramebuffer:null;r.bindFramebuffer(eP.FRAMEBUFFER,i);let u=eP.fenceSync(eP.SYNC_GPU_COMMANDS_COMPLETE,0);return eP.flush(),await er(eP,u,4),eP.bindBuffer(eP.PIXEL_PACK_BUFFER,e),eP.getBufferSubData(eP.PIXEL_PACK_BUFFER,0,l),eP.deleteBuffer(e),eP.deleteSync(u),l}throw Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.")}},this.copyFramebufferToTexture=function(e,t=null,n=0){!0!==e.isTexture&&(ei("WebGLRenderer: copyFramebufferToTexture function signature has changed."),t=arguments[0]||null,e=arguments[1]);let i=Math.pow(2,-n),a=Math.floor(e.image.width*i),s=Math.floor(e.image.height*i),l=null!==t?t.x:0,u=null!==t?t.y:0;o.setTexture2D(e,0),eP.copyTexSubImage2D(eP.TEXTURE_2D,n,0,0,l,u,a,s),r.unbindTexture()};const eK=eP.createFramebuffer(),e$=eP.createFramebuffer();this.copyTextureToTexture=function(e,t,n=null,i=null,a=0,l=null){let u,c,h,d,p,f,m,g,v,_;!0!==e.isTexture&&(ei("WebGLRenderer: copyTextureToTexture function signature has changed."),i=arguments[0]||null,e=arguments[1],t=arguments[2],l=arguments[3]||0,n=null),null===l&&(0!==a?(ei("WebGLRenderer: copyTextureToTexture function signature has changed to support src and dst mipmap levels."),l=a,a=0):l=0);let y=e.isCompressedTexture?e.mipmaps[l]:e.image;if(null!==n)u=n.max.x-n.min.x,c=n.max.y-n.min.y,h=n.isBox3?n.max.z-n.min.z:1,d=n.min.x,p=n.min.y,f=n.isBox3?n.min.z:0;else{let t=Math.pow(2,-a);u=Math.floor(y.width*t),c=Math.floor(y.height*t),h=e.isDataArrayTexture?y.depth:e.isData3DTexture?Math.floor(y.depth*t):1,d=0,p=0,f=0}null!==i?(m=i.x,g=i.y,v=i.z):(m=0,g=0,v=0);let x=M.convert(t.format),b=M.convert(t.type);t.isData3DTexture?(o.setTexture3D(t,0),_=eP.TEXTURE_3D):t.isDataArrayTexture||t.isCompressedArrayTexture?(o.setTexture2DArray(t,0),_=eP.TEXTURE_2D_ARRAY):(o.setTexture2D(t,0),_=eP.TEXTURE_2D),eP.pixelStorei(eP.UNPACK_FLIP_Y_WEBGL,t.flipY),eP.pixelStorei(eP.UNPACK_PREMULTIPLY_ALPHA_WEBGL,t.premultiplyAlpha),eP.pixelStorei(eP.UNPACK_ALIGNMENT,t.unpackAlignment);let S=eP.getParameter(eP.UNPACK_ROW_LENGTH),T=eP.getParameter(eP.UNPACK_IMAGE_HEIGHT),w=eP.getParameter(eP.UNPACK_SKIP_PIXELS),E=eP.getParameter(eP.UNPACK_SKIP_ROWS),A=eP.getParameter(eP.UNPACK_SKIP_IMAGES);eP.pixelStorei(eP.UNPACK_ROW_LENGTH,y.width),eP.pixelStorei(eP.UNPACK_IMAGE_HEIGHT,y.height),eP.pixelStorei(eP.UNPACK_SKIP_PIXELS,d),eP.pixelStorei(eP.UNPACK_SKIP_ROWS,p),eP.pixelStorei(eP.UNPACK_SKIP_IMAGES,f);let C=e.isDataArrayTexture||e.isData3DTexture,R=t.isDataArrayTexture||t.isData3DTexture;if(e.isDepthTexture){let n=s.get(e),i=s.get(t),o=s.get(n.__renderTarget),_=s.get(i.__renderTarget);r.bindFramebuffer(eP.READ_FRAMEBUFFER,o.__webglFramebuffer),r.bindFramebuffer(eP.DRAW_FRAMEBUFFER,_.__webglFramebuffer);for(let n=0;ntypeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}get coordinateSystem(){return 2e3}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(e){this._outputColorSpace=e;let t=this.getContext();t.drawingBufferColorspace=eu._getDrawingBufferColorSpace(e),t.unpackColorSpace=eu._getUnpackColorSpace()}}e.s(["PMREMGenerator",0,o8,"ShaderChunk",0,oB,"ShaderLib",0,oH,"UniformsLib",0,ok,"WebGLRenderer",0,uK,"WebGLUtils",0,uk],8560);var u$=e.i(30224);let uQ=e=>{let t,n=new Set,i=(e,i)=>{let r="function"==typeof e?e(t):e;if(!Object.is(r,t)){let e=t;t=(null!=i?i:"object"!=typeof r||null===r)?r:Object.assign({},t,r),n.forEach(n=>n(t,e))}},r=()=>t,a={setState:i,getState:r,getInitialState:()=>s,subscribe:e=>(n.add(e),()=>n.delete(e))},s=t=e(i,r,a);return a},u0=e=>e?uQ(e):uQ;e.s(["createStore",0,u0],8155);let{useSyncExternalStoreWithSelector:u1}=u$.default,u2=(e,t)=>{let n=u0(e),i=(e,i=t)=>(function(e,t=e=>e,n){let i=u1(e.subscribe,e.getState,e.getInitialState,t,n);return E.default.useDebugValue(i),i})(n,e,i);return Object.assign(i,n),i},u3=(e,t)=>e?u2(e,t):u2,u4=[];function u5(e,t,n=(e,t)=>e===t){if(e===t)return!0;if(!e||!t)return!1;let i=e.length;if(t.length!==i)return!1;for(let r=0;r0&&(r.timeout&&clearTimeout(r.timeout),r.timeout=setTimeout(r.remove,i.lifespan)),r.response;if(!n)throw r.promise}let r={keys:t,equal:i.equal,remove:()=>{let e=u4.indexOf(r);-1!==e&&u4.splice(e,1)},promise:("object"==typeof e&&"function"==typeof e.then?e:e(...t)).then(e=>{r.response=e,i.lifespan&&i.lifespan>0&&(r.timeout=setTimeout(r.remove,i.lifespan))}).catch(e=>r.error=e)};if(u4.push(r),!n)throw r.promise}var u8=e.i(89499),u9=e.i(43476),u7=E;function ce(e,t,n){if(!e)return;if(!0===n(e))return e;let i=t?e.return:e.child;for(;i;){let e=ce(i,t,n);if(e)return e;i=t?null:i.sibling}}function ct(e){try{return Object.defineProperties(e,{_currentRenderer:{get:()=>null,set(){}},_currentRenderer2:{get:()=>null,set(){}}})}catch(t){return e}}"u">typeof window&&((null==(y=window.document)?void 0:y.createElement)||(null==(x=window.navigator)?void 0:x.product)==="ReactNative")?u7.useLayoutEffect:u7.useEffect;let cn=ct(u7.createContext(null));class ci extends u7.Component{render(){return u7.createElement(cn.Provider,{value:this._reactInternals},this.props.children)}}function cr(){let e=u7.useContext(cn);if(null===e)throw Error("its-fine: useFiber must be called within a !");let t=u7.useId();return u7.useMemo(()=>{for(let n of[e,null==e?void 0:e.alternate]){if(!n)continue;let e=ce(n,!1,e=>{let n=e.memoizedState;for(;n;){if(n.memoizedState===t)return!0;n=n.next}});if(e)return e}},[e,t])}let ca=Symbol.for("react.context"),cs=e=>null!==e&&"object"==typeof e&&"$$typeof"in e&&e.$$typeof===ca;function co(e){let t=e.root;for(;t.getState().previousRoot;)t=t.getState().previousRoot;return t}E.act;let cl=e=>e&&e.hasOwnProperty("current"),cu=e=>null!=e&&("string"==typeof e||"number"==typeof e||e.isColor),cc="u">typeof window&&((null==(m=window.document)?void 0:m.createElement)||(null==(g=window.navigator)?void 0:g.product)==="ReactNative")?E.useLayoutEffect:E.useEffect;function ch(e){let t=E.useRef(e);return cc(()=>void(t.current=e),[e]),t}function cd(){let e,t=cr(),n=(e=function(){let e=cr(),[t]=u7.useState(()=>new Map);t.clear();let n=e;for(;n;){let e=n.type;cs(e)&&e!==cn&&!t.has(e)&&t.set(e,u7.use(ct(e))),n=n.return}return t}(),u7.useMemo(()=>Array.from(e.keys()).reduce((t,n)=>i=>u7.createElement(t,null,u7.createElement(n.Provider,{...i,value:e.get(n)})),e=>u7.createElement(ci,{...e})),[e]));return E.useMemo(()=>({children:e})=>{let i=ce(t,!0,e=>e.type===E.StrictMode)?E.StrictMode:E.Fragment;return(0,u9.jsx)(i,{children:(0,u9.jsx)(n,{children:e})})},[t,n])}function cp({set:e}){return cc(()=>(e(new Promise(()=>null)),()=>e(!1)),[e]),null}let cf=((v=class extends E.Component{constructor(...e){super(...e),this.state={error:!1}}componentDidCatch(e){this.props.set(e)}render(){return this.state.error?null:this.props.children}}).getDerivedStateFromError=()=>({error:!0}),v);function cm(e){var t;let n="u">typeof window?null!=(t=window.devicePixelRatio)?t:2:1;return Array.isArray(e)?Math.min(Math.max(e[0],n),e[1]):e}function cg(e){var t;return null==(t=e.__r3f)?void 0:t.root.getState()}let cv={obj:e=>e===Object(e)&&!cv.arr(e)&&"function"!=typeof e,fun:e=>"function"==typeof e,str:e=>"string"==typeof e,num:e=>"number"==typeof e,boo:e=>"boolean"==typeof e,und:e=>void 0===e,nul:e=>null===e,arr:e=>Array.isArray(e),equ(e,t,{arrays:n="shallow",objects:i="reference",strict:r=!0}={}){let a;if(typeof e!=typeof t||!!e!=!!t)return!1;if(cv.str(e)||cv.num(e)||cv.boo(e))return e===t;let s=cv.obj(e);if(s&&"reference"===i)return e===t;let o=cv.arr(e);if(o&&"reference"===n)return e===t;if((o||s)&&e===t)return!0;for(a in e)if(!(a in t))return!1;if(s&&"shallow"===n&&"shallow"===i){for(a in r?t:e)if(!cv.equ(e[a],t[a],{strict:r,objects:"reference"}))return!1}else for(a in r?t:e)if(e[a]!==t[a])return!1;if(cv.und(a)){if(o&&0===e.length&&0===t.length||s&&0===Object.keys(e).length&&0===Object.keys(t).length)return!0;if(e!==t)return!1}return!0}},c_=["children","key","ref"];function cy(e,t,n,i){let r=null==e?void 0:e.__r3f;return!r&&(r={root:t,type:n,parent:null,children:[],props:function(e){let t={};for(let n in e)c_.includes(n)||(t[n]=e[n]);return t}(i),object:e,eventCount:0,handlers:{},isHidden:!1},e&&(e.__r3f=r)),r}function cx(e,t){if(!t.includes("-")||t in e)return{root:e,key:t,target:e[t]};let n=e,i=t.split("-");for(let r of i){if("object"!=typeof n||null===n){if(void 0!==n)return{root:n,key:i.slice(i.indexOf(r)).join("-"),target:void 0};return{root:e,key:t,target:void 0}}t=r,e=n,n=n[t]}return{root:e,key:t,target:n}}let cb=/-\d+$/;function cS(e,t){if(cv.str(t.props.attach)){if(cb.test(t.props.attach)){let n=t.props.attach.replace(cb,""),{root:i,key:r}=cx(e.object,n);Array.isArray(i[r])||(i[r]=[])}let{root:n,key:i}=cx(e.object,t.props.attach);t.previousAttach=n[i],n[i]=t.object}else cv.fun(t.props.attach)&&(t.previousAttach=t.props.attach(e.object,t.object))}function cM(e,t){if(cv.str(t.props.attach)){let{root:n,key:i}=cx(e.object,t.props.attach),r=t.previousAttach;void 0===r?delete n[i]:n[i]=r}else null==t.previousAttach||t.previousAttach(e.object,t.object);delete t.previousAttach}let cT=[...c_,"args","dispose","attach","object","onUpdate","dispose"],cw=new Map,cE=["map","emissiveMap","sheenColorMap","specularColorMap","envMap"],cA=/^on(Pointer|Click|DoubleClick|ContextMenu|Wheel)/;function cC(e,t){var n,i;let r=e.__r3f,a=r&&co(r).getState(),s=null==r?void 0:r.eventCount;for(let n in t){let s=t[n];if(cT.includes(n))continue;if(r&&cA.test(n)){"function"==typeof s?r.handlers[n]=s:delete r.handlers[n],r.eventCount=Object.keys(r.handlers).length;continue}if(void 0===s)continue;let{root:o,key:l,target:u}=cx(e,n);if(void 0===u&&("object"!=typeof o||null===o))throw Error(`R3F: Cannot set "${n}". Ensure it is an object before setting "${l}".`);if(u instanceof ti&&s instanceof ti)u.mask=s.mask;else if(u instanceof tz&&cu(s))u.set(s);else if(null!==u&&"object"==typeof u&&"function"==typeof u.set&&"function"==typeof u.copy&&null!=s&&s.constructor&&u.constructor===s.constructor)u.copy(s);else if(null!==u&&"object"==typeof u&&"function"==typeof u.set&&Array.isArray(s))"function"==typeof u.fromArray?u.fromArray(s):u.set(...s);else if(null!==u&&"object"==typeof u&&"function"==typeof u.set&&"number"==typeof s)"function"==typeof u.setScalar?u.setScalar(s):u.set(s);else if(o instanceof nb&&"uniforms"===l&&cv.obj(s)){cv.obj(o.uniforms)||(o.uniforms={});let e=o.uniforms;for(let t in s){let n=s[t],i=e[t];i?Object.assign(i,n):e[t]={...n}}}else o[l]=s,a&&!a.linear&&cE.includes(l)&&null!=(i=o[l])&&i.isTexture&&1023===o[l].format&&1009===o[l].type&&(o[l].colorSpace=I)}if(null!=r&&r.parent&&null!=a&&a.internal&&null!=(n=r.object)&&n.isObject3D&&s!==r.eventCount){let e=r.object,t=a.internal.interaction.indexOf(e);t>-1&&a.internal.interaction.splice(t,1),r.eventCount&&null!==e.raycast&&a.internal.interaction.push(e)}return r&&void 0===r.props.attach&&(r.object.isBufferGeometry?r.props.attach="geometry":r.object.isMaterial&&(r.props.attach="material")),r&&cR(r),e}function cR(e){var t;if(!e.parent)return;null==e.props.onUpdate||e.props.onUpdate(e.object);let n=null==(t=e.root)||null==t.getState?void 0:t.getState();n&&0===n.internal.frames&&n.invalidate()}function cP(e,t){!e.manual&&(e&&e.isOrthographicCamera?(e.left=-(t.width/2),e.right=t.width/2,e.top=t.height/2,e.bottom=-(t.height/2)):e.aspect=t.width/t.height,e.updateProjectionMatrix())}let cI=e=>null==e?void 0:e.isObject3D;function cL(e){return(e.eventObject||e.object).uuid+"/"+e.index+e.instanceId}function cN(e,t,n,i){let r=n.get(t);r&&(n.delete(t),0===n.size&&(e.delete(i),r.target.releasePointerCapture(i)))}let cU=e=>!!(null!=e&&e.render),cD=E.createContext(null);function cO(){let e=E.useContext(cD);if(!e)throw Error("R3F: Hooks can only be used within the Canvas component!");return e}function cF(e=e=>e,t){return cO()(e,t)}function cz(e,t=0){let n=cO(),i=n.getState().internal.subscribe,r=ch(e);return cc(()=>i(r,t,n),[t,i,n]),null}let cB=new WeakMap;function ck(e,t){return function(n,...i){var r;let a;return"function"==typeof n&&(null==n||null==(r=n.prototype)?void 0:r.constructor)===n?(a=cB.get(n))||(a=new n,cB.set(n,a)):a=n,e&&e(a),Promise.all(i.map(e=>new Promise((n,i)=>a.load(e,e=>{var t;let i;cI(null==e?void 0:e.scene)&&Object.assign(e,(t=e.scene,i={nodes:{},materials:{},meshes:{}},t&&t.traverse(e=>{e.name&&(i.nodes[e.name]=e),e.material&&!i.materials[e.material.name]&&(i.materials[e.material.name]=e.material),e.isMesh&&!i.meshes[e.name]&&(i.meshes[e.name]=e)}),i)),n(e)},t,t=>i(Error(`Could not load ${e}: ${null==t?void 0:t.message}`))))))}}function cH(e,t,n,i){let r=Array.isArray(t)?t:[t],a=u6(ck(n,i),[e,...r],!1,{equal:cv.equ});return Array.isArray(t)?a:a[0]}cH.preload=function(e,t,n){let i,r=Array.isArray(t)?t:[t];u6(ck(n),[e,...r],!0,i)},cH.clear=function(e,t){var n=[e,...Array.isArray(t)?t:[t]];if(void 0===n||0===n.length)u4.splice(0,u4.length);else{let e=u4.find(e=>u5(n,e.keys,e.equal));e&&e.remove()}};var cV={exports:{}},cG={exports:{}};cG.exports;let cW=(T||(T=1,M||(M=1,cG.exports=function(e){function t(e,t,n,i){return new iJ(e,t,n,i)}function n(){}function i(e){var t="https://react.dev/errors/"+e;if(1sT||(e.current=sM[sT],sM[sT]=null,sT--)}function h(e,t){sM[++sT]=e.current,e.current=t}function d(e){var t=42&e;if(0!==t)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return 261888&e;case 262144:case 524288:case 1048576:case 2097152:return 3932160&e;case 4194304:case 8388608:case 0x1000000:case 0x2000000:return 0x3c00000&e;case 0x4000000:return 0x4000000;case 0x8000000:return 0x8000000;case 0x10000000:return 0x10000000;case 0x20000000:return 0x20000000;case 0x40000000:return 0;default:return e}}function p(e,t,n){var i=e.pendingLanes;if(0===i)return 0;var r=0,a=e.suspendedLanes,s=e.pingedLanes;e=e.warmLanes;var o=0x7ffffff&i;return 0!==o?0!=(i=o&~a)?r=d(i):0!=(s&=o)?r=d(s):n||0!=(n=o&~e)&&(r=d(n)):0!=(o=i&~a)?r=d(o):0!==s?r=d(s):n||0!=(n=i&~e)&&(r=d(n)),0===r?0:0!==t&&t!==r&&(t&a)==0&&((a=r&-r)>=(n=t&-t)||32===a&&(4194048&n)!=0)?t:r}function f(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)==0}function m(){var e=sI;return(0x3c00000&(sI<<=1))==0&&(sI=4194304),e}function g(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function v(e,t){e.pendingLanes|=t,0x10000000!==t&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function _(e,t,n){e.pendingLanes|=t,e.suspendedLanes&=~t;var i=31-sE(t);e.entangledLanes|=t,e.entanglements[i]=0x40000000|e.entanglements[i]|261930&n}function y(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var i=31-sE(n),r=1<)":-1r||l[i]!==u[r]){var c=` +`+l[i].replace(" at new "," at ");return e.displayName&&c.includes("")&&(c=c.replace("",e.displayName)),c}while(1<=i&&0<=r)break}}}finally{sY=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:"")?T(n):""}function C(e){try{var t="",n=null;do t+=function(e,t){switch(e.tag){case 26:case 27:case 5:return T(e.type);case 16:return T("Lazy");case 13:return e.child!==t&&null!==t?T("Suspense Fallback"):T("Suspense");case 19:return T("SuspenseList");case 0:case 15:return A(e.type,!1);case 11:return A(e.type.render,!1);case 1:return A(e.type,!0);case 31:return T("Activity");default:return""}}(e,n),n=e,e=e.return;while(e)return t}catch(e){return` +Error generating stack: `+e.message+` +`+e.stack}}function R(e,t){if("object"==typeof e&&null!==e){var n=sZ.get(e);return void 0!==n?n:(t={value:e,source:t,stack:C(t)},sZ.set(e,t),t)}return{value:e,source:t,stack:C(t)}}function P(e,t){sJ[sK++]=sQ,sJ[sK++]=s$,s$=e,sQ=t}function I(e,t,n){s0[s1++]=s3,s0[s1++]=s4,s0[s1++]=s2,s2=e;var i=s3;e=s4;var r=32-sE(i)-1;i&=~(1<>=s,r-=s,s3=1<<32-sE(t)+r|n<d?(p=h,h=null):p=h.sibling;var v=m(t,h,s[d],o);if(null===v){null===h&&(h=p);break}e&&h&&null===v.alternate&&n(t,h),i=l(v,i,d),null===c?u=v:c.sibling=v,c=v,h=p}if(d===s.length)return r(t,h),ot&&P(t,d),u;if(null===h){for(;dp?(v=d,d=null):v=d.sibling;var y=m(t,d,_.value,u);if(null===y){null===d&&(d=v);break}e&&d&&null===y.alternate&&n(t,d),s=l(y,s,p),null===h?c=y:h.sibling=y,h=y,d=v}if(_.done)return r(t,d),ot&&P(t,p),c;if(null===d){for(;!_.done;p++,_=o.next())null!==(_=f(t,_.value,u))&&(s=l(_,s,p),null===h?c=_:h.sibling=_,h=_);return ot&&P(t,p),c}for(d=a(d);!_.done;p++,_=o.next())null!==(_=g(d,t,p,_.value,u))&&(e&&null!==_.alternate&&d.delete(null===_.key?p:_.key),s=l(_,s,p),null===h?c=_:h.sibling=_,h=_);return e&&d.forEach(function(e){return n(t,e)}),ot&&P(t,p),c}(c,h,d=v.call(d),p)}if("function"==typeof d.then)return t(c,h,eM(d),p);if(d.$$typeof===rd)return t(c,h,ee(c,d),p);ew(c,d)}return"string"==typeof d&&""!==d||"number"==typeof d||"bigint"==typeof d?(d=""+d,null!==h&&6===h.tag?(r(c,h.sibling),(p=s(h,d)).return=c):(r(c,h),(p=i2(d,c.mode,p)).return=c),u(c=p)):r(c,h)}(c,h,d,p);return oR=null,v}catch(e){if(e===oT||e===oE)throw e;var _=t(29,e,null,c.mode);return _.lanes=p,_.return=c,_}finally{}}}function eA(){for(var e=oU,t=oD=oU=0;ta?a:8);var s=rM.T,o={};rM.T=o,t$(e,!1,t,n);try{var l=r(),u=rM.S;if(null!==u&&u(o,l),null!==l&&"object"==typeof l&&"function"==typeof l.then){var c,h,d=(c=[],h={status:"pending",value:null,reason:null,then:function(e){c.push(e)}},l.then(function(){h.status="fulfilled",h.value=i;for(var e=0;e";case lu:return":has("+(id(e)||"")+")";case lc:return'[role="'+e.value+'"]';case ld:return'"'+e.value+'"';case lh:return'[data-testname="'+e.value+'"]';default:throw Error(i(365))}}function ip(e,t){var n=[];e=[e,0];for(var i=0;ilO&&(t.flags|=128,a=!0,nO(r,!1),t.lanes=4194304)}else{if(!a)if(null!==(e=eK(s))){if(t.flags|=128,a=!0,t.updateQueue=e=e.updateQueue,nD(t,e),nO(r,!0),null===r.tail&&"hidden"===r.tailMode&&!s.alternate&&!ot)return nF(t),null}else 2*sO()-r.renderingStartTime>lO&&0x20000000!==n&&(t.flags|=128,a=!0,nO(r,!1),t.lanes=4194304);r.isBackwards?(s.sibling=t.child,t.child=s):(null!==(e=r.last)?e.sibling=s:t.child=s,r.last=s)}return null!==r.tail?(e=r.tail,r.rendering=e,r.tail=e.sibling,r.renderingStartTime=sO(),e.sibling=null,n=oV.current,h(oV,a?1&n|2:1&n),ot&&P(t,r.treeForkCount),e):(nF(t),null);case 22:case 23:return eJ(t),ej(),r=null!==t.memoizedState,null!==e?null!==e.memoizedState!==r&&(t.flags|=8192):r&&(t.flags|=8192),r?(0x20000000&n)!=0&&(128&t.flags)==0&&(nF(t),6&t.subtreeFlags&&(t.flags|=8192)):nF(t),null!==(n=t.updateQueue)&&nD(t,n.retryQueue),n=null,null!==e&&null!==e.memoizedState&&null!==e.memoizedState.cachePool&&(n=e.memoizedState.cachePool.pool),r=null,null!==t.memoizedState&&null!==t.memoizedState.cachePool&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),null!==e&&c(oM),null;case 24:return n=null,null!==e&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),q(oh),nF(t),null;case 25:case 30:return null}throw Error(i(156,t.tag))}(t.alternate,t,lT);if(null!==n){lv=n;return}if(null!==(t=t.sibling)){lv=t;return}lv=t=e}while(null!==t)0===lw&&(lw=5)}function iD(e,t){do{var n=function(e,t){switch(N(t),t.tag){case 1:return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 3:return q(oh),O(),(65536&(e=t.flags))!=0&&(128&e)==0?(t.flags=-65537&e|128,t):null;case 26:case 27:case 5:return z(t),null;case 31:if(null!==t.memoizedState){if(eJ(t),null===t.alternate)throw Error(i(340));G()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 13:if(eJ(t),null!==(e=t.memoizedState)&&null!==e.dehydrated){if(null===t.alternate)throw Error(i(340));G()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 19:return c(oV),null;case 4:return O(),null;case 10:return q(t.type),null;case 22:case 23:return eJ(t),ej(),null!==e&&c(oM),65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 24:return q(oh),null;default:return null}}(e.alternate,e);if(null!==n){n.flags&=32767,lv=n;return}if(null!==(n=e.return)&&(n.flags|=32768,n.subtreeFlags=0,n.deletions=null),!t&&null!==(e=e.sibling)){lv=e;return}lv=e=n}while(null!==e)lw=6,lv=null}function iO(e,t,n,r,a,s,o,l,u){e.cancelPendingCommit=null;do iH();while(0!==lB)if((6&lm)!=0)throw Error(i(327));if(null!==t){if(t===e.current)throw Error(i(177));if(function(e,t,n,i,r,a){var s=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var o=e.entanglements,l=e.expirationTimes,u=e.hiddenUpdates;for(n=s&~n;0n?32:n;n=rM.T;var a=rq();try{rX(r),rM.T=null,r=lW,lW=null;var s=lk,o=lV;if(lB=0,lH=lk=null,lV=0,(6&lm)!=0)throw Error(i(331));var l=lm;if(lm|=4,il(s.current),it(s,s.current,o,r),lm=l,es(0,!1),sW&&"function"==typeof sW.onPostCommitFiberRoot)try{sW.onPostCommitFiberRoot(sG,s)}catch{}return!0}finally{rX(a),rM.T=n,ik(e,t)}}function iG(e,t,n){t=R(n,t),t=t9(e.stateNode,t,2),null!==(e=eO(e,t,2))&&(v(e,2),ea(e))}function iW(e,t,n){if(3===e.tag)iG(e,e,n);else for(;null!==t;){if(3===t.tag){iG(t,e,n);break}if(1===t.tag){var i=t.stateNode;if("function"==typeof t.type.getDerivedStateFromError||"function"==typeof i.componentDidCatch&&(null===lz||!lz.has(i))){e=R(n,e),null!==(i=eO(t,n=t7(2),2))&&(ne(n,i,t,e),v(i,2),ea(i));break}}t=t.return}}function ij(e,t,n){var i=e.pingCache;if(null===i){i=e.pingCache=new lf;var r=new Set;i.set(t,r)}else void 0===(r=i.get(t))&&(r=new Set,i.set(t,r));r.has(n)||(lM=!0,r.add(n),e=iX.bind(null,e,t,n),t.then(e,e))}function iX(e,t,n){var i=e.pingCache;null!==i&&i.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,lg===e&&(l_&n)===n&&(4===lw||3===lw&&(0x3c00000&l_)===l_&&300>sO()-lU?(2&lm)==0&&iT(e,0):lC|=n,lP===l_&&(lP=0)),ea(e)}function iq(e,t){0===t&&(t=m()),null!==(e=eP(e,t))&&(v(e,t),ea(e))}function iY(e){var t=e.memoizedState,n=0;null!==t&&(n=t.retryLane),iq(e,n)}function iZ(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,a=e.memoizedState;null!==a&&(n=a.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(i(314))}null!==r&&r.delete(t),iq(e,n)}function iJ(e,t,n,i){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=i,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function iK(e){return!(!(e=e.prototype)||!e.isReactComponent)}function i$(e,n){var i=e.alternate;return null===i?((i=t(e.tag,n,e.key,e.mode)).elementType=e.elementType,i.type=e.type,i.stateNode=e.stateNode,i.alternate=e,e.alternate=i):(i.pendingProps=n,i.type=e.type,i.flags=0,i.subtreeFlags=0,i.deletions=null),i.flags=0x3e00000&e.flags,i.childLanes=e.childLanes,i.lanes=e.lanes,i.child=e.child,i.memoizedProps=e.memoizedProps,i.memoizedState=e.memoizedState,i.updateQueue=e.updateQueue,n=e.dependencies,i.dependencies=null===n?null:{lanes:n.lanes,firstContext:n.firstContext},i.sibling=e.sibling,i.index=e.index,i.ref=e.ref,i.refCleanup=e.refCleanup,i}function iQ(e,t){e.flags&=0x3e00002;var n=e.alternate;return null===n?(e.childLanes=0,e.lanes=t,e.child=null,e.subtreeFlags=0,e.memoizedProps=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null,e.stateNode=null):(e.childLanes=n.childLanes,e.lanes=n.lanes,e.child=n.child,e.subtreeFlags=0,e.deletions=null,e.memoizedProps=n.memoizedProps,e.memoizedState=n.memoizedState,e.updateQueue=n.updateQueue,e.type=n.type,e.dependencies=null===(t=n.dependencies)?null:{lanes:t.lanes,firstContext:t.firstContext}),e}function i0(e,n,r,a,s,o){var l=0;if(a=e,"function"==typeof e)iK(e)&&(l=1);else if("string"==typeof e)l=si&&sv?sr(e,r,s5.current)?26:sb(e)?27:5:si?sr(e,r,s5.current)?26:5:sv&&sb(e)?27:5;else o:switch(e){case r_:return(e=t(31,r,n,s)).elementType=r_,e.lanes=o,e;case rl:return i1(r.children,s,o,n);case ru:l=8,s|=24;break;case rc:return(e=t(12,r,n,2|s)).elementType=rc,e.lanes=o,e;case rf:return(e=t(13,r,n,s)).elementType=rf,e.lanes=o,e;case rm:return(e=t(19,r,n,s)).elementType=rm,e.lanes=o,e;default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case rd:l=10;break o;case rh:l=9;break o;case rp:l=11;break o;case rg:l=14;break o;case rv:l=16,a=null;break o}l=29,r=Error(i(130,null===e?"null":typeof e,"")),a=null}return(n=t(l,r,n,s)).elementType=e,n.type=a,n.lanes=o,n}function i1(e,n,i,r){return(e=t(7,e,r,n)).lanes=i,e}function i2(e,n,i){return(e=t(6,e,null,n)).lanes=i,e}function i3(e){var n=t(18,null,null,0);return n.stateNode=e,n}function i4(e,n,i){return(n=t(4,null!==e.children?e.children:[],e.key,n)).lanes=i,n.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},n}function i5(e,t,n,i,r,a,s,o,l){this.tag=1,this.containerInfo=e,this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=rB,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=g(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=g(0),this.hiddenUpdates=g(null),this.identifierPrefix=i,this.onUncaughtError=r,this.onCaughtError=a,this.onRecoverableError=s,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=l,this.incompleteTransitions=new Map}function i6(e,n,i,r,a,s,o,l,u,c,h,d){return e=new i5(e,n,i,o,u,c,h,d,l),n=1,!0===s&&(n|=24),s=t(3,null,null,n),e.current=s,s.stateNode=e,n=en(),n.refCount++,e.pooledCache=n,n.refCount++,s.memoizedState={element:r,isDehydrated:i,cache:n},eN(s),e}function i8(e){var t=e._reactInternals;if(void 0===t)throw"function"==typeof e.render?Error(i(188)):Error(i(268,e=Object.keys(e).join(",")));return null===(e=null!==(e=s(t))?function e(t){var n=t.tag;if(5===n||26===n||27===n||6===n)return t;for(t=t.child;null!==t;){if(null!==(n=e(t)))return n;t=t.sibling}return null}(e):null)?null:rA(e.stateNode)}function i9(e,t,n,i,r,a){r=sw,null===i.context?i.context=r:i.pendingContext=r,(i=eD(t)).payload={element:n},null!==(a=void 0===a?null:a)&&(i.callback=a),null!==(n=eO(e,i,t))&&(i_(n,e,t),eF(n,e,t))}function i7(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&&n>>=0)?32:31-(sA(e)/sC|0)|0},sA=Math.log,sC=Math.LN2,sR=256,sP=262144,sI=4194304,sL=ri.unstable_scheduleCallback,sN=ri.unstable_cancelCallback,sU=ri.unstable_shouldYield,sD=ri.unstable_requestPaint,sO=ri.unstable_now,sF=ri.unstable_ImmediatePriority,sz=ri.unstable_UserBlockingPriority,sB=ri.unstable_NormalPriority,sk=ri.unstable_IdlePriority,sH=ri.log,sV=ri.unstable_setDisableYieldValue,sG=null,sW=null,sj="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},sX="function"==typeof reportError?reportError:function(e){if("object"==typeof window&&"function"==typeof window.ErrorEvent){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:"object"==typeof e&&null!==e&&"string"==typeof e.message?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if("object"==typeof w.default&&"function"==typeof w.default.emit)return void w.default.emit("uncaughtException",e);console.error(e)},sq=Object.prototype.hasOwnProperty,sY=!1,sZ=new WeakMap,sJ=[],sK=0,s$=null,sQ=0,s0=[],s1=0,s2=null,s3=1,s4="",s5=u(null),s6=u(null),s8=u(null),s9=u(null),s7=null,oe=null,ot=!1,on=null,oi=!1,or=Error(i(519)),oa=u(null),os=null,oo=null,ol="u">typeof AbortController?AbortController:function(){var e=[],t=this.signal={aborted:!1,addEventListener:function(t,n){e.push(n)}};this.abort=function(){t.aborted=!0,e.forEach(function(e){return e()})}},ou=ri.unstable_scheduleCallback,oc=ri.unstable_NormalPriority,oh={$$typeof:rd,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0},od=null,op=null,of=!1,om=!1,og=!1,ov=0,o_=null,oy=0,ox=0,ob=null,oS=rM.S;rM.S=function(e,t){lD=sO(),"object"==typeof t&&null!==t&&"function"==typeof t.then&&function(e){if(null===o_){var t=o_=[];oy=0,ox=ed(),ob={status:"pending",value:void 0,then:function(e){t.push(e)}}}oy++,e.then(ep,ep)}(t),null!==oS&&oS(e,t)};var oM=u(null),oT=Error(i(460)),ow=Error(i(474)),oE=Error(i(542)),oA={then:function(){}},oC=null,oR=null,oP=0,oI=eE(!0),oL=eE(!1),oN=[],oU=0,oD=0,oO=!1,oF=!1,oz=u(null),oB=u(0),ok=u(null),oH=null,oV=u(0),oG=0,oW=null,oj=null,oX=null,oq=!1,oY=!1,oZ=!1,oJ=0,oK=0,o$=null,oQ=0,o0={readContext:Q,use:tt,useCallback:e$,useContext:e$,useEffect:e$,useImperativeHandle:e$,useLayoutEffect:e$,useInsertionEffect:e$,useMemo:e$,useReducer:e$,useRef:e$,useState:e$,useDebugValue:e$,useDeferredValue:e$,useTransition:e$,useSyncExternalStore:e$,useId:e$,useHostTransitionStatus:e$,useFormState:e$,useActionState:e$,useOptimistic:e$,useMemoCache:e$,useCacheRefresh:e$};o0.useEffectEvent=e$;var o1={readContext:Q,use:tt,useCallback:function(e,t){return e8().memoizedState=[e,void 0===t?null:t],e},useContext:Q,useEffect:tI,useImperativeHandle:function(e,t,n){n=null!=n?n.concat([e]):null,tR(4194308,4,tO.bind(null,t,e),n)},useLayoutEffect:function(e,t){return tR(4194308,4,e,t)},useInsertionEffect:function(e,t){tR(4,2,e,t)},useMemo:function(e,t){var n=e8();t=void 0===t?null:t;var i=e();return n.memoizedState=[i,t],i},useReducer:function(e,t,n){var i=e8();if(void 0!==n)var r=n(t);else r=t;return i.memoizedState=i.baseState=r,i.queue=e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:r},e=e.dispatch=tZ.bind(null,oW,e),[i.memoizedState,e]},useRef:function(e){return e8().memoizedState={current:e}},useState:function(e){var t=(e=tp(e)).queue,n=tJ.bind(null,oW,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:tz,useDeferredValue:function(e,t){return tH(e8(),e,t)},useTransition:function(){var e=tp(!1);return e=tG.bind(null,oW,e.queue,!0,!1),e8().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var r=oW,a=e8();if(ot){if(void 0===n)throw Error(i(407));n=n()}else{if(n=t(),null===lg)throw Error(i(349));(127&l_)!=0||tl(r,t,n)}a.memoizedState=n;var s={value:n,getSnapshot:t};return a.queue=s,tI(tc.bind(null,r,s,e),[e]),r.flags|=2048,tA(9,{destroy:void 0},tu.bind(null,r,s,n,t),null),n},useId:function(){var e=e8(),t=lg.identifierPrefix;if(ot){var n=s4,i=s3;t="_"+t+"R_"+(n=(i&~(1<<32-sE(i)-1)).toString(32)+n),0<(n=oJ++)&&(t+="H"+n.toString(32)),t+="_"}else t="_"+t+"r_"+(n=oQ++).toString(32)+"_";return e.memoizedState=t},useHostTransitionStatus:tj,useFormState:tS,useActionState:tS,useOptimistic:function(e){var t=e8();t.memoizedState=t.baseState=e;var n={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return t.queue=n,t=t$.bind(null,oW,!0,n),n.dispatch=t,[e,t]},useMemoCache:tn,useCacheRefresh:function(){return e8().memoizedState=tY.bind(null,oW)},useEffectEvent:function(e){var t=e8(),n={impl:e};return t.memoizedState=n,function(){if((2&lm)!=0)throw Error(i(440));return n.impl.apply(void 0,arguments)}}},o2={readContext:Q,use:tt,useCallback:tB,useContext:Q,useEffect:tL,useImperativeHandle:tF,useInsertionEffect:tU,useLayoutEffect:tD,useMemo:tk,useReducer:tr,useRef:tC,useState:function(){return tr(ti)},useDebugValue:tz,useDeferredValue:function(e,t){return tV(e9(),oj.memoizedState,e,t)},useTransition:function(){var e=tr(ti)[0],t=e9().memoizedState;return["boolean"==typeof e?e:te(e),t]},useSyncExternalStore:to,useId:tX,useHostTransitionStatus:tj,useFormState:tM,useActionState:tM,useOptimistic:function(e,t){return tf(e9(),oj,e,t)},useMemoCache:tn,useCacheRefresh:tq};o2.useEffectEvent=tN;var o3={readContext:Q,use:tt,useCallback:tB,useContext:Q,useEffect:tL,useImperativeHandle:tF,useInsertionEffect:tU,useLayoutEffect:tD,useMemo:tk,useReducer:ts,useRef:tC,useState:function(){return ts(ti)},useDebugValue:tz,useDeferredValue:function(e,t){var n=e9();return null===oj?tH(n,e,t):tV(n,oj.memoizedState,e,t)},useTransition:function(){var e=ts(ti)[0],t=e9().memoizedState;return["boolean"==typeof e?e:te(e),t]},useSyncExternalStore:to,useId:tX,useHostTransitionStatus:tj,useFormState:tE,useActionState:tE,useOptimistic:function(e,t){var n=e9();return null!==oj?tf(n,oj,e,t):(n.baseState=e,[e,n.queue.dispatch])},useMemoCache:tn,useCacheRefresh:tq};o3.useEffectEvent=tN;var o4={enqueueSetState:function(e,t,n){e=e._reactInternals;var i=ig(),r=eD(i);r.payload=t,null!=n&&(r.callback=n),null!==(t=eO(e,r,i))&&(i_(t,e,i),eF(t,e,i))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var i=ig(),r=eD(i);r.tag=1,r.payload=t,null!=n&&(r.callback=n),null!==(t=eO(e,r,i))&&(i_(t,e,i),eF(t,e,i))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=ig(),i=eD(n);i.tag=2,null!=t&&(i.callback=t),null!==(t=eO(e,i,n))&&(i_(t,e,n),eF(t,e,n))}},o5=Error(i(461)),o6=!1,o8={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null},o9=!1,o7=!1,le=!1,lt="function"==typeof WeakSet?WeakSet:Set,ln=null,li=null,lr=!1,la=null,ls=8192,lo={getCacheForType:function(e){var t=Q(oh),n=t.data.get(e);return void 0===n&&(n=e(),t.data.set(e,n)),n},cacheSignal:function(){return Q(oh).controller.signal}},ll=0,lu=1,lc=2,lh=3,ld=4;if("function"==typeof Symbol&&Symbol.for){var lp=Symbol.for;ll=lp("selector.component"),lu=lp("selector.has_pseudo_class"),lc=lp("selector.role"),lh=lp("selector.test_id"),ld=lp("selector.text")}var lf="function"==typeof WeakMap?WeakMap:Map,lm=0,lg=null,lv=null,l_=0,ly=0,lx=null,lb=!1,lS=!1,lM=!1,lT=0,lw=0,lE=0,lA=0,lC=0,lR=0,lP=0,lI=null,lL=null,lN=!1,lU=0,lD=0,lO=1/0,lF=null,lz=null,lB=0,lk=null,lH=null,lV=0,lG=0,lW=null,lj=null,lX=0,lq=null;return rt.attemptContinuousHydration=function(e){if(13===e.tag||31===e.tag){var t=eP(e,0x4000000);null!==t&&i_(t,e,0x4000000),re(e,0x4000000)}},rt.attemptHydrationAtCurrentPriority=function(e){if(13===e.tag||31===e.tag){var t=ig(),n=eP(e,t=b(t));null!==n&&i_(n,e,t),re(e,t)}},rt.attemptSynchronousHydration=function(e){switch(e.tag){case 3:if((e=e.stateNode).current.memoizedState.isDehydrated){var t=d(e.pendingLanes);if(0!==t){for(e.pendingLanes|=2,e.entangledLanes|=2;t;){var n=1<<31-sE(t);e.entanglements[1]|=n,t&=~n}ea(e),(6&lm)==0&&(lO=sO()+500,es(0,!1))}}break;case 31:case 13:null!==(t=eP(e,2))&&i_(t,e,2),iS(),re(e,2)}},rt.batchedUpdates=function(e,t){return e(t)},rt.createComponentSelector=function(e){return{$$typeof:ll,value:e}},rt.createContainer=function(e,t,n,i,r,a,s,o,l,u){return i6(e,t,!1,null,n,i,a,null,s,o,l,u)},rt.createHasPseudoClassSelector=function(e){return{$$typeof:lu,value:e}},rt.createHydrationContainer=function(e,t,n,i,r,a,s,o,l,u,c,h,d,p){var f;return(e=i6(n,i,!0,e,r,a,o,p,l,u,c,h)).context=sw,n=e.current,(r=eD(i=b(i=ig()))).callback=null!=(f=t)?f:null,eO(n,r,i),t=i,e.current.lanes=t,v(e,t),ea(e),e},rt.createPortal=function(e,t,n){var i=3=c&&s>=d&&a<=h&&o<=p){e.splice(t,1);break}if(r!==c||n.width!==u.width||po){if(!(s!==d||n.height!==u.height||ha)){c>r&&(u.width+=c-r,u.x=r),hs&&(u.height+=d-s,u.y=s),pn&&(n=l)),l ")+` + +No matching component was found for: + `+e.join(" > ")}return null},rt.getPublicRootInstance=function(e){if(!(e=e.current).child)return null;switch(e.child.tag){case 27:case 5:return rA(e.child.stateNode);default:return e.child.stateNode}},rt.injectIntoDevTools=function(){var e={bundleType:0,version:rT,rendererPackageName:rw,currentDispatcherRef:rM,reconcilerVersion:"19.2.0"};if(null!==rE&&(e.rendererConfig=rE),typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u")e=!1;else{var t=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(t.isDisabled||!t.supportsFiber)e=!0;else{try{sG=t.inject(e),sW=t}catch{}e=!!t.checkDCE}}return e},rt.isAlreadyRendering=function(){return(6&lm)!=0},rt.observeVisibleRects=function(e,t,n,r){if(!r7)throw Error(i(363));var a=as(e=im(e,t),n,r).disconnect;return{disconnect:function(){a()}}},rt.shouldError=function(){return null},rt.shouldSuspend=function(){return!1},rt.startHostTransition=function(e,t,r,a){if(5!==e.tag)throw Error(i(476));var s=tW(e).queue;tG(e,s,t,r4,null===r?n:function(){var t=tW(e);return null===t.next&&(t=e.alternate.memoizedState),tK(e,t.next.queue,{},ig()),r(a)})},rt.updateContainer=function(e,t,n,i){var r=t.current,a=ig();return i9(r,a,e,t,n,i),a},rt.updateContainerSync=function(e,t,n,i){return i9(t.current,2,e,t,n,i),2},rt},cG.exports.default=cG.exports,Object.defineProperty(cG.exports,"__esModule",{value:!0})),cV.exports=cG.exports),(b=cV.exports)&&b.__esModule&&Object.prototype.hasOwnProperty.call(b,"default"))?b.default:b,cj={},cX=/^three(?=[A-Z])/,cq=e=>`${e[0].toUpperCase()}${e.slice(1)}`,cY=0;function cZ(e){if("function"==typeof e){let t=`${cY++}`;return cj[t]=e,t}Object.assign(cj,e)}function cJ(e,t){let n=cq(e),i=cj[n];if("primitive"!==e&&!i)throw Error(`R3F: ${n} is not part of the THREE namespace! Did you forget to extend? See: https://docs.pmnd.rs/react-three-fiber/api/objects#using-3rd-party-objects-declaratively`);if("primitive"===e&&!t.object)throw Error("R3F: Primitives without 'object' are invalid!");if(void 0!==t.args&&!Array.isArray(t.args))throw Error("R3F: The args prop must be an array!")}function cK(e){if(e.isHidden){var t;e.props.attach&&null!=(t=e.parent)&&t.object?cS(e.parent,e):cI(e.object)&&!1!==e.props.visible&&(e.object.visible=!0),e.isHidden=!1,cR(e)}}function c$(e,t,n){let i=t.root.getState();if(e.parent||e.object===i.scene){if(!t.object){var r,a;let e=cj[cq(t.type)];t.object=null!=(r=t.props.object)?r:new e(...null!=(a=t.props.args)?a:[]),t.object.__r3f=t}if(cC(t.object,t.props),t.props.attach)cS(e,t);else if(cI(t.object)&&cI(e.object)){let i=e.object.children.indexOf(null==n?void 0:n.object);if(n&&-1!==i){let n=e.object.children.indexOf(t.object);-1!==n?(e.object.children.splice(n,1),e.object.children.splice(n{try{e.dispose()}catch{}};"u">typeof IS_REACT_ACT_ENVIRONMENT?t():(0,u8.unstable_scheduleCallback)(u8.unstable_IdlePriority,t)}}function c2(e,t,n){if(!t)return;t.parent=null;let i=e.children.indexOf(t);-1!==i&&e.children.splice(i,1),t.props.attach?cM(e,t):cI(t.object)&&cI(e.object)&&(e.object.remove(t.object),function(e,t){let{internal:n}=e.getState();n.interaction=n.interaction.filter(e=>e!==t),n.initialHits=n.initialHits.filter(e=>e!==t),n.hovered.forEach((e,i)=>{(e.eventObject===t||e.object===t)&&n.hovered.delete(i)}),n.capturedMap.forEach((e,i)=>{cN(n.capturedMap,t,e,i)})}(co(t),t.object));let r=null!==t.props.dispose&&!1!==n;for(let e=t.children.length-1;e>=0;e--){let n=t.children[e];c2(t,n,r)}t.children.length=0,delete t.object.__r3f,r&&"primitive"!==t.type&&"Scene"!==t.object.type&&c1(t.object),void 0===n&&cR(t)}let c3=[],c4=()=>{},c5={},c6=0,c8=(S={isPrimaryRenderer:!1,warnsIfNotActing:!1,supportsMutation:!0,supportsPersistence:!1,supportsHydration:!1,createInstance:function(e,t,n){var i;return cJ(e=cq(e)in cj?e:e.replace(cX,""),t),"primitive"===e&&null!=(i=t.object)&&i.__r3f&&delete t.object.__r3f,cy(t.object,n,e,t)},removeChild:c2,appendChild:cQ,appendInitialChild:cQ,insertBefore:c0,appendChildToContainer(e,t){let n=e.getState().scene.__r3f;t&&n&&cQ(n,t)},removeChildFromContainer(e,t){let n=e.getState().scene.__r3f;t&&n&&c2(n,t)},insertInContainerBefore(e,t,n){let i=e.getState().scene.__r3f;t&&n&&i&&c0(i,t,n)},getRootHostContext:()=>c5,getChildHostContext:()=>c5,commitUpdate(e,t,n,i,r){var a,s,o;cJ(t,i);let l=!1;if("primitive"===e.type&&n.object!==i.object||(null==(a=i.args)?void 0:a.length)!==(null==(s=n.args)?void 0:s.length)?l=!0:null!=(o=i.args)&&o.some((e,t)=>{var i;return e!==(null==(i=n.args)?void 0:i[t])})&&(l=!0),l)c3.push([e,{...i},r]);else{let t=function(e,t){let n={};for(let i in t)if(!cT.includes(i)&&!cv.equ(t[i],e.props[i]))for(let e in n[i]=t[i],t)e.startsWith(`${i}-`)&&(n[e]=t[e]);for(let i in e.props){if(cT.includes(i)||t.hasOwnProperty(i))continue;let{root:r,key:a}=cx(e.object,i);if(r.constructor&&0===r.constructor.length){let e=function(e){let t=cw.get(e.constructor);try{t||(t=new e.constructor,cw.set(e.constructor,t))}catch(e){}return t}(r);cv.und(e)||(n[a]=e[a])}else n[a]=0}return n}(e,i);Object.keys(t).length&&(Object.assign(e.props,t),cC(e.object,t))}(null===r.sibling||(4&r.flags)==0)&&function(){for(let[e]of c3){let t=e.parent;if(t)for(let n of(e.props.attach?cM(t,e):cI(e.object)&&cI(t.object)&&t.object.remove(e.object),e.children))n.props.attach?cM(e,n):cI(n.object)&&cI(e.object)&&e.object.remove(n.object);e.isHidden&&cK(e),e.object.__r3f&&delete e.object.__r3f,"primitive"!==e.type&&c1(e.object)}for(let[i,r,a]of c3){i.props=r;let s=i.parent;if(s){let r=cj[cq(i.type)],o=i.object;i.object=null!=(e=i.props.object)?e:new r(...null!=(t=i.props.args)?t:[]),i.object.__r3f=i;var e,t,n=i.object;for(let e of[a,a.alternate])if(null!==e)if("function"==typeof e.ref){null==e.refCleanup||e.refCleanup();let t=e.ref(n);"function"==typeof t&&(e.refCleanup=t)}else e.ref&&(e.ref.current=n);for(let e of(!function(e,t,n){let{internal:i}=e.getState();for(let e=0;e{if(e.eventObject===t||e.object===t){i.hovered.delete(r);let a={...e,eventObject:e.eventObject===t?n:e.eventObject,object:e.object===t?n:e.object};i.hovered.set(cL(a),a)}}),i.capturedMap.forEach(e=>{let i=e.get(t);i&&(e.delete(t),e.set(n,i))})}(co(i),o,i.object),cC(i.object,i.props),i.props.attach?cS(s,i):cI(i.object)&&cI(s.object)&&s.object.add(i.object),i.children))e.props.attach?cS(i,e):cI(e.object)&&cI(i.object)&&i.object.add(e.object);cR(i)}}c3.length=0}()},finalizeInitialChildren:()=>!1,commitMount(){},getPublicInstance:e=>null==e?void 0:e.object,prepareForCommit:()=>null,preparePortalMount:e=>cy(e.getState().scene,e,"",{}),resetAfterCommit:()=>{},shouldSetTextContent:()=>!1,clearContainer:()=>!1,hideInstance:function(e){if(!e.isHidden){var t;e.props.attach&&null!=(t=e.parent)&&t.object?cM(e.parent,e):cI(e.object)&&(e.object.visible=!1),e.isHidden=!0,cR(e)}},unhideInstance:cK,createTextInstance:c4,hideTextInstance:c4,unhideTextInstance:c4,scheduleTimeout:"function"==typeof setTimeout?setTimeout:void 0,cancelTimeout:"function"==typeof clearTimeout?clearTimeout:void 0,noTimeout:-1,getInstanceFromNode:()=>null,beforeActiveInstanceBlur(){},afterActiveInstanceBlur(){},detachDeletedInstance(){},prepareScopeUpdate(){},getInstanceFromScope:()=>null,shouldAttemptEagerTransition:()=>!1,trackSchedulerEvent:()=>{},resolveEventType:()=>null,resolveEventTimeStamp:()=>-1.1,requestPostPaintCallback(){},maySuspendCommit:()=>!1,preloadInstance:()=>!0,suspendInstance(){},waitForCommitToBeReady:()=>null,NotPendingTransition:null,HostTransitionContext:E.createContext(null),setCurrentUpdatePriority(e){c6=e},getCurrentUpdatePriority:()=>c6,resolveUpdatePriority(){var e;if(0!==c6)return c6;switch("u">typeof window&&(null==(e=window.event)?void 0:e.type)){case"click":case"contextmenu":case"dblclick":case"pointercancel":case"pointerdown":case"pointerup":return 2;case"pointermove":case"pointerout":case"pointerover":case"pointerenter":case"pointerleave":case"wheel":return 8;default:return 32}},resetFormInstance(){},rendererPackageName:"@react-three/fiber",rendererVersion:"9.6.1",applyViewTransitionName(e,t,n){},restoreViewTransitionName(e,t){},cancelViewTransitionName(e,t,n){},cancelRootViewTransitionName(e){},restoreRootViewTransitionName(e){},InstanceMeasurement:null,measureInstance:e=>null,wasInstanceInViewport:e=>!0,hasInstanceChanged:(e,t)=>!1,hasInstanceAffectedParent:(e,t)=>!1,suspendOnActiveViewTransition(e,t){},startGestureTransition:()=>null,startViewTransition:()=>null,stopViewTransition(e){},createViewTransitionInstance:e=>null,getCurrentGestureOffset(e){throw Error("startGestureTransition is not yet supported in react-three-fiber.")},cloneMutableInstance:(e,t)=>e,cloneMutableTextInstance:e=>e,cloneRootViewTransitionContainer(e){throw Error("Not implemented.")},removeRootViewTransitionClone(e,t){throw Error("Not implemented.")},createFragmentInstance:e=>null,updateFragmentInstanceFiber(e,t){},commitNewChildToFragmentInstance(e,t){},deleteChildFromFragmentInstance(e,t){},measureClonedInstance:e=>null,maySuspendCommitOnUpdate:(e,t,n)=>!1,maySuspendCommitInSyncRender:(e,t)=>!1,startSuspendingCommit:()=>null,getSuspendedCommitReason:(e,t)=>null},(_=cW(S)).injectIntoDevTools(),_),c9=new Map,c7={objects:"shallow",strict:!1};function he(e){var t,n;let i,r,a,s,o,l,u,c=c9.get(e),h=null==c?void 0:c.fiber,d=null==c?void 0:c.store;c&&console.warn("R3F.createRoot should only be called once!");let p="function"==typeof reportError?reportError:console.error,f=d||(t=hp,n=hf,o=(s=(a=u3((e,i)=>{let r,a=new eE,s=new eE,o=new eE;function l(e=i().camera,t=s,n=i().size){let{width:r,height:u,top:c,left:h}=n,d=r/u;t.isVector3?o.copy(t):o.set(...t);let p=e.getWorldPosition(a).distanceTo(o);if(e&&e.isOrthographicCamera)return{width:r/e.zoom,height:u/e.zoom,top:c,left:h,factor:1,distance:p,aspect:d};{let t=2*Math.tan(e.fov*Math.PI/180/2)*p,n=r/u*t;return{width:n,height:t,top:c,left:h,factor:r/n,distance:p,aspect:d}}}let u=t=>e(e=>({performance:{...e.performance,current:t}})),c=new Y;return{set:e,get:i,gl:null,camera:null,raycaster:null,events:{priority:1,enabled:!0,connected:!1},scene:null,xr:null,invalidate:(e=1)=>t(i(),e),advance:(e,t)=>n(e,t,i()),legacy:!1,linear:!1,flat:!1,controls:null,clock:new sw,pointer:c,mouse:c,frameloop:"always",onPointerMissed:void 0,performance:{current:1,min:.5,max:1,debounce:200,regress:()=>{let e=i();r&&clearTimeout(r),e.performance.current!==e.performance.min&&u(e.performance.min),r=setTimeout(()=>u(i().performance.max),e.performance.debounce)}},size:{width:0,height:0,top:0,left:0},viewport:{initialDpr:0,dpr:0,width:0,height:0,top:0,left:0,aspect:0,distance:0,factor:0,getCurrentViewport:l},setEvents:t=>e(e=>({...e,events:{...e.events,...t}})),setSize:(t,n,r=0,a=0)=>{let o=i().camera,u={width:t,height:n,top:r,left:a};e(e=>({size:u,viewport:{...e.viewport,...l(o,s,u)}}))},setDpr:t=>e(e=>{let n=cm(t);return{viewport:{...e.viewport,dpr:n,initialDpr:e.viewport.initialDpr||n}}}),setFrameloop:(t="always")=>{let n=i().clock;n.stop(),n.elapsedTime=0,"never"!==t&&(n.start(),n.elapsedTime=0),e(()=>({frameloop:t}))},previousRoot:void 0,internal:{interaction:[],hovered:new Map,subscribers:[],initialClick:[0,0],initialHits:[],capturedMap:new Map,lastEvent:E.createRef(),active:!1,frames:0,priority:0,subscribe:(e,t,n)=>{let r=i().internal;return r.priority=r.priority+ +(t>0),r.subscribers.push({ref:e,priority:t,store:n}),r.subscribers=r.subscribers.sort((e,t)=>e.priority-t.priority),()=>{let n=i().internal;null!=n&&n.subscribers&&(n.priority=n.priority-(t>0),n.subscribers=n.subscribers.filter(t=>t.ref!==e))}}}}})).getState()).size,l=s.viewport.dpr,u=s.camera,a.subscribe(()=>{let{camera:e,size:t,viewport:n,gl:i,set:r}=a.getState();if(t.width!==o.width||t.height!==o.height||n.dpr!==l){o=t,l=n.dpr,cP(e,t),n.dpr>0&&i.setPixelRatio(n.dpr);let r="u">typeof HTMLCanvasElement&&i.domElement instanceof HTMLCanvasElement;i.setSize(t.width,t.height,r)}e!==u&&(u=e,r(t=>({viewport:{...t.viewport,...t.viewport.getCurrentViewport(e)}})))}),a.subscribe(e=>t(e)),a),m=h||c8.createContainer(f,1,null,!1,null,"",p,p,p,null);c||c9.set(e,{fiber:m,store:f});let g=!1,v=null;return{async configure(t={}){var n,a;let s;v=new Promise(e=>s=e);let{gl:o,size:l,scene:u,events:c,onCreated:h,shadows:d=!1,linear:p=!1,flat:m=!1,legacy:_=!1,orthographic:y=!1,frameloop:x="always",dpr:b=[1,2],performance:S,raycaster:M,camera:T,onPointerMissed:w}=t,E=f.getState(),A=E.gl;if(!E.gl){let t={canvas:e,powerPreference:"high-performance",antialias:!0,alpha:!0},n="function"==typeof o?await o(t):o;A=cU(n)?n:new uK({...t,...o}),E.set({gl:A})}let C=E.raycaster;C||E.set({raycaster:C=new s3});let{params:R,...P}=M||{};if(cv.equ(P,C,c7)||cC(C,{...P}),cv.equ(R,C.params,c7)||cC(C,{params:{...C.params,...R}}),!E.camera||E.camera===r&&!cv.equ(r,T,c7)){r=T;let e=null==T?void 0:T.isCamera,t=e?T:y?new sn(0,0,0,0,.1,1e3):new nE(75,0,.1,1e3);!e&&(t.position.z=5,T&&(cC(t,T),!t.manual&&("aspect"in T||"left"in T||"right"in T||"bottom"in T||"top"in T)&&(t.manual=!0,t.updateProjectionMatrix())),E.camera||null!=T&&T.rotation||t.lookAt(0,0,0)),E.set({camera:t}),C.camera=t}if(!E.scene){let e;null!=u&&u.isScene?cy(e=u,f,"",{}):(cy(e=new nL,f,"",{}),u&&cC(e,u)),E.set({scene:e})}c&&!E.events.handlers&&E.set({events:c(f)});let N=function(e,t){if(!t&&"u">typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement&&e.parentElement){let{width:t,height:n,top:i,left:r}=e.parentElement.getBoundingClientRect();return{width:t,height:n,top:i,left:r}}return!t&&"u">typeof OffscreenCanvas&&e instanceof OffscreenCanvas?{width:e.width,height:e.height,top:0,left:0}:{width:0,height:0,top:0,left:0,...t}}(e,l);if(cv.equ(N,E.size,c7)||E.setSize(N.width,N.height,N.top,N.left),b&&E.viewport.dpr!==cm(b)&&E.setDpr(b),E.frameloop!==x&&E.setFrameloop(x),E.onPointerMissed||E.set({onPointerMissed:w}),S&&!cv.equ(S,E.performance,c7)&&E.set(e=>({performance:{...e.performance,...S}})),!E.xr){let e=(e,t)=>{let n=f.getState();"never"!==n.frameloop&&hf(e,!0,n,t)},t=()=>{let t=f.getState();t.gl.xr.enabled=t.gl.xr.isPresenting,t.gl.xr.setAnimationLoop(t.gl.xr.isPresenting?e:null),t.gl.xr.isPresenting||hp(t)},i={connect(){let e=f.getState().gl;e.xr.addEventListener("sessionstart",t),e.xr.addEventListener("sessionend",t)},disconnect(){let e=f.getState().gl;e.xr.removeEventListener("sessionstart",t),e.xr.removeEventListener("sessionend",t)}};"function"==typeof(null==(n=A.xr)?void 0:n.addEventListener)&&i.connect(),E.set({xr:i})}if(A.shadowMap){let e=A.shadowMap.enabled,t=A.shadowMap.type;A.shadowMap.enabled=!!d,cv.boo(d)?A.shadowMap.type=2:cv.str(d)?A.shadowMap.type=null!=(a=({basic:0,percentage:1,soft:2,variance:3})[d])?a:2:cv.obj(d)&&Object.assign(A.shadowMap,d),(e!==A.shadowMap.enabled||t!==A.shadowMap.type)&&(A.shadowMap.needsUpdate=!0)}return eu.enabled=!_,g||(A.outputColorSpace=p?L:I,A.toneMapping=4*!m),E.legacy!==_&&E.set(()=>({legacy:_})),E.linear!==p&&E.set(()=>({linear:p})),E.flat!==m&&E.set(()=>({flat:m})),!o||cv.fun(o)||cU(o)||cv.equ(o,A,c7)||cC(A,o),i=h,g=!0,s(),this},render(t){return g||v||this.configure(),v.then(()=>{c8.updateContainer((0,u9.jsx)(ht,{store:f,children:t,onCreated:i,rootElement:e}),m,null,()=>void 0)}),f},unmount(){hn(e)}}}function ht({store:e,children:t,onCreated:n,rootElement:i}){return cc(()=>{let t=e.getState();t.set(e=>({internal:{...e.internal,active:!0}})),n&&n(t),e.getState().events.connected||null==t.events.connect||t.events.connect(i)},[]),(0,u9.jsx)(cD.Provider,{value:e,children:t})}function hn(e,t){let n=c9.get(e),i=null==n?void 0:n.fiber;if(i){let r=null==n?void 0:n.store.getState();r&&(r.internal.active=!1),c8.updateContainer(null,i,null,()=>{r&&setTimeout(()=>{try{null==r.events.disconnect||r.events.disconnect(),null==(n=r.gl)||null==(i=n.renderLists)||null==i.dispose||i.dispose(),null==(a=r.gl)||null==a.forceContextLoss||a.forceContextLoss(),null!=(s=r.gl)&&s.xr&&r.xr.disconnect();var n,i,a,s,o=r.scene;for(let e in"Scene"!==o.type&&(null==o.dispose||o.dispose()),o){let t=o[e];(null==t?void 0:t.type)!=="Scene"&&(null==t||null==t.dispose||t.dispose())}c9.delete(e),t&&t(e)}catch(e){}},500)})}}function hi({state:e={},children:t,container:n}){let{events:i,size:r,...a}=e,s=cO(),[o]=E.useState(()=>new s3),[l]=E.useState(()=>new Y),u=ch((e,t)=>{let a;if(t.camera&&r){let n=t.camera;a=e.viewport.getCurrentViewport(n,new eE,r),n!==e.camera&&cP(n,r)}return{...e,...t,scene:n,raycaster:o,pointer:l,mouse:l,previousRoot:s,events:{...e.events,...t.events,...i},size:{...e.size,...r},viewport:{...e.viewport,...a},setEvents:e=>t.set(t=>({...t,events:{...t.events,...e}}))}}),c=E.useMemo(()=>{let e=u3((e,t)=>({...a,set:e,get:t})),t=t=>e.setState(e=>u.current(t,e));return t(s.getState()),s.subscribe(t),e},[s,n]);return(0,u9.jsx)(u9.Fragment,{children:c8.createPortal((0,u9.jsx)(cD.Provider,{value:c,children:t}),c,null)})}let hr=new Set,ha=new Set,hs=new Set;function ho(e,t){if(e.size)for(let{callback:n}of e.values())n(t)}function hl(e,t){switch(e){case"before":return ho(hr,t);case"after":return ho(ha,t);case"tail":return ho(hs,t)}}function hu(e,t,n){let i=t.clock.getDelta();"never"===t.frameloop&&"number"==typeof e&&(i=e-t.clock.elapsedTime,t.clock.oldTime=t.clock.elapsedTime,t.clock.elapsedTime=e),s=t.internal.subscribers;for(let e=0;e0)&&!(null!=(t=c.gl.xr)&&t.isPresenting)&&(l+=hu(e,c))}if(hh=!1,hl("after",e),0===l)return hl("tail",e),hc=!1,cancelAnimationFrame(u)}function hp(e,t=1){var n;if(!e)return c9.forEach(e=>hp(e.store.getState(),t));(null==(n=e.gl.xr)||!n.isPresenting)&&e.internal.active&&"never"!==e.frameloop&&(t>1?e.internal.frames=Math.min(60,e.internal.frames+t):hh?e.internal.frames=2:e.internal.frames=1,hc||(hc=!0,requestAnimationFrame(hd)))}function hf(e,t=!0,n,i){if(t&&hl("before",e),n)hu(e,n,i);else for(let t of c9.values())hu(e,t.store.getState());t&&hl("after",e)}let hm={onClick:["click",!1],onContextMenu:["contextmenu",!1],onDoubleClick:["dblclick",!1],onWheel:["wheel",!0],onPointerDown:["pointerdown",!0],onPointerUp:["pointerup",!0],onPointerLeave:["pointerleave",!0],onPointerMove:["pointermove",!0],onPointerCancel:["pointercancel",!0],onLostPointerCapture:["lostpointercapture",!0]};function hg(e){let{handlePointer:t}=function(e){function t(e){return e.filter(e=>["Move","Over","Enter","Out","Leave"].some(t=>{var n;return null==(n=e.__r3f)?void 0:n.handlers["onPointer"+t]}))}function n(t){let{internal:n}=e.getState();for(let e of n.hovered.values())if(!t.length||!t.find(t=>t.object===e.object&&t.index===e.index&&t.instanceId===e.instanceId)){let i=e.eventObject.__r3f;if(n.hovered.delete(cL(e)),null!=i&&i.eventCount){let n=i.handlers,r={...e,intersections:t};null==n.onPointerOut||n.onPointerOut(r),null==n.onPointerLeave||n.onPointerLeave(r)}}}function i(e,t){for(let n=0;nn([]);case"onLostPointerCapture":return t=>{let{internal:i}=e.getState();"pointerId"in t&&i.capturedMap.has(t.pointerId)&&requestAnimationFrame(()=>{i.capturedMap.has(t.pointerId)&&(i.capturedMap.delete(t.pointerId),n([]))})}}return function(a){let{onPointerMissed:s,internal:o}=e.getState();o.lastEvent.current=a;let l="onPointerMove"===r,u="onClick"===r||"onContextMenu"===r||"onDoubleClick"===r,c=function(t,n){let i=e.getState(),r=new Set,a=[],s=n?n(i.internal.interaction):i.internal.interaction;for(let e=0;e{let n=cg(e.object),i=cg(t.object);return n&&i&&i.events.priority-n.events.priority||e.distance-t.distance}).filter(e=>{let t=cL(e);return!r.has(t)&&(r.add(t),!0)});for(let e of(i.events.filter&&(o=i.events.filter(o,i)),o)){let t=e.object;for(;t;){var l;null!=(l=t.__r3f)&&l.eventCount&&a.push({...e,eventObject:t}),t=t.parent}}if("pointerId"in t&&i.internal.capturedMap.has(t.pointerId))for(let e of i.internal.capturedMap.get(t.pointerId).values())r.has(cL(e.intersection))||a.push(e.intersection);return a}(a,l?t:void 0),h=u?function(t){let{internal:n}=e.getState(),i=t.offsetX-n.initialClick[0],r=t.offsetY-n.initialClick[1];return Math.round(Math.sqrt(i*i+r*r))}(a):0;"onPointerDown"===r&&(o.initialClick=[a.offsetX,a.offsetY],o.initialHits=c.map(e=>e.eventObject)),u&&!c.length&&h<=2&&(i(a,o.interaction),s&&s(a)),l&&n(c),!function(e,t,i,r){if(e.length){let a={stopped:!1};for(let s of e){let o=cg(s.object);if(o||s.object.traverseAncestors(e=>{let t=cg(e);if(t)return o=t,!1}),o){let{raycaster:l,pointer:u,camera:c,internal:h}=o,d=new eE(u.x,u.y,0).unproject(c),p=e=>{var t,n;return null!=(t=null==(n=h.capturedMap.get(e))?void 0:n.has(s.eventObject))&&t},f=e=>{let n={intersection:s,target:t.target};h.capturedMap.has(e)?h.capturedMap.get(e).set(s.eventObject,n):h.capturedMap.set(e,new Map([[s.eventObject,n]])),t.target.setPointerCapture(e)},m=e=>{let t=h.capturedMap.get(e);t&&cN(h.capturedMap,s.eventObject,t,e)},g={};for(let e in t){let n=t[e];"function"!=typeof n&&(g[e]=n)}let v={...s,...g,pointer:u,intersections:e,stopped:a.stopped,delta:i,unprojectedPoint:d,ray:l.ray,camera:c,stopPropagation(){let i="pointerId"in t&&h.capturedMap.get(t.pointerId);(!i||i.has(s.eventObject))&&(v.stopped=a.stopped=!0,h.hovered.size&&Array.from(h.hovered.values()).find(e=>e.eventObject===s.eventObject)&&n([...e.slice(0,e.indexOf(s)),s]))},target:{hasPointerCapture:p,setPointerCapture:f,releasePointerCapture:m},currentTarget:{hasPointerCapture:p,setPointerCapture:f,releasePointerCapture:m},nativeEvent:t};if(r(v),!0===a.stopped)break}}}}(c,a,h,function(e){let t=e.eventObject,n=t.__r3f;if(!(null!=n&&n.eventCount))return;let s=n.handlers;if(l){if(s.onPointerOver||s.onPointerEnter||s.onPointerOut||s.onPointerLeave){let t=cL(e),n=o.hovered.get(t);n?n.stopped&&e.stopPropagation():(o.hovered.set(t,e),null==s.onPointerOver||s.onPointerOver(e),null==s.onPointerEnter||s.onPointerEnter(e))}null==s.onPointerMove||s.onPointerMove(e)}else{let n=s[r];n?(!u||o.initialHits.includes(t))&&(i(a,o.interaction.filter(e=>!o.initialHits.includes(e))),n(e)):u&&o.initialHits.includes(t)&&i(a,o.interaction.filter(e=>!o.initialHits.includes(e)))}})}}}}(e);return{priority:1,enabled:!0,compute(e,t,n){t.pointer.set(e.offsetX/t.size.width*2-1,-(2*(e.offsetY/t.size.height))+1),t.raycaster.setFromCamera(t.pointer,t.camera)},connected:void 0,handlers:Object.keys(hm).reduce((e,n)=>({...e,[n]:t(n)}),{}),update:()=>{var t;let{events:n,internal:i}=e.getState();null!=(t=i.lastEvent)&&t.current&&n.handlers&&n.handlers.onPointerMove(i.lastEvent.current)},connect:t=>{let{set:n,events:i}=e.getState();if(null==i.disconnect||i.disconnect(),n(e=>({events:{...e.events,connected:t}})),i.handlers)for(let e in i.handlers){let n=i.handlers[e],[r,a]=hm[e];t.addEventListener(r,n,{passive:a})}},disconnect:()=>{let{set:t,events:n}=e.getState();if(n.connected){if(n.handlers)for(let e in n.handlers){let t=n.handlers[e],[i]=hm[e];n.connected.removeEventListener(i,t)}t(e=>({events:{...e.events,connected:void 0}}))}}}}e.s(["A",0,cO,"B",0,cp,"C",0,cF,"D",0,cz,"E",0,cf,"G",0,cH,"a",0,ch,"b",0,cc,"c",0,he,"d",0,hn,"e",0,cZ,"f",0,hg,"i",0,cl,"o",0,function(e,t,n){return(0,u9.jsx)(hi,{children:e,container:t,state:n})},"s",0,cC,"u",0,cd],1950),e.i(8560),e.s(["ACESFilmicToneMapping",0,4,"AddEquation",0,100,"AddOperation",0,2,"AdditiveAnimationBlendMode",0,2501,"AdditiveBlending",0,2,"AgXToneMapping",0,6,"AlphaFormat",0,1021,"AlwaysCompare",0,519,"AlwaysDepth",0,1,"AlwaysStencilFunc",0,519,"AmbientLight",0,sa,"AnimationAction",0,sY,"AnimationClip",0,aB,"AnimationLoader",0,aq,"AnimationMixer",0,sJ,"AnimationObjectGroup",0,sq,"AnimationUtils",0,aE,"ArcCurve",0,rs,"ArrayCamera",0,sT,"ArrowHelper",0,oP,"AttachedBindMode",0,R,"Audio",0,sL,"AudioAnalyser",0,sz,"AudioContext",0,s_,"AudioListener",0,sI,"AudioLoader",0,sy,"AxesHelper",0,oI,"BackSide",0,1,"BasicDepthPacking",0,3200,"BasicShadowMap",0,0,"BatchedMesh",0,iz,"Bone",0,ie,"BooleanKeyframeTrack",0,aL,"Box2",0,oe,"Box3",0,eR,"Box3Helper",0,oA,"BoxGeometry",0,ng,"BoxHelper",0,oE,"BufferAttribute",0,tZ,"BufferGeometry",0,nn,"BufferGeometryLoader",0,sd,"ByteType",0,1010,"Cache",0,ak,"Camera",0,nS,"CameraHelper",0,oM,"CanvasTexture",0,rn,"CapsuleGeometry",0,rA,"CatmullRomCurve3",0,rd,"CineonToneMapping",0,3,"CircleGeometry",0,rC,"ClampToEdgeWrapping",0,1001,"Clock",0,sw,"Color",0,tz,"ColorKeyframeTrack",0,aN,"ColorManagement",0,eu,"CompressedArrayTexture",0,re,"CompressedCubeTexture",0,rt,"CompressedTexture",0,i7,"CompressedTextureLoader",0,aY,"ConeGeometry",0,rP,"ConstantAlphaFactor",0,213,"ConstantColorFactor",0,211,"Controls",0,oN,"CubeCamera",0,nA,"CubeReflectionMapping",0,301,"CubeRefractionMapping",0,302,"CubeTexture",0,nC,"CubeTextureLoader",0,aJ,"CubeUVReflectionMapping",0,306,"CubicBezierCurve",0,rg,"CubicBezierCurve3",0,rv,"CubicInterpolant",0,aC,"CullFaceBack",0,1,"CullFaceFront",0,2,"CullFaceFrontBack",0,3,"CullFaceNone",0,0,"Curve",0,rr,"CurvePath",0,rT,"CustomBlending",0,5,"CustomToneMapping",0,5,"CylinderGeometry",0,rR,"Cylindrical",0,s8,"Data3DTexture",0,eM,"DataArrayTexture",0,eb,"DataTexture",0,it,"DataTextureLoader",0,aK,"DataUtils",0,tX,"DecrementStencilOp",0,7683,"DecrementWrapStencilOp",0,34056,"DefaultLoadingManager",0,aV,"DepthFormat",0,1026,"DepthStencilFormat",0,1027,"DepthTexture",0,ri,"DetachedBindMode",0,P,"DirectionalLight",0,sr,"DirectionalLightHelper",0,ox,"DiscreteInterpolant",0,aP,"DodecahedronGeometry",0,rL,"DoubleSide",0,2,"DstAlphaFactor",0,206,"DstColorFactor",0,208,"DynamicCopyUsage",0,35050,"DynamicDrawUsage",0,35048,"DynamicReadUsage",0,35049,"EdgesGeometry",0,rF,"EllipseCurve",0,ra,"EqualCompare",0,514,"EqualDepth",0,4,"EqualStencilFunc",0,514,"EquirectangularReflectionMapping",0,303,"EquirectangularRefractionMapping",0,304,"Euler",0,tn,"EventDispatcher",0,O,"ExtrudeGeometry",0,r4,"FileLoader",0,aX,"Float16BufferAttribute",0,t3,"Float32BufferAttribute",0,t4,"FloatType",0,1015,"Fog",0,nI,"FogExp2",0,nP,"FramebufferTexture",0,i9,"FrontSide",0,0,"Frustum",0,iS,"GLBufferAttribute",0,s1,"GLSL1",0,"100","GLSL3",0,D,"GreaterCompare",0,516,"GreaterDepth",0,6,"GreaterEqualCompare",0,518,"GreaterEqualDepth",0,5,"GreaterEqualStencilFunc",0,518,"GreaterStencilFunc",0,516,"GridHelper",0,om,"Group",0,i6,"HalfFloatType",0,1016,"HemisphereLight",0,a0,"HemisphereLightHelper",0,of,"IcosahedronGeometry",0,r6,"ImageBitmapLoader",0,sv,"ImageLoader",0,aZ,"ImageUtils",0,ed,"IncrementStencilOp",0,7682,"IncrementWrapStencilOp",0,34055,"InstancedBufferAttribute",0,is,"InstancedBufferGeometry",0,sh,"InstancedInterleavedBuffer",0,s0,"InstancedMesh",0,im,"Int16BufferAttribute",0,tQ,"Int32BufferAttribute",0,t1,"Int8BufferAttribute",0,tJ,"IntType",0,1013,"InterleavedBuffer",0,nN,"InterleavedBufferAttribute",0,nD,"Interpolant",0,aA,"InterpolateDiscrete",0,2300,"InterpolateLinear",0,2301,"InterpolateSmooth",0,2302,"InvertStencilOp",0,5386,"KeepStencilOp",0,7680,"KeyframeTrack",0,aI,"LOD",0,nQ,"LatheGeometry",0,rE,"Layers",0,ti,"LessCompare",0,513,"LessDepth",0,2,"LessEqualCompare",0,515,"LessEqualDepth",0,3,"LessEqualStencilFunc",0,515,"LessStencilFunc",0,513,"Light",0,aQ,"LightProbe",0,sl,"Line",0,iq,"Line3",0,oi,"LineBasicMaterial",0,iB,"LineCurve",0,r_,"LineCurve3",0,ry,"LineDashedMaterial",0,ax,"LineLoop",0,i$,"LineSegments",0,iK,"LinearFilter",0,1006,"LinearInterpolant",0,aR,"LinearMipMapLinearFilter",0,1008,"LinearMipMapNearestFilter",0,1007,"LinearMipmapLinearFilter",0,1008,"LinearMipmapNearestFilter",0,1007,"LinearSRGBColorSpace",0,L,"LinearToneMapping",0,1,"LinearTransfer",0,N,"Loader",0,aG,"LoaderUtils",0,sc,"LoadingManager",0,aH,"LoopOnce",0,2200,"LoopPingPong",0,2202,"LoopRepeat",0,2201,"LuminanceAlphaFormat",0,1025,"LuminanceFormat",0,1024,"MOUSE",0,A,"Material",0,tH,"MaterialLoader",0,su,"MathUtils",0,q,"Matrix2",0,s9,"Matrix3",0,Z,"Matrix4",0,e2,"MaxEquation",0,104,"Mesh",0,nf,"MeshBasicMaterial",0,tV,"MeshDepthMaterial",0,av,"MeshDistanceMaterial",0,a_,"MeshLambertMaterial",0,ag,"MeshMatcapMaterial",0,ay,"MeshNormalMaterial",0,am,"MeshPhongMaterial",0,ap,"MeshPhysicalMaterial",0,ad,"MeshStandardMaterial",0,ah,"MeshToonMaterial",0,af,"MinEquation",0,103,"MirroredRepeatWrapping",0,1002,"MixOperation",0,1,"MultiplyBlending",0,4,"MultiplyOperation",0,0,"NearestFilter",0,1003,"NearestMipMapLinearFilter",0,1005,"NearestMipMapNearestFilter",0,1004,"NearestMipmapLinearFilter",0,1005,"NearestMipmapNearestFilter",0,1004,"NeutralToneMapping",0,7,"NeverCompare",0,512,"NeverDepth",0,0,"NeverStencilFunc",0,512,"NoBlending",0,0,"NoColorSpace",0,"","NoToneMapping",0,0,"NormalAnimationBlendMode",0,2500,"NormalBlending",0,1,"NotEqualCompare",0,517,"NotEqualDepth",0,7,"NotEqualStencilFunc",0,517,"NumberKeyframeTrack",0,aU,"Object3D",0,ty,"ObjectLoader",0,sp,"ObjectSpaceNormalMap",0,1,"OctahedronGeometry",0,r8,"OneFactor",0,201,"OneMinusConstantAlphaFactor",0,214,"OneMinusConstantColorFactor",0,212,"OneMinusDstAlphaFactor",0,207,"OneMinusDstColorFactor",0,209,"OneMinusSrcAlphaFactor",0,205,"OneMinusSrcColorFactor",0,203,"OrthographicCamera",0,sn,"PCFShadowMap",0,1,"PCFSoftShadowMap",0,2,"PMREMGenerator",0,o8,"Path",0,rw,"PerspectiveCamera",0,nE,"Plane",0,iy,"PlaneGeometry",0,r9,"PlaneHelper",0,oC,"PointLight",0,st,"PointLightHelper",0,oc,"Points",0,i4,"PointsMaterial",0,iQ,"PolarGridHelper",0,og,"PolyhedronGeometry",0,rI,"PositionalAudio",0,sF,"PropertyBinding",0,sX,"PropertyMixer",0,sB,"QuadraticBezierCurve",0,rx,"QuadraticBezierCurve3",0,rb,"Quaternion",0,ew,"QuaternionKeyframeTrack",0,aO,"QuaternionLinearInterpolant",0,aD,"RED_GREEN_RGTC2_Format",0,36285,"RED_RGTC1_Format",0,36283,"REVISION",0,"171","RGBADepthPacking",0,3201,"RGBAFormat",0,1023,"RGBAIntegerFormat",0,1033,"RGBA_ASTC_10x10_Format",0,37819,"RGBA_ASTC_10x5_Format",0,37816,"RGBA_ASTC_10x6_Format",0,37817,"RGBA_ASTC_10x8_Format",0,37818,"RGBA_ASTC_12x10_Format",0,37820,"RGBA_ASTC_12x12_Format",0,37821,"RGBA_ASTC_4x4_Format",0,37808,"RGBA_ASTC_5x4_Format",0,37809,"RGBA_ASTC_5x5_Format",0,37810,"RGBA_ASTC_6x5_Format",0,37811,"RGBA_ASTC_6x6_Format",0,37812,"RGBA_ASTC_8x5_Format",0,37813,"RGBA_ASTC_8x6_Format",0,37814,"RGBA_ASTC_8x8_Format",0,37815,"RGBA_BPTC_Format",0,36492,"RGBA_ETC2_EAC_Format",0,37496,"RGBA_PVRTC_2BPPV1_Format",0,35843,"RGBA_PVRTC_4BPPV1_Format",0,35842,"RGBA_S3TC_DXT1_Format",0,33777,"RGBA_S3TC_DXT3_Format",0,33778,"RGBA_S3TC_DXT5_Format",0,33779,"RGBDepthPacking",0,3202,"RGBFormat",0,1022,"RGBIntegerFormat",0,1032,"RGB_BPTC_SIGNED_Format",0,36494,"RGB_BPTC_UNSIGNED_Format",0,36495,"RGB_ETC1_Format",0,36196,"RGB_ETC2_Format",0,37492,"RGB_PVRTC_2BPPV1_Format",0,35841,"RGB_PVRTC_4BPPV1_Format",0,35840,"RGB_S3TC_DXT1_Format",0,33776,"RGDepthPacking",0,3203,"RGFormat",0,1030,"RGIntegerFormat",0,1031,"RawShaderMaterial",0,ac,"Ray",0,e1,"Raycaster",0,s3,"RectAreaLight",0,ss,"RedFormat",0,1028,"RedIntegerFormat",0,1029,"ReinhardToneMapping",0,2,"RenderTarget",0,ey,"RepeatWrapping",0,1e3,"ReplaceStencilOp",0,7681,"ReverseSubtractEquation",0,102,"RingGeometry",0,r7,"SIGNED_RED_GREEN_RGTC2_Format",0,36286,"SIGNED_RED_RGTC1_Format",0,36284,"SRGBColorSpace",0,I,"SRGBTransfer",0,U,"Scene",0,nL,"ShaderChunk",0,oB,"ShaderLib",0,oH,"ShaderMaterial",0,nb,"ShadowMaterial",0,au,"Shape",0,rz,"ShapeGeometry",0,ae,"ShapePath",0,oL,"ShapeUtils",0,r1,"ShortType",0,1011,"Skeleton",0,ia,"SkeletonHelper",0,ou,"SkinnedMesh",0,n7,"Source",0,ef,"Sphere",0,eq,"SphereGeometry",0,at,"Spherical",0,s6,"SphericalHarmonics3",0,so,"SplineCurve",0,rS,"SpotLight",0,a6,"SpotLightHelper",0,oa,"Sprite",0,nZ,"SpriteMaterial",0,nO,"SrcAlphaFactor",0,204,"SrcAlphaSaturateFactor",0,210,"SrcColorFactor",0,202,"StaticCopyUsage",0,35046,"StaticDrawUsage",0,35044,"StaticReadUsage",0,35045,"StereoCamera",0,sM,"StreamCopyUsage",0,35042,"StreamDrawUsage",0,35040,"StreamReadUsage",0,35041,"StringKeyframeTrack",0,aF,"SubtractEquation",0,101,"SubtractiveBlending",0,3,"TOUCH",0,C,"TangentSpaceNormalMap",0,0,"TetrahedronGeometry",0,an,"Texture",0,ev,"TextureLoader",0,a$,"TextureUtils",0,oD,"TorusGeometry",0,ai,"TorusKnotGeometry",0,ar,"Triangle",0,tN,"TriangleFanDrawMode",0,2,"TriangleStripDrawMode",0,1,"TrianglesDrawMode",0,0,"TubeGeometry",0,aa,"UVMapping",0,300,"Uint16BufferAttribute",0,t0,"Uint32BufferAttribute",0,t2,"Uint8BufferAttribute",0,tK,"Uint8ClampedBufferAttribute",0,t$,"Uniform",0,sK,"UniformsGroup",0,sQ,"UniformsLib",0,ok,"UniformsUtils",0,nx,"UnsignedByteType",0,1009,"UnsignedInt248Type",0,1020,"UnsignedInt5999Type",0,35902,"UnsignedIntType",0,1014,"UnsignedShort4444Type",0,1017,"UnsignedShort5551Type",0,1018,"UnsignedShortType",0,1012,"VSMShadowMap",0,3,"Vector2",0,Y,"Vector3",0,eE,"Vector4",0,e_,"VectorKeyframeTrack",0,az,"VideoTexture",0,i8,"WebGL3DRenderTarget",0,eT,"WebGLArrayRenderTarget",0,eS,"WebGLCoordinateSystem",0,2e3,"WebGLCubeRenderTarget",0,nR,"WebGLMultipleRenderTargets",0,oO,"WebGLRenderTarget",0,ex,"WebGLRenderer",0,uK,"WebGLUtils",0,uk,"WebGPUCoordinateSystem",0,2001,"WireframeGeometry",0,as,"WrapAroundEnding",0,2402,"ZeroCurvatureEnding",0,2400,"ZeroFactor",0,200,"ZeroSlopeEnding",0,2401,"ZeroStencilOp",0,0,"createCanvasElement",0,et],32009);var hv=e.i(32009);function h_(e,t){let n;return(...i)=>{window.clearTimeout(n),n=window.setTimeout(()=>e(...i),t)}}let hy=["x","y","top","bottom","left","right","width","height"];function hx({ref:e,children:t,fallback:n,resize:i,style:r,gl:a,events:s=hg,eventSource:o,eventPrefix:l,shadows:u,linear:c,flat:h,legacy:d,orthographic:p,frameloop:f,dpr:m,performance:g,raycaster:v,camera:_,scene:y,onPointerMissed:x,onCreated:b,...S}){E.useMemo(()=>cZ(hv),[]);let M=cd(),[T,w]=function({debounce:e,scroll:t,polyfill:n,offsetSize:i}={debounce:0,scroll:!1,offsetSize:!1}){var r,a,s;let o=n||("u"(p.current=!0,()=>void(p.current=!1)));let[f,m,g]=(0,E.useMemo)(()=>{let e=()=>{let e,t;if(!c.current.element)return;let{left:n,top:r,width:a,height:s,bottom:o,right:l,x:h,y:d}=c.current.element.getBoundingClientRect(),f={left:n,top:r,width:a,height:s,bottom:o,right:l,x:h,y:d};c.current.element instanceof HTMLElement&&i&&(f.height=c.current.element.offsetHeight,f.width=c.current.element.offsetWidth),Object.freeze(f),p.current&&(e=c.current.lastBounds,t=f,!hy.every(n=>e[n]===t[n]))&&u(c.current.lastBounds=f)};return[e,d?h_(e,d):e,h?h_(e,h):e]},[u,i,h,d]);function v(){c.current.scrollContainers&&(c.current.scrollContainers.forEach(e=>e.removeEventListener("scroll",g,!0)),c.current.scrollContainers=null),c.current.resizeObserver&&(c.current.resizeObserver.disconnect(),c.current.resizeObserver=null),c.current.orientationHandler&&("orientation"in screen&&"removeEventListener"in screen.orientation?screen.orientation.removeEventListener("change",c.current.orientationHandler):"onorientationchange"in window&&window.removeEventListener("orientationchange",c.current.orientationHandler))}function _(){c.current.element&&(c.current.resizeObserver=new o(g),c.current.resizeObserver.observe(c.current.element),t&&c.current.scrollContainers&&c.current.scrollContainers.forEach(e=>e.addEventListener("scroll",g,{capture:!0,passive:!0})),c.current.orientationHandler=()=>{g()},"orientation"in screen&&"addEventListener"in screen.orientation?screen.orientation.addEventListener("change",c.current.orientationHandler):"onorientationchange"in window&&window.addEventListener("orientationchange",c.current.orientationHandler))}return r=g,a=!!t,(0,E.useEffect)(()=>{if(a)return window.addEventListener("scroll",r,{capture:!0,passive:!0}),()=>void window.removeEventListener("scroll",r,!0)},[r,a]),s=m,(0,E.useEffect)(()=>(window.addEventListener("resize",s),()=>void window.removeEventListener("resize",s)),[s]),(0,E.useEffect)(()=>{v(),_()},[t,g,m]),(0,E.useEffect)(()=>v,[]),[e=>{e&&e!==c.current.element&&(v(),c.current.element=e,c.current.scrollContainers=function e(t){let n=[];if(!t||t===document.body)return n;let{overflow:i,overflowX:r,overflowY:a}=window.getComputedStyle(t);return[i,r,a].some(e=>"auto"===e||"scroll"===e)&&n.push(t),[...n,...e(t.parentElement)]}(e),_())},l,f]}({scroll:!0,debounce:{scroll:50,resize:0},...i}),A=E.useRef(null),C=E.useRef(null);E.useImperativeHandle(e,()=>A.current);let R=ch(x),[P,I]=E.useState(!1),[L,N]=E.useState(!1);if(P)throw P;if(L)throw L;let U=E.useRef(null);cc(()=>{let e=A.current;w.width>0&&w.height>0&&e&&(U.current||(U.current=he(e)),async function(){await U.current.configure({gl:a,scene:y,events:s,shadows:u,linear:c,flat:h,legacy:d,orthographic:p,frameloop:f,dpr:m,performance:g,raycaster:v,camera:_,size:w,onPointerMissed:(...e)=>null==R.current?void 0:R.current(...e),onCreated:e=>{null==e.events.connect||e.events.connect(o?cl(o)?o.current:o:C.current),l&&e.setEvents({compute:(e,t)=>{let n=e[l+"X"],i=e[l+"Y"];t.pointer.set(n/t.size.width*2-1,-(2*(i/t.size.height))+1),t.raycaster.setFromCamera(t.pointer,t.camera)}}),null==b||b(e)}}),U.current.render((0,u9.jsx)(M,{children:(0,u9.jsx)(cf,{set:N,children:(0,u9.jsx)(E.Suspense,{fallback:(0,u9.jsx)(cp,{set:I}),children:null!=t?t:null})})}))}())}),E.useEffect(()=>{let e=A.current;if(e)return()=>hn(e)},[]);let D=o?"none":"auto";return(0,u9.jsx)("div",{ref:C,style:{position:"relative",width:"100%",height:"100%",overflow:"hidden",pointerEvents:D,...r},...S,children:(0,u9.jsx)("div",{ref:T,style:{width:"100%",height:"100%"},children:(0,u9.jsx)("canvas",{ref:A,style:{display:"block"},children:n})})})}e.s(["Canvas",0,function(e){return(0,u9.jsx)(ci,{children:(0,u9.jsx)(hx,{...e})})}],75056),e.s(["useFrame",0,cz],25234),e.s(["useThree",0,cF],28600)},67335,e=>{"use strict";var t=e.i(1950);e.s(["extend",()=>t.e])},60602,e=>{"use strict";var t=e.i(1950);e.s(["useLoader",()=>t.G])},44208,e=>{"use strict";var t=e.i(1950);e.s(["createPortal",()=>t.o])},24205,e=>{"use strict";var t=e.i(1950);e.s(["applyProps",()=>t.s])}]); \ No newline at end of file diff --git a/build/_next/static/chunks/0.iab0vw_jpg5.js b/build/_next/static/chunks/0.iab0vw_jpg5.js new file mode 100644 index 0000000..3e5b593 --- /dev/null +++ b/build/_next/static/chunks/0.iab0vw_jpg5.js @@ -0,0 +1,243 @@ +(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,55838,(e,t,n)=>{"use strict";var i=e.r(71645),r="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},a=i.useState,s=i.useEffect,o=i.useLayoutEffect,l=i.useDebugValue;function u(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!r(e,n)}catch(e){return!0}}var c="u"{"use strict";t.exports=e.r(55838)},52822,(e,t,n)=>{"use strict";var i=e.r(71645),r=e.r(2239),a="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},s=r.useSyncExternalStore,o=i.useRef,l=i.useEffect,u=i.useMemo,c=i.useDebugValue;n.useSyncExternalStoreWithSelector=function(e,t,n,i,r){var h=o(null);if(null===h.current){var d={hasValue:!1,value:null};h.current=d}else d=h.current;var p=s(e,(h=u(function(){function e(e){if(!l){if(l=!0,s=e,e=i(e),void 0!==r&&d.hasValue){var t=d.value;if(r(t,e))return o=t}return o=e}if(t=o,a(s,e))return t;var n=i(e);return void 0!==r&&r(t,n)?(s=e,t):(s=e,o=n)}var s,o,l=!1,u=void 0===n?null:n;return[function(){return e(t())},null===u?void 0:function(){return e(u())}]},[t,n,i,r]))[0],h[1]);return l(function(){d.hasValue=!0,d.value=p},[p]),c(p),p}},30224,(e,t,n)=>{"use strict";t.exports=e.r(52822)},66936,(e,t,n)=>{"use strict";function i(e,t){var n=e.length;for(e.push(t);0>>1,r=e[i];if(0>>1;is(l,n))us(c,l)?(e[i]=c,e[u]=n,i=u):(e[i]=l,e[o]=n,i=o);else if(us(c,n))e[i]=c,e[u]=n,i=u;else break}}return t}function s(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}if(n.unstable_now=void 0,"object"==typeof performance&&"function"==typeof performance.now){var o,l=performance;n.unstable_now=function(){return l.now()}}else{var u=Date,c=u.now();n.unstable_now=function(){return u.now()-c}}var h=[],d=[],p=1,f=null,m=3,g=!1,v=!1,_=!1,y=!1,x="function"==typeof setTimeout?setTimeout:null,b="function"==typeof clearTimeout?clearTimeout:null,S="u">typeof setImmediate?setImmediate:null;function M(e){for(var t=r(d);null!==t;){if(null===t.callback)a(d);else if(t.startTime<=e)a(d),t.sortIndex=t.expirationTime,i(h,t);else break;t=r(d)}}function T(e){if(_=!1,M(e),!v)if(null!==r(h))v=!0,w||(w=!0,o());else{var t=r(d);null!==t&&N(T,t.startTime-e)}}var w=!1,E=-1,A=5,C=-1;function R(){return!!y||!(n.unstable_now()-Ce&&R());){var s=f.callback;if("function"==typeof s){f.callback=null,m=f.priorityLevel;var l=s(f.expirationTime<=e);if(e=n.unstable_now(),"function"==typeof l){f.callback=l,M(e),t=!0;break t}f===r(h)&&a(h),M(e)}else a(h);f=r(h)}if(null!==f)t=!0;else{var u=r(d);null!==u&&N(T,u.startTime-e),t=!1}}break e}finally{f=null,m=i,g=!1}}}finally{t?o():w=!1}}}if("function"==typeof S)o=function(){S(P)};else if("u">typeof MessageChannel){var I=new MessageChannel,L=I.port2;I.port1.onmessage=P,o=function(){L.postMessage(null)}}else o=function(){x(P,0)};function N(e,t){E=x(function(){e(n.unstable_now())},t)}n.unstable_IdlePriority=5,n.unstable_ImmediatePriority=1,n.unstable_LowPriority=4,n.unstable_NormalPriority=3,n.unstable_Profiling=null,n.unstable_UserBlockingPriority=2,n.unstable_cancelCallback=function(e){e.callback=null},n.unstable_forceFrameRate=function(e){0>e||125s?(e.sortIndex=a,i(d,e),null===r(h)&&e===r(d)&&(_?(b(E),E=-1):_=!0,N(T,a-s))):(e.sortIndex=l,i(h,e),v||g||(v=!0,w||(w=!0,o()))),e},n.unstable_shouldYield=R,n.unstable_wrapCallback=function(e){var t=m;return function(){var n=m;m=t;try{return e.apply(this,arguments)}finally{m=n}}}},89499,(e,t,n)=>{"use strict";t.exports=e.r(66936)},75056,90072,8560,8155,1950,25234,28600,e=>{"use strict";let t,n,i,r,a,s,o,l,u,c,h,d,p,f,m,g,v,_;var y,x,b,S,M,T,w=e.i(47167),E=e.i(71645);let A={LEFT:0,MIDDLE:1,RIGHT:2,ROTATE:0,DOLLY:1,PAN:2},C={ROTATE:0,PAN:1,DOLLY_PAN:2,DOLLY_ROTATE:3},R="attached",P="detached",I="srgb",L="srgb-linear",N="linear",U="srgb",D="300 es";class O{addEventListener(e,t){void 0===this._listeners&&(this._listeners={});let n=this._listeners;void 0===n[e]&&(n[e]=[]),-1===n[e].indexOf(t)&&n[e].push(t)}hasEventListener(e,t){if(void 0===this._listeners)return!1;let n=this._listeners;return void 0!==n[e]&&-1!==n[e].indexOf(t)}removeEventListener(e,t){if(void 0===this._listeners)return;let n=this._listeners[e];if(void 0!==n){let e=n.indexOf(t);-1!==e&&n.splice(e,1)}}dispatchEvent(e){if(void 0===this._listeners)return;let t=this._listeners[e.type];if(void 0!==t){e.target=this;let n=t.slice(0);for(let t=0,i=n.length;t>8&255]+F[e>>16&255]+F[e>>24&255]+"-"+F[255&t]+F[t>>8&255]+"-"+F[t>>16&15|64]+F[t>>24&255]+"-"+F[63&n|128]+F[n>>8&255]+"-"+F[n>>16&255]+F[n>>24&255]+F[255&i]+F[i>>8&255]+F[i>>16&255]+F[i>>24&255]).toLowerCase()}function V(e,t,n){return Math.max(t,Math.min(n,e))}function G(e,t){return(e%t+t)%t}function W(e,t,n){return(1-n)*e+n*t}function j(e,t){switch(t.constructor){case Float32Array:return e;case Uint32Array:return e/0xffffffff;case Uint16Array:return e/65535;case Uint8Array:return e/255;case Int32Array:return Math.max(e/0x7fffffff,-1);case Int16Array:return Math.max(e/32767,-1);case Int8Array:return Math.max(e/127,-1);default:throw Error("Invalid component type.")}}function X(e,t){switch(t.constructor){case Float32Array:return e;case Uint32Array:return Math.round(0xffffffff*e);case Uint16Array:return Math.round(65535*e);case Uint8Array:return Math.round(255*e);case Int32Array:return Math.round(0x7fffffff*e);case Int16Array:return Math.round(32767*e);case Int8Array:return Math.round(127*e);default:throw Error("Invalid component type.")}}let q={DEG2RAD:B,RAD2DEG:k,generateUUID:H,clamp:V,euclideanModulo:G,mapLinear:function(e,t,n,i,r){return i+(e-t)*(r-i)/(n-t)},inverseLerp:function(e,t,n){return e!==t?(n-e)/(t-e):0},lerp:W,damp:function(e,t,n,i){return W(e,t,1-Math.exp(-n*i))},pingpong:function(e,t=1){return t-Math.abs(G(e,2*t)-t)},smoothstep:function(e,t,n){return e<=t?0:e>=n?1:(e=(e-t)/(n-t))*e*(3-2*e)},smootherstep:function(e,t,n){return e<=t?0:e>=n?1:(e=(e-t)/(n-t))*e*e*(e*(6*e-15)+10)},randInt:function(e,t){return e+Math.floor(Math.random()*(t-e+1))},randFloat:function(e,t){return e+Math.random()*(t-e)},randFloatSpread:function(e){return e*(.5-Math.random())},seededRandom:function(e){void 0!==e&&(z=e);let t=z+=0x6d2b79f5;return t=Math.imul(t^t>>>15,1|t),(((t^=t+Math.imul(t^t>>>7,61|t))^t>>>14)>>>0)/0x100000000},degToRad:function(e){return e*B},radToDeg:function(e){return e*k},isPowerOfTwo:function(e){return(e&e-1)==0&&0!==e},ceilPowerOfTwo:function(e){return Math.pow(2,Math.ceil(Math.log(e)/Math.LN2))},floorPowerOfTwo:function(e){return Math.pow(2,Math.floor(Math.log(e)/Math.LN2))},setQuaternionFromProperEuler:function(e,t,n,i,r){let a=Math.cos,s=Math.sin,o=a(n/2),l=s(n/2),u=a((t+i)/2),c=s((t+i)/2),h=a((t-i)/2),d=s((t-i)/2),p=a((i-t)/2),f=s((i-t)/2);switch(r){case"XYX":e.set(o*c,l*h,l*d,o*u);break;case"YZY":e.set(l*d,o*c,l*h,o*u);break;case"ZXZ":e.set(l*h,l*d,o*c,o*u);break;case"XZX":e.set(o*c,l*f,l*p,o*u);break;case"YXY":e.set(l*p,o*c,l*f,o*u);break;case"ZYZ":e.set(l*f,l*p,o*c,o*u);break;default:console.warn("THREE.MathUtils: .setQuaternionFromProperEuler() encountered an unknown order: "+r)}},normalize:X,denormalize:j};class Y{constructor(e=0,t=0){Y.prototype.isVector2=!0,this.x=e,this.y=t}get width(){return this.x}set width(e){this.x=e}get height(){return this.y}set height(e){this.y=e}set(e,t){return this.x=e,this.y=t,this}setScalar(e){return this.x=e,this.y=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;default:throw Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;default:throw Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y)}copy(e){return this.x=e.x,this.y=e.y,this}add(e){return this.x+=e.x,this.y+=e.y,this}addScalar(e){return this.x+=e,this.y+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this}subScalar(e){return this.x-=e,this.y-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this}multiply(e){return this.x*=e.x,this.y*=e.y,this}multiplyScalar(e){return this.x*=e,this.y*=e,this}divide(e){return this.x/=e.x,this.y/=e.y,this}divideScalar(e){return this.multiplyScalar(1/e)}applyMatrix3(e){let t=this.x,n=this.y,i=e.elements;return this.x=i[0]*t+i[3]*n+i[6],this.y=i[1]*t+i[4]*n+i[7],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this}clamp(e,t){return this.x=V(this.x,e.x,t.x),this.y=V(this.y,e.y,t.y),this}clampScalar(e,t){return this.x=V(this.x,e,t),this.y=V(this.y,e,t),this}clampLength(e,t){let n=this.length();return this.divideScalar(n||1).multiplyScalar(V(n,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this}negate(){return this.x=-this.x,this.y=-this.y,this}dot(e){return this.x*e.x+this.y*e.y}cross(e){return this.x*e.y-this.y*e.x}lengthSq(){return this.x*this.x+this.y*this.y}length(){return Math.sqrt(this.x*this.x+this.y*this.y)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)}normalize(){return this.divideScalar(this.length()||1)}angle(){return Math.atan2(-this.y,-this.x)+Math.PI}angleTo(e){let t=Math.sqrt(this.lengthSq()*e.lengthSq());return 0===t?Math.PI/2:Math.acos(V(this.dot(e)/t,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){let t=this.x-e.x,n=this.y-e.y;return t*t+n*n}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this}equals(e){return e.x===this.x&&e.y===this.y}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this}rotateAround(e,t){let n=Math.cos(t),i=Math.sin(t),r=this.x-e.x,a=this.y-e.y;return this.x=r*n-a*i+e.x,this.y=r*i+a*n+e.y,this}random(){return this.x=Math.random(),this.y=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y}}class Z{constructor(e,t,n,i,r,a,s,o,l){Z.prototype.isMatrix3=!0,this.elements=[1,0,0,0,1,0,0,0,1],void 0!==e&&this.set(e,t,n,i,r,a,s,o,l)}set(e,t,n,i,r,a,s,o,l){let u=this.elements;return u[0]=e,u[1]=i,u[2]=s,u[3]=t,u[4]=r,u[5]=o,u[6]=n,u[7]=a,u[8]=l,this}identity(){return this.set(1,0,0,0,1,0,0,0,1),this}copy(e){let t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],this}extractBasis(e,t,n){return e.setFromMatrix3Column(this,0),t.setFromMatrix3Column(this,1),n.setFromMatrix3Column(this,2),this}setFromMatrix4(e){let t=e.elements;return this.set(t[0],t[4],t[8],t[1],t[5],t[9],t[2],t[6],t[10]),this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){let n=e.elements,i=t.elements,r=this.elements,a=n[0],s=n[3],o=n[6],l=n[1],u=n[4],c=n[7],h=n[2],d=n[5],p=n[8],f=i[0],m=i[3],g=i[6],v=i[1],_=i[4],y=i[7],x=i[2],b=i[5],S=i[8];return r[0]=a*f+s*v+o*x,r[3]=a*m+s*_+o*b,r[6]=a*g+s*y+o*S,r[1]=l*f+u*v+c*x,r[4]=l*m+u*_+c*b,r[7]=l*g+u*y+c*S,r[2]=h*f+d*v+p*x,r[5]=h*m+d*_+p*b,r[8]=h*g+d*y+p*S,this}multiplyScalar(e){let t=this.elements;return t[0]*=e,t[3]*=e,t[6]*=e,t[1]*=e,t[4]*=e,t[7]*=e,t[2]*=e,t[5]*=e,t[8]*=e,this}determinant(){let e=this.elements,t=e[0],n=e[1],i=e[2],r=e[3],a=e[4],s=e[5],o=e[6],l=e[7],u=e[8];return t*a*u-t*s*l-n*r*u+n*s*o+i*r*l-i*a*o}invert(){let e=this.elements,t=e[0],n=e[1],i=e[2],r=e[3],a=e[4],s=e[5],o=e[6],l=e[7],u=e[8],c=u*a-s*l,h=s*o-u*r,d=l*r-a*o,p=t*c+n*h+i*d;if(0===p)return this.set(0,0,0,0,0,0,0,0,0);let f=1/p;return e[0]=c*f,e[1]=(i*l-u*n)*f,e[2]=(s*n-i*a)*f,e[3]=h*f,e[4]=(u*t-i*o)*f,e[5]=(i*r-s*t)*f,e[6]=d*f,e[7]=(n*o-l*t)*f,e[8]=(a*t-n*r)*f,this}transpose(){let e,t=this.elements;return e=t[1],t[1]=t[3],t[3]=e,e=t[2],t[2]=t[6],t[6]=e,e=t[5],t[5]=t[7],t[7]=e,this}getNormalMatrix(e){return this.setFromMatrix4(e).invert().transpose()}transposeIntoArray(e){let t=this.elements;return e[0]=t[0],e[1]=t[3],e[2]=t[6],e[3]=t[1],e[4]=t[4],e[5]=t[7],e[6]=t[2],e[7]=t[5],e[8]=t[8],this}setUvTransform(e,t,n,i,r,a,s){let o=Math.cos(r),l=Math.sin(r);return this.set(n*o,n*l,-n*(o*a+l*s)+a+e,-i*l,i*o,-i*(-l*a+o*s)+s+t,0,0,1),this}scale(e,t){return this.premultiply(J.makeScale(e,t)),this}rotate(e){return this.premultiply(J.makeRotation(-e)),this}translate(e,t){return this.premultiply(J.makeTranslation(e,t)),this}makeTranslation(e,t){return e.isVector2?this.set(1,0,e.x,0,1,e.y,0,0,1):this.set(1,0,e,0,1,t,0,0,1),this}makeRotation(e){let t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,n,t,0,0,0,1),this}makeScale(e,t){return this.set(e,0,0,0,t,0,0,0,1),this}equals(e){let t=this.elements,n=e.elements;for(let e=0;e<9;e++)if(t[e]!==n[e])return!1;return!0}fromArray(e,t=0){for(let n=0;n<9;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){let n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e}clone(){return new this.constructor().fromArray(this.elements)}}let J=new Z;function K(e){for(let t=e.length-1;t>=0;--t)if(e[t]>=65535)return!0;return!1}let $={Int8Array:Int8Array,Uint8Array:Uint8Array,Uint8ClampedArray:Uint8ClampedArray,Int16Array:Int16Array,Uint16Array:Uint16Array,Int32Array:Int32Array,Uint32Array:Uint32Array,Float32Array:Float32Array,Float64Array:Float64Array};function Q(e,t){return new $[e](t)}function ee(e){return document.createElementNS("http://www.w3.org/1999/xhtml",e)}function et(){let e=ee("canvas");return e.style.display="block",e}let en={};function ei(e){e in en||(en[e]=!0,console.warn(e))}function er(e,t,n){return new Promise(function(i,r){setTimeout(function a(){switch(e.clientWaitSync(t,e.SYNC_FLUSH_COMMANDS_BIT,0)){case e.WAIT_FAILED:r();break;case e.TIMEOUT_EXPIRED:setTimeout(a,n);break;default:i()}},n)})}function ea(e){let t=e.elements;t[2]=.5*t[2]+.5*t[3],t[6]=.5*t[6]+.5*t[7],t[10]=.5*t[10]+.5*t[11],t[14]=.5*t[14]+.5*t[15]}function es(e){let t=e.elements;-1===t[11]?(t[10]=-t[10]-1,t[14]=-t[14]):(t[10]=-t[10],t[14]=-t[14]+1)}let eo=new Z().set(.4123908,.3575843,.1804808,.212639,.7151687,.0721923,.0193308,.1191948,.9505322),el=new Z().set(3.2409699,-1.5373832,-.4986108,-.9692436,1.8759675,.0415551,.0556301,-.203977,1.0569715),eu=(d=[.64,.33,.3,.6,.15,.06],p=[.2126,.7152,.0722],f=[.3127,.329],(h={enabled:!0,workingColorSpace:L,spaces:{},convert:function(e,t,n){return!1!==this.enabled&&t!==n&&t&&n&&(this.spaces[t].transfer===U&&(e.r=ec(e.r),e.g=ec(e.g),e.b=ec(e.b)),this.spaces[t].primaries!==this.spaces[n].primaries&&(e.applyMatrix3(this.spaces[t].toXYZ),e.applyMatrix3(this.spaces[n].fromXYZ)),this.spaces[n].transfer===U&&(e.r=eh(e.r),e.g=eh(e.g),e.b=eh(e.b))),e},fromWorkingColorSpace:function(e,t){return this.convert(e,this.workingColorSpace,t)},toWorkingColorSpace:function(e,t){return this.convert(e,t,this.workingColorSpace)},getPrimaries:function(e){return this.spaces[e].primaries},getTransfer:function(e){return""===e?N:this.spaces[e].transfer},getLuminanceCoefficients:function(e,t=this.workingColorSpace){return e.fromArray(this.spaces[t].luminanceCoefficients)},define:function(e){Object.assign(this.spaces,e)},_getMatrix:function(e,t,n){return e.copy(this.spaces[t].toXYZ).multiply(this.spaces[n].fromXYZ)},_getDrawingBufferColorSpace:function(e){return this.spaces[e].outputColorSpaceConfig.drawingBufferColorSpace},_getUnpackColorSpace:function(e=this.workingColorSpace){return this.spaces[e].workingColorSpaceConfig.unpackColorSpace}}).define({[L]:{primaries:d,whitePoint:f,transfer:N,toXYZ:eo,fromXYZ:el,luminanceCoefficients:p,workingColorSpaceConfig:{unpackColorSpace:I},outputColorSpaceConfig:{drawingBufferColorSpace:I}},[I]:{primaries:d,whitePoint:f,transfer:U,toXYZ:eo,fromXYZ:el,luminanceCoefficients:p,outputColorSpaceConfig:{drawingBufferColorSpace:I}}}),h);function ec(e){return e<.04045?.0773993808*e:Math.pow(.9478672986*e+.0521327014,2.4)}function eh(e){return e<.0031308?12.92*e:1.055*Math.pow(e,.41666)-.055}class ed{static getDataURL(e){let n;if(/^data:/i.test(e.src)||"u"2048||n.height>2048?(console.warn("THREE.ImageUtils.getDataURL: Image converted to jpg for performance reasons",e),n.toDataURL("image/jpeg",.6)):n.toDataURL("image/png")}static sRGBToLinear(e){if("u">typeof HTMLImageElement&&e instanceof HTMLImageElement||"u">typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"u">typeof ImageBitmap&&e instanceof ImageBitmap){let t=ee("canvas");t.width=e.width,t.height=e.height;let n=t.getContext("2d");n.drawImage(e,0,0,e.width,e.height);let i=n.getImageData(0,0,e.width,e.height),r=i.data;for(let e=0;etypeof HTMLImageElement&&e instanceof HTMLImageElement||"u">typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"u">typeof ImageBitmap&&e instanceof ImageBitmap?ed.getDataURL(e):e.data?{data:Array.from(e.data),width:e.width,height:e.height,type:e.data.constructor.name}:(console.warn("THREE.Texture: Unable to serialize Texture."),{})}let eg=0;class ev extends O{constructor(e=ev.DEFAULT_IMAGE,t=ev.DEFAULT_MAPPING,n=1001,i=1001,r=1006,a=1008,s=1023,o=1009,l=ev.DEFAULT_ANISOTROPY,u=""){super(),this.isTexture=!0,Object.defineProperty(this,"id",{value:eg++}),this.uuid=H(),this.name="",this.source=new ef(e),this.mipmaps=[],this.mapping=t,this.channel=0,this.wrapS=n,this.wrapT=i,this.magFilter=r,this.minFilter=a,this.anisotropy=l,this.format=s,this.internalFormat=null,this.type=o,this.offset=new Y(0,0),this.repeat=new Y(1,1),this.center=new Y(0,0),this.rotation=0,this.matrixAutoUpdate=!0,this.matrix=new Z,this.generateMipmaps=!0,this.premultiplyAlpha=!1,this.flipY=!0,this.unpackAlignment=4,this.colorSpace=u,this.userData={},this.version=0,this.onUpdate=null,this.isRenderTargetTexture=!1,this.pmremVersion=0}get image(){return this.source.data}set image(e=null){this.source.data=e}updateMatrix(){this.matrix.setUvTransform(this.offset.x,this.offset.y,this.repeat.x,this.repeat.y,this.rotation,this.center.x,this.center.y)}clone(){return new this.constructor().copy(this)}copy(e){return this.name=e.name,this.source=e.source,this.mipmaps=e.mipmaps.slice(0),this.mapping=e.mapping,this.channel=e.channel,this.wrapS=e.wrapS,this.wrapT=e.wrapT,this.magFilter=e.magFilter,this.minFilter=e.minFilter,this.anisotropy=e.anisotropy,this.format=e.format,this.internalFormat=e.internalFormat,this.type=e.type,this.offset.copy(e.offset),this.repeat.copy(e.repeat),this.center.copy(e.center),this.rotation=e.rotation,this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrix.copy(e.matrix),this.generateMipmaps=e.generateMipmaps,this.premultiplyAlpha=e.premultiplyAlpha,this.flipY=e.flipY,this.unpackAlignment=e.unpackAlignment,this.colorSpace=e.colorSpace,this.userData=JSON.parse(JSON.stringify(e.userData)),this.needsUpdate=!0,this}toJSON(e){let t=void 0===e||"string"==typeof e;if(!t&&void 0!==e.textures[this.uuid])return e.textures[this.uuid];let n={metadata:{version:4.6,type:"Texture",generator:"Texture.toJSON"},uuid:this.uuid,name:this.name,image:this.source.toJSON(e).uuid,mapping:this.mapping,channel:this.channel,repeat:[this.repeat.x,this.repeat.y],offset:[this.offset.x,this.offset.y],center:[this.center.x,this.center.y],rotation:this.rotation,wrap:[this.wrapS,this.wrapT],format:this.format,internalFormat:this.internalFormat,type:this.type,colorSpace:this.colorSpace,minFilter:this.minFilter,magFilter:this.magFilter,anisotropy:this.anisotropy,flipY:this.flipY,generateMipmaps:this.generateMipmaps,premultiplyAlpha:this.premultiplyAlpha,unpackAlignment:this.unpackAlignment};return Object.keys(this.userData).length>0&&(n.userData=this.userData),t||(e.textures[this.uuid]=n),n}dispose(){this.dispatchEvent({type:"dispose"})}transformUv(e){if(300!==this.mapping)return e;if(e.applyMatrix3(this.matrix),e.x<0||e.x>1)switch(this.wrapS){case 1e3:e.x=e.x-Math.floor(e.x);break;case 1001:e.x=e.x<0?0:1;break;case 1002:1===Math.abs(Math.floor(e.x)%2)?e.x=Math.ceil(e.x)-e.x:e.x=e.x-Math.floor(e.x)}if(e.y<0||e.y>1)switch(this.wrapT){case 1e3:e.y=e.y-Math.floor(e.y);break;case 1001:e.y=e.y<0?0:1;break;case 1002:1===Math.abs(Math.floor(e.y)%2)?e.y=Math.ceil(e.y)-e.y:e.y=e.y-Math.floor(e.y)}return this.flipY&&(e.y=1-e.y),e}set needsUpdate(e){!0===e&&(this.version++,this.source.needsUpdate=!0)}set needsPMREMUpdate(e){!0===e&&this.pmremVersion++}}ev.DEFAULT_IMAGE=null,ev.DEFAULT_MAPPING=300,ev.DEFAULT_ANISOTROPY=1;class e_{constructor(e=0,t=0,n=0,i=1){e_.prototype.isVector4=!0,this.x=e,this.y=t,this.z=n,this.w=i}get width(){return this.z}set width(e){this.z=e}get height(){return this.w}set height(e){this.w=e}set(e,t,n,i){return this.x=e,this.y=t,this.z=n,this.w=i,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this.w=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setW(e){return this.w=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;case 3:this.w=t;break;default:throw Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;case 3:return this.w;default:throw Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z,this.w)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this.w=void 0!==e.w?e.w:1,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this.w+=e.w,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this.w+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this.w=e.w+t.w,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this.w+=e.w*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this.w-=e.w,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this.w-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this.w=e.w-t.w,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this.w*=e.w,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this.w*=e,this}applyMatrix4(e){let t=this.x,n=this.y,i=this.z,r=this.w,a=e.elements;return this.x=a[0]*t+a[4]*n+a[8]*i+a[12]*r,this.y=a[1]*t+a[5]*n+a[9]*i+a[13]*r,this.z=a[2]*t+a[6]*n+a[10]*i+a[14]*r,this.w=a[3]*t+a[7]*n+a[11]*i+a[15]*r,this}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this.w/=e.w,this}divideScalar(e){return this.multiplyScalar(1/e)}setAxisAngleFromQuaternion(e){this.w=2*Math.acos(e.w);let t=Math.sqrt(1-e.w*e.w);return t<1e-4?(this.x=1,this.y=0,this.z=0):(this.x=e.x/t,this.y=e.y/t,this.z=e.z/t),this}setAxisAngleFromRotationMatrix(e){let t,n,i,r,a=e.elements,s=a[0],o=a[4],l=a[8],u=a[1],c=a[5],h=a[9],d=a[2],p=a[6],f=a[10];if(.01>Math.abs(o-u)&&.01>Math.abs(l-d)&&.01>Math.abs(h-p)){if(.1>Math.abs(o+u)&&.1>Math.abs(l+d)&&.1>Math.abs(h+p)&&.1>Math.abs(s+c+f-3))return this.set(1,0,0,0),this;t=Math.PI;let e=(s+1)/2,a=(c+1)/2,m=(f+1)/2,g=(o+u)/4,v=(l+d)/4,_=(h+p)/4;return e>a&&e>m?e<.01?(n=0,i=.707106781,r=.707106781):(i=g/(n=Math.sqrt(e)),r=v/n):a>m?a<.01?(n=.707106781,i=0,r=.707106781):(n=g/(i=Math.sqrt(a)),r=_/i):m<.01?(n=.707106781,i=.707106781,r=0):(n=v/(r=Math.sqrt(m)),i=_/r),this.set(n,i,r,t),this}let m=Math.sqrt((p-h)*(p-h)+(l-d)*(l-d)+(u-o)*(u-o));return .001>Math.abs(m)&&(m=1),this.x=(p-h)/m,this.y=(l-d)/m,this.z=(u-o)/m,this.w=Math.acos((s+c+f-1)/2),this}setFromMatrixPosition(e){let t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this.w=t[15],this}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this.w=Math.min(this.w,e.w),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this.w=Math.max(this.w,e.w),this}clamp(e,t){return this.x=V(this.x,e.x,t.x),this.y=V(this.y,e.y,t.y),this.z=V(this.z,e.z,t.z),this.w=V(this.w,e.w,t.w),this}clampScalar(e,t){return this.x=V(this.x,e,t),this.y=V(this.y,e,t),this.z=V(this.z,e,t),this.w=V(this.w,e,t),this}clampLength(e,t){let n=this.length();return this.divideScalar(n||1).multiplyScalar(V(n,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this.w=Math.floor(this.w),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this.w=Math.ceil(this.w),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this.w=Math.round(this.w),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this.w=Math.trunc(this.w),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this.w=-this.w,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z+this.w*e.w}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z+this.w*this.w)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)+Math.abs(this.w)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this.w+=(e.w-this.w)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this.w=e.w+(t.w-e.w)*n,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z&&e.w===this.w}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this.w=e[t+3],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e[t+3]=this.w,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this.w=e.getW(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this.w=Math.random(),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z,yield this.w}}class ey extends O{constructor(e=1,t=1,n={}){super(),this.isRenderTarget=!0,this.width=e,this.height=t,this.depth=1,this.scissor=new e_(0,0,e,t),this.scissorTest=!1,this.viewport=new e_(0,0,e,t);const i=new ev({width:e,height:t,depth:1},(n=Object.assign({generateMipmaps:!1,internalFormat:null,minFilter:1006,depthBuffer:!0,stencilBuffer:!1,resolveDepthBuffer:!0,resolveStencilBuffer:!0,depthTexture:null,samples:0,count:1},n)).mapping,n.wrapS,n.wrapT,n.magFilter,n.minFilter,n.format,n.type,n.anisotropy,n.colorSpace);i.flipY=!1,i.generateMipmaps=n.generateMipmaps,i.internalFormat=n.internalFormat,this.textures=[];const r=n.count;for(let e=0;e=0?1:-1,i=1-t*t;if(i>Number.EPSILON){let r=Math.sqrt(i),a=Math.atan2(r,t*n);e=Math.sin(e*a)/r,s=Math.sin(s*a)/r}let r=s*n;if(o=o*e+h*r,l=l*e+d*r,u=u*e+p*r,c=c*e+f*r,e===1-s){let e=1/Math.sqrt(o*o+l*l+u*u+c*c);o*=e,l*=e,u*=e,c*=e}}e[t]=o,e[t+1]=l,e[t+2]=u,e[t+3]=c}static multiplyQuaternionsFlat(e,t,n,i,r,a){let s=n[i],o=n[i+1],l=n[i+2],u=n[i+3],c=r[a],h=r[a+1],d=r[a+2],p=r[a+3];return e[t]=s*p+u*c+o*d-l*h,e[t+1]=o*p+u*h+l*c-s*d,e[t+2]=l*p+u*d+s*h-o*c,e[t+3]=u*p-s*c-o*h-l*d,e}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get w(){return this._w}set w(e){this._w=e,this._onChangeCallback()}set(e,t,n,i){return this._x=e,this._y=t,this._z=n,this._w=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._w)}copy(e){return this._x=e.x,this._y=e.y,this._z=e.z,this._w=e.w,this._onChangeCallback(),this}setFromEuler(e,t=!0){let n=e._x,i=e._y,r=e._z,a=e._order,s=Math.cos,o=Math.sin,l=s(n/2),u=s(i/2),c=s(r/2),h=o(n/2),d=o(i/2),p=o(r/2);switch(a){case"XYZ":this._x=h*u*c+l*d*p,this._y=l*d*c-h*u*p,this._z=l*u*p+h*d*c,this._w=l*u*c-h*d*p;break;case"YXZ":this._x=h*u*c+l*d*p,this._y=l*d*c-h*u*p,this._z=l*u*p-h*d*c,this._w=l*u*c+h*d*p;break;case"ZXY":this._x=h*u*c-l*d*p,this._y=l*d*c+h*u*p,this._z=l*u*p+h*d*c,this._w=l*u*c-h*d*p;break;case"ZYX":this._x=h*u*c-l*d*p,this._y=l*d*c+h*u*p,this._z=l*u*p-h*d*c,this._w=l*u*c+h*d*p;break;case"YZX":this._x=h*u*c+l*d*p,this._y=l*d*c+h*u*p,this._z=l*u*p-h*d*c,this._w=l*u*c-h*d*p;break;case"XZY":this._x=h*u*c-l*d*p,this._y=l*d*c-h*u*p,this._z=l*u*p+h*d*c,this._w=l*u*c+h*d*p;break;default:console.warn("THREE.Quaternion: .setFromEuler() encountered an unknown order: "+a)}return!0===t&&this._onChangeCallback(),this}setFromAxisAngle(e,t){let n=t/2,i=Math.sin(n);return this._x=e.x*i,this._y=e.y*i,this._z=e.z*i,this._w=Math.cos(n),this._onChangeCallback(),this}setFromRotationMatrix(e){let t=e.elements,n=t[0],i=t[4],r=t[8],a=t[1],s=t[5],o=t[9],l=t[2],u=t[6],c=t[10],h=n+s+c;if(h>0){let e=.5/Math.sqrt(h+1);this._w=.25/e,this._x=(u-o)*e,this._y=(r-l)*e,this._z=(a-i)*e}else if(n>s&&n>c){let e=2*Math.sqrt(1+n-s-c);this._w=(u-o)/e,this._x=.25*e,this._y=(i+a)/e,this._z=(r+l)/e}else if(s>c){let e=2*Math.sqrt(1+s-n-c);this._w=(r-l)/e,this._x=(i+a)/e,this._y=.25*e,this._z=(o+u)/e}else{let e=2*Math.sqrt(1+c-n-s);this._w=(a-i)/e,this._x=(r+l)/e,this._y=(o+u)/e,this._z=.25*e}return this._onChangeCallback(),this}setFromUnitVectors(e,t){let n=e.dot(t)+1;return nMath.abs(e.z)?(this._x=-e.y,this._y=e.x,this._z=0):(this._x=0,this._y=-e.z,this._z=e.y)):(this._x=e.y*t.z-e.z*t.y,this._y=e.z*t.x-e.x*t.z,this._z=e.x*t.y-e.y*t.x),this._w=n,this.normalize()}angleTo(e){return 2*Math.acos(Math.abs(V(this.dot(e),-1,1)))}rotateTowards(e,t){let n=this.angleTo(e);if(0===n)return this;let i=Math.min(1,t/n);return this.slerp(e,i),this}identity(){return this.set(0,0,0,1)}invert(){return this.conjugate()}conjugate(){return this._x*=-1,this._y*=-1,this._z*=-1,this._onChangeCallback(),this}dot(e){return this._x*e._x+this._y*e._y+this._z*e._z+this._w*e._w}lengthSq(){return this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w}length(){return Math.sqrt(this._x*this._x+this._y*this._y+this._z*this._z+this._w*this._w)}normalize(){let e=this.length();return 0===e?(this._x=0,this._y=0,this._z=0,this._w=1):(e=1/e,this._x=this._x*e,this._y=this._y*e,this._z=this._z*e,this._w=this._w*e),this._onChangeCallback(),this}multiply(e){return this.multiplyQuaternions(this,e)}premultiply(e){return this.multiplyQuaternions(e,this)}multiplyQuaternions(e,t){let n=e._x,i=e._y,r=e._z,a=e._w,s=t._x,o=t._y,l=t._z,u=t._w;return this._x=n*u+a*s+i*l-r*o,this._y=i*u+a*o+r*s-n*l,this._z=r*u+a*l+n*o-i*s,this._w=a*u-n*s-i*o-r*l,this._onChangeCallback(),this}slerp(e,t){if(0===t)return this;if(1===t)return this.copy(e);let n=this._x,i=this._y,r=this._z,a=this._w,s=a*e._w+n*e._x+i*e._y+r*e._z;if(s<0?(this._w=-e._w,this._x=-e._x,this._y=-e._y,this._z=-e._z,s=-s):this.copy(e),s>=1)return this._w=a,this._x=n,this._y=i,this._z=r,this;let o=1-s*s;if(o<=Number.EPSILON){let e=1-t;return this._w=e*a+t*this._w,this._x=e*n+t*this._x,this._y=e*i+t*this._y,this._z=e*r+t*this._z,this.normalize(),this}let l=Math.sqrt(o),u=Math.atan2(l,s),c=Math.sin((1-t)*u)/l,h=Math.sin(t*u)/l;return this._w=a*c+this._w*h,this._x=n*c+this._x*h,this._y=i*c+this._y*h,this._z=r*c+this._z*h,this._onChangeCallback(),this}slerpQuaternions(e,t,n){return this.copy(e).slerp(t,n)}random(){let e=2*Math.PI*Math.random(),t=2*Math.PI*Math.random(),n=Math.random(),i=Math.sqrt(1-n),r=Math.sqrt(n);return this.set(i*Math.sin(e),i*Math.cos(e),r*Math.sin(t),r*Math.cos(t))}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._w===this._w}fromArray(e,t=0){return this._x=e[t],this._y=e[t+1],this._z=e[t+2],this._w=e[t+3],this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._w,e}fromBufferAttribute(e,t){return this._x=e.getX(t),this._y=e.getY(t),this._z=e.getZ(t),this._w=e.getW(t),this._onChangeCallback(),this}toJSON(){return this.toArray()}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._w}}class eE{constructor(e=0,t=0,n=0){eE.prototype.isVector3=!0,this.x=e,this.y=t,this.z=n}set(e,t,n){return void 0===n&&(n=this.z),this.x=e,this.y=t,this.z=n,this}setScalar(e){return this.x=e,this.y=e,this.z=e,this}setX(e){return this.x=e,this}setY(e){return this.y=e,this}setZ(e){return this.z=e,this}setComponent(e,t){switch(e){case 0:this.x=t;break;case 1:this.y=t;break;case 2:this.z=t;break;default:throw Error("index is out of range: "+e)}return this}getComponent(e){switch(e){case 0:return this.x;case 1:return this.y;case 2:return this.z;default:throw Error("index is out of range: "+e)}}clone(){return new this.constructor(this.x,this.y,this.z)}copy(e){return this.x=e.x,this.y=e.y,this.z=e.z,this}add(e){return this.x+=e.x,this.y+=e.y,this.z+=e.z,this}addScalar(e){return this.x+=e,this.y+=e,this.z+=e,this}addVectors(e,t){return this.x=e.x+t.x,this.y=e.y+t.y,this.z=e.z+t.z,this}addScaledVector(e,t){return this.x+=e.x*t,this.y+=e.y*t,this.z+=e.z*t,this}sub(e){return this.x-=e.x,this.y-=e.y,this.z-=e.z,this}subScalar(e){return this.x-=e,this.y-=e,this.z-=e,this}subVectors(e,t){return this.x=e.x-t.x,this.y=e.y-t.y,this.z=e.z-t.z,this}multiply(e){return this.x*=e.x,this.y*=e.y,this.z*=e.z,this}multiplyScalar(e){return this.x*=e,this.y*=e,this.z*=e,this}multiplyVectors(e,t){return this.x=e.x*t.x,this.y=e.y*t.y,this.z=e.z*t.z,this}applyEuler(e){return this.applyQuaternion(eC.setFromEuler(e))}applyAxisAngle(e,t){return this.applyQuaternion(eC.setFromAxisAngle(e,t))}applyMatrix3(e){let t=this.x,n=this.y,i=this.z,r=e.elements;return this.x=r[0]*t+r[3]*n+r[6]*i,this.y=r[1]*t+r[4]*n+r[7]*i,this.z=r[2]*t+r[5]*n+r[8]*i,this}applyNormalMatrix(e){return this.applyMatrix3(e).normalize()}applyMatrix4(e){let t=this.x,n=this.y,i=this.z,r=e.elements,a=1/(r[3]*t+r[7]*n+r[11]*i+r[15]);return this.x=(r[0]*t+r[4]*n+r[8]*i+r[12])*a,this.y=(r[1]*t+r[5]*n+r[9]*i+r[13])*a,this.z=(r[2]*t+r[6]*n+r[10]*i+r[14])*a,this}applyQuaternion(e){let t=this.x,n=this.y,i=this.z,r=e.x,a=e.y,s=e.z,o=e.w,l=2*(a*i-s*n),u=2*(s*t-r*i),c=2*(r*n-a*t);return this.x=t+o*l+a*c-s*u,this.y=n+o*u+s*l-r*c,this.z=i+o*c+r*u-a*l,this}project(e){return this.applyMatrix4(e.matrixWorldInverse).applyMatrix4(e.projectionMatrix)}unproject(e){return this.applyMatrix4(e.projectionMatrixInverse).applyMatrix4(e.matrixWorld)}transformDirection(e){let t=this.x,n=this.y,i=this.z,r=e.elements;return this.x=r[0]*t+r[4]*n+r[8]*i,this.y=r[1]*t+r[5]*n+r[9]*i,this.z=r[2]*t+r[6]*n+r[10]*i,this.normalize()}divide(e){return this.x/=e.x,this.y/=e.y,this.z/=e.z,this}divideScalar(e){return this.multiplyScalar(1/e)}min(e){return this.x=Math.min(this.x,e.x),this.y=Math.min(this.y,e.y),this.z=Math.min(this.z,e.z),this}max(e){return this.x=Math.max(this.x,e.x),this.y=Math.max(this.y,e.y),this.z=Math.max(this.z,e.z),this}clamp(e,t){return this.x=V(this.x,e.x,t.x),this.y=V(this.y,e.y,t.y),this.z=V(this.z,e.z,t.z),this}clampScalar(e,t){return this.x=V(this.x,e,t),this.y=V(this.y,e,t),this.z=V(this.z,e,t),this}clampLength(e,t){let n=this.length();return this.divideScalar(n||1).multiplyScalar(V(n,e,t))}floor(){return this.x=Math.floor(this.x),this.y=Math.floor(this.y),this.z=Math.floor(this.z),this}ceil(){return this.x=Math.ceil(this.x),this.y=Math.ceil(this.y),this.z=Math.ceil(this.z),this}round(){return this.x=Math.round(this.x),this.y=Math.round(this.y),this.z=Math.round(this.z),this}roundToZero(){return this.x=Math.trunc(this.x),this.y=Math.trunc(this.y),this.z=Math.trunc(this.z),this}negate(){return this.x=-this.x,this.y=-this.y,this.z=-this.z,this}dot(e){return this.x*e.x+this.y*e.y+this.z*e.z}lengthSq(){return this.x*this.x+this.y*this.y+this.z*this.z}length(){return Math.sqrt(this.x*this.x+this.y*this.y+this.z*this.z)}manhattanLength(){return Math.abs(this.x)+Math.abs(this.y)+Math.abs(this.z)}normalize(){return this.divideScalar(this.length()||1)}setLength(e){return this.normalize().multiplyScalar(e)}lerp(e,t){return this.x+=(e.x-this.x)*t,this.y+=(e.y-this.y)*t,this.z+=(e.z-this.z)*t,this}lerpVectors(e,t,n){return this.x=e.x+(t.x-e.x)*n,this.y=e.y+(t.y-e.y)*n,this.z=e.z+(t.z-e.z)*n,this}cross(e){return this.crossVectors(this,e)}crossVectors(e,t){let n=e.x,i=e.y,r=e.z,a=t.x,s=t.y,o=t.z;return this.x=i*o-r*s,this.y=r*a-n*o,this.z=n*s-i*a,this}projectOnVector(e){let t=e.lengthSq();if(0===t)return this.set(0,0,0);let n=e.dot(this)/t;return this.copy(e).multiplyScalar(n)}projectOnPlane(e){return eA.copy(this).projectOnVector(e),this.sub(eA)}reflect(e){return this.sub(eA.copy(e).multiplyScalar(2*this.dot(e)))}angleTo(e){let t=Math.sqrt(this.lengthSq()*e.lengthSq());return 0===t?Math.PI/2:Math.acos(V(this.dot(e)/t,-1,1))}distanceTo(e){return Math.sqrt(this.distanceToSquared(e))}distanceToSquared(e){let t=this.x-e.x,n=this.y-e.y,i=this.z-e.z;return t*t+n*n+i*i}manhattanDistanceTo(e){return Math.abs(this.x-e.x)+Math.abs(this.y-e.y)+Math.abs(this.z-e.z)}setFromSpherical(e){return this.setFromSphericalCoords(e.radius,e.phi,e.theta)}setFromSphericalCoords(e,t,n){let i=Math.sin(t)*e;return this.x=i*Math.sin(n),this.y=Math.cos(t)*e,this.z=i*Math.cos(n),this}setFromCylindrical(e){return this.setFromCylindricalCoords(e.radius,e.theta,e.y)}setFromCylindricalCoords(e,t,n){return this.x=e*Math.sin(t),this.y=n,this.z=e*Math.cos(t),this}setFromMatrixPosition(e){let t=e.elements;return this.x=t[12],this.y=t[13],this.z=t[14],this}setFromMatrixScale(e){let t=this.setFromMatrixColumn(e,0).length(),n=this.setFromMatrixColumn(e,1).length(),i=this.setFromMatrixColumn(e,2).length();return this.x=t,this.y=n,this.z=i,this}setFromMatrixColumn(e,t){return this.fromArray(e.elements,4*t)}setFromMatrix3Column(e,t){return this.fromArray(e.elements,3*t)}setFromEuler(e){return this.x=e._x,this.y=e._y,this.z=e._z,this}setFromColor(e){return this.x=e.r,this.y=e.g,this.z=e.b,this}equals(e){return e.x===this.x&&e.y===this.y&&e.z===this.z}fromArray(e,t=0){return this.x=e[t],this.y=e[t+1],this.z=e[t+2],this}toArray(e=[],t=0){return e[t]=this.x,e[t+1]=this.y,e[t+2]=this.z,e}fromBufferAttribute(e,t){return this.x=e.getX(t),this.y=e.getY(t),this.z=e.getZ(t),this}random(){return this.x=Math.random(),this.y=Math.random(),this.z=Math.random(),this}randomDirection(){let e=Math.random()*Math.PI*2,t=2*Math.random()-1,n=Math.sqrt(1-t*t);return this.x=n*Math.cos(e),this.y=t,this.z=n*Math.sin(e),this}*[Symbol.iterator](){yield this.x,yield this.y,yield this.z}}let eA=new eE,eC=new ew;class eR{constructor(e=new eE(Infinity,Infinity,Infinity),t=new eE(-1/0,-1/0,-1/0)){this.isBox3=!0,this.min=e,this.max=t}set(e,t){return this.min.copy(e),this.max.copy(t),this}setFromArray(e){this.makeEmpty();for(let t=0,n=e.length;t=this.min.x&&e.x<=this.max.x&&e.y>=this.min.y&&e.y<=this.max.y&&e.z>=this.min.z&&e.z<=this.max.z}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y&&this.min.z<=e.min.z&&e.max.z<=this.max.z}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y),(e.z-this.min.z)/(this.max.z-this.min.z))}intersectsBox(e){return e.max.x>=this.min.x&&e.min.x<=this.max.x&&e.max.y>=this.min.y&&e.min.y<=this.max.y&&e.max.z>=this.min.z&&e.min.z<=this.max.z}intersectsSphere(e){return this.clampPoint(e.center,eI),eI.distanceToSquared(e.center)<=e.radius*e.radius}intersectsPlane(e){let t,n;return e.normal.x>0?(t=e.normal.x*this.min.x,n=e.normal.x*this.max.x):(t=e.normal.x*this.max.x,n=e.normal.x*this.min.x),e.normal.y>0?(t+=e.normal.y*this.min.y,n+=e.normal.y*this.max.y):(t+=e.normal.y*this.max.y,n+=e.normal.y*this.min.y),e.normal.z>0?(t+=e.normal.z*this.min.z,n+=e.normal.z*this.max.z):(t+=e.normal.z*this.max.z,n+=e.normal.z*this.min.z),t<=-e.constant&&n>=-e.constant}intersectsTriangle(e){if(this.isEmpty())return!1;this.getCenter(eB),ek.subVectors(this.max,eB),eN.subVectors(e.a,eB),eU.subVectors(e.b,eB),eD.subVectors(e.c,eB),eO.subVectors(eU,eN),eF.subVectors(eD,eU),ez.subVectors(eN,eD);let t=[0,-eO.z,eO.y,0,-eF.z,eF.y,0,-ez.z,ez.y,eO.z,0,-eO.x,eF.z,0,-eF.x,ez.z,0,-ez.x,-eO.y,eO.x,0,-eF.y,eF.x,0,-ez.y,ez.x,0];return!!eG(t,eN,eU,eD,ek)&&!!eG(t=[1,0,0,0,1,0,0,0,1],eN,eU,eD,ek)&&(eH.crossVectors(eO,eF),eG(t=[eH.x,eH.y,eH.z],eN,eU,eD,ek))}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,eI).distanceTo(e)}getBoundingSphere(e){return this.isEmpty()?e.makeEmpty():(this.getCenter(e.center),e.radius=.5*this.getSize(eI).length()),e}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}applyMatrix4(e){return this.isEmpty()||(eP[0].set(this.min.x,this.min.y,this.min.z).applyMatrix4(e),eP[1].set(this.min.x,this.min.y,this.max.z).applyMatrix4(e),eP[2].set(this.min.x,this.max.y,this.min.z).applyMatrix4(e),eP[3].set(this.min.x,this.max.y,this.max.z).applyMatrix4(e),eP[4].set(this.max.x,this.min.y,this.min.z).applyMatrix4(e),eP[5].set(this.max.x,this.min.y,this.max.z).applyMatrix4(e),eP[6].set(this.max.x,this.max.y,this.min.z).applyMatrix4(e),eP[7].set(this.max.x,this.max.y,this.max.z).applyMatrix4(e),this.setFromPoints(eP)),this}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}}let eP=[new eE,new eE,new eE,new eE,new eE,new eE,new eE,new eE],eI=new eE,eL=new eR,eN=new eE,eU=new eE,eD=new eE,eO=new eE,eF=new eE,ez=new eE,eB=new eE,ek=new eE,eH=new eE,eV=new eE;function eG(e,t,n,i,r){for(let a=0,s=e.length-3;a<=s;a+=3){eV.fromArray(e,a);let s=r.x*Math.abs(eV.x)+r.y*Math.abs(eV.y)+r.z*Math.abs(eV.z),o=t.dot(eV),l=n.dot(eV),u=i.dot(eV);if(Math.max(-Math.max(o,l,u),Math.min(o,l,u))>s)return!1}return!0}let eW=new eR,ej=new eE,eX=new eE;class eq{constructor(e=new eE,t=-1){this.isSphere=!0,this.center=e,this.radius=t}set(e,t){return this.center.copy(e),this.radius=t,this}setFromPoints(e,t){let n=this.center;void 0!==t?n.copy(t):eW.setFromPoints(e).getCenter(n);let i=0;for(let t=0,r=e.length;tthis.radius*this.radius&&(t.sub(this.center).normalize(),t.multiplyScalar(this.radius).add(this.center)),t}getBoundingBox(e){return this.isEmpty()?e.makeEmpty():(e.set(this.center,this.center),e.expandByScalar(this.radius)),e}applyMatrix4(e){return this.center.applyMatrix4(e),this.radius=this.radius*e.getMaxScaleOnAxis(),this}translate(e){return this.center.add(e),this}expandByPoint(e){if(this.isEmpty())return this.center.copy(e),this.radius=0,this;ej.subVectors(e,this.center);let t=ej.lengthSq();if(t>this.radius*this.radius){let e=Math.sqrt(t),n=(e-this.radius)*.5;this.center.addScaledVector(ej,n/e),this.radius+=n}return this}union(e){return e.isEmpty()||(this.isEmpty()?this.copy(e):!0===this.center.equals(e.center)?this.radius=Math.max(this.radius,e.radius):(eX.subVectors(e.center,this.center).setLength(e.radius),this.expandByPoint(ej.copy(e.center).add(eX)),this.expandByPoint(ej.copy(e.center).sub(eX)))),this}equals(e){return e.center.equals(this.center)&&e.radius===this.radius}clone(){return new this.constructor().copy(this)}}let eY=new eE,eZ=new eE,eJ=new eE,eK=new eE,e$=new eE,eQ=new eE,e0=new eE;class e1{constructor(e=new eE,t=new eE(0,0,-1)){this.origin=e,this.direction=t}set(e,t){return this.origin.copy(e),this.direction.copy(t),this}copy(e){return this.origin.copy(e.origin),this.direction.copy(e.direction),this}at(e,t){return t.copy(this.origin).addScaledVector(this.direction,e)}lookAt(e){return this.direction.copy(e).sub(this.origin).normalize(),this}recast(e){return this.origin.copy(this.at(e,eY)),this}closestPointToPoint(e,t){t.subVectors(e,this.origin);let n=t.dot(this.direction);return n<0?t.copy(this.origin):t.copy(this.origin).addScaledVector(this.direction,n)}distanceToPoint(e){return Math.sqrt(this.distanceSqToPoint(e))}distanceSqToPoint(e){let t=eY.subVectors(e,this.origin).dot(this.direction);return t<0?this.origin.distanceToSquared(e):(eY.copy(this.origin).addScaledVector(this.direction,t),eY.distanceToSquared(e))}distanceSqToSegment(e,t,n,i){let r,a,s,o;eZ.copy(e).add(t).multiplyScalar(.5),eJ.copy(t).sub(e).normalize(),eK.copy(this.origin).sub(eZ);let l=.5*e.distanceTo(t),u=-this.direction.dot(eJ),c=eK.dot(this.direction),h=-eK.dot(eJ),d=eK.lengthSq(),p=Math.abs(1-u*u);if(p>0)if(r=u*h-c,a=u*c-h,o=l*p,r>=0)if(a>=-o)if(a<=o){let e=1/p;r*=e,a*=e,s=r*(r+u*a+2*c)+a*(u*r+a+2*h)+d}else s=-(r=Math.max(0,-(u*(a=l)+c)))*r+a*(a+2*h)+d;else s=-(r=Math.max(0,-(u*(a=-l)+c)))*r+a*(a+2*h)+d;else a<=-o?(a=(r=Math.max(0,-(-u*l+c)))>0?-l:Math.min(Math.max(-l,-h),l),s=-r*r+a*(a+2*h)+d):a<=o?(r=0,s=(a=Math.min(Math.max(-l,-h),l))*(a+2*h)+d):(a=(r=Math.max(0,-(u*l+c)))>0?l:Math.min(Math.max(-l,-h),l),s=-r*r+a*(a+2*h)+d);else a=u>0?-l:l,s=-(r=Math.max(0,-(u*a+c)))*r+a*(a+2*h)+d;return n&&n.copy(this.origin).addScaledVector(this.direction,r),i&&i.copy(eZ).addScaledVector(eJ,a),s}intersectSphere(e,t){eY.subVectors(e.center,this.origin);let n=eY.dot(this.direction),i=eY.dot(eY)-n*n,r=e.radius*e.radius;if(i>r)return null;let a=Math.sqrt(r-i),s=n-a,o=n+a;return o<0?null:s<0?this.at(o,t):this.at(s,t)}intersectsSphere(e){return this.distanceSqToPoint(e.center)<=e.radius*e.radius}distanceToPlane(e){let t=e.normal.dot(this.direction);if(0===t)return 0===e.distanceToPoint(this.origin)?0:null;let n=-(this.origin.dot(e.normal)+e.constant)/t;return n>=0?n:null}intersectPlane(e,t){let n=this.distanceToPlane(e);return null===n?null:this.at(n,t)}intersectsPlane(e){let t=e.distanceToPoint(this.origin);return!!(0===t||e.normal.dot(this.direction)*t<0)}intersectBox(e,t){let n,i,r,a,s,o,l=1/this.direction.x,u=1/this.direction.y,c=1/this.direction.z,h=this.origin;return(l>=0?(n=(e.min.x-h.x)*l,i=(e.max.x-h.x)*l):(n=(e.max.x-h.x)*l,i=(e.min.x-h.x)*l),u>=0?(r=(e.min.y-h.y)*u,a=(e.max.y-h.y)*u):(r=(e.max.y-h.y)*u,a=(e.min.y-h.y)*u),n>a||r>i||((r>n||isNaN(n))&&(n=r),(a=0?(s=(e.min.z-h.z)*c,o=(e.max.z-h.z)*c):(s=(e.max.z-h.z)*c,o=(e.min.z-h.z)*c),n>o||s>i||((s>n||n!=n)&&(n=s),(o=0?n:i,t)}intersectsBox(e){return null!==this.intersectBox(e,eY)}intersectTriangle(e,t,n,i,r){let a;e$.subVectors(t,e),eQ.subVectors(n,e),e0.crossVectors(e$,eQ);let s=this.direction.dot(e0);if(s>0){if(i)return null;a=1}else{if(!(s<0))return null;a=-1,s=-s}eK.subVectors(this.origin,e);let o=a*this.direction.dot(eQ.crossVectors(eK,eQ));if(o<0)return null;let l=a*this.direction.dot(e$.cross(eK));if(l<0||o+l>s)return null;let u=-a*eK.dot(e0);return u<0?null:this.at(u/s,r)}applyMatrix4(e){return this.origin.applyMatrix4(e),this.direction.transformDirection(e),this}equals(e){return e.origin.equals(this.origin)&&e.direction.equals(this.direction)}clone(){return new this.constructor().copy(this)}}class e2{constructor(e,t,n,i,r,a,s,o,l,u,c,h,d,p,f,m){e2.prototype.isMatrix4=!0,this.elements=[1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1],void 0!==e&&this.set(e,t,n,i,r,a,s,o,l,u,c,h,d,p,f,m)}set(e,t,n,i,r,a,s,o,l,u,c,h,d,p,f,m){let g=this.elements;return g[0]=e,g[4]=t,g[8]=n,g[12]=i,g[1]=r,g[5]=a,g[9]=s,g[13]=o,g[2]=l,g[6]=u,g[10]=c,g[14]=h,g[3]=d,g[7]=p,g[11]=f,g[15]=m,this}identity(){return this.set(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1),this}clone(){return new e2().fromArray(this.elements)}copy(e){let t=this.elements,n=e.elements;return t[0]=n[0],t[1]=n[1],t[2]=n[2],t[3]=n[3],t[4]=n[4],t[5]=n[5],t[6]=n[6],t[7]=n[7],t[8]=n[8],t[9]=n[9],t[10]=n[10],t[11]=n[11],t[12]=n[12],t[13]=n[13],t[14]=n[14],t[15]=n[15],this}copyPosition(e){let t=this.elements,n=e.elements;return t[12]=n[12],t[13]=n[13],t[14]=n[14],this}setFromMatrix3(e){let t=e.elements;return this.set(t[0],t[3],t[6],0,t[1],t[4],t[7],0,t[2],t[5],t[8],0,0,0,0,1),this}extractBasis(e,t,n){return e.setFromMatrixColumn(this,0),t.setFromMatrixColumn(this,1),n.setFromMatrixColumn(this,2),this}makeBasis(e,t,n){return this.set(e.x,t.x,n.x,0,e.y,t.y,n.y,0,e.z,t.z,n.z,0,0,0,0,1),this}extractRotation(e){let t=this.elements,n=e.elements,i=1/e3.setFromMatrixColumn(e,0).length(),r=1/e3.setFromMatrixColumn(e,1).length(),a=1/e3.setFromMatrixColumn(e,2).length();return t[0]=n[0]*i,t[1]=n[1]*i,t[2]=n[2]*i,t[3]=0,t[4]=n[4]*r,t[5]=n[5]*r,t[6]=n[6]*r,t[7]=0,t[8]=n[8]*a,t[9]=n[9]*a,t[10]=n[10]*a,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromEuler(e){let t=this.elements,n=e.x,i=e.y,r=e.z,a=Math.cos(n),s=Math.sin(n),o=Math.cos(i),l=Math.sin(i),u=Math.cos(r),c=Math.sin(r);if("XYZ"===e.order){let e=a*u,n=a*c,i=s*u,r=s*c;t[0]=o*u,t[4]=-o*c,t[8]=l,t[1]=n+i*l,t[5]=e-r*l,t[9]=-s*o,t[2]=r-e*l,t[6]=i+n*l,t[10]=a*o}else if("YXZ"===e.order){let e=o*u,n=o*c,i=l*u,r=l*c;t[0]=e+r*s,t[4]=i*s-n,t[8]=a*l,t[1]=a*c,t[5]=a*u,t[9]=-s,t[2]=n*s-i,t[6]=r+e*s,t[10]=a*o}else if("ZXY"===e.order){let e=o*u,n=o*c,i=l*u,r=l*c;t[0]=e-r*s,t[4]=-a*c,t[8]=i+n*s,t[1]=n+i*s,t[5]=a*u,t[9]=r-e*s,t[2]=-a*l,t[6]=s,t[10]=a*o}else if("ZYX"===e.order){let e=a*u,n=a*c,i=s*u,r=s*c;t[0]=o*u,t[4]=i*l-n,t[8]=e*l+r,t[1]=o*c,t[5]=r*l+e,t[9]=n*l-i,t[2]=-l,t[6]=s*o,t[10]=a*o}else if("YZX"===e.order){let e=a*o,n=a*l,i=s*o,r=s*l;t[0]=o*u,t[4]=r-e*c,t[8]=i*c+n,t[1]=c,t[5]=a*u,t[9]=-s*u,t[2]=-l*u,t[6]=n*c+i,t[10]=e-r*c}else if("XZY"===e.order){let e=a*o,n=a*l,i=s*o,r=s*l;t[0]=o*u,t[4]=-c,t[8]=l*u,t[1]=e*c+r,t[5]=a*u,t[9]=n*c-i,t[2]=i*c-n,t[6]=s*u,t[10]=r*c+e}return t[3]=0,t[7]=0,t[11]=0,t[12]=0,t[13]=0,t[14]=0,t[15]=1,this}makeRotationFromQuaternion(e){return this.compose(e5,e,e6)}lookAt(e,t,n){let i=this.elements;return e7.subVectors(e,t),0===e7.lengthSq()&&(e7.z=1),e7.normalize(),e8.crossVectors(n,e7),0===e8.lengthSq()&&(1===Math.abs(n.z)?e7.x+=1e-4:e7.z+=1e-4,e7.normalize(),e8.crossVectors(n,e7)),e8.normalize(),e9.crossVectors(e7,e8),i[0]=e8.x,i[4]=e9.x,i[8]=e7.x,i[1]=e8.y,i[5]=e9.y,i[9]=e7.y,i[2]=e8.z,i[6]=e9.z,i[10]=e7.z,this}multiply(e){return this.multiplyMatrices(this,e)}premultiply(e){return this.multiplyMatrices(e,this)}multiplyMatrices(e,t){let n=e.elements,i=t.elements,r=this.elements,a=n[0],s=n[4],o=n[8],l=n[12],u=n[1],c=n[5],h=n[9],d=n[13],p=n[2],f=n[6],m=n[10],g=n[14],v=n[3],_=n[7],y=n[11],x=n[15],b=i[0],S=i[4],M=i[8],T=i[12],w=i[1],E=i[5],A=i[9],C=i[13],R=i[2],P=i[6],I=i[10],L=i[14],N=i[3],U=i[7],D=i[11],O=i[15];return r[0]=a*b+s*w+o*R+l*N,r[4]=a*S+s*E+o*P+l*U,r[8]=a*M+s*A+o*I+l*D,r[12]=a*T+s*C+o*L+l*O,r[1]=u*b+c*w+h*R+d*N,r[5]=u*S+c*E+h*P+d*U,r[9]=u*M+c*A+h*I+d*D,r[13]=u*T+c*C+h*L+d*O,r[2]=p*b+f*w+m*R+g*N,r[6]=p*S+f*E+m*P+g*U,r[10]=p*M+f*A+m*I+g*D,r[14]=p*T+f*C+m*L+g*O,r[3]=v*b+_*w+y*R+x*N,r[7]=v*S+_*E+y*P+x*U,r[11]=v*M+_*A+y*I+x*D,r[15]=v*T+_*C+y*L+x*O,this}multiplyScalar(e){let t=this.elements;return t[0]*=e,t[4]*=e,t[8]*=e,t[12]*=e,t[1]*=e,t[5]*=e,t[9]*=e,t[13]*=e,t[2]*=e,t[6]*=e,t[10]*=e,t[14]*=e,t[3]*=e,t[7]*=e,t[11]*=e,t[15]*=e,this}determinant(){let e=this.elements,t=e[0],n=e[4],i=e[8],r=e[12],a=e[1],s=e[5],o=e[9],l=e[13],u=e[2],c=e[6],h=e[10],d=e[14];return e[3]*(r*o*c-i*l*c-r*s*h+n*l*h+i*s*d-n*o*d)+e[7]*(t*o*d-t*l*h+r*a*h-i*a*d+i*l*u-r*o*u)+e[11]*(t*l*c-t*s*d-r*a*c+n*a*d+r*s*u-n*l*u)+e[15]*(-i*s*u-t*o*c+t*s*h+i*a*c-n*a*h+n*o*u)}transpose(){let e,t=this.elements;return e=t[1],t[1]=t[4],t[4]=e,e=t[2],t[2]=t[8],t[8]=e,e=t[6],t[6]=t[9],t[9]=e,e=t[3],t[3]=t[12],t[12]=e,e=t[7],t[7]=t[13],t[13]=e,e=t[11],t[11]=t[14],t[14]=e,this}setPosition(e,t,n){let i=this.elements;return e.isVector3?(i[12]=e.x,i[13]=e.y,i[14]=e.z):(i[12]=e,i[13]=t,i[14]=n),this}invert(){let e=this.elements,t=e[0],n=e[1],i=e[2],r=e[3],a=e[4],s=e[5],o=e[6],l=e[7],u=e[8],c=e[9],h=e[10],d=e[11],p=e[12],f=e[13],m=e[14],g=e[15],v=c*m*l-f*h*l+f*o*d-s*m*d-c*o*g+s*h*g,_=p*h*l-u*m*l-p*o*d+a*m*d+u*o*g-a*h*g,y=u*f*l-p*c*l+p*s*d-a*f*d-u*s*g+a*c*g,x=p*c*o-u*f*o-p*s*h+a*f*h+u*s*m-a*c*m,b=t*v+n*_+i*y+r*x;if(0===b)return this.set(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);let S=1/b;return e[0]=v*S,e[1]=(f*h*r-c*m*r-f*i*d+n*m*d+c*i*g-n*h*g)*S,e[2]=(s*m*r-f*o*r+f*i*l-n*m*l-s*i*g+n*o*g)*S,e[3]=(c*o*r-s*h*r-c*i*l+n*h*l+s*i*d-n*o*d)*S,e[4]=_*S,e[5]=(u*m*r-p*h*r+p*i*d-t*m*d-u*i*g+t*h*g)*S,e[6]=(p*o*r-a*m*r-p*i*l+t*m*l+a*i*g-t*o*g)*S,e[7]=(a*h*r-u*o*r+u*i*l-t*h*l-a*i*d+t*o*d)*S,e[8]=y*S,e[9]=(p*c*r-u*f*r-p*n*d+t*f*d+u*n*g-t*c*g)*S,e[10]=(a*f*r-p*s*r+p*n*l-t*f*l-a*n*g+t*s*g)*S,e[11]=(u*s*r-a*c*r-u*n*l+t*c*l+a*n*d-t*s*d)*S,e[12]=x*S,e[13]=(u*f*i-p*c*i+p*n*h-t*f*h-u*n*m+t*c*m)*S,e[14]=(p*s*i-a*f*i-p*n*o+t*f*o+a*n*m-t*s*m)*S,e[15]=(a*c*i-u*s*i+u*n*o-t*c*o-a*n*h+t*s*h)*S,this}scale(e){let t=this.elements,n=e.x,i=e.y,r=e.z;return t[0]*=n,t[4]*=i,t[8]*=r,t[1]*=n,t[5]*=i,t[9]*=r,t[2]*=n,t[6]*=i,t[10]*=r,t[3]*=n,t[7]*=i,t[11]*=r,this}getMaxScaleOnAxis(){let e=this.elements;return Math.sqrt(Math.max(e[0]*e[0]+e[1]*e[1]+e[2]*e[2],e[4]*e[4]+e[5]*e[5]+e[6]*e[6],e[8]*e[8]+e[9]*e[9]+e[10]*e[10]))}makeTranslation(e,t,n){return e.isVector3?this.set(1,0,0,e.x,0,1,0,e.y,0,0,1,e.z,0,0,0,1):this.set(1,0,0,e,0,1,0,t,0,0,1,n,0,0,0,1),this}makeRotationX(e){let t=Math.cos(e),n=Math.sin(e);return this.set(1,0,0,0,0,t,-n,0,0,n,t,0,0,0,0,1),this}makeRotationY(e){let t=Math.cos(e),n=Math.sin(e);return this.set(t,0,n,0,0,1,0,0,-n,0,t,0,0,0,0,1),this}makeRotationZ(e){let t=Math.cos(e),n=Math.sin(e);return this.set(t,-n,0,0,n,t,0,0,0,0,1,0,0,0,0,1),this}makeRotationAxis(e,t){let n=Math.cos(t),i=Math.sin(t),r=1-n,a=e.x,s=e.y,o=e.z,l=r*a,u=r*s;return this.set(l*a+n,l*s-i*o,l*o+i*s,0,l*s+i*o,u*s+n,u*o-i*a,0,l*o-i*s,u*o+i*a,r*o*o+n,0,0,0,0,1),this}makeScale(e,t,n){return this.set(e,0,0,0,0,t,0,0,0,0,n,0,0,0,0,1),this}makeShear(e,t,n,i,r,a){return this.set(1,n,r,0,e,1,a,0,t,i,1,0,0,0,0,1),this}compose(e,t,n){let i=this.elements,r=t._x,a=t._y,s=t._z,o=t._w,l=r+r,u=a+a,c=s+s,h=r*l,d=r*u,p=r*c,f=a*u,m=a*c,g=s*c,v=o*l,_=o*u,y=o*c,x=n.x,b=n.y,S=n.z;return i[0]=(1-(f+g))*x,i[1]=(d+y)*x,i[2]=(p-_)*x,i[3]=0,i[4]=(d-y)*b,i[5]=(1-(h+g))*b,i[6]=(m+v)*b,i[7]=0,i[8]=(p+_)*S,i[9]=(m-v)*S,i[10]=(1-(h+f))*S,i[11]=0,i[12]=e.x,i[13]=e.y,i[14]=e.z,i[15]=1,this}decompose(e,t,n){let i=this.elements,r=e3.set(i[0],i[1],i[2]).length(),a=e3.set(i[4],i[5],i[6]).length(),s=e3.set(i[8],i[9],i[10]).length();0>this.determinant()&&(r=-r),e.x=i[12],e.y=i[13],e.z=i[14],e4.copy(this);let o=1/r,l=1/a,u=1/s;return e4.elements[0]*=o,e4.elements[1]*=o,e4.elements[2]*=o,e4.elements[4]*=l,e4.elements[5]*=l,e4.elements[6]*=l,e4.elements[8]*=u,e4.elements[9]*=u,e4.elements[10]*=u,t.setFromRotationMatrix(e4),n.x=r,n.y=a,n.z=s,this}makePerspective(e,t,n,i,r,a,s=2e3){let o,l,u=this.elements;if(2e3===s)o=-(a+r)/(a-r),l=-2*a*r/(a-r);else if(2001===s)o=-a/(a-r),l=-a*r/(a-r);else throw Error("THREE.Matrix4.makePerspective(): Invalid coordinate system: "+s);return u[0]=2*r/(t-e),u[4]=0,u[8]=(t+e)/(t-e),u[12]=0,u[1]=0,u[5]=2*r/(n-i),u[9]=(n+i)/(n-i),u[13]=0,u[2]=0,u[6]=0,u[10]=o,u[14]=l,u[3]=0,u[7]=0,u[11]=-1,u[15]=0,this}makeOrthographic(e,t,n,i,r,a,s=2e3){let o,l,u=this.elements,c=1/(t-e),h=1/(n-i),d=1/(a-r);if(2e3===s)o=(a+r)*d,l=-2*d;else if(2001===s)o=r*d,l=-1*d;else throw Error("THREE.Matrix4.makeOrthographic(): Invalid coordinate system: "+s);return u[0]=2*c,u[4]=0,u[8]=0,u[12]=-((t+e)*c),u[1]=0,u[5]=2*h,u[9]=0,u[13]=-((n+i)*h),u[2]=0,u[6]=0,u[10]=l,u[14]=-o,u[3]=0,u[7]=0,u[11]=0,u[15]=1,this}equals(e){let t=this.elements,n=e.elements;for(let e=0;e<16;e++)if(t[e]!==n[e])return!1;return!0}fromArray(e,t=0){for(let n=0;n<16;n++)this.elements[n]=e[n+t];return this}toArray(e=[],t=0){let n=this.elements;return e[t]=n[0],e[t+1]=n[1],e[t+2]=n[2],e[t+3]=n[3],e[t+4]=n[4],e[t+5]=n[5],e[t+6]=n[6],e[t+7]=n[7],e[t+8]=n[8],e[t+9]=n[9],e[t+10]=n[10],e[t+11]=n[11],e[t+12]=n[12],e[t+13]=n[13],e[t+14]=n[14],e[t+15]=n[15],e}}let e3=new eE,e4=new e2,e5=new eE(0,0,0),e6=new eE(1,1,1),e8=new eE,e9=new eE,e7=new eE,te=new e2,tt=new ew;class tn{constructor(e=0,t=0,n=0,i=tn.DEFAULT_ORDER){this.isEuler=!0,this._x=e,this._y=t,this._z=n,this._order=i}get x(){return this._x}set x(e){this._x=e,this._onChangeCallback()}get y(){return this._y}set y(e){this._y=e,this._onChangeCallback()}get z(){return this._z}set z(e){this._z=e,this._onChangeCallback()}get order(){return this._order}set order(e){this._order=e,this._onChangeCallback()}set(e,t,n,i=this._order){return this._x=e,this._y=t,this._z=n,this._order=i,this._onChangeCallback(),this}clone(){return new this.constructor(this._x,this._y,this._z,this._order)}copy(e){return this._x=e._x,this._y=e._y,this._z=e._z,this._order=e._order,this._onChangeCallback(),this}setFromRotationMatrix(e,t=this._order,n=!0){let i=e.elements,r=i[0],a=i[4],s=i[8],o=i[1],l=i[5],u=i[9],c=i[2],h=i[6],d=i[10];switch(t){case"XYZ":this._y=Math.asin(V(s,-1,1)),.9999999>Math.abs(s)?(this._x=Math.atan2(-u,d),this._z=Math.atan2(-a,r)):(this._x=Math.atan2(h,l),this._z=0);break;case"YXZ":this._x=Math.asin(-V(u,-1,1)),.9999999>Math.abs(u)?(this._y=Math.atan2(s,d),this._z=Math.atan2(o,l)):(this._y=Math.atan2(-c,r),this._z=0);break;case"ZXY":this._x=Math.asin(V(h,-1,1)),.9999999>Math.abs(h)?(this._y=Math.atan2(-c,d),this._z=Math.atan2(-a,l)):(this._y=0,this._z=Math.atan2(o,r));break;case"ZYX":this._y=Math.asin(-V(c,-1,1)),.9999999>Math.abs(c)?(this._x=Math.atan2(h,d),this._z=Math.atan2(o,r)):(this._x=0,this._z=Math.atan2(-a,l));break;case"YZX":this._z=Math.asin(V(o,-1,1)),.9999999>Math.abs(o)?(this._x=Math.atan2(-u,l),this._y=Math.atan2(-c,r)):(this._x=0,this._y=Math.atan2(s,d));break;case"XZY":this._z=Math.asin(-V(a,-1,1)),.9999999>Math.abs(a)?(this._x=Math.atan2(h,l),this._y=Math.atan2(s,r)):(this._x=Math.atan2(-u,d),this._y=0);break;default:console.warn("THREE.Euler: .setFromRotationMatrix() encountered an unknown order: "+t)}return this._order=t,!0===n&&this._onChangeCallback(),this}setFromQuaternion(e,t,n){return te.makeRotationFromQuaternion(e),this.setFromRotationMatrix(te,t,n)}setFromVector3(e,t=this._order){return this.set(e.x,e.y,e.z,t)}reorder(e){return tt.setFromEuler(this),this.setFromQuaternion(tt,e)}equals(e){return e._x===this._x&&e._y===this._y&&e._z===this._z&&e._order===this._order}fromArray(e){return this._x=e[0],this._y=e[1],this._z=e[2],void 0!==e[3]&&(this._order=e[3]),this._onChangeCallback(),this}toArray(e=[],t=0){return e[t]=this._x,e[t+1]=this._y,e[t+2]=this._z,e[t+3]=this._order,e}_onChange(e){return this._onChangeCallback=e,this}_onChangeCallback(){}*[Symbol.iterator](){yield this._x,yield this._y,yield this._z,yield this._order}}tn.DEFAULT_ORDER="XYZ";class ti{constructor(){this.mask=1}set(e){this.mask=1<>>0}enable(e){this.mask|=1<1){for(let e=0;e1){for(let e=0;e0&&(i.userData=this.userData),i.layers=this.layers.mask,i.matrix=this.matrix.toArray(),i.up=this.up.toArray(),!1===this.matrixAutoUpdate&&(i.matrixAutoUpdate=!1),this.isInstancedMesh&&(i.type="InstancedMesh",i.count=this.count,i.instanceMatrix=this.instanceMatrix.toJSON(),null!==this.instanceColor&&(i.instanceColor=this.instanceColor.toJSON())),this.isBatchedMesh&&(i.type="BatchedMesh",i.perObjectFrustumCulled=this.perObjectFrustumCulled,i.sortObjects=this.sortObjects,i.drawRanges=this._drawRanges,i.reservedRanges=this._reservedRanges,i.visibility=this._visibility,i.active=this._active,i.bounds=this._bounds.map(e=>({boxInitialized:e.boxInitialized,boxMin:e.box.min.toArray(),boxMax:e.box.max.toArray(),sphereInitialized:e.sphereInitialized,sphereRadius:e.sphere.radius,sphereCenter:e.sphere.center.toArray()})),i.maxInstanceCount=this._maxInstanceCount,i.maxVertexCount=this._maxVertexCount,i.maxIndexCount=this._maxIndexCount,i.geometryInitialized=this._geometryInitialized,i.geometryCount=this._geometryCount,i.matricesTexture=this._matricesTexture.toJSON(e),null!==this._colorsTexture&&(i.colorsTexture=this._colorsTexture.toJSON(e)),null!==this.boundingSphere&&(i.boundingSphere={center:i.boundingSphere.center.toArray(),radius:i.boundingSphere.radius}),null!==this.boundingBox&&(i.boundingBox={min:i.boundingBox.min.toArray(),max:i.boundingBox.max.toArray()})),this.isScene)this.background&&(this.background.isColor?i.background=this.background.toJSON():this.background.isTexture&&(i.background=this.background.toJSON(e).uuid)),this.environment&&this.environment.isTexture&&!0!==this.environment.isRenderTargetTexture&&(i.environment=this.environment.toJSON(e).uuid);else if(this.isMesh||this.isLine||this.isPoints){i.geometry=r(e.geometries,this.geometry);let t=this.geometry.parameters;if(void 0!==t&&void 0!==t.shapes){let n=t.shapes;if(Array.isArray(n))for(let t=0,i=n.length;t0){i.children=[];for(let t=0;t0){i.animations=[];for(let t=0;t0&&(n.geometries=t),i.length>0&&(n.materials=i),r.length>0&&(n.textures=r),s.length>0&&(n.images=s),o.length>0&&(n.shapes=o),l.length>0&&(n.skeletons=l),u.length>0&&(n.animations=u),c.length>0&&(n.nodes=c)}return n.object=i,n;function a(e){let t=[];for(let n in e){let i=e[n];delete i.metadata,t.push(i)}return t}}clone(e){return new this.constructor().copy(this,e)}copy(e,t=!0){if(this.name=e.name,this.up.copy(e.up),this.position.copy(e.position),this.rotation.order=e.rotation.order,this.quaternion.copy(e.quaternion),this.scale.copy(e.scale),this.matrix.copy(e.matrix),this.matrixWorld.copy(e.matrixWorld),this.matrixAutoUpdate=e.matrixAutoUpdate,this.matrixWorldAutoUpdate=e.matrixWorldAutoUpdate,this.matrixWorldNeedsUpdate=e.matrixWorldNeedsUpdate,this.layers.mask=e.layers.mask,this.visible=e.visible,this.castShadow=e.castShadow,this.receiveShadow=e.receiveShadow,this.frustumCulled=e.frustumCulled,this.renderOrder=e.renderOrder,this.animations=e.animations.slice(),this.userData=JSON.parse(JSON.stringify(e.userData)),!0===t)for(let t=0;t0?i.multiplyScalar(1/Math.sqrt(r)):i.set(0,0,0)}static getBarycoord(e,t,n,i,r){tx.subVectors(i,t),tb.subVectors(n,t),tS.subVectors(e,t);let a=tx.dot(tx),s=tx.dot(tb),o=tx.dot(tS),l=tb.dot(tb),u=tb.dot(tS),c=a*l-s*s;if(0===c)return r.set(0,0,0),null;let h=1/c,d=(l*o-s*u)*h,p=(a*u-s*o)*h;return r.set(1-d-p,p,d)}static containsPoint(e,t,n,i){return null!==this.getBarycoord(e,t,n,i,tM)&&tM.x>=0&&tM.y>=0&&tM.x+tM.y<=1}static getInterpolation(e,t,n,i,r,a,s,o){return null===this.getBarycoord(e,t,n,i,tM)?(o.x=0,o.y=0,"z"in o&&(o.z=0),"w"in o&&(o.w=0),null):(o.setScalar(0),o.addScaledVector(r,tM.x),o.addScaledVector(a,tM.y),o.addScaledVector(s,tM.z),o)}static getInterpolatedAttribute(e,t,n,i,r,a){return tP.setScalar(0),tI.setScalar(0),tL.setScalar(0),tP.fromBufferAttribute(e,t),tI.fromBufferAttribute(e,n),tL.fromBufferAttribute(e,i),a.setScalar(0),a.addScaledVector(tP,r.x),a.addScaledVector(tI,r.y),a.addScaledVector(tL,r.z),a}static isFrontFacing(e,t,n,i){return tx.subVectors(n,t),tb.subVectors(e,t),0>tx.cross(tb).dot(i)}set(e,t,n){return this.a.copy(e),this.b.copy(t),this.c.copy(n),this}setFromPointsAndIndices(e,t,n,i){return this.a.copy(e[t]),this.b.copy(e[n]),this.c.copy(e[i]),this}setFromAttributeAndIndices(e,t,n,i){return this.a.fromBufferAttribute(e,t),this.b.fromBufferAttribute(e,n),this.c.fromBufferAttribute(e,i),this}clone(){return new this.constructor().copy(this)}copy(e){return this.a.copy(e.a),this.b.copy(e.b),this.c.copy(e.c),this}getArea(){return tx.subVectors(this.c,this.b),tb.subVectors(this.a,this.b),.5*tx.cross(tb).length()}getMidpoint(e){return e.addVectors(this.a,this.b).add(this.c).multiplyScalar(1/3)}getNormal(e){return tN.getNormal(this.a,this.b,this.c,e)}getPlane(e){return e.setFromCoplanarPoints(this.a,this.b,this.c)}getBarycoord(e,t){return tN.getBarycoord(e,this.a,this.b,this.c,t)}getInterpolation(e,t,n,i,r){return tN.getInterpolation(e,this.a,this.b,this.c,t,n,i,r)}containsPoint(e){return tN.containsPoint(e,this.a,this.b,this.c)}isFrontFacing(e){return tN.isFrontFacing(this.a,this.b,this.c,e)}intersectsBox(e){return e.intersectsTriangle(this)}closestPointToPoint(e,t){let n,i,r=this.a,a=this.b,s=this.c;tT.subVectors(a,r),tw.subVectors(s,r),tA.subVectors(e,r);let o=tT.dot(tA),l=tw.dot(tA);if(o<=0&&l<=0)return t.copy(r);tC.subVectors(e,a);let u=tT.dot(tC),c=tw.dot(tC);if(u>=0&&c<=u)return t.copy(a);let h=o*c-u*l;if(h<=0&&o>=0&&u<=0)return n=o/(o-u),t.copy(r).addScaledVector(tT,n);tR.subVectors(e,s);let d=tT.dot(tR),p=tw.dot(tR);if(p>=0&&d<=p)return t.copy(s);let f=d*l-o*p;if(f<=0&&l>=0&&p<=0)return i=l/(l-p),t.copy(r).addScaledVector(tw,i);let m=u*p-d*c;if(m<=0&&c-u>=0&&d-p>=0)return tE.subVectors(s,a),i=(c-u)/(c-u+(d-p)),t.copy(a).addScaledVector(tE,i);let g=1/(m+f+h);return n=f*g,i=h*g,t.copy(r).addScaledVector(tT,n).addScaledVector(tw,i)}equals(e){return e.a.equals(this.a)&&e.b.equals(this.b)&&e.c.equals(this.c)}}let tU={aliceblue:0xf0f8ff,antiquewhite:0xfaebd7,aqua:65535,aquamarine:8388564,azure:0xf0ffff,beige:0xf5f5dc,bisque:0xffe4c4,black:0,blanchedalmond:0xffebcd,blue:255,blueviolet:9055202,brown:0xa52a2a,burlywood:0xdeb887,cadetblue:6266528,chartreuse:8388352,chocolate:0xd2691e,coral:0xff7f50,cornflowerblue:6591981,cornsilk:0xfff8dc,crimson:0xdc143c,cyan:65535,darkblue:139,darkcyan:35723,darkgoldenrod:0xb8860b,darkgray:0xa9a9a9,darkgreen:25600,darkgrey:0xa9a9a9,darkkhaki:0xbdb76b,darkmagenta:9109643,darkolivegreen:5597999,darkorange:0xff8c00,darkorchid:0x9932cc,darkred:9109504,darksalmon:0xe9967a,darkseagreen:9419919,darkslateblue:4734347,darkslategray:3100495,darkslategrey:3100495,darkturquoise:52945,darkviolet:9699539,deeppink:0xff1493,deepskyblue:49151,dimgray:6908265,dimgrey:6908265,dodgerblue:2003199,firebrick:0xb22222,floralwhite:0xfffaf0,forestgreen:2263842,fuchsia:0xff00ff,gainsboro:0xdcdcdc,ghostwhite:0xf8f8ff,gold:0xffd700,goldenrod:0xdaa520,gray:8421504,green:32768,greenyellow:0xadff2f,grey:8421504,honeydew:0xf0fff0,hotpink:0xff69b4,indianred:0xcd5c5c,indigo:4915330,ivory:0xfffff0,khaki:0xf0e68c,lavender:0xe6e6fa,lavenderblush:0xfff0f5,lawngreen:8190976,lemonchiffon:0xfffacd,lightblue:0xadd8e6,lightcoral:0xf08080,lightcyan:0xe0ffff,lightgoldenrodyellow:0xfafad2,lightgray:0xd3d3d3,lightgreen:9498256,lightgrey:0xd3d3d3,lightpink:0xffb6c1,lightsalmon:0xffa07a,lightseagreen:2142890,lightskyblue:8900346,lightslategray:7833753,lightslategrey:7833753,lightsteelblue:0xb0c4de,lightyellow:0xffffe0,lime:65280,limegreen:3329330,linen:0xfaf0e6,magenta:0xff00ff,maroon:8388608,mediumaquamarine:6737322,mediumblue:205,mediumorchid:0xba55d3,mediumpurple:9662683,mediumseagreen:3978097,mediumslateblue:8087790,mediumspringgreen:64154,mediumturquoise:4772300,mediumvioletred:0xc71585,midnightblue:1644912,mintcream:0xf5fffa,mistyrose:0xffe4e1,moccasin:0xffe4b5,navajowhite:0xffdead,navy:128,oldlace:0xfdf5e6,olive:8421376,olivedrab:7048739,orange:0xffa500,orangered:0xff4500,orchid:0xda70d6,palegoldenrod:0xeee8aa,palegreen:0x98fb98,paleturquoise:0xafeeee,palevioletred:0xdb7093,papayawhip:0xffefd5,peachpuff:0xffdab9,peru:0xcd853f,pink:0xffc0cb,plum:0xdda0dd,powderblue:0xb0e0e6,purple:8388736,rebeccapurple:6697881,red:0xff0000,rosybrown:0xbc8f8f,royalblue:4286945,saddlebrown:9127187,salmon:0xfa8072,sandybrown:0xf4a460,seagreen:3050327,seashell:0xfff5ee,sienna:0xa0522d,silver:0xc0c0c0,skyblue:8900331,slateblue:6970061,slategray:7372944,slategrey:7372944,snow:0xfffafa,springgreen:65407,steelblue:4620980,tan:0xd2b48c,teal:32896,thistle:0xd8bfd8,tomato:0xff6347,turquoise:4251856,violet:0xee82ee,wheat:0xf5deb3,white:0xffffff,whitesmoke:0xf5f5f5,yellow:0xffff00,yellowgreen:0x9acd32},tD={h:0,s:0,l:0},tO={h:0,s:0,l:0};function tF(e,t,n){return(n<0&&(n+=1),n>1&&(n-=1),n<1/6)?e+(t-e)*6*n:n<.5?t:n<2/3?e+(t-e)*6*(2/3-n):e}class tz{constructor(e,t,n){return this.isColor=!0,this.r=1,this.g=1,this.b=1,this.set(e,t,n)}set(e,t,n){return void 0===t&&void 0===n?e&&e.isColor?this.copy(e):"number"==typeof e?this.setHex(e):"string"==typeof e&&this.setStyle(e):this.setRGB(e,t,n),this}setScalar(e){return this.r=e,this.g=e,this.b=e,this}setHex(e,t=I){return e=Math.floor(e),this.r=(e>>16&255)/255,this.g=(e>>8&255)/255,this.b=(255&e)/255,eu.toWorkingColorSpace(this,t),this}setRGB(e,t,n,i=eu.workingColorSpace){return this.r=e,this.g=t,this.b=n,eu.toWorkingColorSpace(this,i),this}setHSL(e,t,n,i=eu.workingColorSpace){if(e=G(e,1),t=V(t,0,1),n=V(n,0,1),0===t)this.r=this.g=this.b=n;else{let i=n<=.5?n*(1+t):n+t-n*t,r=2*n-i;this.r=tF(r,i,e+1/3),this.g=tF(r,i,e),this.b=tF(r,i,e-1/3)}return eu.toWorkingColorSpace(this,i),this}setStyle(e,t=I){let n;function i(t){void 0!==t&&1>parseFloat(t)&&console.warn("THREE.Color: Alpha component of "+e+" will be ignored.")}if(n=/^(\w+)\(([^\)]*)\)/.exec(e)){let r,a=n[1],s=n[2];switch(a){case"rgb":case"rgba":if(r=/^\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return i(r[4]),this.setRGB(Math.min(255,parseInt(r[1],10))/255,Math.min(255,parseInt(r[2],10))/255,Math.min(255,parseInt(r[3],10))/255,t);if(r=/^\s*(\d+)\%\s*,\s*(\d+)\%\s*,\s*(\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return i(r[4]),this.setRGB(Math.min(100,parseInt(r[1],10))/100,Math.min(100,parseInt(r[2],10))/100,Math.min(100,parseInt(r[3],10))/100,t);break;case"hsl":case"hsla":if(r=/^\s*(\d*\.?\d+)\s*,\s*(\d*\.?\d+)\%\s*,\s*(\d*\.?\d+)\%\s*(?:,\s*(\d*\.?\d+)\s*)?$/.exec(s))return i(r[4]),this.setHSL(parseFloat(r[1])/360,parseFloat(r[2])/100,parseFloat(r[3])/100,t);break;default:console.warn("THREE.Color: Unknown color model "+e)}}else if(n=/^\#([A-Fa-f\d]+)$/.exec(e)){let i=n[1],r=i.length;if(3===r)return this.setRGB(parseInt(i.charAt(0),16)/15,parseInt(i.charAt(1),16)/15,parseInt(i.charAt(2),16)/15,t);if(6===r)return this.setHex(parseInt(i,16),t);console.warn("THREE.Color: Invalid hex color "+e)}else if(e&&e.length>0)return this.setColorName(e,t);return this}setColorName(e,t=I){let n=tU[e.toLowerCase()];return void 0!==n?this.setHex(n,t):console.warn("THREE.Color: Unknown color "+e),this}clone(){return new this.constructor(this.r,this.g,this.b)}copy(e){return this.r=e.r,this.g=e.g,this.b=e.b,this}copySRGBToLinear(e){return this.r=ec(e.r),this.g=ec(e.g),this.b=ec(e.b),this}copyLinearToSRGB(e){return this.r=eh(e.r),this.g=eh(e.g),this.b=eh(e.b),this}convertSRGBToLinear(){return this.copySRGBToLinear(this),this}convertLinearToSRGB(){return this.copyLinearToSRGB(this),this}getHex(e=I){return eu.fromWorkingColorSpace(tB.copy(this),e),65536*Math.round(V(255*tB.r,0,255))+256*Math.round(V(255*tB.g,0,255))+Math.round(V(255*tB.b,0,255))}getHexString(e=I){return("000000"+this.getHex(e).toString(16)).slice(-6)}getHSL(e,t=eu.workingColorSpace){let n,i;eu.fromWorkingColorSpace(tB.copy(this),t);let r=tB.r,a=tB.g,s=tB.b,o=Math.max(r,a,s),l=Math.min(r,a,s),u=(l+o)/2;if(l===o)n=0,i=0;else{let e=o-l;switch(i=u<=.5?e/(o+l):e/(2-o-l),o){case r:n=(a-s)/e+6*(a0!=e>0&&this.version++,this._alphaTest=e}onBeforeRender(){}onBeforeCompile(){}customProgramCacheKey(){return this.onBeforeCompile.toString()}setValues(e){if(void 0!==e)for(let t in e){let n=e[t];if(void 0===n){console.warn(`THREE.Material: parameter '${t}' has value of undefined.`);continue}let i=this[t];if(void 0===i){console.warn(`THREE.Material: '${t}' is not a property of THREE.${this.type}.`);continue}i&&i.isColor?i.set(n):i&&i.isVector3&&n&&n.isVector3?i.copy(n):this[t]=n}}toJSON(e){let t=void 0===e||"string"==typeof e;t&&(e={textures:{},images:{}});let n={metadata:{version:4.6,type:"Material",generator:"Material.toJSON"}};function i(e){let t=[];for(let n in e){let i=e[n];delete i.metadata,t.push(i)}return t}if(n.uuid=this.uuid,n.type=this.type,""!==this.name&&(n.name=this.name),this.color&&this.color.isColor&&(n.color=this.color.getHex()),void 0!==this.roughness&&(n.roughness=this.roughness),void 0!==this.metalness&&(n.metalness=this.metalness),void 0!==this.sheen&&(n.sheen=this.sheen),this.sheenColor&&this.sheenColor.isColor&&(n.sheenColor=this.sheenColor.getHex()),void 0!==this.sheenRoughness&&(n.sheenRoughness=this.sheenRoughness),this.emissive&&this.emissive.isColor&&(n.emissive=this.emissive.getHex()),void 0!==this.emissiveIntensity&&1!==this.emissiveIntensity&&(n.emissiveIntensity=this.emissiveIntensity),this.specular&&this.specular.isColor&&(n.specular=this.specular.getHex()),void 0!==this.specularIntensity&&(n.specularIntensity=this.specularIntensity),this.specularColor&&this.specularColor.isColor&&(n.specularColor=this.specularColor.getHex()),void 0!==this.shininess&&(n.shininess=this.shininess),void 0!==this.clearcoat&&(n.clearcoat=this.clearcoat),void 0!==this.clearcoatRoughness&&(n.clearcoatRoughness=this.clearcoatRoughness),this.clearcoatMap&&this.clearcoatMap.isTexture&&(n.clearcoatMap=this.clearcoatMap.toJSON(e).uuid),this.clearcoatRoughnessMap&&this.clearcoatRoughnessMap.isTexture&&(n.clearcoatRoughnessMap=this.clearcoatRoughnessMap.toJSON(e).uuid),this.clearcoatNormalMap&&this.clearcoatNormalMap.isTexture&&(n.clearcoatNormalMap=this.clearcoatNormalMap.toJSON(e).uuid,n.clearcoatNormalScale=this.clearcoatNormalScale.toArray()),void 0!==this.dispersion&&(n.dispersion=this.dispersion),void 0!==this.iridescence&&(n.iridescence=this.iridescence),void 0!==this.iridescenceIOR&&(n.iridescenceIOR=this.iridescenceIOR),void 0!==this.iridescenceThicknessRange&&(n.iridescenceThicknessRange=this.iridescenceThicknessRange),this.iridescenceMap&&this.iridescenceMap.isTexture&&(n.iridescenceMap=this.iridescenceMap.toJSON(e).uuid),this.iridescenceThicknessMap&&this.iridescenceThicknessMap.isTexture&&(n.iridescenceThicknessMap=this.iridescenceThicknessMap.toJSON(e).uuid),void 0!==this.anisotropy&&(n.anisotropy=this.anisotropy),void 0!==this.anisotropyRotation&&(n.anisotropyRotation=this.anisotropyRotation),this.anisotropyMap&&this.anisotropyMap.isTexture&&(n.anisotropyMap=this.anisotropyMap.toJSON(e).uuid),this.map&&this.map.isTexture&&(n.map=this.map.toJSON(e).uuid),this.matcap&&this.matcap.isTexture&&(n.matcap=this.matcap.toJSON(e).uuid),this.alphaMap&&this.alphaMap.isTexture&&(n.alphaMap=this.alphaMap.toJSON(e).uuid),this.lightMap&&this.lightMap.isTexture&&(n.lightMap=this.lightMap.toJSON(e).uuid,n.lightMapIntensity=this.lightMapIntensity),this.aoMap&&this.aoMap.isTexture&&(n.aoMap=this.aoMap.toJSON(e).uuid,n.aoMapIntensity=this.aoMapIntensity),this.bumpMap&&this.bumpMap.isTexture&&(n.bumpMap=this.bumpMap.toJSON(e).uuid,n.bumpScale=this.bumpScale),this.normalMap&&this.normalMap.isTexture&&(n.normalMap=this.normalMap.toJSON(e).uuid,n.normalMapType=this.normalMapType,n.normalScale=this.normalScale.toArray()),this.displacementMap&&this.displacementMap.isTexture&&(n.displacementMap=this.displacementMap.toJSON(e).uuid,n.displacementScale=this.displacementScale,n.displacementBias=this.displacementBias),this.roughnessMap&&this.roughnessMap.isTexture&&(n.roughnessMap=this.roughnessMap.toJSON(e).uuid),this.metalnessMap&&this.metalnessMap.isTexture&&(n.metalnessMap=this.metalnessMap.toJSON(e).uuid),this.emissiveMap&&this.emissiveMap.isTexture&&(n.emissiveMap=this.emissiveMap.toJSON(e).uuid),this.specularMap&&this.specularMap.isTexture&&(n.specularMap=this.specularMap.toJSON(e).uuid),this.specularIntensityMap&&this.specularIntensityMap.isTexture&&(n.specularIntensityMap=this.specularIntensityMap.toJSON(e).uuid),this.specularColorMap&&this.specularColorMap.isTexture&&(n.specularColorMap=this.specularColorMap.toJSON(e).uuid),this.envMap&&this.envMap.isTexture&&(n.envMap=this.envMap.toJSON(e).uuid,void 0!==this.combine&&(n.combine=this.combine)),void 0!==this.envMapRotation&&(n.envMapRotation=this.envMapRotation.toArray()),void 0!==this.envMapIntensity&&(n.envMapIntensity=this.envMapIntensity),void 0!==this.reflectivity&&(n.reflectivity=this.reflectivity),void 0!==this.refractionRatio&&(n.refractionRatio=this.refractionRatio),this.gradientMap&&this.gradientMap.isTexture&&(n.gradientMap=this.gradientMap.toJSON(e).uuid),void 0!==this.transmission&&(n.transmission=this.transmission),this.transmissionMap&&this.transmissionMap.isTexture&&(n.transmissionMap=this.transmissionMap.toJSON(e).uuid),void 0!==this.thickness&&(n.thickness=this.thickness),this.thicknessMap&&this.thicknessMap.isTexture&&(n.thicknessMap=this.thicknessMap.toJSON(e).uuid),void 0!==this.attenuationDistance&&this.attenuationDistance!==1/0&&(n.attenuationDistance=this.attenuationDistance),void 0!==this.attenuationColor&&(n.attenuationColor=this.attenuationColor.getHex()),void 0!==this.size&&(n.size=this.size),null!==this.shadowSide&&(n.shadowSide=this.shadowSide),void 0!==this.sizeAttenuation&&(n.sizeAttenuation=this.sizeAttenuation),1!==this.blending&&(n.blending=this.blending),0!==this.side&&(n.side=this.side),!0===this.vertexColors&&(n.vertexColors=!0),this.opacity<1&&(n.opacity=this.opacity),!0===this.transparent&&(n.transparent=!0),204!==this.blendSrc&&(n.blendSrc=this.blendSrc),205!==this.blendDst&&(n.blendDst=this.blendDst),100!==this.blendEquation&&(n.blendEquation=this.blendEquation),null!==this.blendSrcAlpha&&(n.blendSrcAlpha=this.blendSrcAlpha),null!==this.blendDstAlpha&&(n.blendDstAlpha=this.blendDstAlpha),null!==this.blendEquationAlpha&&(n.blendEquationAlpha=this.blendEquationAlpha),this.blendColor&&this.blendColor.isColor&&(n.blendColor=this.blendColor.getHex()),0!==this.blendAlpha&&(n.blendAlpha=this.blendAlpha),3!==this.depthFunc&&(n.depthFunc=this.depthFunc),!1===this.depthTest&&(n.depthTest=this.depthTest),!1===this.depthWrite&&(n.depthWrite=this.depthWrite),!1===this.colorWrite&&(n.colorWrite=this.colorWrite),255!==this.stencilWriteMask&&(n.stencilWriteMask=this.stencilWriteMask),519!==this.stencilFunc&&(n.stencilFunc=this.stencilFunc),0!==this.stencilRef&&(n.stencilRef=this.stencilRef),255!==this.stencilFuncMask&&(n.stencilFuncMask=this.stencilFuncMask),7680!==this.stencilFail&&(n.stencilFail=this.stencilFail),7680!==this.stencilZFail&&(n.stencilZFail=this.stencilZFail),7680!==this.stencilZPass&&(n.stencilZPass=this.stencilZPass),!0===this.stencilWrite&&(n.stencilWrite=this.stencilWrite),void 0!==this.rotation&&0!==this.rotation&&(n.rotation=this.rotation),!0===this.polygonOffset&&(n.polygonOffset=!0),0!==this.polygonOffsetFactor&&(n.polygonOffsetFactor=this.polygonOffsetFactor),0!==this.polygonOffsetUnits&&(n.polygonOffsetUnits=this.polygonOffsetUnits),void 0!==this.linewidth&&1!==this.linewidth&&(n.linewidth=this.linewidth),void 0!==this.dashSize&&(n.dashSize=this.dashSize),void 0!==this.gapSize&&(n.gapSize=this.gapSize),void 0!==this.scale&&(n.scale=this.scale),!0===this.dithering&&(n.dithering=!0),this.alphaTest>0&&(n.alphaTest=this.alphaTest),!0===this.alphaHash&&(n.alphaHash=!0),!0===this.alphaToCoverage&&(n.alphaToCoverage=!0),!0===this.premultipliedAlpha&&(n.premultipliedAlpha=!0),!0===this.forceSinglePass&&(n.forceSinglePass=!0),!0===this.wireframe&&(n.wireframe=!0),this.wireframeLinewidth>1&&(n.wireframeLinewidth=this.wireframeLinewidth),"round"!==this.wireframeLinecap&&(n.wireframeLinecap=this.wireframeLinecap),"round"!==this.wireframeLinejoin&&(n.wireframeLinejoin=this.wireframeLinejoin),!0===this.flatShading&&(n.flatShading=!0),!1===this.visible&&(n.visible=!1),!1===this.toneMapped&&(n.toneMapped=!1),!1===this.fog&&(n.fog=!1),Object.keys(this.userData).length>0&&(n.userData=this.userData),t){let t=i(e.textures),r=i(e.images);t.length>0&&(n.textures=t),r.length>0&&(n.images=r)}return n}clone(){return new this.constructor().copy(this)}copy(e){this.name=e.name,this.blending=e.blending,this.side=e.side,this.vertexColors=e.vertexColors,this.opacity=e.opacity,this.transparent=e.transparent,this.blendSrc=e.blendSrc,this.blendDst=e.blendDst,this.blendEquation=e.blendEquation,this.blendSrcAlpha=e.blendSrcAlpha,this.blendDstAlpha=e.blendDstAlpha,this.blendEquationAlpha=e.blendEquationAlpha,this.blendColor.copy(e.blendColor),this.blendAlpha=e.blendAlpha,this.depthFunc=e.depthFunc,this.depthTest=e.depthTest,this.depthWrite=e.depthWrite,this.stencilWriteMask=e.stencilWriteMask,this.stencilFunc=e.stencilFunc,this.stencilRef=e.stencilRef,this.stencilFuncMask=e.stencilFuncMask,this.stencilFail=e.stencilFail,this.stencilZFail=e.stencilZFail,this.stencilZPass=e.stencilZPass,this.stencilWrite=e.stencilWrite;let t=e.clippingPlanes,n=null;if(null!==t){let e=t.length;n=Array(e);for(let i=0;i!==e;++i)n[i]=t[i].clone()}return this.clippingPlanes=n,this.clipIntersection=e.clipIntersection,this.clipShadows=e.clipShadows,this.shadowSide=e.shadowSide,this.colorWrite=e.colorWrite,this.precision=e.precision,this.polygonOffset=e.polygonOffset,this.polygonOffsetFactor=e.polygonOffsetFactor,this.polygonOffsetUnits=e.polygonOffsetUnits,this.dithering=e.dithering,this.alphaTest=e.alphaTest,this.alphaHash=e.alphaHash,this.alphaToCoverage=e.alphaToCoverage,this.premultipliedAlpha=e.premultipliedAlpha,this.forceSinglePass=e.forceSinglePass,this.visible=e.visible,this.toneMapped=e.toneMapped,this.userData=JSON.parse(JSON.stringify(e.userData)),this}dispose(){this.dispatchEvent({type:"dispose"})}set needsUpdate(e){!0===e&&this.version++}onBuild(){console.warn("Material: onBuild() has been removed.")}}class tV extends tH{constructor(e){super(),this.isMeshBasicMaterial=!0,this.type="MeshBasicMaterial",this.color=new tz(0xffffff),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new tn,this.combine=0,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}}let tG=function(){let e=new ArrayBuffer(4),t=new Float32Array(e),n=new Uint32Array(e),i=new Uint32Array(512),r=new Uint32Array(512);for(let e=0;e<256;++e){let t=e-127;t<-27?(i[e]=0,i[256|e]=32768,r[e]=24,r[256|e]=24):t<-14?(i[e]=1024>>-t-14,i[256|e]=1024>>-t-14|32768,r[e]=-t-1,r[256|e]=-t-1):t<=15?(i[e]=t+15<<10,i[256|e]=t+15<<10|32768,r[e]=13,r[256|e]=13):t<128?(i[e]=31744,i[256|e]=64512,r[e]=24,r[256|e]=24):(i[e]=31744,i[256|e]=64512,r[e]=13,r[256|e]=13)}let a=new Uint32Array(2048),s=new Uint32Array(64),o=new Uint32Array(64);for(let e=1;e<1024;++e){let t=e<<13,n=0;for(;(8388608&t)==0;)t<<=1,n-=8388608;t&=-8388609,n+=0x38800000,a[e]=t|n}for(let e=1024;e<2048;++e)a[e]=0x38000000+(e-1024<<13);for(let e=1;e<31;++e)s[e]=e<<23;s[31]=0x47800000,s[32]=0x80000000;for(let e=33;e<63;++e)s[e]=0x80000000+(e-32<<23);s[63]=0xc7800000;for(let e=1;e<64;++e)32!==e&&(o[e]=1024);return{floatView:t,uint32View:n,baseTable:i,shiftTable:r,mantissaTable:a,exponentTable:s,offsetTable:o}}();function tW(e){Math.abs(e)>65504&&console.warn("THREE.DataUtils.toHalfFloat(): Value out of range."),e=V(e,-65504,65504),tG.floatView[0]=e;let t=tG.uint32View[0],n=t>>23&511;return tG.baseTable[n]+((8388607&t)>>tG.shiftTable[n])}function tj(e){let t=e>>10;return tG.uint32View[0]=tG.mantissaTable[tG.offsetTable[t]+(1023&e)]+tG.exponentTable[t],tG.floatView[0]}let tX={toHalfFloat:tW,fromHalfFloat:tj},tq=new eE,tY=new Y;class tZ{constructor(e,t,n=!1){if(Array.isArray(e))throw TypeError("THREE.BufferAttribute: array should be a Typed Array.");this.isBufferAttribute=!0,this.name="",this.array=e,this.itemSize=t,this.count=void 0!==e?e.length/t:0,this.normalized=n,this.usage=35044,this.updateRanges=[],this.gpuType=1015,this.version=0}onUploadCallback(){}set needsUpdate(e){!0===e&&this.version++}setUsage(e){return this.usage=e,this}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}copy(e){return this.name=e.name,this.array=new e.array.constructor(e.array),this.itemSize=e.itemSize,this.count=e.count,this.normalized=e.normalized,this.usage=e.usage,this.gpuType=e.gpuType,this}copyAt(e,t,n){e*=this.itemSize,n*=t.itemSize;for(let i=0,r=this.itemSize;it.count&&console.warn("THREE.BufferGeometry: Buffer size too small for points data. Use .dispose() and create a new geometry."),t.needsUpdate=!0}return this}computeBoundingBox(){null===this.boundingBox&&(this.boundingBox=new eR);let e=this.attributes.position,t=this.morphAttributes.position;if(e&&e.isGLBufferAttribute){console.error("THREE.BufferGeometry.computeBoundingBox(): GLBufferAttribute requires a manual bounding box.",this),this.boundingBox.set(new eE(-1/0,-1/0,-1/0),new eE(Infinity,Infinity,Infinity));return}if(void 0!==e){if(this.boundingBox.setFromBufferAttribute(e),t)for(let e=0,n=t.length;e0&&(e.userData=this.userData),void 0!==this.parameters){let t=this.parameters;for(let n in t)void 0!==t[n]&&(e[n]=t[n]);return e}e.data={attributes:{}};let t=this.index;null!==t&&(e.data.index={type:t.array.constructor.name,array:Array.prototype.slice.call(t.array)});let n=this.attributes;for(let t in n){let i=n[t];e.data.attributes[t]=i.toJSON(e.data)}let i={},r=!1;for(let t in this.morphAttributes){let n=this.morphAttributes[t],a=[];for(let t=0,i=n.length;t0&&(i[t]=a,r=!0)}r&&(e.data.morphAttributes=i,e.data.morphTargetsRelative=this.morphTargetsRelative);let a=this.groups;a.length>0&&(e.data.groups=JSON.parse(JSON.stringify(a)));let s=this.boundingSphere;return null!==s&&(e.data.boundingSphere={center:s.center.toArray(),radius:s.radius}),e}clone(){return new this.constructor().copy(this)}copy(e){this.index=null,this.attributes={},this.morphAttributes={},this.groups=[],this.boundingBox=null,this.boundingSphere=null;let t={};this.name=e.name;let n=e.index;null!==n&&this.setIndex(n.clone(t));let i=e.attributes;for(let e in i){let n=i[e];this.setAttribute(e,n.clone(t))}let r=e.morphAttributes;for(let e in r){let n=[],i=r[e];for(let e=0,r=i.length;e0){let n=e[t[0]];if(void 0!==n){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=n.length;e(e.far-e.near)**2)||(ni.copy(r).invert(),nr.copy(e.ray).applyMatrix4(ni),(null===n.boundingBox||!1!==nr.intersectsBox(n.boundingBox))&&this._computeIntersections(e,t,nr)))}_computeIntersections(e,t,n){let i,r=this.geometry,a=this.material,s=r.index,o=r.attributes.position,l=r.attributes.uv,u=r.attributes.uv1,c=r.attributes.normal,h=r.groups,d=r.drawRange;if(null!==s)if(Array.isArray(a))for(let r=0,o=h.length;rn.far?null:{distance:l,point:np.clone(),object:e}}(e,t,n,i,no,nl,nu,nd);if(c){let e=new eE;tN.getBarycoord(nd,no,nl,nu,e),r&&(c.uv=tN.getInterpolatedAttribute(r,o,l,u,e,new Y)),a&&(c.uv1=tN.getInterpolatedAttribute(a,o,l,u,e,new Y)),s&&(c.normal=tN.getInterpolatedAttribute(s,o,l,u,e,new eE),c.normal.dot(i.direction)>0&&c.normal.multiplyScalar(-1));let t={a:o,b:l,c:u,normal:new eE,materialIndex:0};tN.getNormal(no,nl,nu,t.normal),c.face=t,c.barycoord=e}return c}class ng extends nn{constructor(e=1,t=1,n=1,i=1,r=1,a=1){super(),this.type="BoxGeometry",this.parameters={width:e,height:t,depth:n,widthSegments:i,heightSegments:r,depthSegments:a};const s=this;i=Math.floor(i),r=Math.floor(r);const o=[],l=[],u=[],c=[];let h=0,d=0;function p(e,t,n,i,r,a,p,f,m,g,v){let _=a/m,y=p/g,x=a/2,b=p/2,S=f/2,M=m+1,T=g+1,w=0,E=0,A=new eE;for(let a=0;a0?1:-1,u.push(A.x,A.y,A.z),c.push(o/m),c.push(1-a/g),w+=1}}for(let e=0;e0&&(t.defines=this.defines),t.vertexShader=this.vertexShader,t.fragmentShader=this.fragmentShader,t.lights=this.lights,t.clipping=this.clipping;let n={};for(let e in this.extensions)!0===this.extensions[e]&&(n[e]=!0);return Object.keys(n).length>0&&(t.extensions=n),t}}class nS extends ty{constructor(){super(),this.isCamera=!0,this.type="Camera",this.matrixWorldInverse=new e2,this.projectionMatrix=new e2,this.projectionMatrixInverse=new e2,this.coordinateSystem=2e3}copy(e,t){return super.copy(e,t),this.matrixWorldInverse.copy(e.matrixWorldInverse),this.projectionMatrix.copy(e.projectionMatrix),this.projectionMatrixInverse.copy(e.projectionMatrixInverse),this.coordinateSystem=e.coordinateSystem,this}getWorldDirection(e){return super.getWorldDirection(e).negate()}updateMatrixWorld(e){super.updateMatrixWorld(e),this.matrixWorldInverse.copy(this.matrixWorld).invert()}updateWorldMatrix(e,t){super.updateWorldMatrix(e,t),this.matrixWorldInverse.copy(this.matrixWorld).invert()}clone(){return new this.constructor().copy(this)}}let nM=new eE,nT=new Y,nw=new Y;class nE extends nS{constructor(e=50,t=1,n=.1,i=2e3){super(),this.isPerspectiveCamera=!0,this.type="PerspectiveCamera",this.fov=e,this.zoom=1,this.near=n,this.far=i,this.focus=10,this.aspect=t,this.view=null,this.filmGauge=35,this.filmOffset=0,this.updateProjectionMatrix()}copy(e,t){return super.copy(e,t),this.fov=e.fov,this.zoom=e.zoom,this.near=e.near,this.far=e.far,this.focus=e.focus,this.aspect=e.aspect,this.view=null===e.view?null:Object.assign({},e.view),this.filmGauge=e.filmGauge,this.filmOffset=e.filmOffset,this}setFocalLength(e){let t=.5*this.getFilmHeight()/e;this.fov=2*k*Math.atan(t),this.updateProjectionMatrix()}getFocalLength(){let e=Math.tan(.5*B*this.fov);return .5*this.getFilmHeight()/e}getEffectiveFOV(){return 2*k*Math.atan(Math.tan(.5*B*this.fov)/this.zoom)}getFilmWidth(){return this.filmGauge*Math.min(this.aspect,1)}getFilmHeight(){return this.filmGauge/Math.max(this.aspect,1)}getViewBounds(e,t,n){nM.set(-1,-1,.5).applyMatrix4(this.projectionMatrixInverse),t.set(nM.x,nM.y).multiplyScalar(-e/nM.z),nM.set(1,1,.5).applyMatrix4(this.projectionMatrixInverse),n.set(nM.x,nM.y).multiplyScalar(-e/nM.z)}getViewSize(e,t){return this.getViewBounds(e,nT,nw),t.subVectors(nw,nT)}setViewOffset(e,t,n,i,r,a){this.aspect=e/t,null===this.view&&(this.view={enabled:!0,fullWidth:1,fullHeight:1,offsetX:0,offsetY:0,width:1,height:1}),this.view.enabled=!0,this.view.fullWidth=e,this.view.fullHeight=t,this.view.offsetX=n,this.view.offsetY=i,this.view.width=r,this.view.height=a,this.updateProjectionMatrix()}clearViewOffset(){null!==this.view&&(this.view.enabled=!1),this.updateProjectionMatrix()}updateProjectionMatrix(){let e=this.near,t=e*Math.tan(.5*B*this.fov)/this.zoom,n=2*t,i=this.aspect*n,r=-.5*i,a=this.view;if(null!==this.view&&this.view.enabled){let e=a.fullWidth,s=a.fullHeight;r+=a.offsetX*i/e,t-=a.offsetY*n/s,i*=a.width/e,n*=a.height/s}let s=this.filmOffset;0!==s&&(r+=e*s/this.getFilmWidth()),this.projectionMatrix.makePerspective(r,r+i,t,t-n,e,this.far,this.coordinateSystem),this.projectionMatrixInverse.copy(this.projectionMatrix).invert()}toJSON(e){let t=super.toJSON(e);return t.object.fov=this.fov,t.object.zoom=this.zoom,t.object.near=this.near,t.object.far=this.far,t.object.focus=this.focus,t.object.aspect=this.aspect,null!==this.view&&(t.object.view=Object.assign({},this.view)),t.object.filmGauge=this.filmGauge,t.object.filmOffset=this.filmOffset,t}}class nA extends ty{constructor(e,t,n){super(),this.type="CubeCamera",this.renderTarget=n,this.coordinateSystem=null,this.activeMipmapLevel=0;const i=new nE(-90,1,e,t);i.layers=this.layers,this.add(i);const r=new nE(-90,1,e,t);r.layers=this.layers,this.add(r);const a=new nE(-90,1,e,t);a.layers=this.layers,this.add(a);const s=new nE(-90,1,e,t);s.layers=this.layers,this.add(s);const o=new nE(-90,1,e,t);o.layers=this.layers,this.add(o);const l=new nE(-90,1,e,t);l.layers=this.layers,this.add(l)}updateCoordinateSystem(){let e=this.coordinateSystem,t=this.children.concat(),[n,i,r,a,s,o]=t;for(let e of t)this.remove(e);if(2e3===e)n.up.set(0,1,0),n.lookAt(1,0,0),i.up.set(0,1,0),i.lookAt(-1,0,0),r.up.set(0,0,-1),r.lookAt(0,1,0),a.up.set(0,0,1),a.lookAt(0,-1,0),s.up.set(0,1,0),s.lookAt(0,0,1),o.up.set(0,1,0),o.lookAt(0,0,-1);else if(2001===e)n.up.set(0,-1,0),n.lookAt(-1,0,0),i.up.set(0,-1,0),i.lookAt(1,0,0),r.up.set(0,0,1),r.lookAt(0,1,0),a.up.set(0,0,-1),a.lookAt(0,-1,0),s.up.set(0,-1,0),s.lookAt(0,0,1),o.up.set(0,-1,0),o.lookAt(0,0,-1);else throw Error("THREE.CubeCamera.updateCoordinateSystem(): Invalid coordinate system: "+e);for(let e of t)this.add(e),e.updateMatrixWorld()}update(e,t){null===this.parent&&this.updateMatrixWorld();let{renderTarget:n,activeMipmapLevel:i}=this;this.coordinateSystem!==e.coordinateSystem&&(this.coordinateSystem=e.coordinateSystem,this.updateCoordinateSystem());let[r,a,s,o,l,u]=this.children,c=e.getRenderTarget(),h=e.getActiveCubeFace(),d=e.getActiveMipmapLevel(),p=e.xr.enabled;e.xr.enabled=!1;let f=n.texture.generateMipmaps;n.texture.generateMipmaps=!1,e.setRenderTarget(n,0,i),e.render(t,r),e.setRenderTarget(n,1,i),e.render(t,a),e.setRenderTarget(n,2,i),e.render(t,s),e.setRenderTarget(n,3,i),e.render(t,o),e.setRenderTarget(n,4,i),e.render(t,l),n.texture.generateMipmaps=f,e.setRenderTarget(n,5,i),e.render(t,u),e.setRenderTarget(c,h,d),e.xr.enabled=p,n.texture.needsPMREMUpdate=!0}}class nC extends ev{constructor(e,t,n,i,r,a,s,o,l,u){super(e=void 0!==e?e:[],t=void 0!==t?t:301,n,i,r,a,s,o,l,u),this.isCubeTexture=!0,this.flipY=!1}get images(){return this.image}set images(e){this.image=e}}class nR extends ex{constructor(e=1,t={}){super(e,e,t),this.isWebGLCubeRenderTarget=!0;const n={width:e,height:e,depth:1};this.texture=new nC([n,n,n,n,n,n],t.mapping,t.wrapS,t.wrapT,t.magFilter,t.minFilter,t.format,t.type,t.anisotropy,t.colorSpace),this.texture.isRenderTargetTexture=!0,this.texture.generateMipmaps=void 0!==t.generateMipmaps&&t.generateMipmaps,this.texture.minFilter=void 0!==t.minFilter?t.minFilter:1006}fromEquirectangularTexture(e,t){this.texture.type=t.type,this.texture.colorSpace=t.colorSpace,this.texture.generateMipmaps=t.generateMipmaps,this.texture.minFilter=t.minFilter,this.texture.magFilter=t.magFilter;let n={uniforms:{tEquirect:{value:null}},vertexShader:` + + varying vec3 vWorldDirection; + + vec3 transformDirection( in vec3 dir, in mat4 matrix ) { + + return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz ); + + } + + void main() { + + vWorldDirection = transformDirection( position, modelMatrix ); + + #include + #include + + } + `,fragmentShader:` + + uniform sampler2D tEquirect; + + varying vec3 vWorldDirection; + + #include + + void main() { + + vec3 direction = normalize( vWorldDirection ); + + vec2 sampleUV = equirectUv( direction ); + + gl_FragColor = texture2D( tEquirect, sampleUV ); + + } + `},i=new ng(5,5,5),r=new nb({name:"CubemapFromEquirect",uniforms:nv(n.uniforms),vertexShader:n.vertexShader,fragmentShader:n.fragmentShader,side:1,blending:0});r.uniforms.tEquirect.value=t;let a=new nf(i,r),s=t.minFilter;return 1008===t.minFilter&&(t.minFilter=1006),new nA(1,10,this).update(e,a),t.minFilter=s,a.geometry.dispose(),a.material.dispose(),this}clear(e,t,n,i){let r=e.getRenderTarget();for(let r=0;r<6;r++)e.setRenderTarget(this,r),e.clear(t,n,i);e.setRenderTarget(r)}}class nP{constructor(e,t=25e-5){this.isFogExp2=!0,this.name="",this.color=new tz(e),this.density=t}clone(){return new nP(this.color,this.density)}toJSON(){return{type:"FogExp2",name:this.name,color:this.color.getHex(),density:this.density}}}class nI{constructor(e,t=1,n=1e3){this.isFog=!0,this.name="",this.color=new tz(e),this.near=t,this.far=n}clone(){return new nI(this.color,this.near,this.far)}toJSON(){return{type:"Fog",name:this.name,color:this.color.getHex(),near:this.near,far:this.far}}}class nL extends ty{constructor(){super(),this.isScene=!0,this.type="Scene",this.background=null,this.environment=null,this.fog=null,this.backgroundBlurriness=0,this.backgroundIntensity=1,this.backgroundRotation=new tn,this.environmentIntensity=1,this.environmentRotation=new tn,this.overrideMaterial=null,"u">typeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}copy(e,t){return super.copy(e,t),null!==e.background&&(this.background=e.background.clone()),null!==e.environment&&(this.environment=e.environment.clone()),null!==e.fog&&(this.fog=e.fog.clone()),this.backgroundBlurriness=e.backgroundBlurriness,this.backgroundIntensity=e.backgroundIntensity,this.backgroundRotation.copy(e.backgroundRotation),this.environmentIntensity=e.environmentIntensity,this.environmentRotation.copy(e.environmentRotation),null!==e.overrideMaterial&&(this.overrideMaterial=e.overrideMaterial.clone()),this.matrixAutoUpdate=e.matrixAutoUpdate,this}toJSON(e){let t=super.toJSON(e);return null!==this.fog&&(t.object.fog=this.fog.toJSON()),this.backgroundBlurriness>0&&(t.object.backgroundBlurriness=this.backgroundBlurriness),1!==this.backgroundIntensity&&(t.object.backgroundIntensity=this.backgroundIntensity),t.object.backgroundRotation=this.backgroundRotation.toArray(),1!==this.environmentIntensity&&(t.object.environmentIntensity=this.environmentIntensity),t.object.environmentRotation=this.environmentRotation.toArray(),t}}class nN{constructor(e,t){this.isInterleavedBuffer=!0,this.array=e,this.stride=t,this.count=void 0!==e?e.length/t:0,this.usage=35044,this.updateRanges=[],this.version=0,this.uuid=H()}onUploadCallback(){}set needsUpdate(e){!0===e&&this.version++}setUsage(e){return this.usage=e,this}addUpdateRange(e,t){this.updateRanges.push({start:e,count:t})}clearUpdateRanges(){this.updateRanges.length=0}copy(e){return this.array=new e.array.constructor(e.array),this.count=e.count,this.stride=e.stride,this.usage=e.usage,this}copyAt(e,t,n){e*=this.stride,n*=t.stride;for(let i=0,r=this.stride;ie.far||t.push({distance:o,point:nF.clone(),uv:tN.getInterpolation(nF,nG,nW,nj,nX,nq,nY,new Y),face:null,object:this})}copy(e,t){return super.copy(e,t),void 0!==e.center&&this.center.copy(e.center),this.material=e.material,this}}function nJ(e,t,n,i,r,a){nk.subVectors(e,n).addScalar(.5).multiply(i),void 0!==r?(nH.x=a*nk.x-r*nk.y,nH.y=r*nk.x+a*nk.y):nH.copy(nk),e.copy(t),e.x+=nH.x,e.y+=nH.y,e.applyMatrix4(nV)}let nK=new eE,n$=new eE;class nQ extends ty{constructor(){super(),this._currentLevel=0,this.type="LOD",Object.defineProperties(this,{levels:{enumerable:!0,value:[]},isLOD:{value:!0}}),this.autoUpdate=!0}copy(e){super.copy(e,!1);let t=e.levels;for(let e=0,n=t.length;e0){let n,i;for(n=1,i=t.length;n0){nK.setFromMatrixPosition(this.matrixWorld);let n=e.ray.origin.distanceTo(nK);this.getObjectForDistance(n).raycast(e,t)}}update(e){let t=this.levels;if(t.length>1){let n,i;nK.setFromMatrixPosition(e.matrixWorld),n$.setFromMatrixPosition(this.matrixWorld);let r=nK.distanceTo(n$)/e.zoom;for(n=1,t[0].object.visible=!0,i=t.length;n=e)t[n-1].object.visible=!1,t[n].object.visible=!0;else break}for(this._currentLevel=n-1;n1?null:t.copy(e.start).addScaledVector(n,r)}intersectsLine(e){let t=this.distanceToPoint(e.start),n=this.distanceToPoint(e.end);return t<0&&n>0||n<0&&t>0}intersectsBox(e){return e.intersectsPlane(this)}intersectsSphere(e){return e.intersectsPlane(this)}coplanarPoint(e){return e.copy(this.normal).multiplyScalar(-this.constant)}applyMatrix4(e,t){let n=t||i_.getNormalMatrix(e),i=this.coplanarPoint(ig).applyMatrix4(e),r=this.normal.applyMatrix3(n).normalize();return this.constant=-i.dot(r),this}translate(e){return this.constant-=e.dot(this.normal),this}equals(e){return e.normal.equals(this.normal)&&e.constant===this.constant}clone(){return new this.constructor().copy(this)}}let ix=new eq,ib=new eE;class iS{constructor(e=new iy,t=new iy,n=new iy,i=new iy,r=new iy,a=new iy){this.planes=[e,t,n,i,r,a]}set(e,t,n,i,r,a){let s=this.planes;return s[0].copy(e),s[1].copy(t),s[2].copy(n),s[3].copy(i),s[4].copy(r),s[5].copy(a),this}copy(e){let t=this.planes;for(let n=0;n<6;n++)t[n].copy(e.planes[n]);return this}setFromProjectionMatrix(e,t=2e3){let n=this.planes,i=e.elements,r=i[0],a=i[1],s=i[2],o=i[3],l=i[4],u=i[5],c=i[6],h=i[7],d=i[8],p=i[9],f=i[10],m=i[11],g=i[12],v=i[13],_=i[14],y=i[15];if(n[0].setComponents(o-r,h-l,m-d,y-g).normalize(),n[1].setComponents(o+r,h+l,m+d,y+g).normalize(),n[2].setComponents(o+a,h+u,m+p,y+v).normalize(),n[3].setComponents(o-a,h-u,m-p,y-v).normalize(),n[4].setComponents(o-s,h-c,m-f,y-_).normalize(),2e3===t)n[5].setComponents(o+s,h+c,m+f,y+_).normalize();else if(2001===t)n[5].setComponents(s,c,f,_).normalize();else throw Error("THREE.Frustum.setFromProjectionMatrix(): Invalid coordinate system: "+t);return this}intersectsObject(e){if(void 0!==e.boundingSphere)null===e.boundingSphere&&e.computeBoundingSphere(),ix.copy(e.boundingSphere).applyMatrix4(e.matrixWorld);else{let t=e.geometry;null===t.boundingSphere&&t.computeBoundingSphere(),ix.copy(t.boundingSphere).applyMatrix4(e.matrixWorld)}return this.intersectsSphere(ix)}intersectsSprite(e){return ix.center.set(0,0,0),ix.radius=.7071067811865476,ix.applyMatrix4(e.matrixWorld),this.intersectsSphere(ix)}intersectsSphere(e){let t=this.planes,n=e.center,i=-e.radius;for(let e=0;e<6;e++)if(t[e].distanceToPoint(n)0?e.max.x:e.min.x,ib.y=i.normal.y>0?e.max.y:e.min.y,ib.z=i.normal.z>0?e.max.z:e.min.z,0>i.distanceToPoint(ib))return!1}return!0}containsPoint(e){let t=this.planes;for(let n=0;n<6;n++)if(0>t[n].distanceToPoint(e))return!1;return!0}clone(){return new this.constructor().copy(this)}}function iM(e,t){return e-t}function iT(e,t){return e.z-t.z}function iw(e,t){return t.z-e.z}let iE=new e2,iA=new tz(1,1,1),iC=new iS,iR=new eR,iP=new eq,iI=new eE,iL=new eE,iN=new eE,iU=new class{constructor(){this.index=0,this.pool=[],this.list=[]}push(e,t,n,i){let r=this.pool,a=this.list;this.index>=r.length&&r.push({start:-1,count:-1,z:-1,index:-1});let s=r[this.index];a.push(s),this.index++,s.start=e,s.count=t,s.z=n,s.index=i}reset(){this.list.length=0,this.index=0}},iD=new nf,iO=[];function iF(e,t){if(e.constructor!==t.constructor){let n=Math.min(e.length,t.length);for(let i=0;i65535?new Uint32Array(i):new Uint16Array(i);t.setIndex(new tZ(e,1))}this._geometryInitialized=!0}}_validateGeometry(e){let t=this.geometry;if(!!e.getIndex()!=!!t.getIndex())throw Error('THREE.BatchedMesh: All geometries must consistently have "index".');for(let n in t.attributes){if(!e.hasAttribute(n))throw Error(`THREE.BatchedMesh: Added geometry missing "${n}". All geometries must have consistent attributes.`);let i=e.getAttribute(n),r=t.getAttribute(n);if(i.itemSize!==r.itemSize||i.normalized!==r.normalized)throw Error("THREE.BatchedMesh: All attributes must have a consistent itemSize and normalized value.")}}validateInstanceId(e){let t=this._instanceInfo;if(e<0||e>=t.length||!1===t[e].active)throw Error(`THREE.BatchedMesh: Invalid instanceId ${e}. Instance is either out of range or has been deleted.`)}validateGeometryId(e){let t=this._geometryInfo;if(e<0||e>=t.length||!1===t[e].active)throw Error(`THREE.BatchedMesh: Invalid geometryId ${e}. Geometry is either out of range or has been deleted.`)}setCustomSort(e){return this.customSort=e,this}computeBoundingBox(){null===this.boundingBox&&(this.boundingBox=new eR);let e=this.boundingBox,t=this._instanceInfo;e.makeEmpty();for(let n=0,i=t.length;n=this.maxInstanceCount&&0===this._availableInstanceIds.length)throw Error("THREE.BatchedMesh: Maximum item count reached.");let t={visible:!0,active:!0,geometryIndex:e},n=null;this._availableInstanceIds.length>0?(this._availableInstanceIds.sort(iM),n=this._availableInstanceIds.shift(),this._instanceInfo[n]=t):(n=this._instanceInfo.length,this._instanceInfo.push(t));let i=this._matricesTexture;iE.identity().toArray(i.image.data,16*n),i.needsUpdate=!0;let r=this._colorsTexture;return r&&(iA.toArray(r.image.data,4*n),r.needsUpdate=!0),this._visibilityChanged=!0,n}addGeometry(e,t=-1,n=-1){let i;this._initializeGeometry(e),this._validateGeometry(e);let r={vertexStart:-1,vertexCount:-1,reservedVertexCount:-1,indexStart:-1,indexCount:-1,reservedIndexCount:-1,start:-1,count:-1,boundingBox:null,boundingSphere:null,active:!0},a=this._geometryInfo;r.vertexStart=this._nextVertexStart,r.reservedVertexCount=-1===t?e.getAttribute("position").count:t;let s=e.getIndex();if(null!==s&&(r.indexStart=this._nextIndexStart,r.reservedIndexCount=-1===n?s.count:n),-1!==r.indexStart&&r.indexStart+r.reservedIndexCount>this._maxIndexCount||r.vertexStart+r.reservedVertexCount>this._maxVertexCount)throw Error("THREE.BatchedMesh: Reserved space request exceeds the maximum buffer size.");return this._availableGeometryIds.length>0?(this._availableGeometryIds.sort(iM),a[i=this._availableGeometryIds.shift()]=r):(i=this._geometryCount,this._geometryCount++,a.push(r)),this.setGeometryAt(i,e),this._nextIndexStart=r.indexStart+r.reservedIndexCount,this._nextVertexStart=r.vertexStart+r.reservedVertexCount,i}setGeometryAt(e,t){if(e>=this._geometryCount)throw Error("THREE.BatchedMesh: Maximum geometry count reached.");this._validateGeometry(t);let n=this.geometry,i=null!==n.getIndex(),r=n.getIndex(),a=t.getIndex(),s=this._geometryInfo[e];if(i&&a.count>s.reservedIndexCount||t.attributes.position.count>s.reservedVertexCount)throw Error("THREE.BatchedMesh: Reserved space not large enough for provided geometry.");let o=s.vertexStart,l=s.reservedVertexCount;for(let e in s.vertexCount=t.getAttribute("position").count,n.attributes){let i=t.getAttribute(e),r=n.getAttribute(e);!function(e,t,n=0){let i=t.itemSize;if(e.isInterleavedBufferAttribute||e.array.constructor!==t.array.constructor){let r=e.count;for(let a=0;a=t.length||!1===t[e].active)return this;let n=this._instanceInfo;for(let t=0,i=n.length;tt).sort((e,t)=>n[e].vertexStart-n[t].vertexStart),r=this.geometry;for(let a=0,s=n.length;a=this._geometryCount)return null;let n=this.geometry,i=this._geometryInfo[e];if(null===i.boundingBox){let e=new eR,t=n.index,r=n.attributes.position;for(let n=i.start,a=i.start+i.count;n=this._geometryCount)return null;let n=this.geometry,i=this._geometryInfo[e];if(null===i.boundingSphere){let t=new eq;this.getBoundingBoxAt(e,iR),iR.getCenter(t.center);let r=n.index,a=n.attributes.position,s=0;for(let e=i.start,n=i.start+i.count;ee.active);if(Math.max(...n.map(e=>e.vertexStart+e.reservedVertexCount))>e)throw Error(`BatchedMesh: Geometry vertex values are being used outside the range ${t}. Cannot shrink further.`);if(this.geometry.index&&Math.max(...n.map(e=>e.indexStart+e.reservedIndexCount))>t)throw Error(`BatchedMesh: Geometry index values are being used outside the range ${t}. Cannot shrink further.`);let i=this.geometry;i.dispose(),this._maxVertexCount=e,this._maxIndexCount=t,this._geometryInitialized&&(this._geometryInitialized=!1,this.geometry=new nn,this._initializeGeometry(i));let r=this.geometry;for(let e in i.index&&iF(i.index.array,r.index.array),i.attributes)iF(i.attributes[e].array,r.attributes[e].array)}raycast(e,t){let n=this._instanceInfo,i=this._geometryInfo,r=this.matrixWorld,a=this.geometry;iD.material=this.material,iD.geometry.index=a.index,iD.geometry.attributes=a.attributes,null===iD.geometry.boundingBox&&(iD.geometry.boundingBox=new eR),null===iD.geometry.boundingSphere&&(iD.geometry.boundingSphere=new eq);for(let a=0,s=n.length;a({...e,boundingBox:null!==e.boundingBox?e.boundingBox.clone():null,boundingSphere:null!==e.boundingSphere?e.boundingSphere.clone():null})),this._instanceInfo=e._instanceInfo.map(e=>({...e})),this._maxInstanceCount=e._maxInstanceCount,this._maxVertexCount=e._maxVertexCount,this._maxIndexCount=e._maxIndexCount,this._geometryInitialized=e._geometryInitialized,this._geometryCount=e._geometryCount,this._multiDrawCounts=e._multiDrawCounts.slice(),this._multiDrawStarts=e._multiDrawStarts.slice(),this._matricesTexture=e._matricesTexture.clone(),this._matricesTexture.image.data=this._matricesTexture.image.data.slice(),null!==this._colorsTexture&&(this._colorsTexture=e._colorsTexture.clone(),this._colorsTexture.image.data=this._colorsTexture.image.data.slice()),this}dispose(){return this.geometry.dispose(),this._matricesTexture.dispose(),this._matricesTexture=null,this._indirectTexture.dispose(),this._indirectTexture=null,null!==this._colorsTexture&&(this._colorsTexture.dispose(),this._colorsTexture=null),this}onBeforeRender(e,t,n,i,r){if(!this._visibilityChanged&&!this.perObjectFrustumCulled&&!this.sortObjects)return;let a=i.getIndex(),s=null===a?1:a.array.BYTES_PER_ELEMENT,o=this._instanceInfo,l=this._multiDrawStarts,u=this._multiDrawCounts,c=this._geometryInfo,h=this.perObjectFrustumCulled,d=this._indirectTexture,p=d.image.data;h&&(iE.multiplyMatrices(n.projectionMatrix,n.matrixWorldInverse).multiply(this.matrixWorld),iC.setFromProjectionMatrix(iE,e.coordinateSystem));let f=0;if(this.sortObjects){iE.copy(this.matrixWorld).invert(),iI.setFromMatrixPosition(n.matrixWorld).applyMatrix4(iE),iL.set(0,0,-1).transformDirection(n.matrixWorld).transformDirection(iE);for(let e=0,t=o.length;e0){let n=e[t[0]];if(void 0!==n){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=n.length;ei)return;ij.applyMatrix4(e.matrixWorld);let o=t.ray.origin.distanceTo(ij);if(!(ot.far))return{distance:o,point:iX.clone().applyMatrix4(e.matrixWorld),index:r,face:null,faceIndex:null,barycoord:null,object:e}}let iZ=new eE,iJ=new eE;class iK extends iq{constructor(e,t){super(e,t),this.isLineSegments=!0,this.type="LineSegments"}computeLineDistances(){let e=this.geometry;if(null===e.index){let t=e.attributes.position,n=[];for(let e=0,i=t.count;e0){let n=e[t[0]];if(void 0!==n){this.morphTargetInfluences=[],this.morphTargetDictionary={};for(let e=0,t=n.length;er.far)return;a.push({distance:l,distanceToRay:Math.sqrt(o),point:n,index:t,face:null,faceIndex:null,barycoord:null,object:s})}}class i6 extends ty{constructor(){super(),this.isGroup=!0,this.type="Group"}}class i8 extends ev{constructor(e,t,n,i,r,a,s,o,l){super(e,t,n,i,r,a,s,o,l),this.isVideoTexture=!0,this.minFilter=void 0!==a?a:1006,this.magFilter=void 0!==r?r:1006,this.generateMipmaps=!1;const u=this;"requestVideoFrameCallback"in e&&e.requestVideoFrameCallback(function t(){u.needsUpdate=!0,e.requestVideoFrameCallback(t)})}clone(){return new this.constructor(this.image).copy(this)}update(){let e=this.image;!1=="requestVideoFrameCallback"in e&&e.readyState>=e.HAVE_CURRENT_DATA&&(this.needsUpdate=!0)}}class i9 extends ev{constructor(e,t){super({width:e,height:t}),this.isFramebufferTexture=!0,this.magFilter=1003,this.minFilter=1003,this.generateMipmaps=!1,this.needsUpdate=!0}}class i7 extends ev{constructor(e,t,n,i,r,a,s,o,l,u,c,h){super(null,a,s,o,l,u,i,r,c,h),this.isCompressedTexture=!0,this.image={width:t,height:n},this.mipmaps=e,this.flipY=!1,this.generateMipmaps=!1}}class re extends i7{constructor(e,t,n,i,r,a){super(e,t,n,r,a),this.isCompressedArrayTexture=!0,this.image.depth=i,this.wrapR=1001,this.layerUpdates=new Set}addLayerUpdate(e){this.layerUpdates.add(e)}clearLayerUpdates(){this.layerUpdates.clear()}}class rt extends i7{constructor(e,t,n){super(void 0,e[0].width,e[0].height,t,n,301),this.isCompressedCubeTexture=!0,this.isCubeTexture=!0,this.image=e}}class rn extends ev{constructor(e,t,n,i,r,a,s,o,l){super(e,t,n,i,r,a,s,o,l),this.isCanvasTexture=!0,this.needsUpdate=!0}}class ri extends ev{constructor(e,t,n,i,r,a,s,o,l,u=1026){if(1026!==u&&1027!==u)throw Error("DepthTexture format must be either THREE.DepthFormat or THREE.DepthStencilFormat");void 0===n&&1026===u&&(n=1014),void 0===n&&1027===u&&(n=1020),super(null,i,r,a,s,o,u,n,l),this.isDepthTexture=!0,this.image={width:e,height:t},this.magFilter=void 0!==s?s:1003,this.minFilter=void 0!==o?o:1003,this.flipY=!1,this.generateMipmaps=!1,this.compareFunction=null}copy(e){return super.copy(e),this.compareFunction=e.compareFunction,this}toJSON(e){let t=super.toJSON(e);return null!==this.compareFunction&&(t.compareFunction=this.compareFunction),t}}class rr{constructor(){this.type="Curve",this.arcLengthDivisions=200}getPoint(){return console.warn("THREE.Curve: .getPoint() not implemented."),null}getPointAt(e,t){let n=this.getUtoTmapping(e);return this.getPoint(n,t)}getPoints(e=5){let t=[];for(let n=0;n<=e;n++)t.push(this.getPoint(n/e));return t}getSpacedPoints(e=5){let t=[];for(let n=0;n<=e;n++)t.push(this.getPointAt(n/e));return t}getLength(){let e=this.getLengths();return e[e.length-1]}getLengths(e=this.arcLengthDivisions){if(this.cacheArcLengths&&this.cacheArcLengths.length===e+1&&!this.needsUpdate)return this.cacheArcLengths;this.needsUpdate=!1;let t=[],n,i=this.getPoint(0),r=0;t.push(0);for(let a=1;a<=e;a++)t.push(r+=(n=this.getPoint(a/e)).distanceTo(i)),i=n;return this.cacheArcLengths=t,t}updateArcLengths(){this.needsUpdate=!0,this.getLengths()}getUtoTmapping(e,t){let n,i=this.getLengths(),r=0,a=i.length;n=t||e*i[a-1];let s=0,o=a-1,l;for(;s<=o;)if((l=i[r=Math.floor(s+(o-s)/2)]-n)<0)s=r+1;else if(l>0)o=r-1;else{o=r;break}if(i[r=o]===n)return r/(a-1);let u=i[r],c=i[r+1];return(r+(n-u)/(c-u))/(a-1)}getTangent(e,t){let n=e-1e-4,i=e+1e-4;n<0&&(n=0),i>1&&(i=1);let r=this.getPoint(n),a=this.getPoint(i),s=t||(r.isVector2?new Y:new eE);return s.copy(a).sub(r).normalize(),s}getTangentAt(e,t){let n=this.getUtoTmapping(e);return this.getTangent(n,t)}computeFrenetFrames(e,t){let n=new eE,i=[],r=[],a=[],s=new eE,o=new e2;for(let t=0;t<=e;t++){let n=t/e;i[t]=this.getTangentAt(n,new eE)}r[0]=new eE,a[0]=new eE;let l=Number.MAX_VALUE,u=Math.abs(i[0].x),c=Math.abs(i[0].y),h=Math.abs(i[0].z);u<=l&&(l=u,n.set(1,0,0)),c<=l&&(l=c,n.set(0,1,0)),h<=l&&n.set(0,0,1),s.crossVectors(i[0],n).normalize(),r[0].crossVectors(i[0],s),a[0].crossVectors(i[0],r[0]);for(let t=1;t<=e;t++){if(r[t]=r[t-1].clone(),a[t]=a[t-1].clone(),s.crossVectors(i[t-1],i[t]),s.length()>Number.EPSILON){s.normalize();let e=Math.acos(V(i[t-1].dot(i[t]),-1,1));r[t].applyMatrix4(o.makeRotationAxis(s,e))}a[t].crossVectors(i[t],r[t])}if(!0===t){let t=Math.acos(V(r[0].dot(r[e]),-1,1));t/=e,i[0].dot(s.crossVectors(r[0],r[e]))>0&&(t=-t);for(let n=1;n<=e;n++)r[n].applyMatrix4(o.makeRotationAxis(i[n],t*n)),a[n].crossVectors(i[n],r[n])}return{tangents:i,normals:r,binormals:a}}clone(){return new this.constructor().copy(this)}copy(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}toJSON(){let e={metadata:{version:4.6,type:"Curve",generator:"Curve.toJSON"}};return e.arcLengthDivisions=this.arcLengthDivisions,e.type=this.type,e}fromJSON(e){return this.arcLengthDivisions=e.arcLengthDivisions,this}}class ra extends rr{constructor(e=0,t=0,n=1,i=1,r=0,a=2*Math.PI,s=!1,o=0){super(),this.isEllipseCurve=!0,this.type="EllipseCurve",this.aX=e,this.aY=t,this.xRadius=n,this.yRadius=i,this.aStartAngle=r,this.aEndAngle=a,this.aClockwise=s,this.aRotation=o}getPoint(e,t=new Y){let n=2*Math.PI,i=this.aEndAngle-this.aStartAngle,r=Math.abs(i)n;)i-=n;i0?0:(Math.floor(Math.abs(o)/a)+1)*a:0===l&&o===a-1&&(o=a-2,l=1),this.closed||o>0?n=r[(o-1)%a]:(rl.subVectors(r[0],r[1]).add(r[0]),n=rl);let u=r[o%a],c=r[(o+1)%a];if(this.closed||o+2n.length-2?n.length-1:r+1],u=n[r>n.length-3?n.length-1:r+2];return t.set(rp(a,s.x,o.x,l.x,u.x),rp(a,s.y,o.y,l.y,u.y)),t}copy(e){super.copy(e),this.points=[];for(let t=0,n=e.points.length;t=n){let e=i[r]-n,a=this.curves[r],s=a.getLength(),o=0===s?0:1-e/s;return a.getPointAt(o,t)}r++}return null}getLength(){let e=this.getCurveLengths();return e[e.length-1]}updateArcLengths(){this.needsUpdate=!0,this.cacheLengths=null,this.getCurveLengths()}getCurveLengths(){if(this.cacheLengths&&this.cacheLengths.length===this.curves.length)return this.cacheLengths;let e=[],t=0;for(let n=0,i=this.curves.length;n1&&!n[n.length-1].equals(n[0])&&n.push(n[0]),n}copy(e){super.copy(e),this.curves=[];for(let t=0,n=e.curves.length;t0){let e=l.getPoint(0);e.equals(this.currentPoint)||this.lineTo(e.x,e.y)}this.curves.push(l);let u=l.getPoint(1);return this.currentPoint.copy(u),this}copy(e){return super.copy(e),this.currentPoint.copy(e.currentPoint),this}toJSON(){let e=super.toJSON();return e.currentPoint=this.currentPoint.toArray(),e}fromJSON(e){return super.fromJSON(e),this.currentPoint.fromArray(e.currentPoint),this}}class rE extends nn{constructor(e=[new Y(0,-.5),new Y(.5,0),new Y(0,.5)],t=12,n=0,i=2*Math.PI){super(),this.type="LatheGeometry",this.parameters={points:e,segments:t,phiStart:n,phiLength:i},t=Math.floor(t),i=V(i,0,2*Math.PI);const r=[],a=[],s=[],o=[],l=[],u=1/t,c=new eE,h=new Y,d=new eE,p=new eE,f=new eE;let m=0,g=0;for(let t=0;t<=e.length-1;t++)switch(t){case 0:m=e[t+1].x-e[t].x,d.x=+(g=e[t+1].y-e[t].y),d.y=-m,d.z=0*g,f.copy(d),d.normalize(),o.push(d.x,d.y,d.z);break;case e.length-1:o.push(f.x,f.y,f.z);break;default:m=e[t+1].x-e[t].x,d.x=+(g=e[t+1].y-e[t].y),d.y=-m,d.z=0*g,p.copy(d),d.x+=f.x,d.y+=f.y,d.z+=f.z,d.normalize(),o.push(d.x,d.y,d.z),f.copy(p)}for(let r=0;r<=t;r++){const d=n+r*u*i,p=Math.sin(d),f=Math.cos(d);for(let n=0;n<=e.length-1;n++){c.x=e[n].x*p,c.y=e[n].y,c.z=e[n].x*f,a.push(c.x,c.y,c.z),h.x=r/t,h.y=n/(e.length-1),s.push(h.x,h.y);const i=o[3*n+0]*p,u=o[3*n+1],d=o[3*n+0]*f;l.push(i,u,d)}}for(let n=0;n0||0!==i)&&(u.push(a,s,l),_+=3),(t>0||i!==r-1)&&(u.push(s,o,l),_+=3)}l.addGroup(g,_,0),g+=_})(),!1===a&&(e>0&&v(!0),t>0&&v(!1)),this.setIndex(u),this.setAttribute("position",new t4(c,3)),this.setAttribute("normal",new t4(h,3)),this.setAttribute("uv",new t4(d,2))}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new rR(e.radiusTop,e.radiusBottom,e.height,e.radialSegments,e.heightSegments,e.openEnded,e.thetaStart,e.thetaLength)}}class rP extends rR{constructor(e=1,t=1,n=32,i=1,r=!1,a=0,s=2*Math.PI){super(0,e,t,n,i,r,a,s),this.type="ConeGeometry",this.parameters={radius:e,height:t,radialSegments:n,heightSegments:i,openEnded:r,thetaStart:a,thetaLength:s}}static fromJSON(e){return new rP(e.radius,e.height,e.radialSegments,e.heightSegments,e.openEnded,e.thetaStart,e.thetaLength)}}class rI extends nn{constructor(e=[],t=[],n=1,i=0){super(),this.type="PolyhedronGeometry",this.parameters={vertices:e,indices:t,radius:n,detail:i};const r=[],a=[];function s(e){r.push(e.x,e.y,e.z)}function o(t,n){let i=3*t;n.x=e[i+0],n.y=e[i+1],n.z=e[i+2]}function l(e,t,n,i){i<0&&1===e.x&&(a[t]=e.x-1),0===n.x&&0===n.z&&(a[t]=i/2/Math.PI+.5)}function u(e){return Math.atan2(e.z,-e.x)}(function(e){let n=new eE,i=new eE,r=new eE;for(let a=0;a.9&&s<.1&&(t<.2&&(a[e+0]+=1),n<.2&&(a[e+2]+=1),i<.2&&(a[e+4]+=1))}}()}(),this.setAttribute("position",new t4(r,3)),this.setAttribute("normal",new t4(r.slice(),3)),this.setAttribute("uv",new t4(a,2)),0===i?this.computeVertexNormals():this.normalizeNormals()}copy(e){return super.copy(e),this.parameters=Object.assign({},e.parameters),this}static fromJSON(e){return new rI(e.vertices,e.indices,e.radius,e.details)}}class rL extends rI{constructor(e=1,t=0){const n=(1+Math.sqrt(5))/2,i=1/n;super([-1,-1,-1,-1,-1,1,-1,1,-1,-1,1,1,1,-1,-1,1,-1,1,1,1,-1,1,1,1,0,-i,-n,0,-i,n,0,i,-n,0,i,n,-i,-n,0,-i,n,0,i,-n,0,i,n,0,-n,0,-i,n,0,-i,-n,0,i,n,0,i],[3,11,7,3,7,15,3,15,13,7,19,17,7,17,6,7,6,15,17,4,8,17,8,10,17,10,6,8,0,16,8,16,2,8,2,10,0,12,1,0,1,18,0,18,16,6,10,2,6,2,13,6,13,15,2,16,18,2,18,3,2,3,13,18,1,9,18,9,11,18,11,3,4,14,12,4,12,0,4,0,8,11,9,5,11,5,19,11,19,7,19,5,14,19,14,4,19,4,17,1,12,14,1,14,5,1,5,9],e,t),this.type="DodecahedronGeometry",this.parameters={radius:e,detail:t}}static fromJSON(e){return new rL(e.radius,e.detail)}}let rN=new eE,rU=new eE,rD=new eE,rO=new tN;class rF extends nn{constructor(e=null,t=1){if(super(),this.type="EdgesGeometry",this.parameters={geometry:e,thresholdAngle:t},null!==e){const n=Math.cos(B*t),i=e.getIndex(),r=e.getAttribute("position"),a=i?i.count:r.count,s=[0,0,0],o=["a","b","c"],l=[,,,],u={},c=[];for(let e=0;e=n.next.y&&n.next.y!==n.y){let e=n.x+(s-n.y)*(n.next.x-n.x)/(n.next.y-n.y);if(e<=a&&e>i&&(i=e,r=n.x=n.x&&n.x>=l&&a!==n.x&&rW(sr.x||n.x===r.x&&(d=r,p=n,0>rj(d.prev,d,p.prev)&&0>rj(p.next,d,d.next))))&&(r=n,c=h)),n=n.next}while(n!==o)return r}(e,t);if(!n)return t;let i=rK(n,e);return rH(i,i.next),rH(n,n.next)}(u[r],n);return n}(e,t,d,n)),e.length>80*n){i=a=e[0],r=s=e[1];for(let t=n;ta&&(a=o),l>s&&(s=l);u=0!==(u=Math.max(a-i,s-r))?32767/u:0}return function e(t,n,i,r,a,s,o){if(!t)return;!o&&s&&function(e,t,n,i){let r=e;do 0===r.z&&(r.z=rG(r.x,r.y,t,n,i)),r.prevZ=r.prev,r.nextZ=r.next,r=r.next;while(r!==e)r.prevZ.nextZ=null,r.prevZ=null,function(e){let t,n,i,r,a,s,o,l,u=1;do{for(n=e,e=null,a=null,s=0;n;){for(s++,i=n,o=0,t=0;t0||l>0&&i;)0!==o&&(0===l||!i||n.z<=i.z)?(r=n,n=n.nextZ,o--):(r=i,i=i.nextZ,l--),a?a.nextZ=r:e=r,r.prevZ=a,a=r;n=i}a.nextZ=null,u*=2}while(s>1)}(r)}(t,r,a,s);let l=t,u,c;for(;t.prev!==t.next;){if(u=t.prev,c=t.next,s?function(e,t,n,i){let r=e.prev,a=e.next;if(rj(r,e,a)>=0)return!1;let s=r.x,o=e.x,l=a.x,u=r.y,c=e.y,h=a.y,d=so?s>l?s:l:o>l?o:l,m=u>c?u>h?u:h:c>h?c:h,g=rG(d,p,t,n,i),v=rG(f,m,t,n,i),_=e.prevZ,y=e.nextZ;for(;_&&_.z>=g&&y&&y.z<=v;){if(_.x>=d&&_.x<=f&&_.y>=p&&_.y<=m&&_!==r&&_!==a&&rW(s,u,o,c,l,h,_.x,_.y)&&rj(_.prev,_,_.next)>=0||(_=_.prevZ,y.x>=d&&y.x<=f&&y.y>=p&&y.y<=m&&y!==r&&y!==a&&rW(s,u,o,c,l,h,y.x,y.y)&&rj(y.prev,y,y.next)>=0))return!1;y=y.nextZ}for(;_&&_.z>=g;){if(_.x>=d&&_.x<=f&&_.y>=p&&_.y<=m&&_!==r&&_!==a&&rW(s,u,o,c,l,h,_.x,_.y)&&rj(_.prev,_,_.next)>=0)return!1;_=_.prevZ}for(;y&&y.z<=v;){if(y.x>=d&&y.x<=f&&y.y>=p&&y.y<=m&&y!==r&&y!==a&&rW(s,u,o,c,l,h,y.x,y.y)&&rj(y.prev,y,y.next)>=0)return!1;y=y.nextZ}return!0}(t,r,a,s):function(e){let t=e.prev,n=e.next;if(rj(t,e,n)>=0)return!1;let i=t.x,r=e.x,a=n.x,s=t.y,o=e.y,l=n.y,u=ir?i>a?i:a:r>a?r:a,d=s>o?s>l?s:l:o>l?o:l,p=n.next;for(;p!==t;){if(p.x>=u&&p.x<=h&&p.y>=c&&p.y<=d&&rW(i,s,r,o,a,l,p.x,p.y)&&rj(p.prev,p,p.next)>=0)return!1;p=p.next}return!0}(t)){n.push(u.i/i|0),n.push(t.i/i|0),n.push(c.i/i|0),rQ(t),t=c.next,l=c.next;continue}if((t=c)===l){o?1===o?e(t=function(e,t,n){let i=e;do{let r=i.prev,a=i.next.next;!rX(r,a)&&rq(r,i,i.next,a)&&rJ(r,a)&&rJ(a,r)&&(t.push(r.i/n|0),t.push(i.i/n|0),t.push(a.i/n|0),rQ(i),rQ(i.next),i=e=a),i=i.next}while(i!==e)return rH(i)}(rH(t),n,i),n,i,r,a,s,2):2===o&&function(t,n,i,r,a,s){let o=t;do{let t=o.next.next;for(;t!==o.prev;){var l,u;if(o.i!==t.i&&(l=o,u=t,l.next.i!==u.i&&l.prev.i!==u.i&&!function(e,t){let n=e;do{if(n.i!==e.i&&n.next.i!==e.i&&n.i!==t.i&&n.next.i!==t.i&&rq(n,n.next,e,t))return!0;n=n.next}while(n!==e)return!1}(l,u)&&(rJ(l,u)&&rJ(u,l)&&function(e,t){let n=e,i=!1,r=(e.x+t.x)/2,a=(e.y+t.y)/2;do n.y>a!=n.next.y>a&&n.next.y!==n.y&&r<(n.next.x-n.x)*(a-n.y)/(n.next.y-n.y)+n.x&&(i=!i),n=n.next;while(n!==e)return i}(l,u)&&(rj(l.prev,l,u.prev)||rj(l,u.prev,u))||rX(l,u)&&rj(l.prev,l,l.next)>0&&rj(u.prev,u,u.next)>0))){let l=rK(o,t);o=rH(o,o.next),l=rH(l,l.next),e(o,n,i,r,a,s,0),e(l,n,i,r,a,s,0);return}t=t.next}o=o.next}while(o!==t)}(t,n,i,r,a,s):e(rH(t),n,i,r,a,s,1);break}}}(d,p,n,i,r,u,0),p};function rk(e,t,n,i,r){let a,s;if(r===function(e,t,n,i){let r=0;for(let a=t,s=n-i;a0)for(a=t;a=t;a-=i)s=r$(a,e[a],e[a+1],s);return s&&rX(s,s.next)&&(rQ(s),s=s.next),s}function rH(e,t){if(!e)return e;t||(t=e);let n=e,i;do if(i=!1,!n.steiner&&(rX(n,n.next)||0===rj(n.prev,n,n.next))){if(rQ(n),(n=t=n.prev)===n.next)break;i=!0}else n=n.next;while(i||n!==t)return t}function rV(e,t){return e.x-t.x}function rG(e,t,n,i,r){return(e=((e=((e=((e=((e=(e-n)*r|0)|e<<8)&0xff00ff)|e<<4)&0xf0f0f0f)|e<<2)&0x33333333)|e<<1)&0x55555555)|(t=((t=((t=((t=((t=(t-i)*r|0)|t<<8)&0xff00ff)|t<<4)&0xf0f0f0f)|t<<2)&0x33333333)|t<<1)&0x55555555)<<1}function rW(e,t,n,i,r,a,s,o){return(r-s)*(t-o)>=(e-s)*(a-o)&&(e-s)*(i-o)>=(n-s)*(t-o)&&(n-s)*(a-o)>=(r-s)*(i-o)}function rj(e,t,n){return(t.y-e.y)*(n.x-t.x)-(t.x-e.x)*(n.y-t.y)}function rX(e,t){return e.x===t.x&&e.y===t.y}function rq(e,t,n,i){let r=rZ(rj(e,t,n)),a=rZ(rj(e,t,i)),s=rZ(rj(n,i,e)),o=rZ(rj(n,i,t));return!!(r!==a&&s!==o||0===r&&rY(e,n,t)||0===a&&rY(e,i,t)||0===s&&rY(n,e,i)||0===o&&rY(n,t,i))}function rY(e,t,n){return t.x<=Math.max(e.x,n.x)&&t.x>=Math.min(e.x,n.x)&&t.y<=Math.max(e.y,n.y)&&t.y>=Math.min(e.y,n.y)}function rZ(e){return e>0?1:e<0?-1:0}function rJ(e,t){return 0>rj(e.prev,e,e.next)?rj(e,t,e.next)>=0&&rj(e,e.prev,t)>=0:0>rj(e,t,e.prev)||0>rj(e,e.next,t)}function rK(e,t){let n=new r0(e.i,e.x,e.y),i=new r0(t.i,t.x,t.y),r=e.next,a=t.prev;return e.next=t,t.prev=e,n.next=r,r.prev=n,i.next=n,n.prev=i,a.next=i,i.prev=a,i}function r$(e,t,n,i){let r=new r0(e,t,n);return i?(r.next=i.next,r.prev=i,i.next.prev=r,i.next=r):(r.prev=r,r.next=r),r}function rQ(e){e.next.prev=e.prev,e.prev.next=e.next,e.prevZ&&(e.prevZ.nextZ=e.nextZ),e.nextZ&&(e.nextZ.prevZ=e.prevZ)}function r0(e,t,n){this.i=e,this.x=t,this.y=n,this.prev=null,this.next=null,this.z=0,this.prevZ=null,this.nextZ=null,this.steiner=!1}class r1{static area(e){let t=e.length,n=0;for(let i=t-1,r=0;rr1.area(e)}static triangulateShape(e,t){let n=[],i=[],r=[];r2(e),r3(n,e);let a=e.length;t.forEach(r2);for(let e=0;e2&&e[t-1].equals(e[0])&&e.pop()}function r3(e,t){for(let n=0;nNumber.EPSILON){let h=Math.sqrt(c),d=Math.sqrt(l*l+u*u),p=t.x-o/h,f=t.y+s/h,m=((n.x-u/d-p)*u-(n.y+l/d-f)*l)/(s*u-o*l),g=(i=p+s*m-e.x)*i+(r=f+o*m-e.y)*r;if(g<=2)return new Y(i,r);a=Math.sqrt(g/2)}else{let e=!1;s>Number.EPSILON?l>Number.EPSILON&&(e=!0):s<-Number.EPSILON?l<-Number.EPSILON&&(e=!0):Math.sign(o)===Math.sign(u)&&(e=!0),e?(i=-o,r=s,a=Math.sqrt(c)):(i=s,r=o,a=Math.sqrt(c/2))}return new Y(i/a,r/a)}let I=[];for(let e=0,t=E.length,n=t-1,i=e+1;e=0;e--){let t=e/v,n=f*Math.cos(t*Math.PI/2),i=m*Math.sin(t*Math.PI/2)+g;for(let e=0,t=E.length;e=0;){let a=r,s=r-1;s<0&&(s=e.length-1);for(let e=0,r=h+2*v;e0)&&d.push(t,r,l),(e!==n-1||o0!=e>0&&this.version++,this._anisotropy=e}get clearcoat(){return this._clearcoat}set clearcoat(e){this._clearcoat>0!=e>0&&this.version++,this._clearcoat=e}get iridescence(){return this._iridescence}set iridescence(e){this._iridescence>0!=e>0&&this.version++,this._iridescence=e}get dispersion(){return this._dispersion}set dispersion(e){this._dispersion>0!=e>0&&this.version++,this._dispersion=e}get sheen(){return this._sheen}set sheen(e){this._sheen>0!=e>0&&this.version++,this._sheen=e}get transmission(){return this._transmission}set transmission(e){this._transmission>0!=e>0&&this.version++,this._transmission=e}copy(e){return super.copy(e),this.defines={STANDARD:"",PHYSICAL:""},this.anisotropy=e.anisotropy,this.anisotropyRotation=e.anisotropyRotation,this.anisotropyMap=e.anisotropyMap,this.clearcoat=e.clearcoat,this.clearcoatMap=e.clearcoatMap,this.clearcoatRoughness=e.clearcoatRoughness,this.clearcoatRoughnessMap=e.clearcoatRoughnessMap,this.clearcoatNormalMap=e.clearcoatNormalMap,this.clearcoatNormalScale.copy(e.clearcoatNormalScale),this.dispersion=e.dispersion,this.ior=e.ior,this.iridescence=e.iridescence,this.iridescenceMap=e.iridescenceMap,this.iridescenceIOR=e.iridescenceIOR,this.iridescenceThicknessRange=[...e.iridescenceThicknessRange],this.iridescenceThicknessMap=e.iridescenceThicknessMap,this.sheen=e.sheen,this.sheenColor.copy(e.sheenColor),this.sheenColorMap=e.sheenColorMap,this.sheenRoughness=e.sheenRoughness,this.sheenRoughnessMap=e.sheenRoughnessMap,this.transmission=e.transmission,this.transmissionMap=e.transmissionMap,this.thickness=e.thickness,this.thicknessMap=e.thicknessMap,this.attenuationDistance=e.attenuationDistance,this.attenuationColor.copy(e.attenuationColor),this.specularIntensity=e.specularIntensity,this.specularIntensityMap=e.specularIntensityMap,this.specularColor.copy(e.specularColor),this.specularColorMap=e.specularColorMap,this}}class ap extends tH{constructor(e){super(),this.isMeshPhongMaterial=!0,this.type="MeshPhongMaterial",this.color=new tz(0xffffff),this.specular=new tz(1118481),this.shininess=30,this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new tz(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new Y(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new tn,this.combine=0,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.specular.copy(e.specular),this.shininess=e.shininess,this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}}class af extends tH{constructor(e){super(),this.isMeshToonMaterial=!0,this.defines={TOON:""},this.type="MeshToonMaterial",this.color=new tz(0xffffff),this.map=null,this.gradientMap=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new tz(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new Y(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.gradientMap=e.gradientMap,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.fog=e.fog,this}}class am extends tH{constructor(e){super(),this.isMeshNormalMaterial=!0,this.type="MeshNormalMaterial",this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new Y(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.flatShading=!1,this.setValues(e)}copy(e){return super.copy(e),this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.flatShading=e.flatShading,this}}class ag extends tH{constructor(e){super(),this.isMeshLambertMaterial=!0,this.type="MeshLambertMaterial",this.color=new tz(0xffffff),this.map=null,this.lightMap=null,this.lightMapIntensity=1,this.aoMap=null,this.aoMapIntensity=1,this.emissive=new tz(0),this.emissiveIntensity=1,this.emissiveMap=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new Y(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.specularMap=null,this.alphaMap=null,this.envMap=null,this.envMapRotation=new tn,this.combine=0,this.reflectivity=1,this.refractionRatio=.98,this.wireframe=!1,this.wireframeLinewidth=1,this.wireframeLinecap="round",this.wireframeLinejoin="round",this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.color.copy(e.color),this.map=e.map,this.lightMap=e.lightMap,this.lightMapIntensity=e.lightMapIntensity,this.aoMap=e.aoMap,this.aoMapIntensity=e.aoMapIntensity,this.emissive.copy(e.emissive),this.emissiveMap=e.emissiveMap,this.emissiveIntensity=e.emissiveIntensity,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.specularMap=e.specularMap,this.alphaMap=e.alphaMap,this.envMap=e.envMap,this.envMapRotation.copy(e.envMapRotation),this.combine=e.combine,this.reflectivity=e.reflectivity,this.refractionRatio=e.refractionRatio,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this.wireframeLinecap=e.wireframeLinecap,this.wireframeLinejoin=e.wireframeLinejoin,this.flatShading=e.flatShading,this.fog=e.fog,this}}class av extends tH{constructor(e){super(),this.isMeshDepthMaterial=!0,this.type="MeshDepthMaterial",this.depthPacking=3200,this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.wireframe=!1,this.wireframeLinewidth=1,this.setValues(e)}copy(e){return super.copy(e),this.depthPacking=e.depthPacking,this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.wireframe=e.wireframe,this.wireframeLinewidth=e.wireframeLinewidth,this}}class a_ extends tH{constructor(e){super(),this.isMeshDistanceMaterial=!0,this.type="MeshDistanceMaterial",this.map=null,this.alphaMap=null,this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.setValues(e)}copy(e){return super.copy(e),this.map=e.map,this.alphaMap=e.alphaMap,this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this}}class ay extends tH{constructor(e){super(),this.isMeshMatcapMaterial=!0,this.defines={MATCAP:""},this.type="MeshMatcapMaterial",this.color=new tz(0xffffff),this.matcap=null,this.map=null,this.bumpMap=null,this.bumpScale=1,this.normalMap=null,this.normalMapType=0,this.normalScale=new Y(1,1),this.displacementMap=null,this.displacementScale=1,this.displacementBias=0,this.alphaMap=null,this.flatShading=!1,this.fog=!0,this.setValues(e)}copy(e){return super.copy(e),this.defines={MATCAP:""},this.color.copy(e.color),this.matcap=e.matcap,this.map=e.map,this.bumpMap=e.bumpMap,this.bumpScale=e.bumpScale,this.normalMap=e.normalMap,this.normalMapType=e.normalMapType,this.normalScale.copy(e.normalScale),this.displacementMap=e.displacementMap,this.displacementScale=e.displacementScale,this.displacementBias=e.displacementBias,this.alphaMap=e.alphaMap,this.flatShading=e.flatShading,this.fog=e.fog,this}}class ax extends iB{constructor(e){super(),this.isLineDashedMaterial=!0,this.type="LineDashedMaterial",this.scale=1,this.dashSize=3,this.gapSize=1,this.setValues(e)}copy(e){return super.copy(e),this.scale=e.scale,this.dashSize=e.dashSize,this.gapSize=e.gapSize,this}}function ab(e,t,n){return e&&(n||e.constructor!==t)?"number"==typeof t.BYTES_PER_ELEMENT?new t(e):Array.prototype.slice.call(e):e}function aS(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}function aM(e){let t=e.length,n=Array(t);for(let e=0;e!==t;++e)n[e]=e;return n.sort(function(t,n){return e[t]-e[n]}),n}function aT(e,t,n){let i=e.length,r=new e.constructor(i);for(let a=0,s=0;s!==i;++a){let i=n[a]*t;for(let n=0;n!==t;++n)r[s++]=e[i+n]}return r}function aw(e,t,n,i){let r=1,a=e[0];for(;void 0!==a&&void 0===a[i];)a=e[r++];if(void 0===a)return;let s=a[i];if(void 0!==s)if(Array.isArray(s))do void 0!==(s=a[i])&&(t.push(a.time),n.push.apply(n,s)),a=e[r++];while(void 0!==a)else if(void 0!==s.toArray)do void 0!==(s=a[i])&&(t.push(a.time),s.toArray(n,n.length)),a=e[r++];while(void 0!==a)else do void 0!==(s=a[i])&&(t.push(a.time),n.push(s)),a=e[r++];while(void 0!==a)}let aE={convertArray:ab,isTypedArray:aS,getKeyframeOrder:aM,sortedArray:aT,flattenJSON:aw,subclip:function(e,t,n,i,r=30){let a=e.clone();a.name=t;let s=[];for(let e=0;e=i)){l.push(t.times[e]);for(let n=0;na.tracks[e].times[0]&&(o=a.tracks[e].times[0]);for(let e=0;e=r.times[d]){let e=d*u+l,t=e+u-l;i=r.values.slice(e,t)}else{let e=r.createInterpolant(),t=l,n=u-l;e.evaluate(a),i=e.resultBuffer.slice(t,n)}"quaternion"===s&&new ew().fromArray(i).normalize().conjugate().toArray(i);let p=o.times.length;for(let e=0;e=r)){let s=t[1];e=(r=t[--n-1]))break i}a=n,n=0;break r}break n}for(;n>>1;et;)--a;if(++a,0!==r||a!==i){r>=a&&(r=(a=Math.max(a,1))-1);let e=this.getValueSize();this.times=n.slice(r,a),this.values=this.values.slice(r*e,a*e)}return this}validate(){let e=!0,t=this.getValueSize();t-Math.floor(t)!=0&&(console.error("THREE.KeyframeTrack: Invalid value size in track.",this),e=!1);let n=this.times,i=this.values,r=n.length;0===r&&(console.error("THREE.KeyframeTrack: Track is empty.",this),e=!1);let a=null;for(let t=0;t!==r;t++){let i=n[t];if("number"==typeof i&&isNaN(i)){console.error("THREE.KeyframeTrack: Time is not a valid number.",this,t,i),e=!1;break}if(null!==a&&a>i){console.error("THREE.KeyframeTrack: Out of order keys.",this,t,i,a),e=!1;break}a=i}if(void 0!==i&&aS(i))for(let t=0,n=i.length;t!==n;++t){let n=i[t];if(isNaN(n)){console.error("THREE.KeyframeTrack: Value is not a valid number.",this,t,n),e=!1;break}}return e}optimize(){let e=this.times.slice(),t=this.values.slice(),n=this.getValueSize(),i=2302===this.getInterpolation(),r=e.length-1,a=1;for(let s=1;s0){e[a]=e[r];for(let e=r*n,i=a*n,s=0;s!==n;++s)t[i+s]=t[e+s];++a}return a!==e.length?(this.times=e.slice(0,a),this.values=t.slice(0,a*n)):(this.times=e,this.values=t),this}clone(){let e=this.times.slice(),t=this.values.slice(),n=new this.constructor(this.name,e,t);return n.createInterpolant=this.createInterpolant,n}}aI.prototype.TimeBufferType=Float32Array,aI.prototype.ValueBufferType=Float32Array,aI.prototype.DefaultInterpolation=2301;class aL extends aI{constructor(e,t,n){super(e,t,n)}}aL.prototype.ValueTypeName="bool",aL.prototype.ValueBufferType=Array,aL.prototype.DefaultInterpolation=2300,aL.prototype.InterpolantFactoryMethodLinear=void 0,aL.prototype.InterpolantFactoryMethodSmooth=void 0;class aN extends aI{}aN.prototype.ValueTypeName="color";class aU extends aI{}aU.prototype.ValueTypeName="number";class aD extends aA{constructor(e,t,n,i){super(e,t,n,i)}interpolate_(e,t,n,i){let r=this.resultBuffer,a=this.sampleValues,s=this.valueSize,o=(n-t)/(i-t),l=e*s;for(let e=l+s;l!==e;l+=4)ew.slerpFlat(r,0,a,l-s,a,l,o);return r}}class aO extends aI{InterpolantFactoryMethodLinear(e){return new aD(this.times,this.values,this.getValueSize(),e)}}aO.prototype.ValueTypeName="quaternion",aO.prototype.InterpolantFactoryMethodSmooth=void 0;class aF extends aI{constructor(e,t,n){super(e,t,n)}}aF.prototype.ValueTypeName="string",aF.prototype.ValueBufferType=Array,aF.prototype.DefaultInterpolation=2300,aF.prototype.InterpolantFactoryMethodLinear=void 0,aF.prototype.InterpolantFactoryMethodSmooth=void 0;class az extends aI{}az.prototype.ValueTypeName="vector";class aB{constructor(e="",t=-1,n=[],i=2500){this.name=e,this.tracks=n,this.duration=t,this.blendMode=i,this.uuid=H(),this.duration<0&&this.resetDuration()}static parse(e){let t=[],n=e.tracks,i=1/(e.fps||1);for(let e=0,r=n.length;e!==r;++e)t.push((function(e){if(void 0===e.type)throw Error("THREE.KeyframeTrack: track type undefined, can not parse");let t=function(e){switch(e.toLowerCase()){case"scalar":case"double":case"float":case"number":case"integer":return aU;case"vector":case"vector2":case"vector3":case"vector4":return az;case"color":return aN;case"quaternion":return aO;case"bool":case"boolean":return aL;case"string":return aF}throw Error("THREE.KeyframeTrack: Unsupported typeName: "+e)}(e.type);if(void 0===e.times){let t=[],n=[];aw(e.keys,t,n,"value"),e.times=t,e.values=n}return void 0!==t.parse?t.parse(e):new t(e.name,e.times,e.values,e.interpolation)})(n[e]).scale(i));let r=new this(e.name,e.duration,t,e.blendMode);return r.uuid=e.uuid,r}static toJSON(e){let t=[],n=e.tracks,i={name:e.name,duration:e.duration,tracks:t,uuid:e.uuid,blendMode:e.blendMode};for(let e=0,i=n.length;e!==i;++e)t.push(aI.toJSON(n[e]));return i}static CreateFromMorphTargetSequence(e,t,n,i){let r=t.length,a=[];for(let e=0;e1){let e=a[1],t=i[e];t||(i[e]=t=[]),t.push(n)}}let a=[];for(let e in i)a.push(this.CreateFromMorphTargetSequence(e,i[e],t,n));return a}static parseAnimation(e,t){if(!e)return console.error("THREE.AnimationClip: No animation in JSONLoader data."),null;let n=function(e,t,n,i,r){if(0!==n.length){let a=[],s=[];aw(n,a,s,i),0!==a.length&&r.push(new e(t,a,s))}},i=[],r=e.name||"default",a=e.fps||30,s=e.blendMode,o=e.length||-1,l=e.hierarchy||[];for(let e=0;e{t&&t(r),this.manager.itemEnd(e)},0),r;if(void 0!==aW[e])return void aW[e].push({onLoad:t,onProgress:n,onError:i});aW[e]=[],aW[e].push({onLoad:t,onProgress:n,onError:i});let a=new Request(e,{headers:new Headers(this.requestHeader),credentials:this.withCredentials?"include":"same-origin"}),s=this.mimeType,o=this.responseType;fetch(a).then(t=>{if(200===t.status||0===t.status){if(0===t.status&&console.warn("THREE.FileLoader: HTTP Status 0 received."),"u"{if(i)e.close();else{let i=new ProgressEvent("progress",{lengthComputable:s,loaded:o+=r.byteLength,total:a});for(let e=0,t=n.length;e{e.error(t)})}()}}))}throw new aj(`fetch for "${t.url}" responded with ${t.status}: ${t.statusText}`,t)}).then(e=>{switch(o){case"arraybuffer":return e.arrayBuffer();case"blob":return e.blob();case"document":return e.text().then(e=>new DOMParser().parseFromString(e,s));case"json":return e.json();default:if(void 0===s)return e.text();{let t=/charset="?([^;"\s]*)"?/i.exec(s),n=new TextDecoder(t&&t[1]?t[1].toLowerCase():void 0);return e.arrayBuffer().then(e=>n.decode(e))}}}).then(t=>{ak.add(e,t);let n=aW[e];delete aW[e];for(let e=0,i=n.length;e{let n=aW[e];if(void 0===n)throw this.manager.itemError(e),t;delete aW[e];for(let e=0,i=n.length;e{this.manager.itemEnd(e)}),this.manager.itemStart(e)}setResponseType(e){return this.responseType=e,this}setMimeType(e){return this.mimeType=e,this}}class aq extends aG{constructor(e){super(e)}load(e,t,n,i){let r=this,a=new aX(this.manager);a.setPath(this.path),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(e,function(n){try{t(r.parse(JSON.parse(n)))}catch(t){i?i(t):console.error(t),r.manager.itemError(e)}},n,i)}parse(e){let t=[];for(let n=0;n0:i.vertexColors=e.vertexColors),void 0!==e.uniforms)for(let t in e.uniforms){let r=e.uniforms[t];switch(i.uniforms[t]={},r.type){case"t":i.uniforms[t].value=n(r.value);break;case"c":i.uniforms[t].value=new tz().setHex(r.value);break;case"v2":i.uniforms[t].value=new Y().fromArray(r.value);break;case"v3":i.uniforms[t].value=new eE().fromArray(r.value);break;case"v4":i.uniforms[t].value=new e_().fromArray(r.value);break;case"m3":i.uniforms[t].value=new Z().fromArray(r.value);break;case"m4":i.uniforms[t].value=new e2().fromArray(r.value);break;default:i.uniforms[t].value=r.value}}if(void 0!==e.defines&&(i.defines=e.defines),void 0!==e.vertexShader&&(i.vertexShader=e.vertexShader),void 0!==e.fragmentShader&&(i.fragmentShader=e.fragmentShader),void 0!==e.glslVersion&&(i.glslVersion=e.glslVersion),void 0!==e.extensions)for(let t in e.extensions)i.extensions[t]=e.extensions[t];if(void 0!==e.lights&&(i.lights=e.lights),void 0!==e.clipping&&(i.clipping=e.clipping),void 0!==e.size&&(i.size=e.size),void 0!==e.sizeAttenuation&&(i.sizeAttenuation=e.sizeAttenuation),void 0!==e.map&&(i.map=n(e.map)),void 0!==e.matcap&&(i.matcap=n(e.matcap)),void 0!==e.alphaMap&&(i.alphaMap=n(e.alphaMap)),void 0!==e.bumpMap&&(i.bumpMap=n(e.bumpMap)),void 0!==e.bumpScale&&(i.bumpScale=e.bumpScale),void 0!==e.normalMap&&(i.normalMap=n(e.normalMap)),void 0!==e.normalMapType&&(i.normalMapType=e.normalMapType),void 0!==e.normalScale){let t=e.normalScale;!1===Array.isArray(t)&&(t=[t,t]),i.normalScale=new Y().fromArray(t)}return void 0!==e.displacementMap&&(i.displacementMap=n(e.displacementMap)),void 0!==e.displacementScale&&(i.displacementScale=e.displacementScale),void 0!==e.displacementBias&&(i.displacementBias=e.displacementBias),void 0!==e.roughnessMap&&(i.roughnessMap=n(e.roughnessMap)),void 0!==e.metalnessMap&&(i.metalnessMap=n(e.metalnessMap)),void 0!==e.emissiveMap&&(i.emissiveMap=n(e.emissiveMap)),void 0!==e.emissiveIntensity&&(i.emissiveIntensity=e.emissiveIntensity),void 0!==e.specularMap&&(i.specularMap=n(e.specularMap)),void 0!==e.specularIntensityMap&&(i.specularIntensityMap=n(e.specularIntensityMap)),void 0!==e.specularColorMap&&(i.specularColorMap=n(e.specularColorMap)),void 0!==e.envMap&&(i.envMap=n(e.envMap)),void 0!==e.envMapRotation&&i.envMapRotation.fromArray(e.envMapRotation),void 0!==e.envMapIntensity&&(i.envMapIntensity=e.envMapIntensity),void 0!==e.reflectivity&&(i.reflectivity=e.reflectivity),void 0!==e.refractionRatio&&(i.refractionRatio=e.refractionRatio),void 0!==e.lightMap&&(i.lightMap=n(e.lightMap)),void 0!==e.lightMapIntensity&&(i.lightMapIntensity=e.lightMapIntensity),void 0!==e.aoMap&&(i.aoMap=n(e.aoMap)),void 0!==e.aoMapIntensity&&(i.aoMapIntensity=e.aoMapIntensity),void 0!==e.gradientMap&&(i.gradientMap=n(e.gradientMap)),void 0!==e.clearcoatMap&&(i.clearcoatMap=n(e.clearcoatMap)),void 0!==e.clearcoatRoughnessMap&&(i.clearcoatRoughnessMap=n(e.clearcoatRoughnessMap)),void 0!==e.clearcoatNormalMap&&(i.clearcoatNormalMap=n(e.clearcoatNormalMap)),void 0!==e.clearcoatNormalScale&&(i.clearcoatNormalScale=new Y().fromArray(e.clearcoatNormalScale)),void 0!==e.iridescenceMap&&(i.iridescenceMap=n(e.iridescenceMap)),void 0!==e.iridescenceThicknessMap&&(i.iridescenceThicknessMap=n(e.iridescenceThicknessMap)),void 0!==e.transmissionMap&&(i.transmissionMap=n(e.transmissionMap)),void 0!==e.thicknessMap&&(i.thicknessMap=n(e.thicknessMap)),void 0!==e.anisotropyMap&&(i.anisotropyMap=n(e.anisotropyMap)),void 0!==e.sheenColorMap&&(i.sheenColorMap=n(e.sheenColorMap)),void 0!==e.sheenRoughnessMap&&(i.sheenRoughnessMap=n(e.sheenRoughnessMap)),i}setTextures(e){return this.textures=e,this}createMaterialFromType(e){return su.createMaterialFromType(e)}static createMaterialFromType(e){return new({ShadowMaterial:au,SpriteMaterial:nO,RawShaderMaterial:ac,ShaderMaterial:nb,PointsMaterial:iQ,MeshPhysicalMaterial:ad,MeshStandardMaterial:ah,MeshPhongMaterial:ap,MeshToonMaterial:af,MeshNormalMaterial:am,MeshLambertMaterial:ag,MeshDepthMaterial:av,MeshDistanceMaterial:a_,MeshBasicMaterial:tV,MeshMatcapMaterial:ay,LineDashedMaterial:ax,LineBasicMaterial:iB,Material:tH})[e]}}class sc{static decodeText(e){if(console.warn("THREE.LoaderUtils: decodeText() has been deprecated with r165 and will be removed with r175. Use TextDecoder instead."),"u">typeof TextDecoder)return new TextDecoder().decode(e);let t="";for(let n=0,i=e.length;n0){(n=new aZ(new aH(t))).setCrossOrigin(this.crossOrigin);for(let t=0,n=e.length;t0){(t=new aZ(this.manager)).setCrossOrigin(this.crossOrigin);for(let t=0,n=e.length;t{let t=new eR;t.min.fromArray(e.boxMin),t.max.fromArray(e.boxMax);let n=new eq;return n.radius=e.sphereRadius,n.center.fromArray(e.sphereCenter),{boxInitialized:e.boxInitialized,box:t,sphereInitialized:e.sphereInitialized,sphere:n}}),a._maxInstanceCount=e.maxInstanceCount,a._maxVertexCount=e.maxVertexCount,a._maxIndexCount=e.maxIndexCount,a._geometryInitialized=e.geometryInitialized,a._geometryCount=e.geometryCount,a._matricesTexture=c(e.matricesTexture.uuid),void 0!==e.colorsTexture&&(a._colorsTexture=c(e.colorsTexture.uuid));break;case"LOD":a=new nQ;break;case"Line":a=new iq(l(e.geometry),u(e.material));break;case"LineLoop":a=new i$(l(e.geometry),u(e.material));break;case"LineSegments":a=new iK(l(e.geometry),u(e.material));break;case"PointCloud":case"Points":a=new i4(l(e.geometry),u(e.material));break;case"Sprite":a=new nZ(u(e.material));break;case"Group":a=new i6;break;case"Bone":a=new ie;break;default:a=new ty}if(a.uuid=e.uuid,void 0!==e.name&&(a.name=e.name),void 0!==e.matrix?(a.matrix.fromArray(e.matrix),void 0!==e.matrixAutoUpdate&&(a.matrixAutoUpdate=e.matrixAutoUpdate),a.matrixAutoUpdate&&a.matrix.decompose(a.position,a.quaternion,a.scale)):(void 0!==e.position&&a.position.fromArray(e.position),void 0!==e.rotation&&a.rotation.fromArray(e.rotation),void 0!==e.quaternion&&a.quaternion.fromArray(e.quaternion),void 0!==e.scale&&a.scale.fromArray(e.scale)),void 0!==e.up&&a.up.fromArray(e.up),void 0!==e.castShadow&&(a.castShadow=e.castShadow),void 0!==e.receiveShadow&&(a.receiveShadow=e.receiveShadow),e.shadow&&(void 0!==e.shadow.intensity&&(a.shadow.intensity=e.shadow.intensity),void 0!==e.shadow.bias&&(a.shadow.bias=e.shadow.bias),void 0!==e.shadow.normalBias&&(a.shadow.normalBias=e.shadow.normalBias),void 0!==e.shadow.radius&&(a.shadow.radius=e.shadow.radius),void 0!==e.shadow.mapSize&&a.shadow.mapSize.fromArray(e.shadow.mapSize),void 0!==e.shadow.camera&&(a.shadow.camera=this.parseObject(e.shadow.camera))),void 0!==e.visible&&(a.visible=e.visible),void 0!==e.frustumCulled&&(a.frustumCulled=e.frustumCulled),void 0!==e.renderOrder&&(a.renderOrder=e.renderOrder),void 0!==e.userData&&(a.userData=e.userData),void 0!==e.layers&&(a.layers.mask=e.layers),void 0!==e.children){let s=e.children;for(let e=0;e{t&&t(n),r.manager.itemEnd(e)}).catch(e=>{i&&i(e)}):(setTimeout(function(){t&&t(a),r.manager.itemEnd(e)},0),a);let s={};s.credentials="anonymous"===this.crossOrigin?"same-origin":"include",s.headers=this.requestHeader;let o=fetch(e,s).then(function(e){return e.blob()}).then(function(e){return createImageBitmap(e,Object.assign(r.options,{colorSpaceConversion:"none"}))}).then(function(n){return ak.add(e,n),t&&t(n),r.manager.itemEnd(e),n}).catch(function(t){i&&i(t),ak.remove(e),r.manager.itemError(e),r.manager.itemEnd(e)});ak.add(e,o),r.manager.itemStart(e)}}class s_{static getContext(){return void 0===i&&(i=new(window.AudioContext||window.webkitAudioContext)),i}static setContext(e){i=e}}class sy extends aG{constructor(e){super(e)}load(e,t,n,i){let r=this,a=new aX(this.manager);function s(t){i?i(t):console.error(t),r.manager.itemError(e)}a.setResponseType("arraybuffer"),a.setPath(this.path),a.setRequestHeader(this.requestHeader),a.setWithCredentials(this.withCredentials),a.load(e,function(e){try{let n=e.slice(0);s_.getContext().decodeAudioData(n,function(e){t(e)}).catch(s)}catch(e){s(e)}},n,i)}}let sx=new e2,sb=new e2,sS=new e2;class sM{constructor(){this.type="StereoCamera",this.aspect=1,this.eyeSep=.064,this.cameraL=new nE,this.cameraL.layers.enable(1),this.cameraL.matrixAutoUpdate=!1,this.cameraR=new nE,this.cameraR.layers.enable(2),this.cameraR.matrixAutoUpdate=!1,this._cache={focus:null,fov:null,aspect:null,near:null,far:null,zoom:null,eyeSep:null}}update(e){let t=this._cache;if(t.focus!==e.focus||t.fov!==e.fov||t.aspect!==e.aspect*this.aspect||t.near!==e.near||t.far!==e.far||t.zoom!==e.zoom||t.eyeSep!==this.eyeSep){let n,i;t.focus=e.focus,t.fov=e.fov,t.aspect=e.aspect*this.aspect,t.near=e.near,t.far=e.far,t.zoom=e.zoom,t.eyeSep=this.eyeSep,sS.copy(e.projectionMatrix);let r=t.eyeSep/2,a=r*t.near/t.focus,s=t.near*Math.tan(B*t.fov*.5)/t.zoom;sb.elements[12]=-r,sx.elements[12]=r,n=-s*t.aspect+a,i=s*t.aspect+a,sS.elements[0]=2*t.near/(i-n),sS.elements[8]=(i+n)/(i-n),this.cameraL.projectionMatrix.copy(sS),n=-s*t.aspect-a,i=s*t.aspect-a,sS.elements[0]=2*t.near/(i-n),sS.elements[8]=(i+n)/(i-n),this.cameraR.projectionMatrix.copy(sS)}this.cameraL.matrixWorld.copy(e.matrixWorld).multiply(sb),this.cameraR.matrixWorld.copy(e.matrixWorld).multiply(sx)}}class sT extends nE{constructor(e=[]){super(),this.isArrayCamera=!0,this.cameras=e}}class sw{constructor(e=!0){this.autoStart=e,this.startTime=0,this.oldTime=0,this.elapsedTime=0,this.running=!1}start(){this.startTime=sE(),this.oldTime=this.startTime,this.elapsedTime=0,this.running=!0}stop(){this.getElapsedTime(),this.running=!1,this.autoStart=!1}getElapsedTime(){return this.getDelta(),this.elapsedTime}getDelta(){let e=0;if(this.autoStart&&!this.running)return this.start(),0;if(this.running){let t=sE();e=(t-this.oldTime)/1e3,this.oldTime=t,this.elapsedTime+=e}return e}}function sE(){return performance.now()}let sA=new eE,sC=new ew,sR=new eE,sP=new eE;class sI extends ty{constructor(){super(),this.type="AudioListener",this.context=s_.getContext(),this.gain=this.context.createGain(),this.gain.connect(this.context.destination),this.filter=null,this.timeDelta=0,this._clock=new sw}getInput(){return this.gain}removeFilter(){return null!==this.filter&&(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination),this.gain.connect(this.context.destination),this.filter=null),this}getFilter(){return this.filter}setFilter(e){return null!==this.filter?(this.gain.disconnect(this.filter),this.filter.disconnect(this.context.destination)):this.gain.disconnect(this.context.destination),this.filter=e,this.gain.connect(this.filter),this.filter.connect(this.context.destination),this}getMasterVolume(){return this.gain.gain.value}setMasterVolume(e){return this.gain.gain.setTargetAtTime(e,this.context.currentTime,.01),this}updateMatrixWorld(e){super.updateMatrixWorld(e);let t=this.context.listener,n=this.up;if(this.timeDelta=this._clock.getDelta(),this.matrixWorld.decompose(sA,sC,sR),sP.set(0,0,-1).applyQuaternion(sC),t.positionX){let e=this.context.currentTime+this.timeDelta;t.positionX.linearRampToValueAtTime(sA.x,e),t.positionY.linearRampToValueAtTime(sA.y,e),t.positionZ.linearRampToValueAtTime(sA.z,e),t.forwardX.linearRampToValueAtTime(sP.x,e),t.forwardY.linearRampToValueAtTime(sP.y,e),t.forwardZ.linearRampToValueAtTime(sP.z,e),t.upX.linearRampToValueAtTime(n.x,e),t.upY.linearRampToValueAtTime(n.y,e),t.upZ.linearRampToValueAtTime(n.z,e)}else t.setPosition(sA.x,sA.y,sA.z),t.setOrientation(sP.x,sP.y,sP.z,n.x,n.y,n.z)}}class sL extends ty{constructor(e){super(),this.type="Audio",this.listener=e,this.context=e.context,this.gain=this.context.createGain(),this.gain.connect(e.getInput()),this.autoplay=!1,this.buffer=null,this.detune=0,this.loop=!1,this.loopStart=0,this.loopEnd=0,this.offset=0,this.duration=void 0,this.playbackRate=1,this.isPlaying=!1,this.hasPlaybackControl=!0,this.source=null,this.sourceType="empty",this._startedAt=0,this._progress=0,this._connected=!1,this.filters=[]}getOutput(){return this.gain}setNodeSource(e){return this.hasPlaybackControl=!1,this.sourceType="audioNode",this.source=e,this.connect(),this}setMediaElementSource(e){return this.hasPlaybackControl=!1,this.sourceType="mediaNode",this.source=this.context.createMediaElementSource(e),this.connect(),this}setMediaStreamSource(e){return this.hasPlaybackControl=!1,this.sourceType="mediaStreamNode",this.source=this.context.createMediaStreamSource(e),this.connect(),this}setBuffer(e){return this.buffer=e,this.sourceType="buffer",this.autoplay&&this.play(),this}play(e=0){if(!0===this.isPlaying)return void console.warn("THREE.Audio: Audio is already playing.");if(!1===this.hasPlaybackControl)return void console.warn("THREE.Audio: this Audio has no playback control.");this._startedAt=this.context.currentTime+e;let t=this.context.createBufferSource();return t.buffer=this.buffer,t.loop=this.loop,t.loopStart=this.loopStart,t.loopEnd=this.loopEnd,t.onended=this.onEnded.bind(this),t.start(this._startedAt,this._progress+this.offset,this.duration),this.isPlaying=!0,this.source=t,this.setDetune(this.detune),this.setPlaybackRate(this.playbackRate),this.connect()}pause(){return!1===this.hasPlaybackControl?void console.warn("THREE.Audio: this Audio has no playback control."):(!0===this.isPlaying&&(this._progress+=Math.max(this.context.currentTime-this._startedAt,0)*this.playbackRate,!0===this.loop&&(this._progress=this._progress%(this.duration||this.buffer.duration)),this.source.stop(),this.source.onended=null,this.isPlaying=!1),this)}stop(e=0){return!1===this.hasPlaybackControl?void console.warn("THREE.Audio: this Audio has no playback control."):(this._progress=0,null!==this.source&&(this.source.stop(this.context.currentTime+e),this.source.onended=null),this.isPlaying=!1,this)}connect(){if(this.filters.length>0){this.source.connect(this.filters[0]);for(let e=1,t=this.filters.length;e0){this.source.disconnect(this.filters[0]);for(let e=1,t=this.filters.length;e0&&this._mixBufferRegionAdditive(n,i,this._addIndex*t,1,t);for(let e=t,r=t+t;e!==r;++e)if(n[e]!==n[e+t]){s.setValue(n,i);break}}saveOriginalState(){let e=this.binding,t=this.buffer,n=this.valueSize,i=n*this._origIndex;e.getValue(t,i);for(let e=n;e!==i;++e)t[e]=t[i+e%n];this._setIdentity(),this.cumulativeWeight=0,this.cumulativeWeightAdditive=0}restoreOriginalState(){let e=3*this.valueSize;this.binding.setValue(this.buffer,e)}_setAdditiveIdentityNumeric(){let e=this._addIndex*this.valueSize,t=e+this.valueSize;for(let n=e;n=.5)for(let i=0;i!==r;++i)e[t+i]=e[n+i]}_slerp(e,t,n,i){ew.slerpFlat(e,t,e,t,e,n,i)}_slerpAdditive(e,t,n,i,r){let a=this._workIndex*r;ew.multiplyQuaternionsFlat(e,a,e,t,e,n),ew.slerpFlat(e,t,e,t,e,a,i)}_lerp(e,t,n,i,r){let a=1-i;for(let s=0;s!==r;++s){let r=t+s;e[r]=e[r]*a+e[n+s]*i}}_lerpAdditive(e,t,n,i,r){for(let a=0;a!==r;++a){let r=t+a;e[r]=e[r]+e[n+a]*i}}}let sk="\\[\\]\\.:\\/",sH=RegExp("["+sk+"]","g"),sV="[^"+sk+"]",sG="[^"+sk.replace("\\.","")+"]",sW=RegExp("^"+/((?:WC+[\/:])*)/.source.replace("WC",sV)+/(WCOD+)?/.source.replace("WCOD",sG)+/(?:\.(WC+)(?:\[(.+)\])?)?/.source.replace("WC",sV)+/\.(WC+)(?:\[(.+)\])?/.source.replace("WC",sV)+"$"),sj=["material","materials","bones","map"];class sX{constructor(e,t,n){this.path=t,this.parsedPath=n||sX.parseTrackName(t),this.node=sX.findNode(e,this.parsedPath.nodeName),this.rootNode=e,this.getValue=this._getValue_unbound,this.setValue=this._setValue_unbound}static create(e,t,n){return e&&e.isAnimationObjectGroup?new sX.Composite(e,t,n):new sX(e,t,n)}static sanitizeNodeName(e){return e.replace(/\s/g,"_").replace(sH,"")}static parseTrackName(e){let t=sW.exec(e);if(null===t)throw Error("PropertyBinding: Cannot parse trackName: "+e);let n={nodeName:t[2],objectName:t[3],objectIndex:t[4],propertyName:t[5],propertyIndex:t[6]},i=n.nodeName&&n.nodeName.lastIndexOf(".");if(void 0!==i&&-1!==i){let e=n.nodeName.substring(i+1);-1!==sj.indexOf(e)&&(n.nodeName=n.nodeName.substring(0,i),n.objectName=e)}if(null===n.propertyName||0===n.propertyName.length)throw Error("PropertyBinding: can not parse propertyName from trackName: "+e);return n}static findNode(e,t){if(void 0===t||""===t||"."===t||-1===t||t===e.name||t===e.uuid)return e;if(e.skeleton){let n=e.skeleton.getBoneByName(t);if(void 0!==n)return n}if(e.children){let n=function(e){for(let i=0;i=r){let a=r++,u=e[a];t[u.uuid]=l,e[l]=u,t[o]=a,e[a]=s;for(let e=0;e!==i;++e){let t=n[e],i=t[a],r=t[l];t[l]=i,t[a]=r}}}this.nCachedObjects_=r}uncache(){let e=this._objects,t=this._indicesByUUID,n=this._bindings,i=n.length,r=this.nCachedObjects_,a=e.length;for(let s=0,o=arguments.length;s!==o;++s){let o=arguments[s],l=o.uuid,u=t[l];if(void 0!==u)if(delete t[l],u0&&(t[s.uuid]=u),e[u]=s,e.pop();for(let e=0;e!==i;++e){let t=n[e];t[u]=t[r],t.pop()}}}this.nCachedObjects_=r}subscribe_(e,t){let n=this._bindingsIndicesByPath,i=n[e],r=this._bindings;if(void 0!==i)return r[i];let a=this._paths,s=this._parsedPaths,o=this._objects,l=o.length,u=this.nCachedObjects_,c=Array(l);i=r.length,n[e]=i,a.push(e),s.push(t),r.push(c);for(let n=u,i=o.length;n!==i;++n){let i=o[n];c[n]=new sX(i,e,t)}return c}unsubscribe_(e){let t=this._bindingsIndicesByPath,n=t[e];if(void 0!==n){let i=this._paths,r=this._parsedPaths,a=this._bindings,s=a.length-1,o=a[s];t[e[s]]=n,a[n]=o,a.pop(),r[n]=r[s],r.pop(),i[n]=i[s],i.pop()}}}class sY{constructor(e,t,n=null,i=t.blendMode){this._mixer=e,this._clip=t,this._localRoot=n,this.blendMode=i;const r=t.tracks,a=r.length,s=Array(a),o={endingStart:2400,endingEnd:2400};for(let e=0;e!==a;++e){const t=r[e].createInterpolant(null);s[e]=t,t.settings=o}this._interpolantSettings=o,this._interpolants=s,this._propertyBindings=Array(a),this._cacheIndex=null,this._byClipCacheIndex=null,this._timeScaleInterpolant=null,this._weightInterpolant=null,this.loop=2201,this._loopCount=-1,this._startTime=null,this.time=0,this.timeScale=1,this._effectiveTimeScale=1,this.weight=1,this._effectiveWeight=1,this.repetitions=1/0,this.paused=!1,this.enabled=!0,this.clampWhenFinished=!1,this.zeroSlopeAtStart=!0,this.zeroSlopeAtEnd=!0}play(){return this._mixer._activateAction(this),this}stop(){return this._mixer._deactivateAction(this),this.reset()}reset(){return this.paused=!1,this.enabled=!0,this.time=0,this._loopCount=-1,this._startTime=null,this.stopFading().stopWarping()}isRunning(){return this.enabled&&!this.paused&&0!==this.timeScale&&null===this._startTime&&this._mixer._isActiveAction(this)}isScheduled(){return this._mixer._isActiveAction(this)}startAt(e){return this._startTime=e,this}setLoop(e,t){return this.loop=e,this.repetitions=t,this}setEffectiveWeight(e){return this.weight=e,this._effectiveWeight=this.enabled?e:0,this.stopFading()}getEffectiveWeight(){return this._effectiveWeight}fadeIn(e){return this._scheduleFading(e,0,1)}fadeOut(e){return this._scheduleFading(e,1,0)}crossFadeFrom(e,t,n){if(e.fadeOut(t),this.fadeIn(t),n){let n=this._clip.duration,i=e._clip.duration;e.warp(1,i/n,t),this.warp(n/i,1,t)}return this}crossFadeTo(e,t,n){return e.crossFadeFrom(this,t,n)}stopFading(){let e=this._weightInterpolant;return null!==e&&(this._weightInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}setEffectiveTimeScale(e){return this.timeScale=e,this._effectiveTimeScale=this.paused?0:e,this.stopWarping()}getEffectiveTimeScale(){return this._effectiveTimeScale}setDuration(e){return this.timeScale=this._clip.duration/e,this.stopWarping()}syncWith(e){return this.time=e.time,this.timeScale=e.timeScale,this.stopWarping()}halt(e){return this.warp(this._effectiveTimeScale,0,e)}warp(e,t,n){let i=this._mixer,r=i.time,a=this.timeScale,s=this._timeScaleInterpolant;null===s&&(s=i._lendControlInterpolant(),this._timeScaleInterpolant=s);let o=s.parameterPositions,l=s.sampleValues;return o[0]=r,o[1]=r+n,l[0]=e/a,l[1]=t/a,this}stopWarping(){let e=this._timeScaleInterpolant;return null!==e&&(this._timeScaleInterpolant=null,this._mixer._takeBackControlInterpolant(e)),this}getMixer(){return this._mixer}getClip(){return this._clip}getRoot(){return this._localRoot||this._mixer._root}_update(e,t,n,i){if(!this.enabled)return void this._updateWeight(e);let r=this._startTime;if(null!==r){let i=(e-r)*n;i<0||0===n?t=0:(this._startTime=null,t=n*i)}t*=this._updateTimeScale(e);let a=this._updateTime(t),s=this._updateWeight(e);if(s>0){let e=this._interpolants,t=this._propertyBindings;if(2501===this.blendMode)for(let n=0,i=e.length;n!==i;++n)e[n].evaluate(a),t[n].accumulateAdditive(s);else for(let n=0,r=e.length;n!==r;++n)e[n].evaluate(a),t[n].accumulate(i,s)}}_updateWeight(e){let t=0;if(this.enabled){t=this.weight;let n=this._weightInterpolant;if(null!==n){let i=n.evaluate(e)[0];t*=i,e>n.parameterPositions[1]&&(this.stopFading(),0===i&&(this.enabled=!1))}}return this._effectiveWeight=t,t}_updateTimeScale(e){let t=0;if(!this.paused){t=this.timeScale;let n=this._timeScaleInterpolant;null!==n&&(t*=n.evaluate(e)[0],e>n.parameterPositions[1]&&(this.stopWarping(),0===t?this.paused=!0:this.timeScale=t))}return this._effectiveTimeScale=t,t}_updateTime(e){let t=this._clip.duration,n=this.loop,i=this.time+e,r=this._loopCount,a=2202===n;if(0===e)return -1===r?i:a&&(1&r)==1?t-i:i;if(2200===n){-1===r&&(this._loopCount=0,this._setEndings(!0,!0,!1));s:{if(i>=t)i=t;else if(i<0)i=0;else{this.time=i;break s}this.clampWhenFinished?this.paused=!0:this.enabled=!1,this.time=i,this._mixer.dispatchEvent({type:"finished",action:this,direction:e<0?-1:1})}}else{if(-1===r&&(e>=0?(r=0,this._setEndings(!0,0===this.repetitions,a)):this._setEndings(0===this.repetitions,!0,a)),i>=t||i<0){let n=Math.floor(i/t);i-=t*n,r+=Math.abs(n);let s=this.repetitions-r;if(s<=0)this.clampWhenFinished?this.paused=!0:this.enabled=!1,i=e>0?t:0,this.time=i,this._mixer.dispatchEvent({type:"finished",action:this,direction:e>0?1:-1});else{if(1===s){let t=e<0;this._setEndings(t,!t,a)}else this._setEndings(!1,!1,a);this._loopCount=r,this.time=i,this._mixer.dispatchEvent({type:"loop",action:this,loopDelta:n})}}else this.time=i;if(a&&(1&r)==1)return t-i}return i}_setEndings(e,t,n){let i=this._interpolantSettings;n?(i.endingStart=2401,i.endingEnd=2401):(e?i.endingStart=this.zeroSlopeAtStart?2401:2400:i.endingStart=2402,t?i.endingEnd=this.zeroSlopeAtEnd?2401:2400:i.endingEnd=2402)}_scheduleFading(e,t,n){let i=this._mixer,r=i.time,a=this._weightInterpolant;null===a&&(a=i._lendControlInterpolant(),this._weightInterpolant=a);let s=a.parameterPositions,o=a.sampleValues;return s[0]=r,o[0]=t,s[1]=r+e,o[1]=n,this}}let sZ=new Float32Array(1);class sJ extends O{constructor(e){super(),this._root=e,this._initMemoryManager(),this._accuIndex=0,this.time=0,this.timeScale=1}_bindAction(e,t){let n=e._localRoot||this._root,i=e._clip.tracks,r=i.length,a=e._propertyBindings,s=e._interpolants,o=n.uuid,l=this._bindingsByRootAndName,u=l[o];void 0===u&&(u={},l[o]=u);for(let e=0;e!==r;++e){let r=i[e],l=r.name,c=u[l];if(void 0!==c)++c.referenceCount,a[e]=c;else{if(void 0!==(c=a[e])){null===c._cacheIndex&&(++c.referenceCount,this._addInactiveBinding(c,o,l));continue}let i=t&&t._propertyBindings[e].binding.parsedPath;c=new sB(sX.create(n,l,i),r.ValueTypeName,r.getValueSize()),++c.referenceCount,this._addInactiveBinding(c,o,l),a[e]=c}s[e].resultBuffer=c.buffer}}_activateAction(e){if(!this._isActiveAction(e)){if(null===e._cacheIndex){let t=(e._localRoot||this._root).uuid,n=e._clip.uuid,i=this._actionsByClip[n];this._bindAction(e,i&&i.knownActions[0]),this._addInactiveAction(e,n,t)}let t=e._propertyBindings;for(let e=0,n=t.length;e!==n;++e){let n=t[e];0==n.useCount++&&(this._lendBinding(n),n.saveOriginalState())}this._lendAction(e)}}_deactivateAction(e){if(this._isActiveAction(e)){let t=e._propertyBindings;for(let e=0,n=t.length;e!==n;++e){let n=t[e];0==--n.useCount&&(n.restoreOriginalState(),this._takeBackBinding(n))}this._takeBackAction(e)}}_initMemoryManager(){this._actions=[],this._nActiveActions=0,this._actionsByClip={},this._bindings=[],this._nActiveBindings=0,this._bindingsByRootAndName={},this._controlInterpolants=[],this._nActiveControlInterpolants=0;let e=this;this.stats={actions:{get total(){return e._actions.length},get inUse(){return e._nActiveActions}},bindings:{get total(){return e._bindings.length},get inUse(){return e._nActiveBindings}},controlInterpolants:{get total(){return e._controlInterpolants.length},get inUse(){return e._nActiveControlInterpolants}}}}_isActiveAction(e){let t=e._cacheIndex;return null!==t&&t=0;--n)e[n].stop();return this}update(e){e*=this.timeScale;let t=this._actions,n=this._nActiveActions,i=this.time+=e,r=Math.sign(e),a=this._accuIndex^=1;for(let s=0;s!==n;++s)t[s]._update(i,e,r,a);let s=this._bindings,o=this._nActiveBindings;for(let e=0;e!==o;++e)s[e].apply(a);return this}setTime(e){this.time=0;for(let e=0;e=this.min.x&&e.x<=this.max.x&&e.y>=this.min.y&&e.y<=this.max.y}containsBox(e){return this.min.x<=e.min.x&&e.max.x<=this.max.x&&this.min.y<=e.min.y&&e.max.y<=this.max.y}getParameter(e,t){return t.set((e.x-this.min.x)/(this.max.x-this.min.x),(e.y-this.min.y)/(this.max.y-this.min.y))}intersectsBox(e){return e.max.x>=this.min.x&&e.min.x<=this.max.x&&e.max.y>=this.min.y&&e.min.y<=this.max.y}clampPoint(e,t){return t.copy(e).clamp(this.min,this.max)}distanceToPoint(e){return this.clampPoint(e,s7).distanceTo(e)}intersect(e){return this.min.max(e.min),this.max.min(e.max),this.isEmpty()&&this.makeEmpty(),this}union(e){return this.min.min(e.min),this.max.max(e.max),this}translate(e){return this.min.add(e),this.max.add(e),this}equals(e){return e.min.equals(this.min)&&e.max.equals(this.max)}}let ot=new eE,on=new eE;class oi{constructor(e=new eE,t=new eE){this.start=e,this.end=t}set(e,t){return this.start.copy(e),this.end.copy(t),this}copy(e){return this.start.copy(e.start),this.end.copy(e.end),this}getCenter(e){return e.addVectors(this.start,this.end).multiplyScalar(.5)}delta(e){return e.subVectors(this.end,this.start)}distanceSq(){return this.start.distanceToSquared(this.end)}distance(){return this.start.distanceTo(this.end)}at(e,t){return this.delta(t).multiplyScalar(e).add(this.start)}closestPointToPointParameter(e,t){ot.subVectors(e,this.start),on.subVectors(this.end,this.start);let n=on.dot(on),i=on.dot(ot)/n;return t&&(i=V(i,0,1)),i}closestPointToPoint(e,t,n){let i=this.closestPointToPointParameter(e,t);return this.delta(n).multiplyScalar(i).add(this.start)}applyMatrix4(e){return this.start.applyMatrix4(e),this.end.applyMatrix4(e),this}equals(e){return e.start.equals(this.start)&&e.end.equals(this.end)}clone(){return new this.constructor().copy(this)}}let or=new eE;class oa extends ty{constructor(e,t){super(),this.light=e,this.matrixAutoUpdate=!1,this.color=t,this.type="SpotLightHelper";const n=new nn,i=[0,0,0,0,0,1,0,0,0,1,0,1,0,0,0,-1,0,1,0,0,0,0,1,1,0,0,0,0,-1,1];for(let e=0,t=1;e<32;e++,t++){const n=e/32*Math.PI*2,r=t/32*Math.PI*2;i.push(Math.cos(n),Math.sin(n),1,Math.cos(r),Math.sin(r),1)}n.setAttribute("position",new t4(i,3));const r=new iB({fog:!1,toneMapped:!1});this.cone=new iK(n,r),this.add(this.cone),this.update()}dispose(){this.cone.geometry.dispose(),this.cone.material.dispose()}update(){this.light.updateWorldMatrix(!0,!1),this.light.target.updateWorldMatrix(!0,!1),this.parent?(this.parent.updateWorldMatrix(!0),this.matrix.copy(this.parent.matrixWorld).invert().multiply(this.light.matrixWorld)):this.matrix.copy(this.light.matrixWorld),this.matrixWorld.copy(this.light.matrixWorld);let e=this.light.distance?this.light.distance:1e3,t=e*Math.tan(this.light.angle);this.cone.scale.set(t,t,e),or.setFromMatrixPosition(this.light.target.matrixWorld),this.cone.lookAt(or),void 0!==this.color?this.cone.material.color.set(this.color):this.cone.material.color.copy(this.light.color)}}let os=new eE,oo=new e2,ol=new e2;class ou extends iK{constructor(e){const t=function e(t){let n=[];!0===t.isBone&&n.push(t);for(let i=0;i1)for(let n=0;n.99999)this.quaternion.set(0,0,0,1);else if(e.y<-.99999)this.quaternion.set(1,0,0,0);else{oR.set(e.z,0,-e.x).normalize();let t=Math.acos(e.y);this.quaternion.setFromAxisAngle(oR,t)}}setLength(e,t=.2*e,n=.2*t){this.line.scale.set(1,Math.max(1e-4,e-t),1),this.line.updateMatrix(),this.cone.scale.set(n,t,n),this.cone.position.y=e,this.cone.updateMatrix()}setColor(e){this.line.material.color.set(e),this.cone.material.color.set(e)}copy(e){return super.copy(e,!1),this.line.copy(e.line),this.cone.copy(e.cone),this}dispose(){this.line.geometry.dispose(),this.line.material.dispose(),this.cone.geometry.dispose(),this.cone.material.dispose()}}class oI extends iK{constructor(e=1){const t=new nn;t.setAttribute("position",new t4([0,0,0,e,0,0,0,0,0,0,e,0,0,0,0,0,0,e],3)),t.setAttribute("color",new t4([1,0,0,1,.6,0,0,1,0,.6,1,0,0,0,1,0,.6,1],3)),super(t,new iB({vertexColors:!0,toneMapped:!1})),this.type="AxesHelper"}setColors(e,t,n){let i=new tz,r=this.geometry.attributes.color.array;return i.set(e),i.toArray(r,0),i.toArray(r,3),i.set(t),i.toArray(r,6),i.toArray(r,9),i.set(n),i.toArray(r,12),i.toArray(r,15),this.geometry.attributes.color.needsUpdate=!0,this}dispose(){this.geometry.dispose(),this.material.dispose()}}class oL{constructor(){this.type="ShapePath",this.color=new tz,this.subPaths=[],this.currentPath=null}moveTo(e,t){return this.currentPath=new rw,this.subPaths.push(this.currentPath),this.currentPath.moveTo(e,t),this}lineTo(e,t){return this.currentPath.lineTo(e,t),this}quadraticCurveTo(e,t,n,i){return this.currentPath.quadraticCurveTo(e,t,n,i),this}bezierCurveTo(e,t,n,i,r,a){return this.currentPath.bezierCurveTo(e,t,n,i,r,a),this}splineThru(e){return this.currentPath.splineThru(e),this}toShapes(e){let t,n,i,r,a,s=r1.isClockWise,o=this.subPaths;if(0===o.length)return[];let l=[];if(1===o.length)return n=o[0],(i=new rz).curves=n.curves,l.push(i),l;let u=!s(o[0].getPoints());u=e?!u:u;let c=[],h=[],d=[],p=0;h[0]=void 0,d[p]=[];for(let i=0,a=o.length;i1){let e=!1,t=0;for(let e=0,t=h.length;eNumber.EPSILON){if(l<0&&(n=t[a],o=-o,s=t[r],l=-l),e.ys.y)continue;if(e.y===n.y){if(e.x===n.x)return!0}else{let t=l*(e.x-n.x)-o*(e.y-n.y);if(0===t)return!0;if(t<0)continue;i=!i}}else{if(e.y!==n.y)continue;if(s.x<=e.x&&e.x<=n.x||n.x<=e.x&&e.x<=s.x)return!0}}return i})(a.p,h[i].p)&&(n!==i&&t++,s?(s=!1,c[i].push(a)):e=!0);s&&c[n].push(a)}}t>0&&!1===e&&(d=c)}for(let e=0,t=h.length;et?(e.repeat.x=1,e.repeat.y=n/t,e.offset.x=0,e.offset.y=(1-e.repeat.y)/2):(e.repeat.x=t/n,e.repeat.y=1,e.offset.x=(1-e.repeat.x)/2,e.offset.y=0),e},cover:function(e,t){let n=e.image&&e.image.width?e.image.width/e.image.height:1;return n>t?(e.repeat.x=t/n,e.repeat.y=1,e.offset.x=(1-e.repeat.x)/2,e.offset.y=0):(e.repeat.x=1,e.repeat.y=n/t,e.offset.x=0,e.offset.y=(1-e.repeat.y)/2),e},fill:function(e){return e.repeat.x=1,e.repeat.y=1,e.offset.x=0,e.offset.y=0,e},getByteLength:oU};class oO extends ex{constructor(e=1,t=1,n=1,i={}){console.warn('THREE.WebGLMultipleRenderTargets has been deprecated and will be removed in r172. Use THREE.WebGLRenderTarget and set the "count" parameter to enable MRT.'),super(e,t,{...i,count:n}),this.isWebGLMultipleRenderTargets=!0}get texture(){return this.textures}}function oF(){let e=null,t=!1,n=null,i=null;function r(t,a){n(t,a),i=e.requestAnimationFrame(r)}return{start:function(){!0===t||null!==n&&(i=e.requestAnimationFrame(r),t=!0)},stop:function(){e.cancelAnimationFrame(i),t=!1},setAnimationLoop:function(e){n=e},setContext:function(t){e=t}}}function oz(e){let t=new WeakMap;return{get:function(e){return e.isInterleavedBufferAttribute&&(e=e.data),t.get(e)},remove:function(n){n.isInterleavedBufferAttribute&&(n=n.data);let i=t.get(n);i&&(e.deleteBuffer(i.buffer),t.delete(n))},update:function(n,i){if(n.isInterleavedBufferAttribute&&(n=n.data),n.isGLBufferAttribute){let e=t.get(n);(!e||e.versione.start-t.start);let t=0;for(let e=1;etypeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("register",{detail:{revision:"171"}})),"u">typeof window&&(window.__THREE__?console.warn("WARNING: Multiple instances of Three.js being imported."):window.__THREE__="171"),e.s(["ACESFilmicToneMapping",0,4,"AddEquation",0,100,"AddOperation",0,2,"AdditiveAnimationBlendMode",0,2501,"AdditiveBlending",0,2,"AgXToneMapping",0,6,"AlphaFormat",0,1021,"AlwaysCompare",0,519,"AlwaysDepth",0,1,"AlwaysStencilFunc",0,519,"AmbientLight",0,sa,"AnimationAction",0,sY,"AnimationClip",0,aB,"AnimationLoader",0,aq,"AnimationMixer",0,sJ,"AnimationObjectGroup",0,sq,"AnimationUtils",0,aE,"ArcCurve",0,rs,"ArrayCamera",0,sT,"ArrowHelper",0,oP,"AttachedBindMode",0,R,"Audio",0,sL,"AudioAnalyser",0,sz,"AudioContext",0,s_,"AudioListener",0,sI,"AudioLoader",0,sy,"AxesHelper",0,oI,"BackSide",0,1,"BasicDepthPacking",0,3200,"BasicShadowMap",0,0,"BatchedMesh",0,iz,"Bone",0,ie,"BooleanKeyframeTrack",0,aL,"Box2",0,oe,"Box3",0,eR,"Box3Helper",0,oA,"BoxGeometry",0,ng,"BoxHelper",0,oE,"BufferAttribute",0,tZ,"BufferGeometry",0,nn,"BufferGeometryLoader",0,sd,"ByteType",0,1010,"Cache",0,ak,"Camera",0,nS,"CameraHelper",0,oM,"CanvasTexture",0,rn,"CapsuleGeometry",0,rA,"CatmullRomCurve3",0,rd,"CineonToneMapping",0,3,"CircleGeometry",0,rC,"ClampToEdgeWrapping",0,1001,"Clock",0,sw,"Color",0,tz,"ColorKeyframeTrack",0,aN,"ColorManagement",0,eu,"CompressedArrayTexture",0,re,"CompressedCubeTexture",0,rt,"CompressedTexture",0,i7,"CompressedTextureLoader",0,aY,"ConeGeometry",0,rP,"ConstantAlphaFactor",0,213,"ConstantColorFactor",0,211,"Controls",0,oN,"CubeCamera",0,nA,"CubeReflectionMapping",0,301,"CubeRefractionMapping",0,302,"CubeTexture",0,nC,"CubeTextureLoader",0,aJ,"CubeUVReflectionMapping",0,306,"CubicBezierCurve",0,rg,"CubicBezierCurve3",0,rv,"CubicInterpolant",0,aC,"CullFaceBack",0,1,"CullFaceFront",0,2,"CullFaceFrontBack",0,3,"CullFaceNone",0,0,"Curve",0,rr,"CurvePath",0,rT,"CustomBlending",0,5,"CustomToneMapping",0,5,"CylinderGeometry",0,rR,"Cylindrical",0,s8,"Data3DTexture",0,eM,"DataArrayTexture",0,eb,"DataTexture",0,it,"DataTextureLoader",0,aK,"DataUtils",0,tX,"DecrementStencilOp",0,7683,"DecrementWrapStencilOp",0,34056,"DefaultLoadingManager",0,aV,"DepthFormat",0,1026,"DepthStencilFormat",0,1027,"DepthTexture",0,ri,"DetachedBindMode",0,P,"DirectionalLight",0,sr,"DirectionalLightHelper",0,ox,"DiscreteInterpolant",0,aP,"DodecahedronGeometry",0,rL,"DoubleSide",0,2,"DstAlphaFactor",0,206,"DstColorFactor",0,208,"DynamicCopyUsage",0,35050,"DynamicDrawUsage",0,35048,"DynamicReadUsage",0,35049,"EdgesGeometry",0,rF,"EllipseCurve",0,ra,"EqualCompare",0,514,"EqualDepth",0,4,"EqualStencilFunc",0,514,"EquirectangularReflectionMapping",0,303,"EquirectangularRefractionMapping",0,304,"Euler",0,tn,"EventDispatcher",0,O,"ExtrudeGeometry",0,r4,"FileLoader",0,aX,"Float16BufferAttribute",0,t3,"Float32BufferAttribute",0,t4,"FloatType",0,1015,"Fog",0,nI,"FogExp2",0,nP,"FramebufferTexture",0,i9,"FrontSide",0,0,"Frustum",0,iS,"GLBufferAttribute",0,s1,"GLSL1",0,"100","GLSL3",0,D,"GreaterCompare",0,516,"GreaterDepth",0,6,"GreaterEqualCompare",0,518,"GreaterEqualDepth",0,5,"GreaterEqualStencilFunc",0,518,"GreaterStencilFunc",0,516,"GridHelper",0,om,"Group",0,i6,"HalfFloatType",0,1016,"HemisphereLight",0,a0,"HemisphereLightHelper",0,of,"IcosahedronGeometry",0,r6,"ImageBitmapLoader",0,sv,"ImageLoader",0,aZ,"ImageUtils",0,ed,"IncrementStencilOp",0,7682,"IncrementWrapStencilOp",0,34055,"InstancedBufferAttribute",0,is,"InstancedBufferGeometry",0,sh,"InstancedInterleavedBuffer",0,s0,"InstancedMesh",0,im,"Int16BufferAttribute",0,tQ,"Int32BufferAttribute",0,t1,"Int8BufferAttribute",0,tJ,"IntType",0,1013,"InterleavedBuffer",0,nN,"InterleavedBufferAttribute",0,nD,"Interpolant",0,aA,"InterpolateDiscrete",0,2300,"InterpolateLinear",0,2301,"InterpolateSmooth",0,2302,"InvertStencilOp",0,5386,"KeepStencilOp",0,7680,"KeyframeTrack",0,aI,"LOD",0,nQ,"LatheGeometry",0,rE,"Layers",0,ti,"LessCompare",0,513,"LessDepth",0,2,"LessEqualCompare",0,515,"LessEqualDepth",0,3,"LessEqualStencilFunc",0,515,"LessStencilFunc",0,513,"Light",0,aQ,"LightProbe",0,sl,"Line",0,iq,"Line3",0,oi,"LineBasicMaterial",0,iB,"LineCurve",0,r_,"LineCurve3",0,ry,"LineDashedMaterial",0,ax,"LineLoop",0,i$,"LineSegments",0,iK,"LinearFilter",0,1006,"LinearInterpolant",0,aR,"LinearMipMapLinearFilter",0,1008,"LinearMipMapNearestFilter",0,1007,"LinearMipmapLinearFilter",0,1008,"LinearMipmapNearestFilter",0,1007,"LinearSRGBColorSpace",0,L,"LinearToneMapping",0,1,"LinearTransfer",0,N,"Loader",0,aG,"LoaderUtils",0,sc,"LoadingManager",0,aH,"LoopOnce",0,2200,"LoopPingPong",0,2202,"LoopRepeat",0,2201,"LuminanceAlphaFormat",0,1025,"LuminanceFormat",0,1024,"MOUSE",0,A,"Material",0,tH,"MaterialLoader",0,su,"MathUtils",0,q,"Matrix2",0,s9,"Matrix3",0,Z,"Matrix4",0,e2,"MaxEquation",0,104,"Mesh",0,nf,"MeshBasicMaterial",0,tV,"MeshDepthMaterial",0,av,"MeshDistanceMaterial",0,a_,"MeshLambertMaterial",0,ag,"MeshMatcapMaterial",0,ay,"MeshNormalMaterial",0,am,"MeshPhongMaterial",0,ap,"MeshPhysicalMaterial",0,ad,"MeshStandardMaterial",0,ah,"MeshToonMaterial",0,af,"MinEquation",0,103,"MirroredRepeatWrapping",0,1002,"MixOperation",0,1,"MultiplyBlending",0,4,"MultiplyOperation",0,0,"NearestFilter",0,1003,"NearestMipMapLinearFilter",0,1005,"NearestMipMapNearestFilter",0,1004,"NearestMipmapLinearFilter",0,1005,"NearestMipmapNearestFilter",0,1004,"NeutralToneMapping",0,7,"NeverCompare",0,512,"NeverDepth",0,0,"NeverStencilFunc",0,512,"NoBlending",0,0,"NoColorSpace",0,"","NoToneMapping",0,0,"NormalAnimationBlendMode",0,2500,"NormalBlending",0,1,"NotEqualCompare",0,517,"NotEqualDepth",0,7,"NotEqualStencilFunc",0,517,"NumberKeyframeTrack",0,aU,"Object3D",0,ty,"ObjectLoader",0,sp,"ObjectSpaceNormalMap",0,1,"OctahedronGeometry",0,r8,"OneFactor",0,201,"OneMinusConstantAlphaFactor",0,214,"OneMinusConstantColorFactor",0,212,"OneMinusDstAlphaFactor",0,207,"OneMinusDstColorFactor",0,209,"OneMinusSrcAlphaFactor",0,205,"OneMinusSrcColorFactor",0,203,"OrthographicCamera",0,sn,"PCFShadowMap",0,1,"PCFSoftShadowMap",0,2,"Path",0,rw,"PerspectiveCamera",0,nE,"Plane",0,iy,"PlaneGeometry",0,r9,"PlaneHelper",0,oC,"PointLight",0,st,"PointLightHelper",0,oc,"Points",0,i4,"PointsMaterial",0,iQ,"PolarGridHelper",0,og,"PolyhedronGeometry",0,rI,"PositionalAudio",0,sF,"PropertyBinding",0,sX,"PropertyMixer",0,sB,"QuadraticBezierCurve",0,rx,"QuadraticBezierCurve3",0,rb,"Quaternion",0,ew,"QuaternionKeyframeTrack",0,aO,"QuaternionLinearInterpolant",0,aD,"RAD2DEG",0,k,"RED_GREEN_RGTC2_Format",0,36285,"RED_RGTC1_Format",0,36283,"REVISION",0,"171","RGBADepthPacking",0,3201,"RGBAFormat",0,1023,"RGBAIntegerFormat",0,1033,"RGBA_ASTC_10x10_Format",0,37819,"RGBA_ASTC_10x5_Format",0,37816,"RGBA_ASTC_10x6_Format",0,37817,"RGBA_ASTC_10x8_Format",0,37818,"RGBA_ASTC_12x10_Format",0,37820,"RGBA_ASTC_12x12_Format",0,37821,"RGBA_ASTC_4x4_Format",0,37808,"RGBA_ASTC_5x4_Format",0,37809,"RGBA_ASTC_5x5_Format",0,37810,"RGBA_ASTC_6x5_Format",0,37811,"RGBA_ASTC_6x6_Format",0,37812,"RGBA_ASTC_8x5_Format",0,37813,"RGBA_ASTC_8x6_Format",0,37814,"RGBA_ASTC_8x8_Format",0,37815,"RGBA_BPTC_Format",0,36492,"RGBA_ETC2_EAC_Format",0,37496,"RGBA_PVRTC_2BPPV1_Format",0,35843,"RGBA_PVRTC_4BPPV1_Format",0,35842,"RGBA_S3TC_DXT1_Format",0,33777,"RGBA_S3TC_DXT3_Format",0,33778,"RGBA_S3TC_DXT5_Format",0,33779,"RGBDepthPacking",0,3202,"RGBFormat",0,1022,"RGBIntegerFormat",0,1032,"RGB_BPTC_SIGNED_Format",0,36494,"RGB_BPTC_UNSIGNED_Format",0,36495,"RGB_ETC1_Format",0,36196,"RGB_ETC2_Format",0,37492,"RGB_PVRTC_2BPPV1_Format",0,35841,"RGB_PVRTC_4BPPV1_Format",0,35840,"RGB_S3TC_DXT1_Format",0,33776,"RGDepthPacking",0,3203,"RGFormat",0,1030,"RGIntegerFormat",0,1031,"RawShaderMaterial",0,ac,"Ray",0,e1,"Raycaster",0,s3,"RectAreaLight",0,ss,"RedFormat",0,1028,"RedIntegerFormat",0,1029,"ReinhardToneMapping",0,2,"RenderTarget",0,ey,"RepeatWrapping",0,1e3,"ReplaceStencilOp",0,7681,"ReverseSubtractEquation",0,102,"RingGeometry",0,r7,"SIGNED_RED_GREEN_RGTC2_Format",0,36286,"SIGNED_RED_RGTC1_Format",0,36284,"SRGBColorSpace",0,I,"SRGBTransfer",0,U,"Scene",0,nL,"ShaderMaterial",0,nb,"ShadowMaterial",0,au,"Shape",0,rz,"ShapeGeometry",0,ae,"ShapePath",0,oL,"ShapeUtils",0,r1,"ShortType",0,1011,"Skeleton",0,ia,"SkeletonHelper",0,ou,"SkinnedMesh",0,n7,"Source",0,ef,"Sphere",0,eq,"SphereGeometry",0,at,"Spherical",0,s6,"SphericalHarmonics3",0,so,"SplineCurve",0,rS,"SpotLight",0,a6,"SpotLightHelper",0,oa,"Sprite",0,nZ,"SpriteMaterial",0,nO,"SrcAlphaFactor",0,204,"SrcAlphaSaturateFactor",0,210,"SrcColorFactor",0,202,"StaticCopyUsage",0,35046,"StaticDrawUsage",0,35044,"StaticReadUsage",0,35045,"StereoCamera",0,sM,"StreamCopyUsage",0,35042,"StreamDrawUsage",0,35040,"StreamReadUsage",0,35041,"StringKeyframeTrack",0,aF,"SubtractEquation",0,101,"SubtractiveBlending",0,3,"TOUCH",0,C,"TangentSpaceNormalMap",0,0,"TetrahedronGeometry",0,an,"Texture",0,ev,"TextureLoader",0,a$,"TextureUtils",0,oD,"TorusGeometry",0,ai,"TorusKnotGeometry",0,ar,"Triangle",0,tN,"TriangleFanDrawMode",0,2,"TriangleStripDrawMode",0,1,"TrianglesDrawMode",0,0,"TubeGeometry",0,aa,"UVMapping",0,300,"Uint16BufferAttribute",0,t0,"Uint32BufferAttribute",0,t2,"Uint8BufferAttribute",0,tK,"Uint8ClampedBufferAttribute",0,t$,"Uniform",0,sK,"UniformsGroup",0,sQ,"UniformsUtils",0,nx,"UnsignedByteType",0,1009,"UnsignedInt248Type",0,1020,"UnsignedInt5999Type",0,35902,"UnsignedIntType",0,1014,"UnsignedShort4444Type",0,1017,"UnsignedShort5551Type",0,1018,"UnsignedShortType",0,1012,"VSMShadowMap",0,3,"Vector2",0,Y,"Vector3",0,eE,"Vector4",0,e_,"VectorKeyframeTrack",0,az,"VideoTexture",0,i8,"WebGL3DRenderTarget",0,eT,"WebGLArrayRenderTarget",0,eS,"WebGLCoordinateSystem",0,2e3,"WebGLCubeRenderTarget",0,nR,"WebGLMultipleRenderTargets",0,oO,"WebGLRenderTarget",0,ex,"WebGPUCoordinateSystem",0,2001,"WireframeGeometry",0,as,"WrapAroundEnding",0,2402,"ZeroCurvatureEnding",0,2400,"ZeroFactor",0,200,"ZeroSlopeEnding",0,2401,"ZeroStencilOp",0,0,"arrayNeedsUint32",0,K,"cloneUniforms",0,nv,"createCanvasElement",0,et,"createElementNS",0,ee,"getByteLength",0,oU,"getUnlitUniformColorSpace",0,ny,"mergeUniforms",0,n_,"probeAsync",0,er,"toNormalizedProjectionMatrix",0,ea,"toReversedProjectionMatrix",0,es,"warnOnce",0,ei],90072);let oB={alphahash_fragment:"#ifdef USE_ALPHAHASH\n if ( diffuseColor.a < getAlphaHashThreshold( vPosition ) ) discard;\n#endif",alphahash_pars_fragment:"#ifdef USE_ALPHAHASH\n const float ALPHA_HASH_SCALE = 0.05;\n float hash2D( vec2 value ) {\n return fract( 1.0e4 * sin( 17.0 * value.x + 0.1 * value.y ) * ( 0.1 + abs( sin( 13.0 * value.y + value.x ) ) ) );\n }\n float hash3D( vec3 value ) {\n return hash2D( vec2( hash2D( value.xy ), value.z ) );\n }\n float getAlphaHashThreshold( vec3 position ) {\n float maxDeriv = max(\n length( dFdx( position.xyz ) ),\n length( dFdy( position.xyz ) )\n );\n float pixScale = 1.0 / ( ALPHA_HASH_SCALE * maxDeriv );\n vec2 pixScales = vec2(\n exp2( floor( log2( pixScale ) ) ),\n exp2( ceil( log2( pixScale ) ) )\n );\n vec2 alpha = vec2(\n hash3D( floor( pixScales.x * position.xyz ) ),\n hash3D( floor( pixScales.y * position.xyz ) )\n );\n float lerpFactor = fract( log2( pixScale ) );\n float x = ( 1.0 - lerpFactor ) * alpha.x + lerpFactor * alpha.y;\n float a = min( lerpFactor, 1.0 - lerpFactor );\n vec3 cases = vec3(\n x * x / ( 2.0 * a * ( 1.0 - a ) ),\n ( x - 0.5 * a ) / ( 1.0 - a ),\n 1.0 - ( ( 1.0 - x ) * ( 1.0 - x ) / ( 2.0 * a * ( 1.0 - a ) ) )\n );\n float threshold = ( x < ( 1.0 - a ) )\n ? ( ( x < a ) ? cases.x : cases.y )\n : cases.z;\n return clamp( threshold , 1.0e-6, 1.0 );\n }\n#endif",alphamap_fragment:"#ifdef USE_ALPHAMAP\n diffuseColor.a *= texture2D( alphaMap, vAlphaMapUv ).g;\n#endif",alphamap_pars_fragment:"#ifdef USE_ALPHAMAP\n uniform sampler2D alphaMap;\n#endif",alphatest_fragment:"#ifdef USE_ALPHATEST\n #ifdef ALPHA_TO_COVERAGE\n diffuseColor.a = smoothstep( alphaTest, alphaTest + fwidth( diffuseColor.a ), diffuseColor.a );\n if ( diffuseColor.a == 0.0 ) discard;\n #else\n if ( diffuseColor.a < alphaTest ) discard;\n #endif\n#endif",alphatest_pars_fragment:"#ifdef USE_ALPHATEST\n uniform float alphaTest;\n#endif",aomap_fragment:"#ifdef USE_AOMAP\n float ambientOcclusion = ( texture2D( aoMap, vAoMapUv ).r - 1.0 ) * aoMapIntensity + 1.0;\n reflectedLight.indirectDiffuse *= ambientOcclusion;\n #if defined( USE_CLEARCOAT ) \n clearcoatSpecularIndirect *= ambientOcclusion;\n #endif\n #if defined( USE_SHEEN ) \n sheenSpecularIndirect *= ambientOcclusion;\n #endif\n #if defined( USE_ENVMAP ) && defined( STANDARD )\n float dotNV = saturate( dot( geometryNormal, geometryViewDir ) );\n reflectedLight.indirectSpecular *= computeSpecularOcclusion( dotNV, ambientOcclusion, material.roughness );\n #endif\n#endif",aomap_pars_fragment:"#ifdef USE_AOMAP\n uniform sampler2D aoMap;\n uniform float aoMapIntensity;\n#endif",batching_pars_vertex:"#ifdef USE_BATCHING\n #if ! defined( GL_ANGLE_multi_draw )\n #define gl_DrawID _gl_DrawID\n uniform int _gl_DrawID;\n #endif\n uniform highp sampler2D batchingTexture;\n uniform highp usampler2D batchingIdTexture;\n mat4 getBatchingMatrix( const in float i ) {\n int size = textureSize( batchingTexture, 0 ).x;\n int j = int( i ) * 4;\n int x = j % size;\n int y = j / size;\n vec4 v1 = texelFetch( batchingTexture, ivec2( x, y ), 0 );\n vec4 v2 = texelFetch( batchingTexture, ivec2( x + 1, y ), 0 );\n vec4 v3 = texelFetch( batchingTexture, ivec2( x + 2, y ), 0 );\n vec4 v4 = texelFetch( batchingTexture, ivec2( x + 3, y ), 0 );\n return mat4( v1, v2, v3, v4 );\n }\n float getIndirectIndex( const in int i ) {\n int size = textureSize( batchingIdTexture, 0 ).x;\n int x = i % size;\n int y = i / size;\n return float( texelFetch( batchingIdTexture, ivec2( x, y ), 0 ).r );\n }\n#endif\n#ifdef USE_BATCHING_COLOR\n uniform sampler2D batchingColorTexture;\n vec3 getBatchingColor( const in float i ) {\n int size = textureSize( batchingColorTexture, 0 ).x;\n int j = int( i );\n int x = j % size;\n int y = j / size;\n return texelFetch( batchingColorTexture, ivec2( x, y ), 0 ).rgb;\n }\n#endif",batching_vertex:"#ifdef USE_BATCHING\n mat4 batchingMatrix = getBatchingMatrix( getIndirectIndex( gl_DrawID ) );\n#endif",begin_vertex:"vec3 transformed = vec3( position );\n#ifdef USE_ALPHAHASH\n vPosition = vec3( position );\n#endif",beginnormal_vertex:"vec3 objectNormal = vec3( normal );\n#ifdef USE_TANGENT\n vec3 objectTangent = vec3( tangent.xyz );\n#endif",bsdfs:"float G_BlinnPhong_Implicit( ) {\n return 0.25;\n}\nfloat D_BlinnPhong( const in float shininess, const in float dotNH ) {\n return RECIPROCAL_PI * ( shininess * 0.5 + 1.0 ) * pow( dotNH, shininess );\n}\nvec3 BRDF_BlinnPhong( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in vec3 specularColor, const in float shininess ) {\n vec3 halfDir = normalize( lightDir + viewDir );\n float dotNH = saturate( dot( normal, halfDir ) );\n float dotVH = saturate( dot( viewDir, halfDir ) );\n vec3 F = F_Schlick( specularColor, 1.0, dotVH );\n float G = G_BlinnPhong_Implicit( );\n float D = D_BlinnPhong( shininess, dotNH );\n return F * ( G * D );\n} // validated",iridescence_fragment:"#ifdef USE_IRIDESCENCE\n const mat3 XYZ_TO_REC709 = mat3(\n 3.2404542, -0.9692660, 0.0556434,\n -1.5371385, 1.8760108, -0.2040259,\n -0.4985314, 0.0415560, 1.0572252\n );\n vec3 Fresnel0ToIor( vec3 fresnel0 ) {\n vec3 sqrtF0 = sqrt( fresnel0 );\n return ( vec3( 1.0 ) + sqrtF0 ) / ( vec3( 1.0 ) - sqrtF0 );\n }\n vec3 IorToFresnel0( vec3 transmittedIor, float incidentIor ) {\n return pow2( ( transmittedIor - vec3( incidentIor ) ) / ( transmittedIor + vec3( incidentIor ) ) );\n }\n float IorToFresnel0( float transmittedIor, float incidentIor ) {\n return pow2( ( transmittedIor - incidentIor ) / ( transmittedIor + incidentIor ));\n }\n vec3 evalSensitivity( float OPD, vec3 shift ) {\n float phase = 2.0 * PI * OPD * 1.0e-9;\n vec3 val = vec3( 5.4856e-13, 4.4201e-13, 5.2481e-13 );\n vec3 pos = vec3( 1.6810e+06, 1.7953e+06, 2.2084e+06 );\n vec3 var = vec3( 4.3278e+09, 9.3046e+09, 6.6121e+09 );\n vec3 xyz = val * sqrt( 2.0 * PI * var ) * cos( pos * phase + shift ) * exp( - pow2( phase ) * var );\n xyz.x += 9.7470e-14 * sqrt( 2.0 * PI * 4.5282e+09 ) * cos( 2.2399e+06 * phase + shift[ 0 ] ) * exp( - 4.5282e+09 * pow2( phase ) );\n xyz /= 1.0685e-7;\n vec3 rgb = XYZ_TO_REC709 * xyz;\n return rgb;\n }\n vec3 evalIridescence( float outsideIOR, float eta2, float cosTheta1, float thinFilmThickness, vec3 baseF0 ) {\n vec3 I;\n float iridescenceIOR = mix( outsideIOR, eta2, smoothstep( 0.0, 0.03, thinFilmThickness ) );\n float sinTheta2Sq = pow2( outsideIOR / iridescenceIOR ) * ( 1.0 - pow2( cosTheta1 ) );\n float cosTheta2Sq = 1.0 - sinTheta2Sq;\n if ( cosTheta2Sq < 0.0 ) {\n return vec3( 1.0 );\n }\n float cosTheta2 = sqrt( cosTheta2Sq );\n float R0 = IorToFresnel0( iridescenceIOR, outsideIOR );\n float R12 = F_Schlick( R0, 1.0, cosTheta1 );\n float T121 = 1.0 - R12;\n float phi12 = 0.0;\n if ( iridescenceIOR < outsideIOR ) phi12 = PI;\n float phi21 = PI - phi12;\n vec3 baseIOR = Fresnel0ToIor( clamp( baseF0, 0.0, 0.9999 ) ); vec3 R1 = IorToFresnel0( baseIOR, iridescenceIOR );\n vec3 R23 = F_Schlick( R1, 1.0, cosTheta2 );\n vec3 phi23 = vec3( 0.0 );\n if ( baseIOR[ 0 ] < iridescenceIOR ) phi23[ 0 ] = PI;\n if ( baseIOR[ 1 ] < iridescenceIOR ) phi23[ 1 ] = PI;\n if ( baseIOR[ 2 ] < iridescenceIOR ) phi23[ 2 ] = PI;\n float OPD = 2.0 * iridescenceIOR * thinFilmThickness * cosTheta2;\n vec3 phi = vec3( phi21 ) + phi23;\n vec3 R123 = clamp( R12 * R23, 1e-5, 0.9999 );\n vec3 r123 = sqrt( R123 );\n vec3 Rs = pow2( T121 ) * R23 / ( vec3( 1.0 ) - R123 );\n vec3 C0 = R12 + Rs;\n I = C0;\n vec3 Cm = Rs - T121;\n for ( int m = 1; m <= 2; ++ m ) {\n Cm *= r123;\n vec3 Sm = 2.0 * evalSensitivity( float( m ) * OPD, float( m ) * phi );\n I += Cm * Sm;\n }\n return max( I, vec3( 0.0 ) );\n }\n#endif",bumpmap_pars_fragment:"#ifdef USE_BUMPMAP\n uniform sampler2D bumpMap;\n uniform float bumpScale;\n vec2 dHdxy_fwd() {\n vec2 dSTdx = dFdx( vBumpMapUv );\n vec2 dSTdy = dFdy( vBumpMapUv );\n float Hll = bumpScale * texture2D( bumpMap, vBumpMapUv ).x;\n float dBx = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdx ).x - Hll;\n float dBy = bumpScale * texture2D( bumpMap, vBumpMapUv + dSTdy ).x - Hll;\n return vec2( dBx, dBy );\n }\n vec3 perturbNormalArb( vec3 surf_pos, vec3 surf_norm, vec2 dHdxy, float faceDirection ) {\n vec3 vSigmaX = normalize( dFdx( surf_pos.xyz ) );\n vec3 vSigmaY = normalize( dFdy( surf_pos.xyz ) );\n vec3 vN = surf_norm;\n vec3 R1 = cross( vSigmaY, vN );\n vec3 R2 = cross( vN, vSigmaX );\n float fDet = dot( vSigmaX, R1 ) * faceDirection;\n vec3 vGrad = sign( fDet ) * ( dHdxy.x * R1 + dHdxy.y * R2 );\n return normalize( abs( fDet ) * surf_norm - vGrad );\n }\n#endif",clipping_planes_fragment:"#if NUM_CLIPPING_PLANES > 0\n vec4 plane;\n #ifdef ALPHA_TO_COVERAGE\n float distanceToPlane, distanceGradient;\n float clipOpacity = 1.0;\n #pragma unroll_loop_start\n for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n plane = clippingPlanes[ i ];\n distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w;\n distanceGradient = fwidth( distanceToPlane ) / 2.0;\n clipOpacity *= smoothstep( - distanceGradient, distanceGradient, distanceToPlane );\n if ( clipOpacity == 0.0 ) discard;\n }\n #pragma unroll_loop_end\n #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n float unionClipOpacity = 1.0;\n #pragma unroll_loop_start\n for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n plane = clippingPlanes[ i ];\n distanceToPlane = - dot( vClipPosition, plane.xyz ) + plane.w;\n distanceGradient = fwidth( distanceToPlane ) / 2.0;\n unionClipOpacity *= 1.0 - smoothstep( - distanceGradient, distanceGradient, distanceToPlane );\n }\n #pragma unroll_loop_end\n clipOpacity *= 1.0 - unionClipOpacity;\n #endif\n diffuseColor.a *= clipOpacity;\n if ( diffuseColor.a == 0.0 ) discard;\n #else\n #pragma unroll_loop_start\n for ( int i = 0; i < UNION_CLIPPING_PLANES; i ++ ) {\n plane = clippingPlanes[ i ];\n if ( dot( vClipPosition, plane.xyz ) > plane.w ) discard;\n }\n #pragma unroll_loop_end\n #if UNION_CLIPPING_PLANES < NUM_CLIPPING_PLANES\n bool clipped = true;\n #pragma unroll_loop_start\n for ( int i = UNION_CLIPPING_PLANES; i < NUM_CLIPPING_PLANES; i ++ ) {\n plane = clippingPlanes[ i ];\n clipped = ( dot( vClipPosition, plane.xyz ) > plane.w ) && clipped;\n }\n #pragma unroll_loop_end\n if ( clipped ) discard;\n #endif\n #endif\n#endif",clipping_planes_pars_fragment:"#if NUM_CLIPPING_PLANES > 0\n varying vec3 vClipPosition;\n uniform vec4 clippingPlanes[ NUM_CLIPPING_PLANES ];\n#endif",clipping_planes_pars_vertex:"#if NUM_CLIPPING_PLANES > 0\n varying vec3 vClipPosition;\n#endif",clipping_planes_vertex:"#if NUM_CLIPPING_PLANES > 0\n vClipPosition = - mvPosition.xyz;\n#endif",color_fragment:"#if defined( USE_COLOR_ALPHA )\n diffuseColor *= vColor;\n#elif defined( USE_COLOR )\n diffuseColor.rgb *= vColor;\n#endif",color_pars_fragment:"#if defined( USE_COLOR_ALPHA )\n varying vec4 vColor;\n#elif defined( USE_COLOR )\n varying vec3 vColor;\n#endif",color_pars_vertex:"#if defined( USE_COLOR_ALPHA )\n varying vec4 vColor;\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR )\n varying vec3 vColor;\n#endif",color_vertex:"#if defined( USE_COLOR_ALPHA )\n vColor = vec4( 1.0 );\n#elif defined( USE_COLOR ) || defined( USE_INSTANCING_COLOR ) || defined( USE_BATCHING_COLOR )\n vColor = vec3( 1.0 );\n#endif\n#ifdef USE_COLOR\n vColor *= color;\n#endif\n#ifdef USE_INSTANCING_COLOR\n vColor.xyz *= instanceColor.xyz;\n#endif\n#ifdef USE_BATCHING_COLOR\n vec3 batchingColor = getBatchingColor( getIndirectIndex( gl_DrawID ) );\n vColor.xyz *= batchingColor.xyz;\n#endif",common:"#define PI 3.141592653589793\n#define PI2 6.283185307179586\n#define PI_HALF 1.5707963267948966\n#define RECIPROCAL_PI 0.3183098861837907\n#define RECIPROCAL_PI2 0.15915494309189535\n#define EPSILON 1e-6\n#ifndef saturate\n#define saturate( a ) clamp( a, 0.0, 1.0 )\n#endif\n#define whiteComplement( a ) ( 1.0 - saturate( a ) )\nfloat pow2( const in float x ) { return x*x; }\nvec3 pow2( const in vec3 x ) { return x*x; }\nfloat pow3( const in float x ) { return x*x*x; }\nfloat pow4( const in float x ) { float x2 = x*x; return x2*x2; }\nfloat max3( const in vec3 v ) { return max( max( v.x, v.y ), v.z ); }\nfloat average( const in vec3 v ) { return dot( v, vec3( 0.3333333 ) ); }\nhighp float rand( const in vec2 uv ) {\n const highp float a = 12.9898, b = 78.233, c = 43758.5453;\n highp float dt = dot( uv.xy, vec2( a,b ) ), sn = mod( dt, PI );\n return fract( sin( sn ) * c );\n}\n#ifdef HIGH_PRECISION\n float precisionSafeLength( vec3 v ) { return length( v ); }\n#else\n float precisionSafeLength( vec3 v ) {\n float maxComponent = max3( abs( v ) );\n return length( v / maxComponent ) * maxComponent;\n }\n#endif\nstruct IncidentLight {\n vec3 color;\n vec3 direction;\n bool visible;\n};\nstruct ReflectedLight {\n vec3 directDiffuse;\n vec3 directSpecular;\n vec3 indirectDiffuse;\n vec3 indirectSpecular;\n};\n#ifdef USE_ALPHAHASH\n varying vec3 vPosition;\n#endif\nvec3 transformDirection( in vec3 dir, in mat4 matrix ) {\n return normalize( ( matrix * vec4( dir, 0.0 ) ).xyz );\n}\nvec3 inverseTransformDirection( in vec3 dir, in mat4 matrix ) {\n return normalize( ( vec4( dir, 0.0 ) * matrix ).xyz );\n}\nmat3 transposeMat3( const in mat3 m ) {\n mat3 tmp;\n tmp[ 0 ] = vec3( m[ 0 ].x, m[ 1 ].x, m[ 2 ].x );\n tmp[ 1 ] = vec3( m[ 0 ].y, m[ 1 ].y, m[ 2 ].y );\n tmp[ 2 ] = vec3( m[ 0 ].z, m[ 1 ].z, m[ 2 ].z );\n return tmp;\n}\nbool isPerspectiveMatrix( mat4 m ) {\n return m[ 2 ][ 3 ] == - 1.0;\n}\nvec2 equirectUv( in vec3 dir ) {\n float u = atan( dir.z, dir.x ) * RECIPROCAL_PI2 + 0.5;\n float v = asin( clamp( dir.y, - 1.0, 1.0 ) ) * RECIPROCAL_PI + 0.5;\n return vec2( u, v );\n}\nvec3 BRDF_Lambert( const in vec3 diffuseColor ) {\n return RECIPROCAL_PI * diffuseColor;\n}\nvec3 F_Schlick( const in vec3 f0, const in float f90, const in float dotVH ) {\n float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\n return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\n}\nfloat F_Schlick( const in float f0, const in float f90, const in float dotVH ) {\n float fresnel = exp2( ( - 5.55473 * dotVH - 6.98316 ) * dotVH );\n return f0 * ( 1.0 - fresnel ) + ( f90 * fresnel );\n} // validated",cube_uv_reflection_fragment:"#ifdef ENVMAP_TYPE_CUBE_UV\n #define cubeUV_minMipLevel 4.0\n #define cubeUV_minTileSize 16.0\n float getFace( vec3 direction ) {\n vec3 absDirection = abs( direction );\n float face = - 1.0;\n if ( absDirection.x > absDirection.z ) {\n if ( absDirection.x > absDirection.y )\n face = direction.x > 0.0 ? 0.0 : 3.0;\n else\n face = direction.y > 0.0 ? 1.0 : 4.0;\n } else {\n if ( absDirection.z > absDirection.y )\n face = direction.z > 0.0 ? 2.0 : 5.0;\n else\n face = direction.y > 0.0 ? 1.0 : 4.0;\n }\n return face;\n }\n vec2 getUV( vec3 direction, float face ) {\n vec2 uv;\n if ( face == 0.0 ) {\n uv = vec2( direction.z, direction.y ) / abs( direction.x );\n } else if ( face == 1.0 ) {\n uv = vec2( - direction.x, - direction.z ) / abs( direction.y );\n } else if ( face == 2.0 ) {\n uv = vec2( - direction.x, direction.y ) / abs( direction.z );\n } else if ( face == 3.0 ) {\n uv = vec2( - direction.z, direction.y ) / abs( direction.x );\n } else if ( face == 4.0 ) {\n uv = vec2( - direction.x, direction.z ) / abs( direction.y );\n } else {\n uv = vec2( direction.x, direction.y ) / abs( direction.z );\n }\n return 0.5 * ( uv + 1.0 );\n }\n vec3 bilinearCubeUV( sampler2D envMap, vec3 direction, float mipInt ) {\n float face = getFace( direction );\n float filterInt = max( cubeUV_minMipLevel - mipInt, 0.0 );\n mipInt = max( mipInt, cubeUV_minMipLevel );\n float faceSize = exp2( mipInt );\n highp vec2 uv = getUV( direction, face ) * ( faceSize - 2.0 ) + 1.0;\n if ( face > 2.0 ) {\n uv.y += faceSize;\n face -= 3.0;\n }\n uv.x += face * faceSize;\n uv.x += filterInt * 3.0 * cubeUV_minTileSize;\n uv.y += 4.0 * ( exp2( CUBEUV_MAX_MIP ) - faceSize );\n uv.x *= CUBEUV_TEXEL_WIDTH;\n uv.y *= CUBEUV_TEXEL_HEIGHT;\n #ifdef texture2DGradEXT\n return texture2DGradEXT( envMap, uv, vec2( 0.0 ), vec2( 0.0 ) ).rgb;\n #else\n return texture2D( envMap, uv ).rgb;\n #endif\n }\n #define cubeUV_r0 1.0\n #define cubeUV_m0 - 2.0\n #define cubeUV_r1 0.8\n #define cubeUV_m1 - 1.0\n #define cubeUV_r4 0.4\n #define cubeUV_m4 2.0\n #define cubeUV_r5 0.305\n #define cubeUV_m5 3.0\n #define cubeUV_r6 0.21\n #define cubeUV_m6 4.0\n float roughnessToMip( float roughness ) {\n float mip = 0.0;\n if ( roughness >= cubeUV_r1 ) {\n mip = ( cubeUV_r0 - roughness ) * ( cubeUV_m1 - cubeUV_m0 ) / ( cubeUV_r0 - cubeUV_r1 ) + cubeUV_m0;\n } else if ( roughness >= cubeUV_r4 ) {\n mip = ( cubeUV_r1 - roughness ) * ( cubeUV_m4 - cubeUV_m1 ) / ( cubeUV_r1 - cubeUV_r4 ) + cubeUV_m1;\n } else if ( roughness >= cubeUV_r5 ) {\n mip = ( cubeUV_r4 - roughness ) * ( cubeUV_m5 - cubeUV_m4 ) / ( cubeUV_r4 - cubeUV_r5 ) + cubeUV_m4;\n } else if ( roughness >= cubeUV_r6 ) {\n mip = ( cubeUV_r5 - roughness ) * ( cubeUV_m6 - cubeUV_m5 ) / ( cubeUV_r5 - cubeUV_r6 ) + cubeUV_m5;\n } else {\n mip = - 2.0 * log2( 1.16 * roughness ); }\n return mip;\n }\n vec4 textureCubeUV( sampler2D envMap, vec3 sampleDir, float roughness ) {\n float mip = clamp( roughnessToMip( roughness ), cubeUV_m0, CUBEUV_MAX_MIP );\n float mipF = fract( mip );\n float mipInt = floor( mip );\n vec3 color0 = bilinearCubeUV( envMap, sampleDir, mipInt );\n if ( mipF == 0.0 ) {\n return vec4( color0, 1.0 );\n } else {\n vec3 color1 = bilinearCubeUV( envMap, sampleDir, mipInt + 1.0 );\n return vec4( mix( color0, color1, mipF ), 1.0 );\n }\n }\n#endif",defaultnormal_vertex:"vec3 transformedNormal = objectNormal;\n#ifdef USE_TANGENT\n vec3 transformedTangent = objectTangent;\n#endif\n#ifdef USE_BATCHING\n mat3 bm = mat3( batchingMatrix );\n transformedNormal /= vec3( dot( bm[ 0 ], bm[ 0 ] ), dot( bm[ 1 ], bm[ 1 ] ), dot( bm[ 2 ], bm[ 2 ] ) );\n transformedNormal = bm * transformedNormal;\n #ifdef USE_TANGENT\n transformedTangent = bm * transformedTangent;\n #endif\n#endif\n#ifdef USE_INSTANCING\n mat3 im = mat3( instanceMatrix );\n transformedNormal /= vec3( dot( im[ 0 ], im[ 0 ] ), dot( im[ 1 ], im[ 1 ] ), dot( im[ 2 ], im[ 2 ] ) );\n transformedNormal = im * transformedNormal;\n #ifdef USE_TANGENT\n transformedTangent = im * transformedTangent;\n #endif\n#endif\ntransformedNormal = normalMatrix * transformedNormal;\n#ifdef FLIP_SIDED\n transformedNormal = - transformedNormal;\n#endif\n#ifdef USE_TANGENT\n transformedTangent = ( modelViewMatrix * vec4( transformedTangent, 0.0 ) ).xyz;\n #ifdef FLIP_SIDED\n transformedTangent = - transformedTangent;\n #endif\n#endif",displacementmap_pars_vertex:"#ifdef USE_DISPLACEMENTMAP\n uniform sampler2D displacementMap;\n uniform float displacementScale;\n uniform float displacementBias;\n#endif",displacementmap_vertex:"#ifdef USE_DISPLACEMENTMAP\n transformed += normalize( objectNormal ) * ( texture2D( displacementMap, vDisplacementMapUv ).x * displacementScale + displacementBias );\n#endif",emissivemap_fragment:"#ifdef USE_EMISSIVEMAP\n vec4 emissiveColor = texture2D( emissiveMap, vEmissiveMapUv );\n #ifdef DECODE_VIDEO_TEXTURE_EMISSIVE\n emissiveColor = sRGBTransferEOTF( emissiveColor );\n #endif\n totalEmissiveRadiance *= emissiveColor.rgb;\n#endif",emissivemap_pars_fragment:"#ifdef USE_EMISSIVEMAP\n uniform sampler2D emissiveMap;\n#endif",colorspace_fragment:"gl_FragColor = linearToOutputTexel( gl_FragColor );",colorspace_pars_fragment:"vec4 LinearTransferOETF( in vec4 value ) {\n return value;\n}\nvec4 sRGBTransferEOTF( in vec4 value ) {\n return vec4( mix( pow( value.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), value.rgb * 0.0773993808, vec3( lessThanEqual( value.rgb, vec3( 0.04045 ) ) ) ), value.a );\n}\nvec4 sRGBTransferOETF( in vec4 value ) {\n return vec4( mix( pow( value.rgb, vec3( 0.41666 ) ) * 1.055 - vec3( 0.055 ), value.rgb * 12.92, vec3( lessThanEqual( value.rgb, vec3( 0.0031308 ) ) ) ), value.a );\n}",envmap_fragment:"#ifdef USE_ENVMAP\n #ifdef ENV_WORLDPOS\n vec3 cameraToFrag;\n if ( isOrthographic ) {\n cameraToFrag = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n } else {\n cameraToFrag = normalize( vWorldPosition - cameraPosition );\n }\n vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n #ifdef ENVMAP_MODE_REFLECTION\n vec3 reflectVec = reflect( cameraToFrag, worldNormal );\n #else\n vec3 reflectVec = refract( cameraToFrag, worldNormal, refractionRatio );\n #endif\n #else\n vec3 reflectVec = vReflect;\n #endif\n #ifdef ENVMAP_TYPE_CUBE\n vec4 envColor = textureCube( envMap, envMapRotation * vec3( flipEnvMap * reflectVec.x, reflectVec.yz ) );\n #else\n vec4 envColor = vec4( 0.0 );\n #endif\n #ifdef ENVMAP_BLENDING_MULTIPLY\n outgoingLight = mix( outgoingLight, outgoingLight * envColor.xyz, specularStrength * reflectivity );\n #elif defined( ENVMAP_BLENDING_MIX )\n outgoingLight = mix( outgoingLight, envColor.xyz, specularStrength * reflectivity );\n #elif defined( ENVMAP_BLENDING_ADD )\n outgoingLight += envColor.xyz * specularStrength * reflectivity;\n #endif\n#endif",envmap_common_pars_fragment:"#ifdef USE_ENVMAP\n uniform float envMapIntensity;\n uniform float flipEnvMap;\n uniform mat3 envMapRotation;\n #ifdef ENVMAP_TYPE_CUBE\n uniform samplerCube envMap;\n #else\n uniform sampler2D envMap;\n #endif\n \n#endif",envmap_pars_fragment:"#ifdef USE_ENVMAP\n uniform float reflectivity;\n #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\n #define ENV_WORLDPOS\n #endif\n #ifdef ENV_WORLDPOS\n varying vec3 vWorldPosition;\n uniform float refractionRatio;\n #else\n varying vec3 vReflect;\n #endif\n#endif",envmap_pars_vertex:"#ifdef USE_ENVMAP\n #if defined( USE_BUMPMAP ) || defined( USE_NORMALMAP ) || defined( PHONG ) || defined( LAMBERT )\n #define ENV_WORLDPOS\n #endif\n #ifdef ENV_WORLDPOS\n \n varying vec3 vWorldPosition;\n #else\n varying vec3 vReflect;\n uniform float refractionRatio;\n #endif\n#endif",envmap_physical_pars_fragment:"#ifdef USE_ENVMAP\n vec3 getIBLIrradiance( const in vec3 normal ) {\n #ifdef ENVMAP_TYPE_CUBE_UV\n vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n vec4 envMapColor = textureCubeUV( envMap, envMapRotation * worldNormal, 1.0 );\n return PI * envMapColor.rgb * envMapIntensity;\n #else\n return vec3( 0.0 );\n #endif\n }\n vec3 getIBLRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness ) {\n #ifdef ENVMAP_TYPE_CUBE_UV\n vec3 reflectVec = reflect( - viewDir, normal );\n reflectVec = normalize( mix( reflectVec, normal, roughness * roughness) );\n reflectVec = inverseTransformDirection( reflectVec, viewMatrix );\n vec4 envMapColor = textureCubeUV( envMap, envMapRotation * reflectVec, roughness );\n return envMapColor.rgb * envMapIntensity;\n #else\n return vec3( 0.0 );\n #endif\n }\n #ifdef USE_ANISOTROPY\n vec3 getIBLAnisotropyRadiance( const in vec3 viewDir, const in vec3 normal, const in float roughness, const in vec3 bitangent, const in float anisotropy ) {\n #ifdef ENVMAP_TYPE_CUBE_UV\n vec3 bentNormal = cross( bitangent, viewDir );\n bentNormal = normalize( cross( bentNormal, bitangent ) );\n bentNormal = normalize( mix( bentNormal, normal, pow2( pow2( 1.0 - anisotropy * ( 1.0 - roughness ) ) ) ) );\n return getIBLRadiance( viewDir, bentNormal, roughness );\n #else\n return vec3( 0.0 );\n #endif\n }\n #endif\n#endif",envmap_vertex:"#ifdef USE_ENVMAP\n #ifdef ENV_WORLDPOS\n vWorldPosition = worldPosition.xyz;\n #else\n vec3 cameraToVertex;\n if ( isOrthographic ) {\n cameraToVertex = normalize( vec3( - viewMatrix[ 0 ][ 2 ], - viewMatrix[ 1 ][ 2 ], - viewMatrix[ 2 ][ 2 ] ) );\n } else {\n cameraToVertex = normalize( worldPosition.xyz - cameraPosition );\n }\n vec3 worldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n #ifdef ENVMAP_MODE_REFLECTION\n vReflect = reflect( cameraToVertex, worldNormal );\n #else\n vReflect = refract( cameraToVertex, worldNormal, refractionRatio );\n #endif\n #endif\n#endif",fog_vertex:"#ifdef USE_FOG\n vFogDepth = - mvPosition.z;\n#endif",fog_pars_vertex:"#ifdef USE_FOG\n varying float vFogDepth;\n#endif",fog_fragment:"#ifdef USE_FOG\n #ifdef FOG_EXP2\n float fogFactor = 1.0 - exp( - fogDensity * fogDensity * vFogDepth * vFogDepth );\n #else\n float fogFactor = smoothstep( fogNear, fogFar, vFogDepth );\n #endif\n gl_FragColor.rgb = mix( gl_FragColor.rgb, fogColor, fogFactor );\n#endif",fog_pars_fragment:"#ifdef USE_FOG\n uniform vec3 fogColor;\n varying float vFogDepth;\n #ifdef FOG_EXP2\n uniform float fogDensity;\n #else\n uniform float fogNear;\n uniform float fogFar;\n #endif\n#endif",gradientmap_pars_fragment:"#ifdef USE_GRADIENTMAP\n uniform sampler2D gradientMap;\n#endif\nvec3 getGradientIrradiance( vec3 normal, vec3 lightDirection ) {\n float dotNL = dot( normal, lightDirection );\n vec2 coord = vec2( dotNL * 0.5 + 0.5, 0.0 );\n #ifdef USE_GRADIENTMAP\n return vec3( texture2D( gradientMap, coord ).r );\n #else\n vec2 fw = fwidth( coord ) * 0.5;\n return mix( vec3( 0.7 ), vec3( 1.0 ), smoothstep( 0.7 - fw.x, 0.7 + fw.x, coord.x ) );\n #endif\n}",lightmap_pars_fragment:"#ifdef USE_LIGHTMAP\n uniform sampler2D lightMap;\n uniform float lightMapIntensity;\n#endif",lights_lambert_fragment:"LambertMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularStrength = specularStrength;",lights_lambert_pars_fragment:"varying vec3 vViewPosition;\nstruct LambertMaterial {\n vec3 diffuseColor;\n float specularStrength;\n};\nvoid RE_Direct_Lambert( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\n float dotNL = saturate( dot( geometryNormal, directLight.direction ) );\n vec3 irradiance = dotNL * directLight.color;\n reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Lambert( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in LambertMaterial material, inout ReflectedLight reflectedLight ) {\n reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct RE_Direct_Lambert\n#define RE_IndirectDiffuse RE_IndirectDiffuse_Lambert",lights_pars_begin:"uniform bool receiveShadow;\nuniform vec3 ambientLightColor;\n#if defined( USE_LIGHT_PROBES )\n uniform vec3 lightProbe[ 9 ];\n#endif\nvec3 shGetIrradianceAt( in vec3 normal, in vec3 shCoefficients[ 9 ] ) {\n float x = normal.x, y = normal.y, z = normal.z;\n vec3 result = shCoefficients[ 0 ] * 0.886227;\n result += shCoefficients[ 1 ] * 2.0 * 0.511664 * y;\n result += shCoefficients[ 2 ] * 2.0 * 0.511664 * z;\n result += shCoefficients[ 3 ] * 2.0 * 0.511664 * x;\n result += shCoefficients[ 4 ] * 2.0 * 0.429043 * x * y;\n result += shCoefficients[ 5 ] * 2.0 * 0.429043 * y * z;\n result += shCoefficients[ 6 ] * ( 0.743125 * z * z - 0.247708 );\n result += shCoefficients[ 7 ] * 2.0 * 0.429043 * x * z;\n result += shCoefficients[ 8 ] * 0.429043 * ( x * x - y * y );\n return result;\n}\nvec3 getLightProbeIrradiance( const in vec3 lightProbe[ 9 ], const in vec3 normal ) {\n vec3 worldNormal = inverseTransformDirection( normal, viewMatrix );\n vec3 irradiance = shGetIrradianceAt( worldNormal, lightProbe );\n return irradiance;\n}\nvec3 getAmbientLightIrradiance( const in vec3 ambientLightColor ) {\n vec3 irradiance = ambientLightColor;\n return irradiance;\n}\nfloat getDistanceAttenuation( const in float lightDistance, const in float cutoffDistance, const in float decayExponent ) {\n float distanceFalloff = 1.0 / max( pow( lightDistance, decayExponent ), 0.01 );\n if ( cutoffDistance > 0.0 ) {\n distanceFalloff *= pow2( saturate( 1.0 - pow4( lightDistance / cutoffDistance ) ) );\n }\n return distanceFalloff;\n}\nfloat getSpotAttenuation( const in float coneCosine, const in float penumbraCosine, const in float angleCosine ) {\n return smoothstep( coneCosine, penumbraCosine, angleCosine );\n}\n#if NUM_DIR_LIGHTS > 0\n struct DirectionalLight {\n vec3 direction;\n vec3 color;\n };\n uniform DirectionalLight directionalLights[ NUM_DIR_LIGHTS ];\n void getDirectionalLightInfo( const in DirectionalLight directionalLight, out IncidentLight light ) {\n light.color = directionalLight.color;\n light.direction = directionalLight.direction;\n light.visible = true;\n }\n#endif\n#if NUM_POINT_LIGHTS > 0\n struct PointLight {\n vec3 position;\n vec3 color;\n float distance;\n float decay;\n };\n uniform PointLight pointLights[ NUM_POINT_LIGHTS ];\n void getPointLightInfo( const in PointLight pointLight, const in vec3 geometryPosition, out IncidentLight light ) {\n vec3 lVector = pointLight.position - geometryPosition;\n light.direction = normalize( lVector );\n float lightDistance = length( lVector );\n light.color = pointLight.color;\n light.color *= getDistanceAttenuation( lightDistance, pointLight.distance, pointLight.decay );\n light.visible = ( light.color != vec3( 0.0 ) );\n }\n#endif\n#if NUM_SPOT_LIGHTS > 0\n struct SpotLight {\n vec3 position;\n vec3 direction;\n vec3 color;\n float distance;\n float decay;\n float coneCos;\n float penumbraCos;\n };\n uniform SpotLight spotLights[ NUM_SPOT_LIGHTS ];\n void getSpotLightInfo( const in SpotLight spotLight, const in vec3 geometryPosition, out IncidentLight light ) {\n vec3 lVector = spotLight.position - geometryPosition;\n light.direction = normalize( lVector );\n float angleCos = dot( light.direction, spotLight.direction );\n float spotAttenuation = getSpotAttenuation( spotLight.coneCos, spotLight.penumbraCos, angleCos );\n if ( spotAttenuation > 0.0 ) {\n float lightDistance = length( lVector );\n light.color = spotLight.color * spotAttenuation;\n light.color *= getDistanceAttenuation( lightDistance, spotLight.distance, spotLight.decay );\n light.visible = ( light.color != vec3( 0.0 ) );\n } else {\n light.color = vec3( 0.0 );\n light.visible = false;\n }\n }\n#endif\n#if NUM_RECT_AREA_LIGHTS > 0\n struct RectAreaLight {\n vec3 color;\n vec3 position;\n vec3 halfWidth;\n vec3 halfHeight;\n };\n uniform sampler2D ltc_1; uniform sampler2D ltc_2;\n uniform RectAreaLight rectAreaLights[ NUM_RECT_AREA_LIGHTS ];\n#endif\n#if NUM_HEMI_LIGHTS > 0\n struct HemisphereLight {\n vec3 direction;\n vec3 skyColor;\n vec3 groundColor;\n };\n uniform HemisphereLight hemisphereLights[ NUM_HEMI_LIGHTS ];\n vec3 getHemisphereLightIrradiance( const in HemisphereLight hemiLight, const in vec3 normal ) {\n float dotNL = dot( normal, hemiLight.direction );\n float hemiDiffuseWeight = 0.5 * dotNL + 0.5;\n vec3 irradiance = mix( hemiLight.groundColor, hemiLight.skyColor, hemiDiffuseWeight );\n return irradiance;\n }\n#endif",lights_toon_fragment:"ToonMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;",lights_toon_pars_fragment:"varying vec3 vViewPosition;\nstruct ToonMaterial {\n vec3 diffuseColor;\n};\nvoid RE_Direct_Toon( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n vec3 irradiance = getGradientIrradiance( geometryNormal, directLight.direction ) * directLight.color;\n reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Toon( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in ToonMaterial material, inout ReflectedLight reflectedLight ) {\n reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct RE_Direct_Toon\n#define RE_IndirectDiffuse RE_IndirectDiffuse_Toon",lights_phong_fragment:"BlinnPhongMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb;\nmaterial.specularColor = specular;\nmaterial.specularShininess = shininess;\nmaterial.specularStrength = specularStrength;",lights_phong_pars_fragment:"varying vec3 vViewPosition;\nstruct BlinnPhongMaterial {\n vec3 diffuseColor;\n vec3 specularColor;\n float specularShininess;\n float specularStrength;\n};\nvoid RE_Direct_BlinnPhong( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n float dotNL = saturate( dot( geometryNormal, directLight.direction ) );\n vec3 irradiance = dotNL * directLight.color;\n reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n reflectedLight.directSpecular += irradiance * BRDF_BlinnPhong( directLight.direction, geometryViewDir, geometryNormal, material.specularColor, material.specularShininess ) * material.specularStrength;\n}\nvoid RE_IndirectDiffuse_BlinnPhong( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in BlinnPhongMaterial material, inout ReflectedLight reflectedLight ) {\n reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\n#define RE_Direct RE_Direct_BlinnPhong\n#define RE_IndirectDiffuse RE_IndirectDiffuse_BlinnPhong",lights_physical_fragment:"PhysicalMaterial material;\nmaterial.diffuseColor = diffuseColor.rgb * ( 1.0 - metalnessFactor );\nvec3 dxy = max( abs( dFdx( nonPerturbedNormal ) ), abs( dFdy( nonPerturbedNormal ) ) );\nfloat geometryRoughness = max( max( dxy.x, dxy.y ), dxy.z );\nmaterial.roughness = max( roughnessFactor, 0.0525 );material.roughness += geometryRoughness;\nmaterial.roughness = min( material.roughness, 1.0 );\n#ifdef IOR\n material.ior = ior;\n #ifdef USE_SPECULAR\n float specularIntensityFactor = specularIntensity;\n vec3 specularColorFactor = specularColor;\n #ifdef USE_SPECULAR_COLORMAP\n specularColorFactor *= texture2D( specularColorMap, vSpecularColorMapUv ).rgb;\n #endif\n #ifdef USE_SPECULAR_INTENSITYMAP\n specularIntensityFactor *= texture2D( specularIntensityMap, vSpecularIntensityMapUv ).a;\n #endif\n material.specularF90 = mix( specularIntensityFactor, 1.0, metalnessFactor );\n #else\n float specularIntensityFactor = 1.0;\n vec3 specularColorFactor = vec3( 1.0 );\n material.specularF90 = 1.0;\n #endif\n material.specularColor = mix( min( pow2( ( material.ior - 1.0 ) / ( material.ior + 1.0 ) ) * specularColorFactor, vec3( 1.0 ) ) * specularIntensityFactor, diffuseColor.rgb, metalnessFactor );\n#else\n material.specularColor = mix( vec3( 0.04 ), diffuseColor.rgb, metalnessFactor );\n material.specularF90 = 1.0;\n#endif\n#ifdef USE_CLEARCOAT\n material.clearcoat = clearcoat;\n material.clearcoatRoughness = clearcoatRoughness;\n material.clearcoatF0 = vec3( 0.04 );\n material.clearcoatF90 = 1.0;\n #ifdef USE_CLEARCOATMAP\n material.clearcoat *= texture2D( clearcoatMap, vClearcoatMapUv ).x;\n #endif\n #ifdef USE_CLEARCOAT_ROUGHNESSMAP\n material.clearcoatRoughness *= texture2D( clearcoatRoughnessMap, vClearcoatRoughnessMapUv ).y;\n #endif\n material.clearcoat = saturate( material.clearcoat ); material.clearcoatRoughness = max( material.clearcoatRoughness, 0.0525 );\n material.clearcoatRoughness += geometryRoughness;\n material.clearcoatRoughness = min( material.clearcoatRoughness, 1.0 );\n#endif\n#ifdef USE_DISPERSION\n material.dispersion = dispersion;\n#endif\n#ifdef USE_IRIDESCENCE\n material.iridescence = iridescence;\n material.iridescenceIOR = iridescenceIOR;\n #ifdef USE_IRIDESCENCEMAP\n material.iridescence *= texture2D( iridescenceMap, vIridescenceMapUv ).r;\n #endif\n #ifdef USE_IRIDESCENCE_THICKNESSMAP\n material.iridescenceThickness = (iridescenceThicknessMaximum - iridescenceThicknessMinimum) * texture2D( iridescenceThicknessMap, vIridescenceThicknessMapUv ).g + iridescenceThicknessMinimum;\n #else\n material.iridescenceThickness = iridescenceThicknessMaximum;\n #endif\n#endif\n#ifdef USE_SHEEN\n material.sheenColor = sheenColor;\n #ifdef USE_SHEEN_COLORMAP\n material.sheenColor *= texture2D( sheenColorMap, vSheenColorMapUv ).rgb;\n #endif\n material.sheenRoughness = clamp( sheenRoughness, 0.07, 1.0 );\n #ifdef USE_SHEEN_ROUGHNESSMAP\n material.sheenRoughness *= texture2D( sheenRoughnessMap, vSheenRoughnessMapUv ).a;\n #endif\n#endif\n#ifdef USE_ANISOTROPY\n #ifdef USE_ANISOTROPYMAP\n mat2 anisotropyMat = mat2( anisotropyVector.x, anisotropyVector.y, - anisotropyVector.y, anisotropyVector.x );\n vec3 anisotropyPolar = texture2D( anisotropyMap, vAnisotropyMapUv ).rgb;\n vec2 anisotropyV = anisotropyMat * normalize( 2.0 * anisotropyPolar.rg - vec2( 1.0 ) ) * anisotropyPolar.b;\n #else\n vec2 anisotropyV = anisotropyVector;\n #endif\n material.anisotropy = length( anisotropyV );\n if( material.anisotropy == 0.0 ) {\n anisotropyV = vec2( 1.0, 0.0 );\n } else {\n anisotropyV /= material.anisotropy;\n material.anisotropy = saturate( material.anisotropy );\n }\n material.alphaT = mix( pow2( material.roughness ), 1.0, pow2( material.anisotropy ) );\n material.anisotropyT = tbn[ 0 ] * anisotropyV.x + tbn[ 1 ] * anisotropyV.y;\n material.anisotropyB = tbn[ 1 ] * anisotropyV.x - tbn[ 0 ] * anisotropyV.y;\n#endif",lights_physical_pars_fragment:"struct PhysicalMaterial {\n vec3 diffuseColor;\n float roughness;\n vec3 specularColor;\n float specularF90;\n float dispersion;\n #ifdef USE_CLEARCOAT\n float clearcoat;\n float clearcoatRoughness;\n vec3 clearcoatF0;\n float clearcoatF90;\n #endif\n #ifdef USE_IRIDESCENCE\n float iridescence;\n float iridescenceIOR;\n float iridescenceThickness;\n vec3 iridescenceFresnel;\n vec3 iridescenceF0;\n #endif\n #ifdef USE_SHEEN\n vec3 sheenColor;\n float sheenRoughness;\n #endif\n #ifdef IOR\n float ior;\n #endif\n #ifdef USE_TRANSMISSION\n float transmission;\n float transmissionAlpha;\n float thickness;\n float attenuationDistance;\n vec3 attenuationColor;\n #endif\n #ifdef USE_ANISOTROPY\n float anisotropy;\n float alphaT;\n vec3 anisotropyT;\n vec3 anisotropyB;\n #endif\n};\nvec3 clearcoatSpecularDirect = vec3( 0.0 );\nvec3 clearcoatSpecularIndirect = vec3( 0.0 );\nvec3 sheenSpecularDirect = vec3( 0.0 );\nvec3 sheenSpecularIndirect = vec3(0.0 );\nvec3 Schlick_to_F0( const in vec3 f, const in float f90, const in float dotVH ) {\n float x = clamp( 1.0 - dotVH, 0.0, 1.0 );\n float x2 = x * x;\n float x5 = clamp( x * x2 * x2, 0.0, 0.9999 );\n return ( f - vec3( f90 ) * x5 ) / ( 1.0 - x5 );\n}\nfloat V_GGX_SmithCorrelated( const in float alpha, const in float dotNL, const in float dotNV ) {\n float a2 = pow2( alpha );\n float gv = dotNL * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNV ) );\n float gl = dotNV * sqrt( a2 + ( 1.0 - a2 ) * pow2( dotNL ) );\n return 0.5 / max( gv + gl, EPSILON );\n}\nfloat D_GGX( const in float alpha, const in float dotNH ) {\n float a2 = pow2( alpha );\n float denom = pow2( dotNH ) * ( a2 - 1.0 ) + 1.0;\n return RECIPROCAL_PI * a2 / pow2( denom );\n}\n#ifdef USE_ANISOTROPY\n float V_GGX_SmithCorrelated_Anisotropic( const in float alphaT, const in float alphaB, const in float dotTV, const in float dotBV, const in float dotTL, const in float dotBL, const in float dotNV, const in float dotNL ) {\n float gv = dotNL * length( vec3( alphaT * dotTV, alphaB * dotBV, dotNV ) );\n float gl = dotNV * length( vec3( alphaT * dotTL, alphaB * dotBL, dotNL ) );\n float v = 0.5 / ( gv + gl );\n return saturate(v);\n }\n float D_GGX_Anisotropic( const in float alphaT, const in float alphaB, const in float dotNH, const in float dotTH, const in float dotBH ) {\n float a2 = alphaT * alphaB;\n highp vec3 v = vec3( alphaB * dotTH, alphaT * dotBH, a2 * dotNH );\n highp float v2 = dot( v, v );\n float w2 = a2 / v2;\n return RECIPROCAL_PI * a2 * pow2 ( w2 );\n }\n#endif\n#ifdef USE_CLEARCOAT\n vec3 BRDF_GGX_Clearcoat( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material) {\n vec3 f0 = material.clearcoatF0;\n float f90 = material.clearcoatF90;\n float roughness = material.clearcoatRoughness;\n float alpha = pow2( roughness );\n vec3 halfDir = normalize( lightDir + viewDir );\n float dotNL = saturate( dot( normal, lightDir ) );\n float dotNV = saturate( dot( normal, viewDir ) );\n float dotNH = saturate( dot( normal, halfDir ) );\n float dotVH = saturate( dot( viewDir, halfDir ) );\n vec3 F = F_Schlick( f0, f90, dotVH );\n float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n float D = D_GGX( alpha, dotNH );\n return F * ( V * D );\n }\n#endif\nvec3 BRDF_GGX( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, const in PhysicalMaterial material ) {\n vec3 f0 = material.specularColor;\n float f90 = material.specularF90;\n float roughness = material.roughness;\n float alpha = pow2( roughness );\n vec3 halfDir = normalize( lightDir + viewDir );\n float dotNL = saturate( dot( normal, lightDir ) );\n float dotNV = saturate( dot( normal, viewDir ) );\n float dotNH = saturate( dot( normal, halfDir ) );\n float dotVH = saturate( dot( viewDir, halfDir ) );\n vec3 F = F_Schlick( f0, f90, dotVH );\n #ifdef USE_IRIDESCENCE\n F = mix( F, material.iridescenceFresnel, material.iridescence );\n #endif\n #ifdef USE_ANISOTROPY\n float dotTL = dot( material.anisotropyT, lightDir );\n float dotTV = dot( material.anisotropyT, viewDir );\n float dotTH = dot( material.anisotropyT, halfDir );\n float dotBL = dot( material.anisotropyB, lightDir );\n float dotBV = dot( material.anisotropyB, viewDir );\n float dotBH = dot( material.anisotropyB, halfDir );\n float V = V_GGX_SmithCorrelated_Anisotropic( material.alphaT, alpha, dotTV, dotBV, dotTL, dotBL, dotNV, dotNL );\n float D = D_GGX_Anisotropic( material.alphaT, alpha, dotNH, dotTH, dotBH );\n #else\n float V = V_GGX_SmithCorrelated( alpha, dotNL, dotNV );\n float D = D_GGX( alpha, dotNH );\n #endif\n return F * ( V * D );\n}\nvec2 LTC_Uv( const in vec3 N, const in vec3 V, const in float roughness ) {\n const float LUT_SIZE = 64.0;\n const float LUT_SCALE = ( LUT_SIZE - 1.0 ) / LUT_SIZE;\n const float LUT_BIAS = 0.5 / LUT_SIZE;\n float dotNV = saturate( dot( N, V ) );\n vec2 uv = vec2( roughness, sqrt( 1.0 - dotNV ) );\n uv = uv * LUT_SCALE + LUT_BIAS;\n return uv;\n}\nfloat LTC_ClippedSphereFormFactor( const in vec3 f ) {\n float l = length( f );\n return max( ( l * l + f.z ) / ( l + 1.0 ), 0.0 );\n}\nvec3 LTC_EdgeVectorFormFactor( const in vec3 v1, const in vec3 v2 ) {\n float x = dot( v1, v2 );\n float y = abs( x );\n float a = 0.8543985 + ( 0.4965155 + 0.0145206 * y ) * y;\n float b = 3.4175940 + ( 4.1616724 + y ) * y;\n float v = a / b;\n float theta_sintheta = ( x > 0.0 ) ? v : 0.5 * inversesqrt( max( 1.0 - x * x, 1e-7 ) ) - v;\n return cross( v1, v2 ) * theta_sintheta;\n}\nvec3 LTC_Evaluate( const in vec3 N, const in vec3 V, const in vec3 P, const in mat3 mInv, const in vec3 rectCoords[ 4 ] ) {\n vec3 v1 = rectCoords[ 1 ] - rectCoords[ 0 ];\n vec3 v2 = rectCoords[ 3 ] - rectCoords[ 0 ];\n vec3 lightNormal = cross( v1, v2 );\n if( dot( lightNormal, P - rectCoords[ 0 ] ) < 0.0 ) return vec3( 0.0 );\n vec3 T1, T2;\n T1 = normalize( V - N * dot( V, N ) );\n T2 = - cross( N, T1 );\n mat3 mat = mInv * transposeMat3( mat3( T1, T2, N ) );\n vec3 coords[ 4 ];\n coords[ 0 ] = mat * ( rectCoords[ 0 ] - P );\n coords[ 1 ] = mat * ( rectCoords[ 1 ] - P );\n coords[ 2 ] = mat * ( rectCoords[ 2 ] - P );\n coords[ 3 ] = mat * ( rectCoords[ 3 ] - P );\n coords[ 0 ] = normalize( coords[ 0 ] );\n coords[ 1 ] = normalize( coords[ 1 ] );\n coords[ 2 ] = normalize( coords[ 2 ] );\n coords[ 3 ] = normalize( coords[ 3 ] );\n vec3 vectorFormFactor = vec3( 0.0 );\n vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 0 ], coords[ 1 ] );\n vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 1 ], coords[ 2 ] );\n vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 2 ], coords[ 3 ] );\n vectorFormFactor += LTC_EdgeVectorFormFactor( coords[ 3 ], coords[ 0 ] );\n float result = LTC_ClippedSphereFormFactor( vectorFormFactor );\n return vec3( result );\n}\n#if defined( USE_SHEEN )\nfloat D_Charlie( float roughness, float dotNH ) {\n float alpha = pow2( roughness );\n float invAlpha = 1.0 / alpha;\n float cos2h = dotNH * dotNH;\n float sin2h = max( 1.0 - cos2h, 0.0078125 );\n return ( 2.0 + invAlpha ) * pow( sin2h, invAlpha * 0.5 ) / ( 2.0 * PI );\n}\nfloat V_Neubelt( float dotNV, float dotNL ) {\n return saturate( 1.0 / ( 4.0 * ( dotNL + dotNV - dotNL * dotNV ) ) );\n}\nvec3 BRDF_Sheen( const in vec3 lightDir, const in vec3 viewDir, const in vec3 normal, vec3 sheenColor, const in float sheenRoughness ) {\n vec3 halfDir = normalize( lightDir + viewDir );\n float dotNL = saturate( dot( normal, lightDir ) );\n float dotNV = saturate( dot( normal, viewDir ) );\n float dotNH = saturate( dot( normal, halfDir ) );\n float D = D_Charlie( sheenRoughness, dotNH );\n float V = V_Neubelt( dotNV, dotNL );\n return sheenColor * ( D * V );\n}\n#endif\nfloat IBLSheenBRDF( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\n float dotNV = saturate( dot( normal, viewDir ) );\n float r2 = roughness * roughness;\n float a = roughness < 0.25 ? -339.2 * r2 + 161.4 * roughness - 25.9 : -8.48 * r2 + 14.3 * roughness - 9.95;\n float b = roughness < 0.25 ? 44.0 * r2 - 23.7 * roughness + 3.26 : 1.97 * r2 - 3.27 * roughness + 0.72;\n float DG = exp( a * dotNV + b ) + ( roughness < 0.25 ? 0.0 : 0.1 * ( roughness - 0.25 ) );\n return saturate( DG * RECIPROCAL_PI );\n}\nvec2 DFGApprox( const in vec3 normal, const in vec3 viewDir, const in float roughness ) {\n float dotNV = saturate( dot( normal, viewDir ) );\n const vec4 c0 = vec4( - 1, - 0.0275, - 0.572, 0.022 );\n const vec4 c1 = vec4( 1, 0.0425, 1.04, - 0.04 );\n vec4 r = roughness * c0 + c1;\n float a004 = min( r.x * r.x, exp2( - 9.28 * dotNV ) ) * r.x + r.y;\n vec2 fab = vec2( - 1.04, 1.04 ) * a004 + r.zw;\n return fab;\n}\nvec3 EnvironmentBRDF( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness ) {\n vec2 fab = DFGApprox( normal, viewDir, roughness );\n return specularColor * fab.x + specularF90 * fab.y;\n}\n#ifdef USE_IRIDESCENCE\nvoid computeMultiscatteringIridescence( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float iridescence, const in vec3 iridescenceF0, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n#else\nvoid computeMultiscattering( const in vec3 normal, const in vec3 viewDir, const in vec3 specularColor, const in float specularF90, const in float roughness, inout vec3 singleScatter, inout vec3 multiScatter ) {\n#endif\n vec2 fab = DFGApprox( normal, viewDir, roughness );\n #ifdef USE_IRIDESCENCE\n vec3 Fr = mix( specularColor, iridescenceF0, iridescence );\n #else\n vec3 Fr = specularColor;\n #endif\n vec3 FssEss = Fr * fab.x + specularF90 * fab.y;\n float Ess = fab.x + fab.y;\n float Ems = 1.0 - Ess;\n vec3 Favg = Fr + ( 1.0 - Fr ) * 0.047619; vec3 Fms = FssEss * Favg / ( 1.0 - Ems * Favg );\n singleScatter += FssEss;\n multiScatter += Fms * Ems;\n}\n#if NUM_RECT_AREA_LIGHTS > 0\n void RE_Direct_RectArea_Physical( const in RectAreaLight rectAreaLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n vec3 normal = geometryNormal;\n vec3 viewDir = geometryViewDir;\n vec3 position = geometryPosition;\n vec3 lightPos = rectAreaLight.position;\n vec3 halfWidth = rectAreaLight.halfWidth;\n vec3 halfHeight = rectAreaLight.halfHeight;\n vec3 lightColor = rectAreaLight.color;\n float roughness = material.roughness;\n vec3 rectCoords[ 4 ];\n rectCoords[ 0 ] = lightPos + halfWidth - halfHeight; rectCoords[ 1 ] = lightPos - halfWidth - halfHeight;\n rectCoords[ 2 ] = lightPos - halfWidth + halfHeight;\n rectCoords[ 3 ] = lightPos + halfWidth + halfHeight;\n vec2 uv = LTC_Uv( normal, viewDir, roughness );\n vec4 t1 = texture2D( ltc_1, uv );\n vec4 t2 = texture2D( ltc_2, uv );\n mat3 mInv = mat3(\n vec3( t1.x, 0, t1.y ),\n vec3( 0, 1, 0 ),\n vec3( t1.z, 0, t1.w )\n );\n vec3 fresnel = ( material.specularColor * t2.x + ( vec3( 1.0 ) - material.specularColor ) * t2.y );\n reflectedLight.directSpecular += lightColor * fresnel * LTC_Evaluate( normal, viewDir, position, mInv, rectCoords );\n reflectedLight.directDiffuse += lightColor * material.diffuseColor * LTC_Evaluate( normal, viewDir, position, mat3( 1.0 ), rectCoords );\n }\n#endif\nvoid RE_Direct_Physical( const in IncidentLight directLight, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n float dotNL = saturate( dot( geometryNormal, directLight.direction ) );\n vec3 irradiance = dotNL * directLight.color;\n #ifdef USE_CLEARCOAT\n float dotNLcc = saturate( dot( geometryClearcoatNormal, directLight.direction ) );\n vec3 ccIrradiance = dotNLcc * directLight.color;\n clearcoatSpecularDirect += ccIrradiance * BRDF_GGX_Clearcoat( directLight.direction, geometryViewDir, geometryClearcoatNormal, material );\n #endif\n #ifdef USE_SHEEN\n sheenSpecularDirect += irradiance * BRDF_Sheen( directLight.direction, geometryViewDir, geometryNormal, material.sheenColor, material.sheenRoughness );\n #endif\n reflectedLight.directSpecular += irradiance * BRDF_GGX( directLight.direction, geometryViewDir, geometryNormal, material );\n reflectedLight.directDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectDiffuse_Physical( const in vec3 irradiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight ) {\n reflectedLight.indirectDiffuse += irradiance * BRDF_Lambert( material.diffuseColor );\n}\nvoid RE_IndirectSpecular_Physical( const in vec3 radiance, const in vec3 irradiance, const in vec3 clearcoatRadiance, const in vec3 geometryPosition, const in vec3 geometryNormal, const in vec3 geometryViewDir, const in vec3 geometryClearcoatNormal, const in PhysicalMaterial material, inout ReflectedLight reflectedLight) {\n #ifdef USE_CLEARCOAT\n clearcoatSpecularIndirect += clearcoatRadiance * EnvironmentBRDF( geometryClearcoatNormal, geometryViewDir, material.clearcoatF0, material.clearcoatF90, material.clearcoatRoughness );\n #endif\n #ifdef USE_SHEEN\n sheenSpecularIndirect += irradiance * material.sheenColor * IBLSheenBRDF( geometryNormal, geometryViewDir, material.sheenRoughness );\n #endif\n vec3 singleScattering = vec3( 0.0 );\n vec3 multiScattering = vec3( 0.0 );\n vec3 cosineWeightedIrradiance = irradiance * RECIPROCAL_PI;\n #ifdef USE_IRIDESCENCE\n computeMultiscatteringIridescence( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.iridescence, material.iridescenceFresnel, material.roughness, singleScattering, multiScattering );\n #else\n computeMultiscattering( geometryNormal, geometryViewDir, material.specularColor, material.specularF90, material.roughness, singleScattering, multiScattering );\n #endif\n vec3 totalScattering = singleScattering + multiScattering;\n vec3 diffuse = material.diffuseColor * ( 1.0 - max( max( totalScattering.r, totalScattering.g ), totalScattering.b ) );\n reflectedLight.indirectSpecular += radiance * singleScattering;\n reflectedLight.indirectSpecular += multiScattering * cosineWeightedIrradiance;\n reflectedLight.indirectDiffuse += diffuse * cosineWeightedIrradiance;\n}\n#define RE_Direct RE_Direct_Physical\n#define RE_Direct_RectArea RE_Direct_RectArea_Physical\n#define RE_IndirectDiffuse RE_IndirectDiffuse_Physical\n#define RE_IndirectSpecular RE_IndirectSpecular_Physical\nfloat computeSpecularOcclusion( const in float dotNV, const in float ambientOcclusion, const in float roughness ) {\n return saturate( pow( dotNV + ambientOcclusion, exp2( - 16.0 * roughness - 1.0 ) ) - 1.0 + ambientOcclusion );\n}",lights_fragment_begin:"\nvec3 geometryPosition = - vViewPosition;\nvec3 geometryNormal = normal;\nvec3 geometryViewDir = ( isOrthographic ) ? vec3( 0, 0, 1 ) : normalize( vViewPosition );\nvec3 geometryClearcoatNormal = vec3( 0.0 );\n#ifdef USE_CLEARCOAT\n geometryClearcoatNormal = clearcoatNormal;\n#endif\n#ifdef USE_IRIDESCENCE\n float dotNVi = saturate( dot( normal, geometryViewDir ) );\n if ( material.iridescenceThickness == 0.0 ) {\n material.iridescence = 0.0;\n } else {\n material.iridescence = saturate( material.iridescence );\n }\n if ( material.iridescence > 0.0 ) {\n material.iridescenceFresnel = evalIridescence( 1.0, material.iridescenceIOR, dotNVi, material.iridescenceThickness, material.specularColor );\n material.iridescenceF0 = Schlick_to_F0( material.iridescenceFresnel, 1.0, dotNVi );\n }\n#endif\nIncidentLight directLight;\n#if ( NUM_POINT_LIGHTS > 0 ) && defined( RE_Direct )\n PointLight pointLight;\n #if defined( USE_SHADOWMAP ) && NUM_POINT_LIGHT_SHADOWS > 0\n PointLightShadow pointLightShadow;\n #endif\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_POINT_LIGHTS; i ++ ) {\n pointLight = pointLights[ i ];\n getPointLightInfo( pointLight, geometryPosition, directLight );\n #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_POINT_LIGHT_SHADOWS )\n pointLightShadow = pointLightShadows[ i ];\n directLight.color *= ( directLight.visible && receiveShadow ) ? getPointShadow( pointShadowMap[ i ], pointLightShadow.shadowMapSize, pointLightShadow.shadowIntensity, pointLightShadow.shadowBias, pointLightShadow.shadowRadius, vPointShadowCoord[ i ], pointLightShadow.shadowCameraNear, pointLightShadow.shadowCameraFar ) : 1.0;\n #endif\n RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n }\n #pragma unroll_loop_end\n#endif\n#if ( NUM_SPOT_LIGHTS > 0 ) && defined( RE_Direct )\n SpotLight spotLight;\n vec4 spotColor;\n vec3 spotLightCoord;\n bool inSpotLightMap;\n #if defined( USE_SHADOWMAP ) && NUM_SPOT_LIGHT_SHADOWS > 0\n SpotLightShadow spotLightShadow;\n #endif\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_SPOT_LIGHTS; i ++ ) {\n spotLight = spotLights[ i ];\n getSpotLightInfo( spotLight, geometryPosition, directLight );\n #if ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\n #define SPOT_LIGHT_MAP_INDEX UNROLLED_LOOP_INDEX\n #elif ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n #define SPOT_LIGHT_MAP_INDEX NUM_SPOT_LIGHT_MAPS\n #else\n #define SPOT_LIGHT_MAP_INDEX ( UNROLLED_LOOP_INDEX - NUM_SPOT_LIGHT_SHADOWS + NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS )\n #endif\n #if ( SPOT_LIGHT_MAP_INDEX < NUM_SPOT_LIGHT_MAPS )\n spotLightCoord = vSpotLightCoord[ i ].xyz / vSpotLightCoord[ i ].w;\n inSpotLightMap = all( lessThan( abs( spotLightCoord * 2. - 1. ), vec3( 1.0 ) ) );\n spotColor = texture2D( spotLightMap[ SPOT_LIGHT_MAP_INDEX ], spotLightCoord.xy );\n directLight.color = inSpotLightMap ? directLight.color * spotColor.rgb : directLight.color;\n #endif\n #undef SPOT_LIGHT_MAP_INDEX\n #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n spotLightShadow = spotLightShadows[ i ];\n directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( spotShadowMap[ i ], spotLightShadow.shadowMapSize, spotLightShadow.shadowIntensity, spotLightShadow.shadowBias, spotLightShadow.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\n #endif\n RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n }\n #pragma unroll_loop_end\n#endif\n#if ( NUM_DIR_LIGHTS > 0 ) && defined( RE_Direct )\n DirectionalLight directionalLight;\n #if defined( USE_SHADOWMAP ) && NUM_DIR_LIGHT_SHADOWS > 0\n DirectionalLightShadow directionalLightShadow;\n #endif\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_DIR_LIGHTS; i ++ ) {\n directionalLight = directionalLights[ i ];\n getDirectionalLightInfo( directionalLight, directLight );\n #if defined( USE_SHADOWMAP ) && ( UNROLLED_LOOP_INDEX < NUM_DIR_LIGHT_SHADOWS )\n directionalLightShadow = directionalLightShadows[ i ];\n directLight.color *= ( directLight.visible && receiveShadow ) ? getShadow( directionalShadowMap[ i ], directionalLightShadow.shadowMapSize, directionalLightShadow.shadowIntensity, directionalLightShadow.shadowBias, directionalLightShadow.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n #endif\n RE_Direct( directLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n }\n #pragma unroll_loop_end\n#endif\n#if ( NUM_RECT_AREA_LIGHTS > 0 ) && defined( RE_Direct_RectArea )\n RectAreaLight rectAreaLight;\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_RECT_AREA_LIGHTS; i ++ ) {\n rectAreaLight = rectAreaLights[ i ];\n RE_Direct_RectArea( rectAreaLight, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n }\n #pragma unroll_loop_end\n#endif\n#if defined( RE_IndirectDiffuse )\n vec3 iblIrradiance = vec3( 0.0 );\n vec3 irradiance = getAmbientLightIrradiance( ambientLightColor );\n #if defined( USE_LIGHT_PROBES )\n irradiance += getLightProbeIrradiance( lightProbe, geometryNormal );\n #endif\n #if ( NUM_HEMI_LIGHTS > 0 )\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_HEMI_LIGHTS; i ++ ) {\n irradiance += getHemisphereLightIrradiance( hemisphereLights[ i ], geometryNormal );\n }\n #pragma unroll_loop_end\n #endif\n#endif\n#if defined( RE_IndirectSpecular )\n vec3 radiance = vec3( 0.0 );\n vec3 clearcoatRadiance = vec3( 0.0 );\n#endif",lights_fragment_maps:"#if defined( RE_IndirectDiffuse )\n #ifdef USE_LIGHTMAP\n vec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\n vec3 lightMapIrradiance = lightMapTexel.rgb * lightMapIntensity;\n irradiance += lightMapIrradiance;\n #endif\n #if defined( USE_ENVMAP ) && defined( STANDARD ) && defined( ENVMAP_TYPE_CUBE_UV )\n iblIrradiance += getIBLIrradiance( geometryNormal );\n #endif\n#endif\n#if defined( USE_ENVMAP ) && defined( RE_IndirectSpecular )\n #ifdef USE_ANISOTROPY\n radiance += getIBLAnisotropyRadiance( geometryViewDir, geometryNormal, material.roughness, material.anisotropyB, material.anisotropy );\n #else\n radiance += getIBLRadiance( geometryViewDir, geometryNormal, material.roughness );\n #endif\n #ifdef USE_CLEARCOAT\n clearcoatRadiance += getIBLRadiance( geometryViewDir, geometryClearcoatNormal, material.clearcoatRoughness );\n #endif\n#endif",lights_fragment_end:"#if defined( RE_IndirectDiffuse )\n RE_IndirectDiffuse( irradiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n#endif\n#if defined( RE_IndirectSpecular )\n RE_IndirectSpecular( radiance, iblIrradiance, clearcoatRadiance, geometryPosition, geometryNormal, geometryViewDir, geometryClearcoatNormal, material, reflectedLight );\n#endif",logdepthbuf_fragment:"#if defined( USE_LOGDEPTHBUF )\n gl_FragDepth = vIsPerspective == 0.0 ? gl_FragCoord.z : log2( vFragDepth ) * logDepthBufFC * 0.5;\n#endif",logdepthbuf_pars_fragment:"#if defined( USE_LOGDEPTHBUF )\n uniform float logDepthBufFC;\n varying float vFragDepth;\n varying float vIsPerspective;\n#endif",logdepthbuf_pars_vertex:"#ifdef USE_LOGDEPTHBUF\n varying float vFragDepth;\n varying float vIsPerspective;\n#endif",logdepthbuf_vertex:"#ifdef USE_LOGDEPTHBUF\n vFragDepth = 1.0 + gl_Position.w;\n vIsPerspective = float( isPerspectiveMatrix( projectionMatrix ) );\n#endif",map_fragment:"#ifdef USE_MAP\n vec4 sampledDiffuseColor = texture2D( map, vMapUv );\n #ifdef DECODE_VIDEO_TEXTURE\n sampledDiffuseColor = sRGBTransferEOTF( sampledDiffuseColor );\n #endif\n diffuseColor *= sampledDiffuseColor;\n#endif",map_pars_fragment:"#ifdef USE_MAP\n uniform sampler2D map;\n#endif",map_particle_fragment:"#if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n #if defined( USE_POINTS_UV )\n vec2 uv = vUv;\n #else\n vec2 uv = ( uvTransform * vec3( gl_PointCoord.x, 1.0 - gl_PointCoord.y, 1 ) ).xy;\n #endif\n#endif\n#ifdef USE_MAP\n diffuseColor *= texture2D( map, uv );\n#endif\n#ifdef USE_ALPHAMAP\n diffuseColor.a *= texture2D( alphaMap, uv ).g;\n#endif",map_particle_pars_fragment:"#if defined( USE_POINTS_UV )\n varying vec2 vUv;\n#else\n #if defined( USE_MAP ) || defined( USE_ALPHAMAP )\n uniform mat3 uvTransform;\n #endif\n#endif\n#ifdef USE_MAP\n uniform sampler2D map;\n#endif\n#ifdef USE_ALPHAMAP\n uniform sampler2D alphaMap;\n#endif",metalnessmap_fragment:"float metalnessFactor = metalness;\n#ifdef USE_METALNESSMAP\n vec4 texelMetalness = texture2D( metalnessMap, vMetalnessMapUv );\n metalnessFactor *= texelMetalness.b;\n#endif",metalnessmap_pars_fragment:"#ifdef USE_METALNESSMAP\n uniform sampler2D metalnessMap;\n#endif",morphinstance_vertex:"#ifdef USE_INSTANCING_MORPH\n float morphTargetInfluences[ MORPHTARGETS_COUNT ];\n float morphTargetBaseInfluence = texelFetch( morphTexture, ivec2( 0, gl_InstanceID ), 0 ).r;\n for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n morphTargetInfluences[i] = texelFetch( morphTexture, ivec2( i + 1, gl_InstanceID ), 0 ).r;\n }\n#endif",morphcolor_vertex:"#if defined( USE_MORPHCOLORS )\n vColor *= morphTargetBaseInfluence;\n for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n #if defined( USE_COLOR_ALPHA )\n if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ) * morphTargetInfluences[ i ];\n #elif defined( USE_COLOR )\n if ( morphTargetInfluences[ i ] != 0.0 ) vColor += getMorph( gl_VertexID, i, 2 ).rgb * morphTargetInfluences[ i ];\n #endif\n }\n#endif",morphnormal_vertex:"#ifdef USE_MORPHNORMALS\n objectNormal *= morphTargetBaseInfluence;\n for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n if ( morphTargetInfluences[ i ] != 0.0 ) objectNormal += getMorph( gl_VertexID, i, 1 ).xyz * morphTargetInfluences[ i ];\n }\n#endif",morphtarget_pars_vertex:"#ifdef USE_MORPHTARGETS\n #ifndef USE_INSTANCING_MORPH\n uniform float morphTargetBaseInfluence;\n uniform float morphTargetInfluences[ MORPHTARGETS_COUNT ];\n #endif\n uniform sampler2DArray morphTargetsTexture;\n uniform ivec2 morphTargetsTextureSize;\n vec4 getMorph( const in int vertexIndex, const in int morphTargetIndex, const in int offset ) {\n int texelIndex = vertexIndex * MORPHTARGETS_TEXTURE_STRIDE + offset;\n int y = texelIndex / morphTargetsTextureSize.x;\n int x = texelIndex - y * morphTargetsTextureSize.x;\n ivec3 morphUV = ivec3( x, y, morphTargetIndex );\n return texelFetch( morphTargetsTexture, morphUV, 0 );\n }\n#endif",morphtarget_vertex:"#ifdef USE_MORPHTARGETS\n transformed *= morphTargetBaseInfluence;\n for ( int i = 0; i < MORPHTARGETS_COUNT; i ++ ) {\n if ( morphTargetInfluences[ i ] != 0.0 ) transformed += getMorph( gl_VertexID, i, 0 ).xyz * morphTargetInfluences[ i ];\n }\n#endif",normal_fragment_begin:"float faceDirection = gl_FrontFacing ? 1.0 : - 1.0;\n#ifdef FLAT_SHADED\n vec3 fdx = dFdx( vViewPosition );\n vec3 fdy = dFdy( vViewPosition );\n vec3 normal = normalize( cross( fdx, fdy ) );\n#else\n vec3 normal = normalize( vNormal );\n #ifdef DOUBLE_SIDED\n normal *= faceDirection;\n #endif\n#endif\n#if defined( USE_NORMALMAP_TANGENTSPACE ) || defined( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY )\n #ifdef USE_TANGENT\n mat3 tbn = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\n #else\n mat3 tbn = getTangentFrame( - vViewPosition, normal,\n #if defined( USE_NORMALMAP )\n vNormalMapUv\n #elif defined( USE_CLEARCOAT_NORMALMAP )\n vClearcoatNormalMapUv\n #else\n vUv\n #endif\n );\n #endif\n #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\n tbn[0] *= faceDirection;\n tbn[1] *= faceDirection;\n #endif\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n #ifdef USE_TANGENT\n mat3 tbn2 = mat3( normalize( vTangent ), normalize( vBitangent ), normal );\n #else\n mat3 tbn2 = getTangentFrame( - vViewPosition, normal, vClearcoatNormalMapUv );\n #endif\n #if defined( DOUBLE_SIDED ) && ! defined( FLAT_SHADED )\n tbn2[0] *= faceDirection;\n tbn2[1] *= faceDirection;\n #endif\n#endif\nvec3 nonPerturbedNormal = normal;",normal_fragment_maps:"#ifdef USE_NORMALMAP_OBJECTSPACE\n normal = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;\n #ifdef FLIP_SIDED\n normal = - normal;\n #endif\n #ifdef DOUBLE_SIDED\n normal = normal * faceDirection;\n #endif\n normal = normalize( normalMatrix * normal );\n#elif defined( USE_NORMALMAP_TANGENTSPACE )\n vec3 mapN = texture2D( normalMap, vNormalMapUv ).xyz * 2.0 - 1.0;\n mapN.xy *= normalScale;\n normal = normalize( tbn * mapN );\n#elif defined( USE_BUMPMAP )\n normal = perturbNormalArb( - vViewPosition, normal, dHdxy_fwd(), faceDirection );\n#endif",normal_pars_fragment:"#ifndef FLAT_SHADED\n varying vec3 vNormal;\n #ifdef USE_TANGENT\n varying vec3 vTangent;\n varying vec3 vBitangent;\n #endif\n#endif",normal_pars_vertex:"#ifndef FLAT_SHADED\n varying vec3 vNormal;\n #ifdef USE_TANGENT\n varying vec3 vTangent;\n varying vec3 vBitangent;\n #endif\n#endif",normal_vertex:"#ifndef FLAT_SHADED\n vNormal = normalize( transformedNormal );\n #ifdef USE_TANGENT\n vTangent = normalize( transformedTangent );\n vBitangent = normalize( cross( vNormal, vTangent ) * tangent.w );\n #endif\n#endif",normalmap_pars_fragment:"#ifdef USE_NORMALMAP\n uniform sampler2D normalMap;\n uniform vec2 normalScale;\n#endif\n#ifdef USE_NORMALMAP_OBJECTSPACE\n uniform mat3 normalMatrix;\n#endif\n#if ! defined ( USE_TANGENT ) && ( defined ( USE_NORMALMAP_TANGENTSPACE ) || defined ( USE_CLEARCOAT_NORMALMAP ) || defined( USE_ANISOTROPY ) )\n mat3 getTangentFrame( vec3 eye_pos, vec3 surf_norm, vec2 uv ) {\n vec3 q0 = dFdx( eye_pos.xyz );\n vec3 q1 = dFdy( eye_pos.xyz );\n vec2 st0 = dFdx( uv.st );\n vec2 st1 = dFdy( uv.st );\n vec3 N = surf_norm;\n vec3 q1perp = cross( q1, N );\n vec3 q0perp = cross( N, q0 );\n vec3 T = q1perp * st0.x + q0perp * st1.x;\n vec3 B = q1perp * st0.y + q0perp * st1.y;\n float det = max( dot( T, T ), dot( B, B ) );\n float scale = ( det == 0.0 ) ? 0.0 : inversesqrt( det );\n return mat3( T * scale, B * scale, N );\n }\n#endif",clearcoat_normal_fragment_begin:"#ifdef USE_CLEARCOAT\n vec3 clearcoatNormal = nonPerturbedNormal;\n#endif",clearcoat_normal_fragment_maps:"#ifdef USE_CLEARCOAT_NORMALMAP\n vec3 clearcoatMapN = texture2D( clearcoatNormalMap, vClearcoatNormalMapUv ).xyz * 2.0 - 1.0;\n clearcoatMapN.xy *= clearcoatNormalScale;\n clearcoatNormal = normalize( tbn2 * clearcoatMapN );\n#endif",clearcoat_pars_fragment:"#ifdef USE_CLEARCOATMAP\n uniform sampler2D clearcoatMap;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n uniform sampler2D clearcoatNormalMap;\n uniform vec2 clearcoatNormalScale;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n uniform sampler2D clearcoatRoughnessMap;\n#endif",iridescence_pars_fragment:"#ifdef USE_IRIDESCENCEMAP\n uniform sampler2D iridescenceMap;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n uniform sampler2D iridescenceThicknessMap;\n#endif",opaque_fragment:"#ifdef OPAQUE\ndiffuseColor.a = 1.0;\n#endif\n#ifdef USE_TRANSMISSION\ndiffuseColor.a *= material.transmissionAlpha;\n#endif\ngl_FragColor = vec4( outgoingLight, diffuseColor.a );",packing:"vec3 packNormalToRGB( const in vec3 normal ) {\n return normalize( normal ) * 0.5 + 0.5;\n}\nvec3 unpackRGBToNormal( const in vec3 rgb ) {\n return 2.0 * rgb.xyz - 1.0;\n}\nconst float PackUpscale = 256. / 255.;const float UnpackDownscale = 255. / 256.;const float ShiftRight8 = 1. / 256.;\nconst float Inv255 = 1. / 255.;\nconst vec4 PackFactors = vec4( 1.0, 256.0, 256.0 * 256.0, 256.0 * 256.0 * 256.0 );\nconst vec2 UnpackFactors2 = vec2( UnpackDownscale, 1.0 / PackFactors.g );\nconst vec3 UnpackFactors3 = vec3( UnpackDownscale / PackFactors.rg, 1.0 / PackFactors.b );\nconst vec4 UnpackFactors4 = vec4( UnpackDownscale / PackFactors.rgb, 1.0 / PackFactors.a );\nvec4 packDepthToRGBA( const in float v ) {\n if( v <= 0.0 )\n return vec4( 0., 0., 0., 0. );\n if( v >= 1.0 )\n return vec4( 1., 1., 1., 1. );\n float vuf;\n float af = modf( v * PackFactors.a, vuf );\n float bf = modf( vuf * ShiftRight8, vuf );\n float gf = modf( vuf * ShiftRight8, vuf );\n return vec4( vuf * Inv255, gf * PackUpscale, bf * PackUpscale, af );\n}\nvec3 packDepthToRGB( const in float v ) {\n if( v <= 0.0 )\n return vec3( 0., 0., 0. );\n if( v >= 1.0 )\n return vec3( 1., 1., 1. );\n float vuf;\n float bf = modf( v * PackFactors.b, vuf );\n float gf = modf( vuf * ShiftRight8, vuf );\n return vec3( vuf * Inv255, gf * PackUpscale, bf );\n}\nvec2 packDepthToRG( const in float v ) {\n if( v <= 0.0 )\n return vec2( 0., 0. );\n if( v >= 1.0 )\n return vec2( 1., 1. );\n float vuf;\n float gf = modf( v * 256., vuf );\n return vec2( vuf * Inv255, gf );\n}\nfloat unpackRGBAToDepth( const in vec4 v ) {\n return dot( v, UnpackFactors4 );\n}\nfloat unpackRGBToDepth( const in vec3 v ) {\n return dot( v, UnpackFactors3 );\n}\nfloat unpackRGToDepth( const in vec2 v ) {\n return v.r * UnpackFactors2.r + v.g * UnpackFactors2.g;\n}\nvec4 pack2HalfToRGBA( const in vec2 v ) {\n vec4 r = vec4( v.x, fract( v.x * 255.0 ), v.y, fract( v.y * 255.0 ) );\n return vec4( r.x - r.y / 255.0, r.y, r.z - r.w / 255.0, r.w );\n}\nvec2 unpackRGBATo2Half( const in vec4 v ) {\n return vec2( v.x + ( v.y / 255.0 ), v.z + ( v.w / 255.0 ) );\n}\nfloat viewZToOrthographicDepth( const in float viewZ, const in float near, const in float far ) {\n return ( viewZ + near ) / ( near - far );\n}\nfloat orthographicDepthToViewZ( const in float depth, const in float near, const in float far ) {\n return depth * ( near - far ) - near;\n}\nfloat viewZToPerspectiveDepth( const in float viewZ, const in float near, const in float far ) {\n return ( ( near + viewZ ) * far ) / ( ( far - near ) * viewZ );\n}\nfloat perspectiveDepthToViewZ( const in float depth, const in float near, const in float far ) {\n return ( near * far ) / ( ( far - near ) * depth - far );\n}",premultiplied_alpha_fragment:"#ifdef PREMULTIPLIED_ALPHA\n gl_FragColor.rgb *= gl_FragColor.a;\n#endif",project_vertex:"vec4 mvPosition = vec4( transformed, 1.0 );\n#ifdef USE_BATCHING\n mvPosition = batchingMatrix * mvPosition;\n#endif\n#ifdef USE_INSTANCING\n mvPosition = instanceMatrix * mvPosition;\n#endif\nmvPosition = modelViewMatrix * mvPosition;\ngl_Position = projectionMatrix * mvPosition;",dithering_fragment:"#ifdef DITHERING\n gl_FragColor.rgb = dithering( gl_FragColor.rgb );\n#endif",dithering_pars_fragment:"#ifdef DITHERING\n vec3 dithering( vec3 color ) {\n float grid_position = rand( gl_FragCoord.xy );\n vec3 dither_shift_RGB = vec3( 0.25 / 255.0, -0.25 / 255.0, 0.25 / 255.0 );\n dither_shift_RGB = mix( 2.0 * dither_shift_RGB, -2.0 * dither_shift_RGB, grid_position );\n return color + dither_shift_RGB;\n }\n#endif",roughnessmap_fragment:"float roughnessFactor = roughness;\n#ifdef USE_ROUGHNESSMAP\n vec4 texelRoughness = texture2D( roughnessMap, vRoughnessMapUv );\n roughnessFactor *= texelRoughness.g;\n#endif",roughnessmap_pars_fragment:"#ifdef USE_ROUGHNESSMAP\n uniform sampler2D roughnessMap;\n#endif",shadowmap_pars_fragment:"#if NUM_SPOT_LIGHT_COORDS > 0\n varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\n#endif\n#if NUM_SPOT_LIGHT_MAPS > 0\n uniform sampler2D spotLightMap[ NUM_SPOT_LIGHT_MAPS ];\n#endif\n#ifdef USE_SHADOWMAP\n #if NUM_DIR_LIGHT_SHADOWS > 0\n uniform sampler2D directionalShadowMap[ NUM_DIR_LIGHT_SHADOWS ];\n varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n struct DirectionalLightShadow {\n float shadowIntensity;\n float shadowBias;\n float shadowNormalBias;\n float shadowRadius;\n vec2 shadowMapSize;\n };\n uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n #endif\n #if NUM_SPOT_LIGHT_SHADOWS > 0\n uniform sampler2D spotShadowMap[ NUM_SPOT_LIGHT_SHADOWS ];\n struct SpotLightShadow {\n float shadowIntensity;\n float shadowBias;\n float shadowNormalBias;\n float shadowRadius;\n vec2 shadowMapSize;\n };\n uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n #endif\n #if NUM_POINT_LIGHT_SHADOWS > 0\n uniform sampler2D pointShadowMap[ NUM_POINT_LIGHT_SHADOWS ];\n varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n struct PointLightShadow {\n float shadowIntensity;\n float shadowBias;\n float shadowNormalBias;\n float shadowRadius;\n vec2 shadowMapSize;\n float shadowCameraNear;\n float shadowCameraFar;\n };\n uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n #endif\n float texture2DCompare( sampler2D depths, vec2 uv, float compare ) {\n return step( compare, unpackRGBAToDepth( texture2D( depths, uv ) ) );\n }\n vec2 texture2DDistribution( sampler2D shadow, vec2 uv ) {\n return unpackRGBATo2Half( texture2D( shadow, uv ) );\n }\n float VSMShadow (sampler2D shadow, vec2 uv, float compare ){\n float occlusion = 1.0;\n vec2 distribution = texture2DDistribution( shadow, uv );\n float hard_shadow = step( compare , distribution.x );\n if (hard_shadow != 1.0 ) {\n float distance = compare - distribution.x ;\n float variance = max( 0.00000, distribution.y * distribution.y );\n float softness_probability = variance / (variance + distance * distance ); softness_probability = clamp( ( softness_probability - 0.3 ) / ( 0.95 - 0.3 ), 0.0, 1.0 ); occlusion = clamp( max( hard_shadow, softness_probability ), 0.0, 1.0 );\n }\n return occlusion;\n }\n float getShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord ) {\n float shadow = 1.0;\n shadowCoord.xyz /= shadowCoord.w;\n shadowCoord.z += shadowBias;\n bool inFrustum = shadowCoord.x >= 0.0 && shadowCoord.x <= 1.0 && shadowCoord.y >= 0.0 && shadowCoord.y <= 1.0;\n bool frustumTest = inFrustum && shadowCoord.z <= 1.0;\n if ( frustumTest ) {\n #if defined( SHADOWMAP_TYPE_PCF )\n vec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n float dx0 = - texelSize.x * shadowRadius;\n float dy0 = - texelSize.y * shadowRadius;\n float dx1 = + texelSize.x * shadowRadius;\n float dy1 = + texelSize.y * shadowRadius;\n float dx2 = dx0 / 2.0;\n float dy2 = dy0 / 2.0;\n float dx3 = dx1 / 2.0;\n float dy3 = dy1 / 2.0;\n shadow = (\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy0 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy0 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy0 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy2 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy2 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy2 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, 0.0 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, 0.0 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, 0.0 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, 0.0 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx2, dy3 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy3 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx3, dy3 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx0, dy1 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( 0.0, dy1 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, shadowCoord.xy + vec2( dx1, dy1 ), shadowCoord.z )\n ) * ( 1.0 / 17.0 );\n #elif defined( SHADOWMAP_TYPE_PCF_SOFT )\n vec2 texelSize = vec2( 1.0 ) / shadowMapSize;\n float dx = texelSize.x;\n float dy = texelSize.y;\n vec2 uv = shadowCoord.xy;\n vec2 f = fract( uv * shadowMapSize + 0.5 );\n uv -= f * texelSize;\n shadow = (\n texture2DCompare( shadowMap, uv, shadowCoord.z ) +\n texture2DCompare( shadowMap, uv + vec2( dx, 0.0 ), shadowCoord.z ) +\n texture2DCompare( shadowMap, uv + vec2( 0.0, dy ), shadowCoord.z ) +\n texture2DCompare( shadowMap, uv + texelSize, shadowCoord.z ) +\n mix( texture2DCompare( shadowMap, uv + vec2( -dx, 0.0 ), shadowCoord.z ),\n texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 0.0 ), shadowCoord.z ),\n f.x ) +\n mix( texture2DCompare( shadowMap, uv + vec2( -dx, dy ), shadowCoord.z ),\n texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, dy ), shadowCoord.z ),\n f.x ) +\n mix( texture2DCompare( shadowMap, uv + vec2( 0.0, -dy ), shadowCoord.z ),\n texture2DCompare( shadowMap, uv + vec2( 0.0, 2.0 * dy ), shadowCoord.z ),\n f.y ) +\n mix( texture2DCompare( shadowMap, uv + vec2( dx, -dy ), shadowCoord.z ),\n texture2DCompare( shadowMap, uv + vec2( dx, 2.0 * dy ), shadowCoord.z ),\n f.y ) +\n mix( mix( texture2DCompare( shadowMap, uv + vec2( -dx, -dy ), shadowCoord.z ),\n texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, -dy ), shadowCoord.z ),\n f.x ),\n mix( texture2DCompare( shadowMap, uv + vec2( -dx, 2.0 * dy ), shadowCoord.z ),\n texture2DCompare( shadowMap, uv + vec2( 2.0 * dx, 2.0 * dy ), shadowCoord.z ),\n f.x ),\n f.y )\n ) * ( 1.0 / 9.0 );\n #elif defined( SHADOWMAP_TYPE_VSM )\n shadow = VSMShadow( shadowMap, shadowCoord.xy, shadowCoord.z );\n #else\n shadow = texture2DCompare( shadowMap, shadowCoord.xy, shadowCoord.z );\n #endif\n }\n return mix( 1.0, shadow, shadowIntensity );\n }\n vec2 cubeToUV( vec3 v, float texelSizeY ) {\n vec3 absV = abs( v );\n float scaleToCube = 1.0 / max( absV.x, max( absV.y, absV.z ) );\n absV *= scaleToCube;\n v *= scaleToCube * ( 1.0 - 2.0 * texelSizeY );\n vec2 planar = v.xy;\n float almostATexel = 1.5 * texelSizeY;\n float almostOne = 1.0 - almostATexel;\n if ( absV.z >= almostOne ) {\n if ( v.z > 0.0 )\n planar.x = 4.0 - v.x;\n } else if ( absV.x >= almostOne ) {\n float signX = sign( v.x );\n planar.x = v.z * signX + 2.0 * signX;\n } else if ( absV.y >= almostOne ) {\n float signY = sign( v.y );\n planar.x = v.x + 2.0 * signY + 2.0;\n planar.y = v.z * signY - 2.0;\n }\n return vec2( 0.125, 0.25 ) * planar + vec2( 0.375, 0.75 );\n }\n float getPointShadow( sampler2D shadowMap, vec2 shadowMapSize, float shadowIntensity, float shadowBias, float shadowRadius, vec4 shadowCoord, float shadowCameraNear, float shadowCameraFar ) {\n float shadow = 1.0;\n vec3 lightToPosition = shadowCoord.xyz;\n \n float lightToPositionLength = length( lightToPosition );\n if ( lightToPositionLength - shadowCameraFar <= 0.0 && lightToPositionLength - shadowCameraNear >= 0.0 ) {\n float dp = ( lightToPositionLength - shadowCameraNear ) / ( shadowCameraFar - shadowCameraNear ); dp += shadowBias;\n vec3 bd3D = normalize( lightToPosition );\n vec2 texelSize = vec2( 1.0 ) / ( shadowMapSize * vec2( 4.0, 2.0 ) );\n #if defined( SHADOWMAP_TYPE_PCF ) || defined( SHADOWMAP_TYPE_PCF_SOFT ) || defined( SHADOWMAP_TYPE_VSM )\n vec2 offset = vec2( - 1, 1 ) * shadowRadius * texelSize.y;\n shadow = (\n texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyy, texelSize.y ), dp ) +\n texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyy, texelSize.y ), dp ) +\n texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xyx, texelSize.y ), dp ) +\n texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yyx, texelSize.y ), dp ) +\n texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp ) +\n texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxy, texelSize.y ), dp ) +\n texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxy, texelSize.y ), dp ) +\n texture2DCompare( shadowMap, cubeToUV( bd3D + offset.xxx, texelSize.y ), dp ) +\n texture2DCompare( shadowMap, cubeToUV( bd3D + offset.yxx, texelSize.y ), dp )\n ) * ( 1.0 / 9.0 );\n #else\n shadow = texture2DCompare( shadowMap, cubeToUV( bd3D, texelSize.y ), dp );\n #endif\n }\n return mix( 1.0, shadow, shadowIntensity );\n }\n#endif",shadowmap_pars_vertex:"#if NUM_SPOT_LIGHT_COORDS > 0\n uniform mat4 spotLightMatrix[ NUM_SPOT_LIGHT_COORDS ];\n varying vec4 vSpotLightCoord[ NUM_SPOT_LIGHT_COORDS ];\n#endif\n#ifdef USE_SHADOWMAP\n #if NUM_DIR_LIGHT_SHADOWS > 0\n uniform mat4 directionalShadowMatrix[ NUM_DIR_LIGHT_SHADOWS ];\n varying vec4 vDirectionalShadowCoord[ NUM_DIR_LIGHT_SHADOWS ];\n struct DirectionalLightShadow {\n float shadowIntensity;\n float shadowBias;\n float shadowNormalBias;\n float shadowRadius;\n vec2 shadowMapSize;\n };\n uniform DirectionalLightShadow directionalLightShadows[ NUM_DIR_LIGHT_SHADOWS ];\n #endif\n #if NUM_SPOT_LIGHT_SHADOWS > 0\n struct SpotLightShadow {\n float shadowIntensity;\n float shadowBias;\n float shadowNormalBias;\n float shadowRadius;\n vec2 shadowMapSize;\n };\n uniform SpotLightShadow spotLightShadows[ NUM_SPOT_LIGHT_SHADOWS ];\n #endif\n #if NUM_POINT_LIGHT_SHADOWS > 0\n uniform mat4 pointShadowMatrix[ NUM_POINT_LIGHT_SHADOWS ];\n varying vec4 vPointShadowCoord[ NUM_POINT_LIGHT_SHADOWS ];\n struct PointLightShadow {\n float shadowIntensity;\n float shadowBias;\n float shadowNormalBias;\n float shadowRadius;\n vec2 shadowMapSize;\n float shadowCameraNear;\n float shadowCameraFar;\n };\n uniform PointLightShadow pointLightShadows[ NUM_POINT_LIGHT_SHADOWS ];\n #endif\n#endif",shadowmap_vertex:"#if ( defined( USE_SHADOWMAP ) && ( NUM_DIR_LIGHT_SHADOWS > 0 || NUM_POINT_LIGHT_SHADOWS > 0 ) ) || ( NUM_SPOT_LIGHT_COORDS > 0 )\n vec3 shadowWorldNormal = inverseTransformDirection( transformedNormal, viewMatrix );\n vec4 shadowWorldPosition;\n#endif\n#if defined( USE_SHADOWMAP )\n #if NUM_DIR_LIGHT_SHADOWS > 0\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * directionalLightShadows[ i ].shadowNormalBias, 0 );\n vDirectionalShadowCoord[ i ] = directionalShadowMatrix[ i ] * shadowWorldPosition;\n }\n #pragma unroll_loop_end\n #endif\n #if NUM_POINT_LIGHT_SHADOWS > 0\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n shadowWorldPosition = worldPosition + vec4( shadowWorldNormal * pointLightShadows[ i ].shadowNormalBias, 0 );\n vPointShadowCoord[ i ] = pointShadowMatrix[ i ] * shadowWorldPosition;\n }\n #pragma unroll_loop_end\n #endif\n#endif\n#if NUM_SPOT_LIGHT_COORDS > 0\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_SPOT_LIGHT_COORDS; i ++ ) {\n shadowWorldPosition = worldPosition;\n #if ( defined( USE_SHADOWMAP ) && UNROLLED_LOOP_INDEX < NUM_SPOT_LIGHT_SHADOWS )\n shadowWorldPosition.xyz += shadowWorldNormal * spotLightShadows[ i ].shadowNormalBias;\n #endif\n vSpotLightCoord[ i ] = spotLightMatrix[ i ] * shadowWorldPosition;\n }\n #pragma unroll_loop_end\n#endif",shadowmask_pars_fragment:"float getShadowMask() {\n float shadow = 1.0;\n #ifdef USE_SHADOWMAP\n #if NUM_DIR_LIGHT_SHADOWS > 0\n DirectionalLightShadow directionalLight;\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_DIR_LIGHT_SHADOWS; i ++ ) {\n directionalLight = directionalLightShadows[ i ];\n shadow *= receiveShadow ? getShadow( directionalShadowMap[ i ], directionalLight.shadowMapSize, directionalLight.shadowIntensity, directionalLight.shadowBias, directionalLight.shadowRadius, vDirectionalShadowCoord[ i ] ) : 1.0;\n }\n #pragma unroll_loop_end\n #endif\n #if NUM_SPOT_LIGHT_SHADOWS > 0\n SpotLightShadow spotLight;\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_SPOT_LIGHT_SHADOWS; i ++ ) {\n spotLight = spotLightShadows[ i ];\n shadow *= receiveShadow ? getShadow( spotShadowMap[ i ], spotLight.shadowMapSize, spotLight.shadowIntensity, spotLight.shadowBias, spotLight.shadowRadius, vSpotLightCoord[ i ] ) : 1.0;\n }\n #pragma unroll_loop_end\n #endif\n #if NUM_POINT_LIGHT_SHADOWS > 0\n PointLightShadow pointLight;\n #pragma unroll_loop_start\n for ( int i = 0; i < NUM_POINT_LIGHT_SHADOWS; i ++ ) {\n pointLight = pointLightShadows[ i ];\n shadow *= receiveShadow ? getPointShadow( pointShadowMap[ i ], pointLight.shadowMapSize, pointLight.shadowIntensity, pointLight.shadowBias, pointLight.shadowRadius, vPointShadowCoord[ i ], pointLight.shadowCameraNear, pointLight.shadowCameraFar ) : 1.0;\n }\n #pragma unroll_loop_end\n #endif\n #endif\n return shadow;\n}",skinbase_vertex:"#ifdef USE_SKINNING\n mat4 boneMatX = getBoneMatrix( skinIndex.x );\n mat4 boneMatY = getBoneMatrix( skinIndex.y );\n mat4 boneMatZ = getBoneMatrix( skinIndex.z );\n mat4 boneMatW = getBoneMatrix( skinIndex.w );\n#endif",skinning_pars_vertex:"#ifdef USE_SKINNING\n uniform mat4 bindMatrix;\n uniform mat4 bindMatrixInverse;\n uniform highp sampler2D boneTexture;\n mat4 getBoneMatrix( const in float i ) {\n int size = textureSize( boneTexture, 0 ).x;\n int j = int( i ) * 4;\n int x = j % size;\n int y = j / size;\n vec4 v1 = texelFetch( boneTexture, ivec2( x, y ), 0 );\n vec4 v2 = texelFetch( boneTexture, ivec2( x + 1, y ), 0 );\n vec4 v3 = texelFetch( boneTexture, ivec2( x + 2, y ), 0 );\n vec4 v4 = texelFetch( boneTexture, ivec2( x + 3, y ), 0 );\n return mat4( v1, v2, v3, v4 );\n }\n#endif",skinning_vertex:"#ifdef USE_SKINNING\n vec4 skinVertex = bindMatrix * vec4( transformed, 1.0 );\n vec4 skinned = vec4( 0.0 );\n skinned += boneMatX * skinVertex * skinWeight.x;\n skinned += boneMatY * skinVertex * skinWeight.y;\n skinned += boneMatZ * skinVertex * skinWeight.z;\n skinned += boneMatW * skinVertex * skinWeight.w;\n transformed = ( bindMatrixInverse * skinned ).xyz;\n#endif",skinnormal_vertex:"#ifdef USE_SKINNING\n mat4 skinMatrix = mat4( 0.0 );\n skinMatrix += skinWeight.x * boneMatX;\n skinMatrix += skinWeight.y * boneMatY;\n skinMatrix += skinWeight.z * boneMatZ;\n skinMatrix += skinWeight.w * boneMatW;\n skinMatrix = bindMatrixInverse * skinMatrix * bindMatrix;\n objectNormal = vec4( skinMatrix * vec4( objectNormal, 0.0 ) ).xyz;\n #ifdef USE_TANGENT\n objectTangent = vec4( skinMatrix * vec4( objectTangent, 0.0 ) ).xyz;\n #endif\n#endif",specularmap_fragment:"float specularStrength;\n#ifdef USE_SPECULARMAP\n vec4 texelSpecular = texture2D( specularMap, vSpecularMapUv );\n specularStrength = texelSpecular.r;\n#else\n specularStrength = 1.0;\n#endif",specularmap_pars_fragment:"#ifdef USE_SPECULARMAP\n uniform sampler2D specularMap;\n#endif",tonemapping_fragment:"#if defined( TONE_MAPPING )\n gl_FragColor.rgb = toneMapping( gl_FragColor.rgb );\n#endif",tonemapping_pars_fragment:"#ifndef saturate\n#define saturate( a ) clamp( a, 0.0, 1.0 )\n#endif\nuniform float toneMappingExposure;\nvec3 LinearToneMapping( vec3 color ) {\n return saturate( toneMappingExposure * color );\n}\nvec3 ReinhardToneMapping( vec3 color ) {\n color *= toneMappingExposure;\n return saturate( color / ( vec3( 1.0 ) + color ) );\n}\nvec3 CineonToneMapping( vec3 color ) {\n color *= toneMappingExposure;\n color = max( vec3( 0.0 ), color - 0.004 );\n return pow( ( color * ( 6.2 * color + 0.5 ) ) / ( color * ( 6.2 * color + 1.7 ) + 0.06 ), vec3( 2.2 ) );\n}\nvec3 RRTAndODTFit( vec3 v ) {\n vec3 a = v * ( v + 0.0245786 ) - 0.000090537;\n vec3 b = v * ( 0.983729 * v + 0.4329510 ) + 0.238081;\n return a / b;\n}\nvec3 ACESFilmicToneMapping( vec3 color ) {\n const mat3 ACESInputMat = mat3(\n vec3( 0.59719, 0.07600, 0.02840 ), vec3( 0.35458, 0.90834, 0.13383 ),\n vec3( 0.04823, 0.01566, 0.83777 )\n );\n const mat3 ACESOutputMat = mat3(\n vec3( 1.60475, -0.10208, -0.00327 ), vec3( -0.53108, 1.10813, -0.07276 ),\n vec3( -0.07367, -0.00605, 1.07602 )\n );\n color *= toneMappingExposure / 0.6;\n color = ACESInputMat * color;\n color = RRTAndODTFit( color );\n color = ACESOutputMat * color;\n return saturate( color );\n}\nconst mat3 LINEAR_REC2020_TO_LINEAR_SRGB = mat3(\n vec3( 1.6605, - 0.1246, - 0.0182 ),\n vec3( - 0.5876, 1.1329, - 0.1006 ),\n vec3( - 0.0728, - 0.0083, 1.1187 )\n);\nconst mat3 LINEAR_SRGB_TO_LINEAR_REC2020 = mat3(\n vec3( 0.6274, 0.0691, 0.0164 ),\n vec3( 0.3293, 0.9195, 0.0880 ),\n vec3( 0.0433, 0.0113, 0.8956 )\n);\nvec3 agxDefaultContrastApprox( vec3 x ) {\n vec3 x2 = x * x;\n vec3 x4 = x2 * x2;\n return + 15.5 * x4 * x2\n - 40.14 * x4 * x\n + 31.96 * x4\n - 6.868 * x2 * x\n + 0.4298 * x2\n + 0.1191 * x\n - 0.00232;\n}\nvec3 AgXToneMapping( vec3 color ) {\n const mat3 AgXInsetMatrix = mat3(\n vec3( 0.856627153315983, 0.137318972929847, 0.11189821299995 ),\n vec3( 0.0951212405381588, 0.761241990602591, 0.0767994186031903 ),\n vec3( 0.0482516061458583, 0.101439036467562, 0.811302368396859 )\n );\n const mat3 AgXOutsetMatrix = mat3(\n vec3( 1.1271005818144368, - 0.1413297634984383, - 0.14132976349843826 ),\n vec3( - 0.11060664309660323, 1.157823702216272, - 0.11060664309660294 ),\n vec3( - 0.016493938717834573, - 0.016493938717834257, 1.2519364065950405 )\n );\n const float AgxMinEv = - 12.47393; const float AgxMaxEv = 4.026069;\n color *= toneMappingExposure;\n color = LINEAR_SRGB_TO_LINEAR_REC2020 * color;\n color = AgXInsetMatrix * color;\n color = max( color, 1e-10 ); color = log2( color );\n color = ( color - AgxMinEv ) / ( AgxMaxEv - AgxMinEv );\n color = clamp( color, 0.0, 1.0 );\n color = agxDefaultContrastApprox( color );\n color = AgXOutsetMatrix * color;\n color = pow( max( vec3( 0.0 ), color ), vec3( 2.2 ) );\n color = LINEAR_REC2020_TO_LINEAR_SRGB * color;\n color = clamp( color, 0.0, 1.0 );\n return color;\n}\nvec3 NeutralToneMapping( vec3 color ) {\n const float StartCompression = 0.8 - 0.04;\n const float Desaturation = 0.15;\n color *= toneMappingExposure;\n float x = min( color.r, min( color.g, color.b ) );\n float offset = x < 0.08 ? x - 6.25 * x * x : 0.04;\n color -= offset;\n float peak = max( color.r, max( color.g, color.b ) );\n if ( peak < StartCompression ) return color;\n float d = 1. - StartCompression;\n float newPeak = 1. - d * d / ( peak + d - StartCompression );\n color *= newPeak / peak;\n float g = 1. - 1. / ( Desaturation * ( peak - newPeak ) + 1. );\n return mix( color, vec3( newPeak ), g );\n}\nvec3 CustomToneMapping( vec3 color ) { return color; }",transmission_fragment:"#ifdef USE_TRANSMISSION\n material.transmission = transmission;\n material.transmissionAlpha = 1.0;\n material.thickness = thickness;\n material.attenuationDistance = attenuationDistance;\n material.attenuationColor = attenuationColor;\n #ifdef USE_TRANSMISSIONMAP\n material.transmission *= texture2D( transmissionMap, vTransmissionMapUv ).r;\n #endif\n #ifdef USE_THICKNESSMAP\n material.thickness *= texture2D( thicknessMap, vThicknessMapUv ).g;\n #endif\n vec3 pos = vWorldPosition;\n vec3 v = normalize( cameraPosition - pos );\n vec3 n = inverseTransformDirection( normal, viewMatrix );\n vec4 transmitted = getIBLVolumeRefraction(\n n, v, material.roughness, material.diffuseColor, material.specularColor, material.specularF90,\n pos, modelMatrix, viewMatrix, projectionMatrix, material.dispersion, material.ior, material.thickness,\n material.attenuationColor, material.attenuationDistance );\n material.transmissionAlpha = mix( material.transmissionAlpha, transmitted.a, material.transmission );\n totalDiffuse = mix( totalDiffuse, transmitted.rgb, material.transmission );\n#endif",transmission_pars_fragment:"#ifdef USE_TRANSMISSION\n uniform float transmission;\n uniform float thickness;\n uniform float attenuationDistance;\n uniform vec3 attenuationColor;\n #ifdef USE_TRANSMISSIONMAP\n uniform sampler2D transmissionMap;\n #endif\n #ifdef USE_THICKNESSMAP\n uniform sampler2D thicknessMap;\n #endif\n uniform vec2 transmissionSamplerSize;\n uniform sampler2D transmissionSamplerMap;\n uniform mat4 modelMatrix;\n uniform mat4 projectionMatrix;\n varying vec3 vWorldPosition;\n float w0( float a ) {\n return ( 1.0 / 6.0 ) * ( a * ( a * ( - a + 3.0 ) - 3.0 ) + 1.0 );\n }\n float w1( float a ) {\n return ( 1.0 / 6.0 ) * ( a * a * ( 3.0 * a - 6.0 ) + 4.0 );\n }\n float w2( float a ){\n return ( 1.0 / 6.0 ) * ( a * ( a * ( - 3.0 * a + 3.0 ) + 3.0 ) + 1.0 );\n }\n float w3( float a ) {\n return ( 1.0 / 6.0 ) * ( a * a * a );\n }\n float g0( float a ) {\n return w0( a ) + w1( a );\n }\n float g1( float a ) {\n return w2( a ) + w3( a );\n }\n float h0( float a ) {\n return - 1.0 + w1( a ) / ( w0( a ) + w1( a ) );\n }\n float h1( float a ) {\n return 1.0 + w3( a ) / ( w2( a ) + w3( a ) );\n }\n vec4 bicubic( sampler2D tex, vec2 uv, vec4 texelSize, float lod ) {\n uv = uv * texelSize.zw + 0.5;\n vec2 iuv = floor( uv );\n vec2 fuv = fract( uv );\n float g0x = g0( fuv.x );\n float g1x = g1( fuv.x );\n float h0x = h0( fuv.x );\n float h1x = h1( fuv.x );\n float h0y = h0( fuv.y );\n float h1y = h1( fuv.y );\n vec2 p0 = ( vec2( iuv.x + h0x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\n vec2 p1 = ( vec2( iuv.x + h1x, iuv.y + h0y ) - 0.5 ) * texelSize.xy;\n vec2 p2 = ( vec2( iuv.x + h0x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\n vec2 p3 = ( vec2( iuv.x + h1x, iuv.y + h1y ) - 0.5 ) * texelSize.xy;\n return g0( fuv.y ) * ( g0x * textureLod( tex, p0, lod ) + g1x * textureLod( tex, p1, lod ) ) +\n g1( fuv.y ) * ( g0x * textureLod( tex, p2, lod ) + g1x * textureLod( tex, p3, lod ) );\n }\n vec4 textureBicubic( sampler2D sampler, vec2 uv, float lod ) {\n vec2 fLodSize = vec2( textureSize( sampler, int( lod ) ) );\n vec2 cLodSize = vec2( textureSize( sampler, int( lod + 1.0 ) ) );\n vec2 fLodSizeInv = 1.0 / fLodSize;\n vec2 cLodSizeInv = 1.0 / cLodSize;\n vec4 fSample = bicubic( sampler, uv, vec4( fLodSizeInv, fLodSize ), floor( lod ) );\n vec4 cSample = bicubic( sampler, uv, vec4( cLodSizeInv, cLodSize ), ceil( lod ) );\n return mix( fSample, cSample, fract( lod ) );\n }\n vec3 getVolumeTransmissionRay( const in vec3 n, const in vec3 v, const in float thickness, const in float ior, const in mat4 modelMatrix ) {\n vec3 refractionVector = refract( - v, normalize( n ), 1.0 / ior );\n vec3 modelScale;\n modelScale.x = length( vec3( modelMatrix[ 0 ].xyz ) );\n modelScale.y = length( vec3( modelMatrix[ 1 ].xyz ) );\n modelScale.z = length( vec3( modelMatrix[ 2 ].xyz ) );\n return normalize( refractionVector ) * thickness * modelScale;\n }\n float applyIorToRoughness( const in float roughness, const in float ior ) {\n return roughness * clamp( ior * 2.0 - 2.0, 0.0, 1.0 );\n }\n vec4 getTransmissionSample( const in vec2 fragCoord, const in float roughness, const in float ior ) {\n float lod = log2( transmissionSamplerSize.x ) * applyIorToRoughness( roughness, ior );\n return textureBicubic( transmissionSamplerMap, fragCoord.xy, lod );\n }\n vec3 volumeAttenuation( const in float transmissionDistance, const in vec3 attenuationColor, const in float attenuationDistance ) {\n if ( isinf( attenuationDistance ) ) {\n return vec3( 1.0 );\n } else {\n vec3 attenuationCoefficient = -log( attenuationColor ) / attenuationDistance;\n vec3 transmittance = exp( - attenuationCoefficient * transmissionDistance ); return transmittance;\n }\n }\n vec4 getIBLVolumeRefraction( const in vec3 n, const in vec3 v, const in float roughness, const in vec3 diffuseColor,\n const in vec3 specularColor, const in float specularF90, const in vec3 position, const in mat4 modelMatrix,\n const in mat4 viewMatrix, const in mat4 projMatrix, const in float dispersion, const in float ior, const in float thickness,\n const in vec3 attenuationColor, const in float attenuationDistance ) {\n vec4 transmittedLight;\n vec3 transmittance;\n #ifdef USE_DISPERSION\n float halfSpread = ( ior - 1.0 ) * 0.025 * dispersion;\n vec3 iors = vec3( ior - halfSpread, ior, ior + halfSpread );\n for ( int i = 0; i < 3; i ++ ) {\n vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, iors[ i ], modelMatrix );\n vec3 refractedRayExit = position + transmissionRay;\n \n vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\n vec2 refractionCoords = ndcPos.xy / ndcPos.w;\n refractionCoords += 1.0;\n refractionCoords /= 2.0;\n \n vec4 transmissionSample = getTransmissionSample( refractionCoords, roughness, iors[ i ] );\n transmittedLight[ i ] = transmissionSample[ i ];\n transmittedLight.a += transmissionSample.a;\n transmittance[ i ] = diffuseColor[ i ] * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance )[ i ];\n }\n transmittedLight.a /= 3.0;\n \n #else\n \n vec3 transmissionRay = getVolumeTransmissionRay( n, v, thickness, ior, modelMatrix );\n vec3 refractedRayExit = position + transmissionRay;\n vec4 ndcPos = projMatrix * viewMatrix * vec4( refractedRayExit, 1.0 );\n vec2 refractionCoords = ndcPos.xy / ndcPos.w;\n refractionCoords += 1.0;\n refractionCoords /= 2.0;\n transmittedLight = getTransmissionSample( refractionCoords, roughness, ior );\n transmittance = diffuseColor * volumeAttenuation( length( transmissionRay ), attenuationColor, attenuationDistance );\n \n #endif\n vec3 attenuatedColor = transmittance * transmittedLight.rgb;\n vec3 F = EnvironmentBRDF( n, v, specularColor, specularF90, roughness );\n float transmittanceFactor = ( transmittance.r + transmittance.g + transmittance.b ) / 3.0;\n return vec4( ( 1.0 - F ) * attenuatedColor, 1.0 - ( 1.0 - transmittedLight.a ) * transmittanceFactor );\n }\n#endif",uv_pars_fragment:"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\n varying vec2 vUv;\n#endif\n#ifdef USE_MAP\n varying vec2 vMapUv;\n#endif\n#ifdef USE_ALPHAMAP\n varying vec2 vAlphaMapUv;\n#endif\n#ifdef USE_LIGHTMAP\n varying vec2 vLightMapUv;\n#endif\n#ifdef USE_AOMAP\n varying vec2 vAoMapUv;\n#endif\n#ifdef USE_BUMPMAP\n varying vec2 vBumpMapUv;\n#endif\n#ifdef USE_NORMALMAP\n varying vec2 vNormalMapUv;\n#endif\n#ifdef USE_EMISSIVEMAP\n varying vec2 vEmissiveMapUv;\n#endif\n#ifdef USE_METALNESSMAP\n varying vec2 vMetalnessMapUv;\n#endif\n#ifdef USE_ROUGHNESSMAP\n varying vec2 vRoughnessMapUv;\n#endif\n#ifdef USE_ANISOTROPYMAP\n varying vec2 vAnisotropyMapUv;\n#endif\n#ifdef USE_CLEARCOATMAP\n varying vec2 vClearcoatMapUv;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n varying vec2 vClearcoatNormalMapUv;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n varying vec2 vClearcoatRoughnessMapUv;\n#endif\n#ifdef USE_IRIDESCENCEMAP\n varying vec2 vIridescenceMapUv;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n varying vec2 vIridescenceThicknessMapUv;\n#endif\n#ifdef USE_SHEEN_COLORMAP\n varying vec2 vSheenColorMapUv;\n#endif\n#ifdef USE_SHEEN_ROUGHNESSMAP\n varying vec2 vSheenRoughnessMapUv;\n#endif\n#ifdef USE_SPECULARMAP\n varying vec2 vSpecularMapUv;\n#endif\n#ifdef USE_SPECULAR_COLORMAP\n varying vec2 vSpecularColorMapUv;\n#endif\n#ifdef USE_SPECULAR_INTENSITYMAP\n varying vec2 vSpecularIntensityMapUv;\n#endif\n#ifdef USE_TRANSMISSIONMAP\n uniform mat3 transmissionMapTransform;\n varying vec2 vTransmissionMapUv;\n#endif\n#ifdef USE_THICKNESSMAP\n uniform mat3 thicknessMapTransform;\n varying vec2 vThicknessMapUv;\n#endif",uv_pars_vertex:"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\n varying vec2 vUv;\n#endif\n#ifdef USE_MAP\n uniform mat3 mapTransform;\n varying vec2 vMapUv;\n#endif\n#ifdef USE_ALPHAMAP\n uniform mat3 alphaMapTransform;\n varying vec2 vAlphaMapUv;\n#endif\n#ifdef USE_LIGHTMAP\n uniform mat3 lightMapTransform;\n varying vec2 vLightMapUv;\n#endif\n#ifdef USE_AOMAP\n uniform mat3 aoMapTransform;\n varying vec2 vAoMapUv;\n#endif\n#ifdef USE_BUMPMAP\n uniform mat3 bumpMapTransform;\n varying vec2 vBumpMapUv;\n#endif\n#ifdef USE_NORMALMAP\n uniform mat3 normalMapTransform;\n varying vec2 vNormalMapUv;\n#endif\n#ifdef USE_DISPLACEMENTMAP\n uniform mat3 displacementMapTransform;\n varying vec2 vDisplacementMapUv;\n#endif\n#ifdef USE_EMISSIVEMAP\n uniform mat3 emissiveMapTransform;\n varying vec2 vEmissiveMapUv;\n#endif\n#ifdef USE_METALNESSMAP\n uniform mat3 metalnessMapTransform;\n varying vec2 vMetalnessMapUv;\n#endif\n#ifdef USE_ROUGHNESSMAP\n uniform mat3 roughnessMapTransform;\n varying vec2 vRoughnessMapUv;\n#endif\n#ifdef USE_ANISOTROPYMAP\n uniform mat3 anisotropyMapTransform;\n varying vec2 vAnisotropyMapUv;\n#endif\n#ifdef USE_CLEARCOATMAP\n uniform mat3 clearcoatMapTransform;\n varying vec2 vClearcoatMapUv;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n uniform mat3 clearcoatNormalMapTransform;\n varying vec2 vClearcoatNormalMapUv;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n uniform mat3 clearcoatRoughnessMapTransform;\n varying vec2 vClearcoatRoughnessMapUv;\n#endif\n#ifdef USE_SHEEN_COLORMAP\n uniform mat3 sheenColorMapTransform;\n varying vec2 vSheenColorMapUv;\n#endif\n#ifdef USE_SHEEN_ROUGHNESSMAP\n uniform mat3 sheenRoughnessMapTransform;\n varying vec2 vSheenRoughnessMapUv;\n#endif\n#ifdef USE_IRIDESCENCEMAP\n uniform mat3 iridescenceMapTransform;\n varying vec2 vIridescenceMapUv;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n uniform mat3 iridescenceThicknessMapTransform;\n varying vec2 vIridescenceThicknessMapUv;\n#endif\n#ifdef USE_SPECULARMAP\n uniform mat3 specularMapTransform;\n varying vec2 vSpecularMapUv;\n#endif\n#ifdef USE_SPECULAR_COLORMAP\n uniform mat3 specularColorMapTransform;\n varying vec2 vSpecularColorMapUv;\n#endif\n#ifdef USE_SPECULAR_INTENSITYMAP\n uniform mat3 specularIntensityMapTransform;\n varying vec2 vSpecularIntensityMapUv;\n#endif\n#ifdef USE_TRANSMISSIONMAP\n uniform mat3 transmissionMapTransform;\n varying vec2 vTransmissionMapUv;\n#endif\n#ifdef USE_THICKNESSMAP\n uniform mat3 thicknessMapTransform;\n varying vec2 vThicknessMapUv;\n#endif",uv_vertex:"#if defined( USE_UV ) || defined( USE_ANISOTROPY )\n vUv = vec3( uv, 1 ).xy;\n#endif\n#ifdef USE_MAP\n vMapUv = ( mapTransform * vec3( MAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_ALPHAMAP\n vAlphaMapUv = ( alphaMapTransform * vec3( ALPHAMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_LIGHTMAP\n vLightMapUv = ( lightMapTransform * vec3( LIGHTMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_AOMAP\n vAoMapUv = ( aoMapTransform * vec3( AOMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_BUMPMAP\n vBumpMapUv = ( bumpMapTransform * vec3( BUMPMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_NORMALMAP\n vNormalMapUv = ( normalMapTransform * vec3( NORMALMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_DISPLACEMENTMAP\n vDisplacementMapUv = ( displacementMapTransform * vec3( DISPLACEMENTMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_EMISSIVEMAP\n vEmissiveMapUv = ( emissiveMapTransform * vec3( EMISSIVEMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_METALNESSMAP\n vMetalnessMapUv = ( metalnessMapTransform * vec3( METALNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_ROUGHNESSMAP\n vRoughnessMapUv = ( roughnessMapTransform * vec3( ROUGHNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_ANISOTROPYMAP\n vAnisotropyMapUv = ( anisotropyMapTransform * vec3( ANISOTROPYMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_CLEARCOATMAP\n vClearcoatMapUv = ( clearcoatMapTransform * vec3( CLEARCOATMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_CLEARCOAT_NORMALMAP\n vClearcoatNormalMapUv = ( clearcoatNormalMapTransform * vec3( CLEARCOAT_NORMALMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_CLEARCOAT_ROUGHNESSMAP\n vClearcoatRoughnessMapUv = ( clearcoatRoughnessMapTransform * vec3( CLEARCOAT_ROUGHNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_IRIDESCENCEMAP\n vIridescenceMapUv = ( iridescenceMapTransform * vec3( IRIDESCENCEMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_IRIDESCENCE_THICKNESSMAP\n vIridescenceThicknessMapUv = ( iridescenceThicknessMapTransform * vec3( IRIDESCENCE_THICKNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SHEEN_COLORMAP\n vSheenColorMapUv = ( sheenColorMapTransform * vec3( SHEEN_COLORMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SHEEN_ROUGHNESSMAP\n vSheenRoughnessMapUv = ( sheenRoughnessMapTransform * vec3( SHEEN_ROUGHNESSMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SPECULARMAP\n vSpecularMapUv = ( specularMapTransform * vec3( SPECULARMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SPECULAR_COLORMAP\n vSpecularColorMapUv = ( specularColorMapTransform * vec3( SPECULAR_COLORMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_SPECULAR_INTENSITYMAP\n vSpecularIntensityMapUv = ( specularIntensityMapTransform * vec3( SPECULAR_INTENSITYMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_TRANSMISSIONMAP\n vTransmissionMapUv = ( transmissionMapTransform * vec3( TRANSMISSIONMAP_UV, 1 ) ).xy;\n#endif\n#ifdef USE_THICKNESSMAP\n vThicknessMapUv = ( thicknessMapTransform * vec3( THICKNESSMAP_UV, 1 ) ).xy;\n#endif",worldpos_vertex:"#if defined( USE_ENVMAP ) || defined( DISTANCE ) || defined ( USE_SHADOWMAP ) || defined ( USE_TRANSMISSION ) || NUM_SPOT_LIGHT_COORDS > 0\n vec4 worldPosition = vec4( transformed, 1.0 );\n #ifdef USE_BATCHING\n worldPosition = batchingMatrix * worldPosition;\n #endif\n #ifdef USE_INSTANCING\n worldPosition = instanceMatrix * worldPosition;\n #endif\n worldPosition = modelMatrix * worldPosition;\n#endif",background_vert:"varying vec2 vUv;\nuniform mat3 uvTransform;\nvoid main() {\n vUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n gl_Position = vec4( position.xy, 1.0, 1.0 );\n}",background_frag:"uniform sampler2D t2D;\nuniform float backgroundIntensity;\nvarying vec2 vUv;\nvoid main() {\n vec4 texColor = texture2D( t2D, vUv );\n #ifdef DECODE_VIDEO_TEXTURE\n texColor = vec4( mix( pow( texColor.rgb * 0.9478672986 + vec3( 0.0521327014 ), vec3( 2.4 ) ), texColor.rgb * 0.0773993808, vec3( lessThanEqual( texColor.rgb, vec3( 0.04045 ) ) ) ), texColor.w );\n #endif\n texColor.rgb *= backgroundIntensity;\n gl_FragColor = texColor;\n #include \n #include \n}",backgroundCube_vert:"varying vec3 vWorldDirection;\n#include \nvoid main() {\n vWorldDirection = transformDirection( position, modelMatrix );\n #include \n #include \n gl_Position.z = gl_Position.w;\n}",backgroundCube_frag:"#ifdef ENVMAP_TYPE_CUBE\n uniform samplerCube envMap;\n#elif defined( ENVMAP_TYPE_CUBE_UV )\n uniform sampler2D envMap;\n#endif\nuniform float flipEnvMap;\nuniform float backgroundBlurriness;\nuniform float backgroundIntensity;\nuniform mat3 backgroundRotation;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n #ifdef ENVMAP_TYPE_CUBE\n vec4 texColor = textureCube( envMap, backgroundRotation * vec3( flipEnvMap * vWorldDirection.x, vWorldDirection.yz ) );\n #elif defined( ENVMAP_TYPE_CUBE_UV )\n vec4 texColor = textureCubeUV( envMap, backgroundRotation * vWorldDirection, backgroundBlurriness );\n #else\n vec4 texColor = vec4( 0.0, 0.0, 0.0, 1.0 );\n #endif\n texColor.rgb *= backgroundIntensity;\n gl_FragColor = texColor;\n #include \n #include \n}",cube_vert:"varying vec3 vWorldDirection;\n#include \nvoid main() {\n vWorldDirection = transformDirection( position, modelMatrix );\n #include \n #include \n gl_Position.z = gl_Position.w;\n}",cube_frag:"uniform samplerCube tCube;\nuniform float tFlip;\nuniform float opacity;\nvarying vec3 vWorldDirection;\nvoid main() {\n vec4 texColor = textureCube( tCube, vec3( tFlip * vWorldDirection.x, vWorldDirection.yz ) );\n gl_FragColor = texColor;\n gl_FragColor.a *= opacity;\n #include \n #include \n}",depth_vert:"#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvarying vec2 vHighPrecisionZW;\nvoid main() {\n #include \n #include \n #include \n #include \n #ifdef USE_DISPLACEMENTMAP\n #include \n #include \n #include \n #endif\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n vHighPrecisionZW = gl_Position.zw;\n}",depth_frag:"#if DEPTH_PACKING == 3200\n uniform float opacity;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvarying vec2 vHighPrecisionZW;\nvoid main() {\n vec4 diffuseColor = vec4( 1.0 );\n #include \n #if DEPTH_PACKING == 3200\n diffuseColor.a = opacity;\n #endif\n #include \n #include \n #include \n #include \n #include \n float fragCoordZ = 0.5 * vHighPrecisionZW[0] / vHighPrecisionZW[1] + 0.5;\n #if DEPTH_PACKING == 3200\n gl_FragColor = vec4( vec3( 1.0 - fragCoordZ ), opacity );\n #elif DEPTH_PACKING == 3201\n gl_FragColor = packDepthToRGBA( fragCoordZ );\n #elif DEPTH_PACKING == 3202\n gl_FragColor = vec4( packDepthToRGB( fragCoordZ ), 1.0 );\n #elif DEPTH_PACKING == 3203\n gl_FragColor = vec4( packDepthToRG( fragCoordZ ), 0.0, 1.0 );\n #endif\n}",distanceRGBA_vert:"#define DISTANCE\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n #include \n #include \n #include \n #include \n #ifdef USE_DISPLACEMENTMAP\n #include \n #include \n #include \n #endif\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n vWorldPosition = worldPosition.xyz;\n}",distanceRGBA_frag:"#define DISTANCE\nuniform vec3 referencePosition;\nuniform float nearDistance;\nuniform float farDistance;\nvarying vec3 vWorldPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main () {\n vec4 diffuseColor = vec4( 1.0 );\n #include \n #include \n #include \n #include \n #include \n float dist = length( vWorldPosition - referencePosition );\n dist = ( dist - nearDistance ) / ( farDistance - nearDistance );\n dist = saturate( dist );\n gl_FragColor = packDepthToRGBA( dist );\n}",equirect_vert:"varying vec3 vWorldDirection;\n#include \nvoid main() {\n vWorldDirection = transformDirection( position, modelMatrix );\n #include \n #include \n}",equirect_frag:"uniform sampler2D tEquirect;\nvarying vec3 vWorldDirection;\n#include \nvoid main() {\n vec3 direction = normalize( vWorldDirection );\n vec2 sampleUV = equirectUv( direction );\n gl_FragColor = texture2D( tEquirect, sampleUV );\n #include \n #include \n}",linedashed_vert:"uniform float scale;\nattribute float lineDistance;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n vLineDistance = scale * lineDistance;\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n}",linedashed_frag:"uniform vec3 diffuse;\nuniform float opacity;\nuniform float dashSize;\nuniform float totalSize;\nvarying float vLineDistance;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n vec4 diffuseColor = vec4( diffuse, opacity );\n #include \n if ( mod( vLineDistance, totalSize ) > dashSize ) {\n discard;\n }\n vec3 outgoingLight = vec3( 0.0 );\n #include \n #include \n #include \n outgoingLight = diffuseColor.rgb;\n #include \n #include \n #include \n #include \n #include \n}",meshbasic_vert:"#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n #include \n #include \n #include \n #include \n #include \n #if defined ( USE_ENVMAP ) || defined ( USE_SKINNING )\n #include \n #include \n #include \n #include \n #include \n #endif\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n}",meshbasic_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#ifndef FLAT_SHADED\n varying vec3 vNormal;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n vec4 diffuseColor = vec4( diffuse, opacity );\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n #ifdef USE_LIGHTMAP\n vec4 lightMapTexel = texture2D( lightMap, vLightMapUv );\n reflectedLight.indirectDiffuse += lightMapTexel.rgb * lightMapIntensity * RECIPROCAL_PI;\n #else\n reflectedLight.indirectDiffuse += vec3( 1.0 );\n #endif\n #include \n reflectedLight.indirectDiffuse *= diffuseColor.rgb;\n vec3 outgoingLight = reflectedLight.indirectDiffuse;\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n}",meshlambert_vert:"#define LAMBERT\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n vViewPosition = - mvPosition.xyz;\n #include \n #include \n #include \n #include \n}",meshlambert_frag:"#define LAMBERT\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n vec4 diffuseColor = vec4( diffuse, opacity );\n #include \n ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n vec3 totalEmissiveRadiance = emissive;\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n}",meshmatcap_vert:"#define MATCAP\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n vViewPosition = - mvPosition.xyz;\n}",meshmatcap_frag:"#define MATCAP\nuniform vec3 diffuse;\nuniform float opacity;\nuniform sampler2D matcap;\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n vec4 diffuseColor = vec4( diffuse, opacity );\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n vec3 viewDir = normalize( vViewPosition );\n vec3 x = normalize( vec3( viewDir.z, 0.0, - viewDir.x ) );\n vec3 y = cross( viewDir, x );\n vec2 uv = vec2( dot( x, normal ), dot( y, normal ) ) * 0.495 + 0.5;\n #ifdef USE_MATCAP\n vec4 matcapColor = texture2D( matcap, uv );\n #else\n vec4 matcapColor = vec4( vec3( mix( 0.2, 0.8, uv.y ) ), 1.0 );\n #endif\n vec3 outgoingLight = diffuseColor.rgb * matcapColor.rgb;\n #include \n #include \n #include \n #include \n #include \n #include \n}",meshnormal_vert:"#define NORMAL\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\n varying vec3 vViewPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\n vViewPosition = - mvPosition.xyz;\n#endif\n}",meshnormal_frag:"#define NORMAL\nuniform float opacity;\n#if defined( FLAT_SHADED ) || defined( USE_BUMPMAP ) || defined( USE_NORMALMAP_TANGENTSPACE )\n varying vec3 vViewPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n vec4 diffuseColor = vec4( 0.0, 0.0, 0.0, opacity );\n #include \n #include \n #include \n #include \n gl_FragColor = vec4( packNormalToRGB( normal ), diffuseColor.a );\n #ifdef OPAQUE\n gl_FragColor.a = 1.0;\n #endif\n}",meshphong_vert:"#define PHONG\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n vViewPosition = - mvPosition.xyz;\n #include \n #include \n #include \n #include \n}",meshphong_frag:"#define PHONG\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform vec3 specular;\nuniform float shininess;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n vec4 diffuseColor = vec4( diffuse, opacity );\n #include \n ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n vec3 totalEmissiveRadiance = emissive;\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + reflectedLight.directSpecular + reflectedLight.indirectSpecular + totalEmissiveRadiance;\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n}",meshphysical_vert:"#define STANDARD\nvarying vec3 vViewPosition;\n#ifdef USE_TRANSMISSION\n varying vec3 vWorldPosition;\n#endif\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n vViewPosition = - mvPosition.xyz;\n #include \n #include \n #include \n#ifdef USE_TRANSMISSION\n vWorldPosition = worldPosition.xyz;\n#endif\n}",meshphysical_frag:"#define STANDARD\n#ifdef PHYSICAL\n #define IOR\n #define USE_SPECULAR\n#endif\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float roughness;\nuniform float metalness;\nuniform float opacity;\n#ifdef IOR\n uniform float ior;\n#endif\n#ifdef USE_SPECULAR\n uniform float specularIntensity;\n uniform vec3 specularColor;\n #ifdef USE_SPECULAR_COLORMAP\n uniform sampler2D specularColorMap;\n #endif\n #ifdef USE_SPECULAR_INTENSITYMAP\n uniform sampler2D specularIntensityMap;\n #endif\n#endif\n#ifdef USE_CLEARCOAT\n uniform float clearcoat;\n uniform float clearcoatRoughness;\n#endif\n#ifdef USE_DISPERSION\n uniform float dispersion;\n#endif\n#ifdef USE_IRIDESCENCE\n uniform float iridescence;\n uniform float iridescenceIOR;\n uniform float iridescenceThicknessMinimum;\n uniform float iridescenceThicknessMaximum;\n#endif\n#ifdef USE_SHEEN\n uniform vec3 sheenColor;\n uniform float sheenRoughness;\n #ifdef USE_SHEEN_COLORMAP\n uniform sampler2D sheenColorMap;\n #endif\n #ifdef USE_SHEEN_ROUGHNESSMAP\n uniform sampler2D sheenRoughnessMap;\n #endif\n#endif\n#ifdef USE_ANISOTROPY\n uniform vec2 anisotropyVector;\n #ifdef USE_ANISOTROPYMAP\n uniform sampler2D anisotropyMap;\n #endif\n#endif\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n vec4 diffuseColor = vec4( diffuse, opacity );\n #include \n ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n vec3 totalEmissiveRadiance = emissive;\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n vec3 totalDiffuse = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse;\n vec3 totalSpecular = reflectedLight.directSpecular + reflectedLight.indirectSpecular;\n #include \n vec3 outgoingLight = totalDiffuse + totalSpecular + totalEmissiveRadiance;\n #ifdef USE_SHEEN\n float sheenEnergyComp = 1.0 - 0.157 * max3( material.sheenColor );\n outgoingLight = outgoingLight * sheenEnergyComp + sheenSpecularDirect + sheenSpecularIndirect;\n #endif\n #ifdef USE_CLEARCOAT\n float dotNVcc = saturate( dot( geometryClearcoatNormal, geometryViewDir ) );\n vec3 Fcc = F_Schlick( material.clearcoatF0, material.clearcoatF90, dotNVcc );\n outgoingLight = outgoingLight * ( 1.0 - material.clearcoat * Fcc ) + ( clearcoatSpecularDirect + clearcoatSpecularIndirect ) * material.clearcoat;\n #endif\n #include \n #include \n #include \n #include \n #include \n #include \n}",meshtoon_vert:"#define TOON\nvarying vec3 vViewPosition;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n vViewPosition = - mvPosition.xyz;\n #include \n #include \n #include \n}",meshtoon_frag:"#define TOON\nuniform vec3 diffuse;\nuniform vec3 emissive;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n vec4 diffuseColor = vec4( diffuse, opacity );\n #include \n ReflectedLight reflectedLight = ReflectedLight( vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ), vec3( 0.0 ) );\n vec3 totalEmissiveRadiance = emissive;\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n vec3 outgoingLight = reflectedLight.directDiffuse + reflectedLight.indirectDiffuse + totalEmissiveRadiance;\n #include \n #include \n #include \n #include \n #include \n #include \n}",points_vert:"uniform float size;\nuniform float scale;\n#include \n#include \n#include \n#include \n#include \n#include \n#ifdef USE_POINTS_UV\n varying vec2 vUv;\n uniform mat3 uvTransform;\n#endif\nvoid main() {\n #ifdef USE_POINTS_UV\n vUv = ( uvTransform * vec3( uv, 1 ) ).xy;\n #endif\n #include \n #include \n #include \n #include \n #include \n #include \n gl_PointSize = size;\n #ifdef USE_SIZEATTENUATION\n bool isPerspective = isPerspectiveMatrix( projectionMatrix );\n if ( isPerspective ) gl_PointSize *= ( scale / - mvPosition.z );\n #endif\n #include \n #include \n #include \n #include \n}",points_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n vec4 diffuseColor = vec4( diffuse, opacity );\n #include \n vec3 outgoingLight = vec3( 0.0 );\n #include \n #include \n #include \n #include \n #include \n outgoingLight = diffuseColor.rgb;\n #include \n #include \n #include \n #include \n #include \n}",shadow_vert:"#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n #include \n}",shadow_frag:"uniform vec3 color;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n #include \n gl_FragColor = vec4( color, opacity * ( 1.0 - getShadowMask() ) );\n #include \n #include \n #include \n}",sprite_vert:"uniform float rotation;\nuniform vec2 center;\n#include \n#include \n#include \n#include \n#include \nvoid main() {\n #include \n vec4 mvPosition = modelViewMatrix[ 3 ];\n vec2 scale = vec2( length( modelMatrix[ 0 ].xyz ), length( modelMatrix[ 1 ].xyz ) );\n #ifndef USE_SIZEATTENUATION\n bool isPerspective = isPerspectiveMatrix( projectionMatrix );\n if ( isPerspective ) scale *= - mvPosition.z;\n #endif\n vec2 alignedPosition = ( position.xy - ( center - vec2( 0.5 ) ) ) * scale;\n vec2 rotatedPosition;\n rotatedPosition.x = cos( rotation ) * alignedPosition.x - sin( rotation ) * alignedPosition.y;\n rotatedPosition.y = sin( rotation ) * alignedPosition.x + cos( rotation ) * alignedPosition.y;\n mvPosition.xy += rotatedPosition;\n gl_Position = projectionMatrix * mvPosition;\n #include \n #include \n #include \n}",sprite_frag:"uniform vec3 diffuse;\nuniform float opacity;\n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \n#include \nvoid main() {\n vec4 diffuseColor = vec4( diffuse, opacity );\n #include \n vec3 outgoingLight = vec3( 0.0 );\n #include \n #include \n #include \n #include \n #include \n outgoingLight = diffuseColor.rgb;\n #include \n #include \n #include \n #include \n}"},ok={common:{diffuse:{value:new tz(0xffffff)},opacity:{value:1},map:{value:null},mapTransform:{value:new Z},alphaMap:{value:null},alphaMapTransform:{value:new Z},alphaTest:{value:0}},specularmap:{specularMap:{value:null},specularMapTransform:{value:new Z}},envmap:{envMap:{value:null},envMapRotation:{value:new Z},flipEnvMap:{value:-1},reflectivity:{value:1},ior:{value:1.5},refractionRatio:{value:.98}},aomap:{aoMap:{value:null},aoMapIntensity:{value:1},aoMapTransform:{value:new Z}},lightmap:{lightMap:{value:null},lightMapIntensity:{value:1},lightMapTransform:{value:new Z}},bumpmap:{bumpMap:{value:null},bumpMapTransform:{value:new Z},bumpScale:{value:1}},normalmap:{normalMap:{value:null},normalMapTransform:{value:new Z},normalScale:{value:new Y(1,1)}},displacementmap:{displacementMap:{value:null},displacementMapTransform:{value:new Z},displacementScale:{value:1},displacementBias:{value:0}},emissivemap:{emissiveMap:{value:null},emissiveMapTransform:{value:new Z}},metalnessmap:{metalnessMap:{value:null},metalnessMapTransform:{value:new Z}},roughnessmap:{roughnessMap:{value:null},roughnessMapTransform:{value:new Z}},gradientmap:{gradientMap:{value:null}},fog:{fogDensity:{value:25e-5},fogNear:{value:1},fogFar:{value:2e3},fogColor:{value:new tz(0xffffff)}},lights:{ambientLightColor:{value:[]},lightProbe:{value:[]},directionalLights:{value:[],properties:{direction:{},color:{}}},directionalLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},directionalShadowMap:{value:[]},directionalShadowMatrix:{value:[]},spotLights:{value:[],properties:{color:{},position:{},direction:{},distance:{},coneCos:{},penumbraCos:{},decay:{}}},spotLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{}}},spotLightMap:{value:[]},spotShadowMap:{value:[]},spotLightMatrix:{value:[]},pointLights:{value:[],properties:{color:{},position:{},decay:{},distance:{}}},pointLightShadows:{value:[],properties:{shadowIntensity:1,shadowBias:{},shadowNormalBias:{},shadowRadius:{},shadowMapSize:{},shadowCameraNear:{},shadowCameraFar:{}}},pointShadowMap:{value:[]},pointShadowMatrix:{value:[]},hemisphereLights:{value:[],properties:{direction:{},skyColor:{},groundColor:{}}},rectAreaLights:{value:[],properties:{color:{},position:{},width:{},height:{}}},ltc_1:{value:null},ltc_2:{value:null}},points:{diffuse:{value:new tz(0xffffff)},opacity:{value:1},size:{value:1},scale:{value:1},map:{value:null},alphaMap:{value:null},alphaMapTransform:{value:new Z},alphaTest:{value:0},uvTransform:{value:new Z}},sprite:{diffuse:{value:new tz(0xffffff)},opacity:{value:1},center:{value:new Y(.5,.5)},rotation:{value:0},map:{value:null},mapTransform:{value:new Z},alphaMap:{value:null},alphaMapTransform:{value:new Z},alphaTest:{value:0}}},oH={basic:{uniforms:n_([ok.common,ok.specularmap,ok.envmap,ok.aomap,ok.lightmap,ok.fog]),vertexShader:oB.meshbasic_vert,fragmentShader:oB.meshbasic_frag},lambert:{uniforms:n_([ok.common,ok.specularmap,ok.envmap,ok.aomap,ok.lightmap,ok.emissivemap,ok.bumpmap,ok.normalmap,ok.displacementmap,ok.fog,ok.lights,{emissive:{value:new tz(0)}}]),vertexShader:oB.meshlambert_vert,fragmentShader:oB.meshlambert_frag},phong:{uniforms:n_([ok.common,ok.specularmap,ok.envmap,ok.aomap,ok.lightmap,ok.emissivemap,ok.bumpmap,ok.normalmap,ok.displacementmap,ok.fog,ok.lights,{emissive:{value:new tz(0)},specular:{value:new tz(1118481)},shininess:{value:30}}]),vertexShader:oB.meshphong_vert,fragmentShader:oB.meshphong_frag},standard:{uniforms:n_([ok.common,ok.envmap,ok.aomap,ok.lightmap,ok.emissivemap,ok.bumpmap,ok.normalmap,ok.displacementmap,ok.roughnessmap,ok.metalnessmap,ok.fog,ok.lights,{emissive:{value:new tz(0)},roughness:{value:1},metalness:{value:0},envMapIntensity:{value:1}}]),vertexShader:oB.meshphysical_vert,fragmentShader:oB.meshphysical_frag},toon:{uniforms:n_([ok.common,ok.aomap,ok.lightmap,ok.emissivemap,ok.bumpmap,ok.normalmap,ok.displacementmap,ok.gradientmap,ok.fog,ok.lights,{emissive:{value:new tz(0)}}]),vertexShader:oB.meshtoon_vert,fragmentShader:oB.meshtoon_frag},matcap:{uniforms:n_([ok.common,ok.bumpmap,ok.normalmap,ok.displacementmap,ok.fog,{matcap:{value:null}}]),vertexShader:oB.meshmatcap_vert,fragmentShader:oB.meshmatcap_frag},points:{uniforms:n_([ok.points,ok.fog]),vertexShader:oB.points_vert,fragmentShader:oB.points_frag},dashed:{uniforms:n_([ok.common,ok.fog,{scale:{value:1},dashSize:{value:1},totalSize:{value:2}}]),vertexShader:oB.linedashed_vert,fragmentShader:oB.linedashed_frag},depth:{uniforms:n_([ok.common,ok.displacementmap]),vertexShader:oB.depth_vert,fragmentShader:oB.depth_frag},normal:{uniforms:n_([ok.common,ok.bumpmap,ok.normalmap,ok.displacementmap,{opacity:{value:1}}]),vertexShader:oB.meshnormal_vert,fragmentShader:oB.meshnormal_frag},sprite:{uniforms:n_([ok.sprite,ok.fog]),vertexShader:oB.sprite_vert,fragmentShader:oB.sprite_frag},background:{uniforms:{uvTransform:{value:new Z},t2D:{value:null},backgroundIntensity:{value:1}},vertexShader:oB.background_vert,fragmentShader:oB.background_frag},backgroundCube:{uniforms:{envMap:{value:null},flipEnvMap:{value:-1},backgroundBlurriness:{value:0},backgroundIntensity:{value:1},backgroundRotation:{value:new Z}},vertexShader:oB.backgroundCube_vert,fragmentShader:oB.backgroundCube_frag},cube:{uniforms:{tCube:{value:null},tFlip:{value:-1},opacity:{value:1}},vertexShader:oB.cube_vert,fragmentShader:oB.cube_frag},equirect:{uniforms:{tEquirect:{value:null}},vertexShader:oB.equirect_vert,fragmentShader:oB.equirect_frag},distanceRGBA:{uniforms:n_([ok.common,ok.displacementmap,{referencePosition:{value:new eE},nearDistance:{value:1},farDistance:{value:1e3}}]),vertexShader:oB.distanceRGBA_vert,fragmentShader:oB.distanceRGBA_frag},shadow:{uniforms:n_([ok.lights,ok.fog,{color:{value:new tz(0)},opacity:{value:1}}]),vertexShader:oB.shadow_vert,fragmentShader:oB.shadow_frag}};oH.physical={uniforms:n_([oH.standard.uniforms,{clearcoat:{value:0},clearcoatMap:{value:null},clearcoatMapTransform:{value:new Z},clearcoatNormalMap:{value:null},clearcoatNormalMapTransform:{value:new Z},clearcoatNormalScale:{value:new Y(1,1)},clearcoatRoughness:{value:0},clearcoatRoughnessMap:{value:null},clearcoatRoughnessMapTransform:{value:new Z},dispersion:{value:0},iridescence:{value:0},iridescenceMap:{value:null},iridescenceMapTransform:{value:new Z},iridescenceIOR:{value:1.3},iridescenceThicknessMinimum:{value:100},iridescenceThicknessMaximum:{value:400},iridescenceThicknessMap:{value:null},iridescenceThicknessMapTransform:{value:new Z},sheen:{value:0},sheenColor:{value:new tz(0)},sheenColorMap:{value:null},sheenColorMapTransform:{value:new Z},sheenRoughness:{value:1},sheenRoughnessMap:{value:null},sheenRoughnessMapTransform:{value:new Z},transmission:{value:0},transmissionMap:{value:null},transmissionMapTransform:{value:new Z},transmissionSamplerSize:{value:new Y},transmissionSamplerMap:{value:null},thickness:{value:0},thicknessMap:{value:null},thicknessMapTransform:{value:new Z},attenuationDistance:{value:0},attenuationColor:{value:new tz(0)},specularColor:{value:new tz(1,1,1)},specularColorMap:{value:null},specularColorMapTransform:{value:new Z},specularIntensity:{value:1},specularIntensityMap:{value:null},specularIntensityMapTransform:{value:new Z},anisotropyVector:{value:new Y},anisotropyMap:{value:null},anisotropyMapTransform:{value:new Z}}]),vertexShader:oB.meshphysical_vert,fragmentShader:oB.meshphysical_frag};let oV={r:0,b:0,g:0},oG=new tn,oW=new e2;function oj(e,t,n,i,r,a,s){let o,l,u=new tz(0),c=+(!0!==a),h=null,d=0,p=null;function f(e){let i=!0===e.isScene?e.background:null;return i&&i.isTexture&&(i=(e.backgroundBlurriness>0?n:t).get(i)),i}function m(t,n){t.getRGB(oV,ny(e)),i.buffers.color.setClear(oV.r,oV.g,oV.b,n,s)}return{getClearColor:function(){return u},setClearColor:function(e,t=1){u.set(e),m(u,c=t)},getClearAlpha:function(){return c},setClearAlpha:function(e){m(u,c=e)},render:function(t){let n=!1,r=f(t);null===r?m(u,c):r&&r.isColor&&(m(r,1),n=!0);let a=e.xr.getEnvironmentBlendMode();"additive"===a?i.buffers.color.setClear(0,0,0,1,s):"alpha-blend"===a&&i.buffers.color.setClear(0,0,0,0,s),(e.autoClear||n)&&(i.buffers.depth.setTest(!0),i.buffers.depth.setMask(!0),i.buffers.color.setMask(!0),e.clear(e.autoClearColor,e.autoClearDepth,e.autoClearStencil))},addToRenderList:function(t,n){let i=f(n);i&&(i.isCubeTexture||306===i.mapping)?(void 0===l&&((l=new nf(new ng(1,1,1),new nb({name:"BackgroundCubeMaterial",uniforms:nv(oH.backgroundCube.uniforms),vertexShader:oH.backgroundCube.vertexShader,fragmentShader:oH.backgroundCube.fragmentShader,side:1,depthTest:!1,depthWrite:!1,fog:!1}))).geometry.deleteAttribute("normal"),l.geometry.deleteAttribute("uv"),l.onBeforeRender=function(e,t,n){this.matrixWorld.copyPosition(n.matrixWorld)},Object.defineProperty(l.material,"envMap",{get:function(){return this.uniforms.envMap.value}}),r.update(l)),oG.copy(n.backgroundRotation),oG.x*=-1,oG.y*=-1,oG.z*=-1,i.isCubeTexture&&!1===i.isRenderTargetTexture&&(oG.y*=-1,oG.z*=-1),l.material.uniforms.envMap.value=i,l.material.uniforms.flipEnvMap.value=i.isCubeTexture&&!1===i.isRenderTargetTexture?-1:1,l.material.uniforms.backgroundBlurriness.value=n.backgroundBlurriness,l.material.uniforms.backgroundIntensity.value=n.backgroundIntensity,l.material.uniforms.backgroundRotation.value.setFromMatrix4(oW.makeRotationFromEuler(oG)),l.material.toneMapped=eu.getTransfer(i.colorSpace)!==U,(h!==i||d!==i.version||p!==e.toneMapping)&&(l.material.needsUpdate=!0,h=i,d=i.version,p=e.toneMapping),l.layers.enableAll(),t.unshift(l,l.geometry,l.material,0,0,null)):i&&i.isTexture&&(void 0===o&&((o=new nf(new r9(2,2),new nb({name:"BackgroundMaterial",uniforms:nv(oH.background.uniforms),vertexShader:oH.background.vertexShader,fragmentShader:oH.background.fragmentShader,side:0,depthTest:!1,depthWrite:!1,fog:!1}))).geometry.deleteAttribute("normal"),Object.defineProperty(o.material,"map",{get:function(){return this.uniforms.t2D.value}}),r.update(o)),o.material.uniforms.t2D.value=i,o.material.uniforms.backgroundIntensity.value=n.backgroundIntensity,o.material.toneMapped=eu.getTransfer(i.colorSpace)!==U,!0===i.matrixAutoUpdate&&i.updateMatrix(),o.material.uniforms.uvTransform.value.copy(i.matrix),(h!==i||d!==i.version||p!==e.toneMapping)&&(o.material.needsUpdate=!0,h=i,d=i.version,p=e.toneMapping),o.layers.enableAll(),t.unshift(o,o.geometry,o.material,0,0,null))},dispose:function(){void 0!==l&&(l.geometry.dispose(),l.material.dispose()),void 0!==o&&(o.geometry.dispose(),o.material.dispose())}}}function oX(e,t){let n=e.getParameter(e.MAX_VERTEX_ATTRIBS),i={},r=u(null),a=r,s=!1;function o(t){return e.bindVertexArray(t)}function l(t){return e.deleteVertexArray(t)}function u(e){let t=[],i=[],r=[];for(let e=0;e=0){let n=r[t],i=s[t];if(void 0===i&&("instanceMatrix"===t&&e.instanceMatrix&&(i=e.instanceMatrix),"instanceColor"===t&&e.instanceColor&&(i=e.instanceColor)),void 0===n||n.attribute!==i||i&&n.data!==i.data)return!0;o++}return a.attributesNum!==o||a.index!==i}(n,m,l,g))&&function(e,t,n,i){let r={},s=t.attributes,o=0,l=n.getAttributes();for(let t in l)if(l[t].location>=0){let n=s[t];void 0===n&&("instanceMatrix"===t&&e.instanceMatrix&&(n=e.instanceMatrix),"instanceColor"===t&&e.instanceColor&&(n=e.instanceColor));let i={};i.attribute=n,n&&n.data&&(i.data=n.data),r[t]=i,o++}a.attributes=r,a.attributesNum=o,a.index=i}(n,m,l,g),null!==g&&t.update(g,e.ELEMENT_ARRAY_BUFFER),(M||s)&&(s=!1,function(n,i,r,a){c();let s=a.attributes,o=r.getAttributes(),l=i.defaultAttributeValues;for(let i in o){let r=o[i];if(r.location>=0){let o=s[i];if(void 0===o&&("instanceMatrix"===i&&n.instanceMatrix&&(o=n.instanceMatrix),"instanceColor"===i&&n.instanceColor&&(o=n.instanceColor)),void 0!==o){let i=o.normalized,s=o.itemSize,l=t.get(o);if(void 0===l)continue;let u=l.buffer,c=l.type,p=l.bytesPerElement,m=c===e.INT||c===e.UNSIGNED_INT||1013===o.gpuType;if(o.isInterleavedBufferAttribute){let t=o.data,l=t.stride,g=o.offset;if(t.isInstancedInterleavedBuffer){for(let e=0;e0&&e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.HIGH_FLOAT).precision>0)return"highp";t="mediump"}return"mediump"===t&&e.getShaderPrecisionFormat(e.VERTEX_SHADER,e.MEDIUM_FLOAT).precision>0&&e.getShaderPrecisionFormat(e.FRAGMENT_SHADER,e.MEDIUM_FLOAT).precision>0?"mediump":"lowp"}let s=void 0!==n.precision?n.precision:"highp",o=a(s);o!==s&&(console.warn("THREE.WebGLRenderer:",s,"not supported, using",o,"instead."),s=o);let l=!0===n.logarithmicDepthBuffer,u=!0===n.reverseDepthBuffer&&t.has("EXT_clip_control"),c=e.getParameter(e.MAX_TEXTURE_IMAGE_UNITS),h=e.getParameter(e.MAX_VERTEX_TEXTURE_IMAGE_UNITS);return{isWebGL2:!0,getMaxAnisotropy:function(){if(void 0!==r)return r;if(!0===t.has("EXT_texture_filter_anisotropic")){let n=t.get("EXT_texture_filter_anisotropic");r=e.getParameter(n.MAX_TEXTURE_MAX_ANISOTROPY_EXT)}else r=0;return r},getMaxPrecision:a,textureFormatReadable:function(t){return 1023===t||i.convert(t)===e.getParameter(e.IMPLEMENTATION_COLOR_READ_FORMAT)},textureTypeReadable:function(n){let r=1016===n&&(t.has("EXT_color_buffer_half_float")||t.has("EXT_color_buffer_float"));return 1009===n||i.convert(n)===e.getParameter(e.IMPLEMENTATION_COLOR_READ_TYPE)||1015===n||!!r},precision:s,logarithmicDepthBuffer:l,reverseDepthBuffer:u,maxTextures:c,maxVertexTextures:h,maxTextureSize:e.getParameter(e.MAX_TEXTURE_SIZE),maxCubemapSize:e.getParameter(e.MAX_CUBE_MAP_TEXTURE_SIZE),maxAttributes:e.getParameter(e.MAX_VERTEX_ATTRIBS),maxVertexUniforms:e.getParameter(e.MAX_VERTEX_UNIFORM_VECTORS),maxVaryings:e.getParameter(e.MAX_VARYING_VECTORS),maxFragmentUniforms:e.getParameter(e.MAX_FRAGMENT_UNIFORM_VECTORS),vertexTextures:h>0,maxSamples:e.getParameter(e.MAX_SAMPLES)}}function oZ(e){let t=this,n=null,i=0,r=!1,a=!1,s=new iy,o=new Z,l={value:null,needsUpdate:!1};function u(e,n,i,r){let a=null!==e?e.length:0,u=null;if(0!==a){if(u=l.value,!0!==r||null===u){let t=i+4*a,r=n.matrixWorldInverse;o.getNormalMatrix(r),(null===u||u.length0),t.numPlanes=i,t.numIntersection=0)}}function oJ(e){let t=new WeakMap;function n(e,t){return 303===t?e.mapping=301:304===t&&(e.mapping=302),e}function i(e){let n=e.target;n.removeEventListener("dispose",i);let r=t.get(n);void 0!==r&&(t.delete(n),r.dispose())}return{get:function(r){if(r&&r.isTexture){let a=r.mapping;if(303===a||304===a)if(t.has(r))return n(t.get(r).texture,r.mapping);else{let a=r.image;if(!a||!(a.height>0))return null;{let s=new nR(a.height);return s.fromEquirectangularTexture(e,r),t.set(r,s),r.addEventListener("dispose",i),n(s.texture,r.mapping)}}}return r},dispose:function(){t=new WeakMap}}}let oK=[.125,.215,.35,.446,.526,.582],o$=new sn,oQ=new tz,o0=null,o1=0,o2=0,o3=!1,o4=(1+Math.sqrt(5))/2,o5=1/o4,o6=[new eE(-o4,o5,0),new eE(o4,o5,0),new eE(-o5,0,o4),new eE(o5,0,o4),new eE(0,o4,-o5),new eE(0,o4,o5),new eE(-1,1,-1),new eE(1,1,-1),new eE(-1,1,1),new eE(1,1,1)];class o8{constructor(e){this._renderer=e,this._pingPongRenderTarget=null,this._lodMax=0,this._cubeSize=0,this._lodPlanes=[],this._sizeLods=[],this._sigmas=[],this._blurMaterial=null,this._cubemapMaterial=null,this._equirectMaterial=null,this._compileMaterial(this._blurMaterial)}fromScene(e,t=0,n=.1,i=100){o0=this._renderer.getRenderTarget(),o1=this._renderer.getActiveCubeFace(),o2=this._renderer.getActiveMipmapLevel(),o3=this._renderer.xr.enabled,this._renderer.xr.enabled=!1,this._setSize(256);let r=this._allocateTargets();return r.depthBuffer=!0,this._sceneToCubeUV(e,n,i,r),t>0&&this._blur(r,0,0,t),this._applyPMREM(r),this._cleanup(r),r}fromEquirectangular(e,t=null){return this._fromTexture(e,t)}fromCubemap(e,t=null){return this._fromTexture(e,t)}compileCubemapShader(){null===this._cubemapMaterial&&(this._cubemapMaterial=lt(),this._compileMaterial(this._cubemapMaterial))}compileEquirectangularShader(){null===this._equirectMaterial&&(this._equirectMaterial=le(),this._compileMaterial(this._equirectMaterial))}dispose(){this._dispose(),null!==this._cubemapMaterial&&this._cubemapMaterial.dispose(),null!==this._equirectMaterial&&this._equirectMaterial.dispose()}_setSize(e){this._lodMax=Math.floor(Math.log2(e)),this._cubeSize=Math.pow(2,this._lodMax)}_dispose(){null!==this._blurMaterial&&this._blurMaterial.dispose(),null!==this._pingPongRenderTarget&&this._pingPongRenderTarget.dispose();for(let e=0;ee-4?o=oK[s-e+4-1]:0===s&&(o=0),i.push(o);let l=1/(a-2),u=-l,c=1+l,h=[u,u,c,u,c,c,u,u,c,c,u,c],d=new Float32Array(108),p=new Float32Array(72),f=new Float32Array(36);for(let e=0;e<6;e++){let t=e%3*2/3-1,n=e>2?0:-1,i=[t,n,0,t+2/3,n,0,t+2/3,n+1,0,t,n,0,t+2/3,n+1,0,t,n+1,0];d.set(i,18*e),p.set(h,12*e);let r=[e,e,e,e,e,e];f.set(r,6*e)}let m=new nn;m.setAttribute("position",new tZ(d,3)),m.setAttribute("uv",new tZ(p,2)),m.setAttribute("faceIndex",new tZ(f,1)),t.push(m),r>4&&r--}return{lodPlanes:t,sizeLods:n,sigmas:i}}(i)),this._blurMaterial=(r=i,new nb({name:"SphericalGaussianBlur",defines:{n:20,CUBEUV_TEXEL_WIDTH:1/e,CUBEUV_TEXEL_HEIGHT:1/t,CUBEUV_MAX_MIP:`${r}.0`},uniforms:{envMap:{value:null},samples:{value:1},weights:{value:new Float32Array(20)},latitudinal:{value:!1},dTheta:{value:0},mipInt:{value:0},poleAxis:{value:new eE(0,1,0)}},vertexShader:ln(),fragmentShader:` + + precision mediump float; + precision mediump int; + + varying vec3 vOutputDirection; + + uniform sampler2D envMap; + uniform int samples; + uniform float weights[ n ]; + uniform bool latitudinal; + uniform float dTheta; + uniform float mipInt; + uniform vec3 poleAxis; + + #define ENVMAP_TYPE_CUBE_UV + #include + + vec3 getSample( float theta, vec3 axis ) { + + float cosTheta = cos( theta ); + // Rodrigues' axis-angle rotation + vec3 sampleDirection = vOutputDirection * cosTheta + + cross( axis, vOutputDirection ) * sin( theta ) + + axis * dot( axis, vOutputDirection ) * ( 1.0 - cosTheta ); + + return bilinearCubeUV( envMap, sampleDirection, mipInt ); + + } + + void main() { + + vec3 axis = latitudinal ? poleAxis : cross( poleAxis, vOutputDirection ); + + if ( all( equal( axis, vec3( 0.0 ) ) ) ) { + + axis = vec3( vOutputDirection.z, 0.0, - vOutputDirection.x ); + + } + + axis = normalize( axis ); + + gl_FragColor = vec4( 0.0, 0.0, 0.0, 1.0 ); + gl_FragColor.rgb += weights[ 0 ] * getSample( 0.0, axis ); + + for ( int i = 1; i < n; i++ ) { + + if ( i >= samples ) { + + break; + + } + + float theta = dTheta * float( i ); + gl_FragColor.rgb += weights[ i ] * getSample( -1.0 * theta, axis ); + gl_FragColor.rgb += weights[ i ] * getSample( theta, axis ); + + } + + } + `,blending:0,depthTest:!1,depthWrite:!1}))}return i}_compileMaterial(e){let t=new nf(this._lodPlanes[0],e);this._renderer.compile(t,o$)}_sceneToCubeUV(e,t,n,i){let r=new nE(90,1,t,n),a=[1,-1,1,1,1,1],s=[1,1,1,-1,-1,-1],o=this._renderer,l=o.autoClear,u=o.toneMapping;o.getClearColor(oQ),o.toneMapping=0,o.autoClear=!1;let c=new tV({name:"PMREM.Background",side:1,depthWrite:!1,depthTest:!1}),h=new nf(new ng,c),d=!1,p=e.background;p?p.isColor&&(c.color.copy(p),e.background=null,d=!0):(c.color.copy(oQ),d=!0);for(let t=0;t<6;t++){let n=t%3;0===n?(r.up.set(0,a[t],0),r.lookAt(s[t],0,0)):1===n?(r.up.set(0,0,a[t]),r.lookAt(0,s[t],0)):(r.up.set(0,a[t],0),r.lookAt(0,0,s[t]));let l=this._cubeSize;o7(i,n*l,t>2?l:0,l,l),o.setRenderTarget(i),d&&o.render(h,r),o.render(e,r)}h.geometry.dispose(),h.material.dispose(),o.toneMapping=u,o.autoClear=l,e.background=p}_textureToCubeUV(e,t){let n=this._renderer,i=301===e.mapping||302===e.mapping;i?(null===this._cubemapMaterial&&(this._cubemapMaterial=lt()),this._cubemapMaterial.uniforms.flipEnvMap.value=!1===e.isRenderTargetTexture?-1:1):null===this._equirectMaterial&&(this._equirectMaterial=le());let r=i?this._cubemapMaterial:this._equirectMaterial,a=new nf(this._lodPlanes[0],r);r.uniforms.envMap.value=e;let s=this._cubeSize;o7(t,0,0,3*s,2*s),n.setRenderTarget(t),n.render(a,o$)}_applyPMREM(e){let t=this._renderer,n=t.autoClear;t.autoClear=!1;let i=this._lodPlanes.length;for(let t=1;t20&&console.warn(`sigmaRadians, ${r}, is too large and will clip, as it requested ${f} samples when the maximum is set to 20`);let m=[],g=0;for(let e=0;e<20;++e){let t=e/p,n=Math.exp(-t*t/2);m.push(n),0===e?g+=n:ev-4?i-v+4:0),y,3*_,2*_),o.setRenderTarget(t),o.render(u,o$)}}function o9(e,t,n){let i=new ex(e,t,n);return i.texture.mapping=306,i.texture.name="PMREM.cubeUv",i.scissorTest=!0,i}function o7(e,t,n,i,r){e.viewport.set(t,n,i,r),e.scissor.set(t,n,i,r)}function le(){return new nb({name:"EquirectangularToCubeUV",uniforms:{envMap:{value:null}},vertexShader:ln(),fragmentShader:` + + precision mediump float; + precision mediump int; + + varying vec3 vOutputDirection; + + uniform sampler2D envMap; + + #include + + void main() { + + vec3 outputDirection = normalize( vOutputDirection ); + vec2 uv = equirectUv( outputDirection ); + + gl_FragColor = vec4( texture2D ( envMap, uv ).rgb, 1.0 ); + + } + `,blending:0,depthTest:!1,depthWrite:!1})}function lt(){return new nb({name:"CubemapToCubeUV",uniforms:{envMap:{value:null},flipEnvMap:{value:-1}},vertexShader:ln(),fragmentShader:` + + precision mediump float; + precision mediump int; + + uniform float flipEnvMap; + + varying vec3 vOutputDirection; + + uniform samplerCube envMap; + + void main() { + + gl_FragColor = textureCube( envMap, vec3( flipEnvMap * vOutputDirection.x, vOutputDirection.yz ) ); + + } + `,blending:0,depthTest:!1,depthWrite:!1})}function ln(){return` + + precision mediump float; + precision mediump int; + + attribute float faceIndex; + + varying vec3 vOutputDirection; + + // RH coordinate system; PMREM face-indexing convention + vec3 getDirection( vec2 uv, float face ) { + + uv = 2.0 * uv - 1.0; + + vec3 direction = vec3( uv, 1.0 ); + + if ( face == 0.0 ) { + + direction = direction.zyx; // ( 1, v, u ) pos x + + } else if ( face == 1.0 ) { + + direction = direction.xzy; + direction.xz *= -1.0; // ( -u, 1, -v ) pos y + + } else if ( face == 2.0 ) { + + direction.x *= -1.0; // ( -u, v, 1 ) pos z + + } else if ( face == 3.0 ) { + + direction = direction.zyx; + direction.xz *= -1.0; // ( -1, v, -u ) neg x + + } else if ( face == 4.0 ) { + + direction = direction.xzy; + direction.xy *= -1.0; // ( -u, -1, v ) neg y + + } else if ( face == 5.0 ) { + + direction.z *= -1.0; // ( u, v, -1 ) neg z + + } + + return direction; + + } + + void main() { + + vOutputDirection = getDirection( uv, faceIndex ); + gl_Position = vec4( position, 1.0 ); + + } + `}function li(e){let t=new WeakMap,n=null;function i(e){let n=e.target;n.removeEventListener("dispose",i);let r=t.get(n);void 0!==r&&(t.delete(n),r.dispose())}return{get:function(r){if(r&&r.isTexture){let a=r.mapping,s=303===a||304===a,o=301===a||302===a;if(s||o){let a=t.get(r),l=void 0!==a?a.texture.pmremVersion:0;if(r.isRenderTargetTexture&&r.pmremVersion!==l)return null===n&&(n=new o8(e)),(a=s?n.fromEquirectangular(r,a):n.fromCubemap(r,a)).texture.pmremVersion=r.pmremVersion,t.set(r,a),a.texture;{if(void 0!==a)return a.texture;let l=r.image;return s&&l&&l.height>0||o&&l&&function(e){let t=0;for(let n=0;n<6;n++)void 0!==e[n]&&t++;return 6===t}(l)?(null===n&&(n=new o8(e)),(a=s?n.fromEquirectangular(r):n.fromCubemap(r)).texture.pmremVersion=r.pmremVersion,t.set(r,a),r.addEventListener("dispose",i),a.texture):null}}}return r},dispose:function(){t=new WeakMap,null!==n&&(n.dispose(),n=null)}}}function lr(e){let t={};function n(n){let i;if(void 0!==t[n])return t[n];switch(n){case"WEBGL_depth_texture":i=e.getExtension("WEBGL_depth_texture")||e.getExtension("MOZ_WEBGL_depth_texture")||e.getExtension("WEBKIT_WEBGL_depth_texture");break;case"EXT_texture_filter_anisotropic":i=e.getExtension("EXT_texture_filter_anisotropic")||e.getExtension("MOZ_EXT_texture_filter_anisotropic")||e.getExtension("WEBKIT_EXT_texture_filter_anisotropic");break;case"WEBGL_compressed_texture_s3tc":i=e.getExtension("WEBGL_compressed_texture_s3tc")||e.getExtension("MOZ_WEBGL_compressed_texture_s3tc")||e.getExtension("WEBKIT_WEBGL_compressed_texture_s3tc");break;case"WEBGL_compressed_texture_pvrtc":i=e.getExtension("WEBGL_compressed_texture_pvrtc")||e.getExtension("WEBKIT_WEBGL_compressed_texture_pvrtc");break;default:i=e.getExtension(n)}return t[n]=i,i}return{has:function(e){return null!==n(e)},init:function(){n("EXT_color_buffer_float"),n("WEBGL_clip_cull_distance"),n("OES_texture_float_linear"),n("EXT_color_buffer_half_float"),n("WEBGL_multisampled_render_to_texture"),n("WEBGL_render_shared_exponent")},get:function(e){let t=n(e);return null===t&&ei("THREE.WebGLRenderer: "+e+" extension not supported."),t}}}function la(e,t,n,i){let r={},a=new WeakMap;function s(e){let o=e.target;for(let e in null!==o.index&&t.remove(o.index),o.attributes)t.remove(o.attributes[e]);o.removeEventListener("dispose",s),delete r[o.id];let l=a.get(o);l&&(t.remove(l),a.delete(o)),i.releaseStatesOfGeometry(o),!0===o.isInstancedBufferGeometry&&delete o._maxInstanceCount,n.memory.geometries--}function o(e){let n=[],i=e.index,r=e.attributes.position,s=0;if(null!==i){let e=i.array;s=i.version;for(let t=0,i=e.length;tt.maxTextureSize&&(f=Math.ceil(p/t.maxTextureSize),p=t.maxTextureSize);let m=new Float32Array(p*f*4*c),g=new eb(m,p,f,c);g.type=1015,g.needsUpdate=!0;let v=4*d;for(let t=0;t0)return e;let r=t*n,a=lm[r];if(void 0===a&&(a=new Float32Array(r),lm[r]=a),0!==t){i.toArray(a,0);for(let i=1,r=0;i!==t;++i)r+=n,e[i].toArray(a,r)}return a}function lb(e,t){if(e.length!==t.length)return!1;for(let n=0,i=e.length;n":" "} ${r}: ${n[e]}`)}return i.join("\n")}(e.getShaderSource(t),i)}}let ul=new eE;function uu(e){return""!==e}function uc(e,t){let n=t.numSpotLightShadows+t.numSpotLightMaps-t.numSpotLightShadowsWithMaps;return e.replace(/NUM_DIR_LIGHTS/g,t.numDirLights).replace(/NUM_SPOT_LIGHTS/g,t.numSpotLights).replace(/NUM_SPOT_LIGHT_MAPS/g,t.numSpotLightMaps).replace(/NUM_SPOT_LIGHT_COORDS/g,n).replace(/NUM_RECT_AREA_LIGHTS/g,t.numRectAreaLights).replace(/NUM_POINT_LIGHTS/g,t.numPointLights).replace(/NUM_HEMI_LIGHTS/g,t.numHemiLights).replace(/NUM_DIR_LIGHT_SHADOWS/g,t.numDirLightShadows).replace(/NUM_SPOT_LIGHT_SHADOWS_WITH_MAPS/g,t.numSpotLightShadowsWithMaps).replace(/NUM_SPOT_LIGHT_SHADOWS/g,t.numSpotLightShadows).replace(/NUM_POINT_LIGHT_SHADOWS/g,t.numPointLightShadows)}function uh(e,t){return e.replace(/NUM_CLIPPING_PLANES/g,t.numClippingPlanes).replace(/UNION_CLIPPING_PLANES/g,t.numClippingPlanes-t.numClipIntersection)}let ud=/^[ \t]*#include +<([\w\d./]+)>/gm;function up(e){return e.replace(ud,um)}let uf=new Map;function um(e,t){let n=oB[t];if(void 0===n){let e=uf.get(t);if(void 0!==e)n=oB[e],console.warn('THREE.WebGLRenderer: Shader chunk "%s" has been deprecated. Use "%s" instead.',t,e);else throw Error("Can not resolve #include <"+t+">")}return up(n)}let ug=/#pragma unroll_loop_start\s+for\s*\(\s*int\s+i\s*=\s*(\d+)\s*;\s*i\s*<\s*(\d+)\s*;\s*i\s*\+\+\s*\)\s*{([\s\S]+?)}\s+#pragma unroll_loop_end/g;function uv(e){return e.replace(ug,u_)}function u_(e,t,n,i){let r="";for(let e=parseInt(t);e0&&(r+="\n"),(a=["#define SHADER_TYPE "+n.shaderType,"#define SHADER_NAME "+n.shaderName,x].filter(uu).join("\n")).length>0&&(a+="\n");else{let e,t,i,s;r=[uy(n),"#define SHADER_TYPE "+n.shaderType,"#define SHADER_NAME "+n.shaderName,x,n.extensionClipCullDistance?"#define USE_CLIP_DISTANCE":"",n.batching?"#define USE_BATCHING":"",n.batchingColor?"#define USE_BATCHING_COLOR":"",n.instancing?"#define USE_INSTANCING":"",n.instancingColor?"#define USE_INSTANCING_COLOR":"",n.instancingMorph?"#define USE_INSTANCING_MORPH":"",n.useFog&&n.fog?"#define USE_FOG":"",n.useFog&&n.fogExp2?"#define FOG_EXP2":"",n.map?"#define USE_MAP":"",n.envMap?"#define USE_ENVMAP":"",n.envMap?"#define "+g:"",n.lightMap?"#define USE_LIGHTMAP":"",n.aoMap?"#define USE_AOMAP":"",n.bumpMap?"#define USE_BUMPMAP":"",n.normalMap?"#define USE_NORMALMAP":"",n.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",n.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",n.displacementMap?"#define USE_DISPLACEMENTMAP":"",n.emissiveMap?"#define USE_EMISSIVEMAP":"",n.anisotropy?"#define USE_ANISOTROPY":"",n.anisotropyMap?"#define USE_ANISOTROPYMAP":"",n.clearcoatMap?"#define USE_CLEARCOATMAP":"",n.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",n.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",n.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",n.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",n.specularMap?"#define USE_SPECULARMAP":"",n.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",n.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",n.roughnessMap?"#define USE_ROUGHNESSMAP":"",n.metalnessMap?"#define USE_METALNESSMAP":"",n.alphaMap?"#define USE_ALPHAMAP":"",n.alphaHash?"#define USE_ALPHAHASH":"",n.transmission?"#define USE_TRANSMISSION":"",n.transmissionMap?"#define USE_TRANSMISSIONMAP":"",n.thicknessMap?"#define USE_THICKNESSMAP":"",n.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",n.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",n.mapUv?"#define MAP_UV "+n.mapUv:"",n.alphaMapUv?"#define ALPHAMAP_UV "+n.alphaMapUv:"",n.lightMapUv?"#define LIGHTMAP_UV "+n.lightMapUv:"",n.aoMapUv?"#define AOMAP_UV "+n.aoMapUv:"",n.emissiveMapUv?"#define EMISSIVEMAP_UV "+n.emissiveMapUv:"",n.bumpMapUv?"#define BUMPMAP_UV "+n.bumpMapUv:"",n.normalMapUv?"#define NORMALMAP_UV "+n.normalMapUv:"",n.displacementMapUv?"#define DISPLACEMENTMAP_UV "+n.displacementMapUv:"",n.metalnessMapUv?"#define METALNESSMAP_UV "+n.metalnessMapUv:"",n.roughnessMapUv?"#define ROUGHNESSMAP_UV "+n.roughnessMapUv:"",n.anisotropyMapUv?"#define ANISOTROPYMAP_UV "+n.anisotropyMapUv:"",n.clearcoatMapUv?"#define CLEARCOATMAP_UV "+n.clearcoatMapUv:"",n.clearcoatNormalMapUv?"#define CLEARCOAT_NORMALMAP_UV "+n.clearcoatNormalMapUv:"",n.clearcoatRoughnessMapUv?"#define CLEARCOAT_ROUGHNESSMAP_UV "+n.clearcoatRoughnessMapUv:"",n.iridescenceMapUv?"#define IRIDESCENCEMAP_UV "+n.iridescenceMapUv:"",n.iridescenceThicknessMapUv?"#define IRIDESCENCE_THICKNESSMAP_UV "+n.iridescenceThicknessMapUv:"",n.sheenColorMapUv?"#define SHEEN_COLORMAP_UV "+n.sheenColorMapUv:"",n.sheenRoughnessMapUv?"#define SHEEN_ROUGHNESSMAP_UV "+n.sheenRoughnessMapUv:"",n.specularMapUv?"#define SPECULARMAP_UV "+n.specularMapUv:"",n.specularColorMapUv?"#define SPECULAR_COLORMAP_UV "+n.specularColorMapUv:"",n.specularIntensityMapUv?"#define SPECULAR_INTENSITYMAP_UV "+n.specularIntensityMapUv:"",n.transmissionMapUv?"#define TRANSMISSIONMAP_UV "+n.transmissionMapUv:"",n.thicknessMapUv?"#define THICKNESSMAP_UV "+n.thicknessMapUv:"",n.vertexTangents&&!1===n.flatShading?"#define USE_TANGENT":"",n.vertexColors?"#define USE_COLOR":"",n.vertexAlphas?"#define USE_COLOR_ALPHA":"",n.vertexUv1s?"#define USE_UV1":"",n.vertexUv2s?"#define USE_UV2":"",n.vertexUv3s?"#define USE_UV3":"",n.pointsUvs?"#define USE_POINTS_UV":"",n.flatShading?"#define FLAT_SHADED":"",n.skinning?"#define USE_SKINNING":"",n.morphTargets?"#define USE_MORPHTARGETS":"",n.morphNormals&&!1===n.flatShading?"#define USE_MORPHNORMALS":"",n.morphColors?"#define USE_MORPHCOLORS":"",n.morphTargetsCount>0?"#define MORPHTARGETS_TEXTURE_STRIDE "+n.morphTextureStride:"",n.morphTargetsCount>0?"#define MORPHTARGETS_COUNT "+n.morphTargetsCount:"",n.doubleSided?"#define DOUBLE_SIDED":"",n.flipSided?"#define FLIP_SIDED":"",n.shadowMapEnabled?"#define USE_SHADOWMAP":"",n.shadowMapEnabled?"#define "+f:"",n.sizeAttenuation?"#define USE_SIZEATTENUATION":"",n.numLightProbes>0?"#define USE_LIGHT_PROBES":"",n.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",n.reverseDepthBuffer?"#define USE_REVERSEDEPTHBUF":"","uniform mat4 modelMatrix;","uniform mat4 modelViewMatrix;","uniform mat4 projectionMatrix;","uniform mat4 viewMatrix;","uniform mat3 normalMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;","#ifdef USE_INSTANCING"," attribute mat4 instanceMatrix;","#endif","#ifdef USE_INSTANCING_COLOR"," attribute vec3 instanceColor;","#endif","#ifdef USE_INSTANCING_MORPH"," uniform sampler2D morphTexture;","#endif","attribute vec3 position;","attribute vec3 normal;","attribute vec2 uv;","#ifdef USE_UV1"," attribute vec2 uv1;","#endif","#ifdef USE_UV2"," attribute vec2 uv2;","#endif","#ifdef USE_UV3"," attribute vec2 uv3;","#endif","#ifdef USE_TANGENT"," attribute vec4 tangent;","#endif","#if defined( USE_COLOR_ALPHA )"," attribute vec4 color;","#elif defined( USE_COLOR )"," attribute vec3 color;","#endif","#ifdef USE_SKINNING"," attribute vec4 skinIndex;"," attribute vec4 skinWeight;","#endif","\n"].filter(uu).join("\n"),a=[uy(n),"#define SHADER_TYPE "+n.shaderType,"#define SHADER_NAME "+n.shaderName,x,n.useFog&&n.fog?"#define USE_FOG":"",n.useFog&&n.fogExp2?"#define FOG_EXP2":"",n.alphaToCoverage?"#define ALPHA_TO_COVERAGE":"",n.map?"#define USE_MAP":"",n.matcap?"#define USE_MATCAP":"",n.envMap?"#define USE_ENVMAP":"",n.envMap?"#define "+m:"",n.envMap?"#define "+g:"",n.envMap?"#define "+v:"",_?"#define CUBEUV_TEXEL_WIDTH "+_.texelWidth:"",_?"#define CUBEUV_TEXEL_HEIGHT "+_.texelHeight:"",_?"#define CUBEUV_MAX_MIP "+_.maxMip+".0":"",n.lightMap?"#define USE_LIGHTMAP":"",n.aoMap?"#define USE_AOMAP":"",n.bumpMap?"#define USE_BUMPMAP":"",n.normalMap?"#define USE_NORMALMAP":"",n.normalMapObjectSpace?"#define USE_NORMALMAP_OBJECTSPACE":"",n.normalMapTangentSpace?"#define USE_NORMALMAP_TANGENTSPACE":"",n.emissiveMap?"#define USE_EMISSIVEMAP":"",n.anisotropy?"#define USE_ANISOTROPY":"",n.anisotropyMap?"#define USE_ANISOTROPYMAP":"",n.clearcoat?"#define USE_CLEARCOAT":"",n.clearcoatMap?"#define USE_CLEARCOATMAP":"",n.clearcoatRoughnessMap?"#define USE_CLEARCOAT_ROUGHNESSMAP":"",n.clearcoatNormalMap?"#define USE_CLEARCOAT_NORMALMAP":"",n.dispersion?"#define USE_DISPERSION":"",n.iridescence?"#define USE_IRIDESCENCE":"",n.iridescenceMap?"#define USE_IRIDESCENCEMAP":"",n.iridescenceThicknessMap?"#define USE_IRIDESCENCE_THICKNESSMAP":"",n.specularMap?"#define USE_SPECULARMAP":"",n.specularColorMap?"#define USE_SPECULAR_COLORMAP":"",n.specularIntensityMap?"#define USE_SPECULAR_INTENSITYMAP":"",n.roughnessMap?"#define USE_ROUGHNESSMAP":"",n.metalnessMap?"#define USE_METALNESSMAP":"",n.alphaMap?"#define USE_ALPHAMAP":"",n.alphaTest?"#define USE_ALPHATEST":"",n.alphaHash?"#define USE_ALPHAHASH":"",n.sheen?"#define USE_SHEEN":"",n.sheenColorMap?"#define USE_SHEEN_COLORMAP":"",n.sheenRoughnessMap?"#define USE_SHEEN_ROUGHNESSMAP":"",n.transmission?"#define USE_TRANSMISSION":"",n.transmissionMap?"#define USE_TRANSMISSIONMAP":"",n.thicknessMap?"#define USE_THICKNESSMAP":"",n.vertexTangents&&!1===n.flatShading?"#define USE_TANGENT":"",n.vertexColors||n.instancingColor||n.batchingColor?"#define USE_COLOR":"",n.vertexAlphas?"#define USE_COLOR_ALPHA":"",n.vertexUv1s?"#define USE_UV1":"",n.vertexUv2s?"#define USE_UV2":"",n.vertexUv3s?"#define USE_UV3":"",n.pointsUvs?"#define USE_POINTS_UV":"",n.gradientMap?"#define USE_GRADIENTMAP":"",n.flatShading?"#define FLAT_SHADED":"",n.doubleSided?"#define DOUBLE_SIDED":"",n.flipSided?"#define FLIP_SIDED":"",n.shadowMapEnabled?"#define USE_SHADOWMAP":"",n.shadowMapEnabled?"#define "+f:"",n.premultipliedAlpha?"#define PREMULTIPLIED_ALPHA":"",n.numLightProbes>0?"#define USE_LIGHT_PROBES":"",n.decodeVideoTexture?"#define DECODE_VIDEO_TEXTURE":"",n.decodeVideoTextureEmissive?"#define DECODE_VIDEO_TEXTURE_EMISSIVE":"",n.logarithmicDepthBuffer?"#define USE_LOGDEPTHBUF":"",n.reverseDepthBuffer?"#define USE_REVERSEDEPTHBUF":"","uniform mat4 viewMatrix;","uniform vec3 cameraPosition;","uniform bool isOrthographic;",0!==n.toneMapping?"#define TONE_MAPPING":"",0!==n.toneMapping?oB.tonemapping_pars_fragment:"",0!==n.toneMapping?function(e,t){let n;switch(t){case 1:n="Linear";break;case 2:n="Reinhard";break;case 3:n="Cineon";break;case 4:n="ACESFilmic";break;case 6:n="AgX";break;case 7:n="Neutral";break;case 5:n="Custom";break;default:console.warn("THREE.WebGLProgram: Unsupported toneMapping:",t),n="Linear"}return"vec3 "+e+"( vec3 color ) { return "+n+"ToneMapping( color ); }"}("toneMapping",n.toneMapping):"",n.dithering?"#define DITHERING":"",n.opaque?"#define OPAQUE":"",oB.colorspace_pars_fragment,(e=function(e){eu._getMatrix(us,eu.workingColorSpace,e);let t=`mat3( ${us.elements.map(e=>e.toFixed(4))} )`;switch(eu.getTransfer(e)){case N:return[t,"LinearTransferOETF"];case U:return[t,"sRGBTransferOETF"];default:return console.warn("THREE.WebGLProgram: Unsupported color space: ",e),[t,"LinearTransferOETF"]}}(n.outputColorSpace),`vec4 linearToOutputTexel( vec4 value ) { + return ${e[1]}( vec4( value.rgb * ${e[0]}, value.a ) ); +}`),(eu.getLuminanceCoefficients(ul),t=ul.x.toFixed(4),i=ul.y.toFixed(4),s=ul.z.toFixed(4),`float luminance( const in vec3 rgb ) { + const vec3 weights = vec3( ${t}, ${i}, ${s} ); + return dot( weights, rgb ); +}`),n.useDepthPacking?"#define DEPTH_PACKING "+n.depthPacking:"","\n"].filter(uu).join("\n")}d=uh(d=uc(d=up(d),n),n),p=uh(p=uc(p=up(p),n),n),d=uv(d),p=uv(p),!0!==n.isRawShaderMaterial&&(S="#version 300 es\n",r=[y,"#define attribute in\n#define varying out\n#define texture2D texture"].join("\n")+"\n"+r,a=["#define varying in",n.glslVersion===D?"":"layout(location = 0) out highp vec4 pc_fragColor;",n.glslVersion===D?"":"#define gl_FragColor pc_fragColor","#define gl_FragDepthEXT gl_FragDepth\n#define texture2D texture\n#define textureCube texture\n#define texture2DProj textureProj\n#define texture2DLodEXT textureLod\n#define texture2DProjLodEXT textureProjLod\n#define textureCubeLodEXT textureLod\n#define texture2DGradEXT textureGrad\n#define texture2DProjGradEXT textureProjGrad\n#define textureCubeGradEXT textureGrad"].join("\n")+"\n"+a);let M=S+r+d,T=S+a+p,w=ur(c,c.VERTEX_SHADER,M),E=ur(c,c.FRAGMENT_SHADER,T);function A(t){if(e.debug.checkShaderErrors){let n=c.getProgramInfoLog(b).trim(),i=c.getShaderInfoLog(w).trim(),s=c.getShaderInfoLog(E).trim(),o=!0,l=!0;if(!1===c.getProgramParameter(b,c.LINK_STATUS))if(o=!1,"function"==typeof e.debug.onShaderError)e.debug.onShaderError(c,b,w,E);else{let e=uo(c,w,"vertex"),i=uo(c,E,"fragment");console.error("THREE.WebGLProgram: Shader Error "+c.getError()+" - VALIDATE_STATUS "+c.getProgramParameter(b,c.VALIDATE_STATUS)+"\n\nMaterial Name: "+t.name+"\nMaterial Type: "+t.type+"\n\nProgram Info Log: "+n+"\n"+e+"\n"+i)}else""!==n?console.warn("THREE.WebGLProgram: Program Info Log:",n):(""===i||""===s)&&(l=!1);l&&(t.diagnostics={runnable:o,programLog:n,vertexShader:{log:i,prefix:r},fragmentShader:{log:s,prefix:a}})}c.deleteShader(w),c.deleteShader(E),s=new ui(c,b),o=function(e,t){let n={},i=e.getProgramParameter(t,e.ACTIVE_ATTRIBUTES);for(let r=0;r0,Z=a.clearcoat>0,J=a.dispersion>0,K=a.iridescence>0,$=a.sheen>0,Q=a.transmission>0,ee=Y&&!!a.anisotropyMap,et=Z&&!!a.clearcoatMap,en=Z&&!!a.clearcoatNormalMap,ei=Z&&!!a.clearcoatRoughnessMap,er=K&&!!a.iridescenceMap,ea=K&&!!a.iridescenceThicknessMap,es=$&&!!a.sheenColorMap,eo=$&&!!a.sheenRoughnessMap,el=!!a.specularMap,ec=!!a.specularColorMap,eh=!!a.specularIntensityMap,ed=Q&&!!a.transmissionMap,ep=Q&&!!a.thicknessMap,ef=!!a.gradientMap,em=!!a.alphaMap,eg=a.alphaTest>0,ev=!!a.alphaHash,e_=!!a.extensions,ey=0;a.toneMapped&&(null===I||!0===I.isXRRenderTarget)&&(ey=e.toneMapping);let ex={shaderID:A,shaderType:a.type,shaderName:a.name,vertexShader:_,fragmentShader:y,defines:a.defines,customVertexShaderID:x,customFragmentShaderID:b,isRawShaderMaterial:!0===a.isRawShaderMaterial,glslVersion:a.glslVersion,precision:p,batching:O,batchingColor:O&&null!==v._colorsTexture,instancing:D,instancingColor:D&&null!==v.instanceColor,instancingMorph:D&&null!==v.morphTexture,supportsVertexTextures:d,outputColorSpace:null===I?e.outputColorSpace:!0===I.isXRRenderTarget?I.texture.colorSpace:L,alphaToCoverage:!!a.alphaToCoverage,map:F,matcap:z,envMap:B,envMapMode:B&&w.mapping,envMapCubeUVHeight:E,aoMap:k,lightMap:H,bumpMap:V,normalMap:G,displacementMap:d&&W,emissiveMap:j,normalMapObjectSpace:G&&1===a.normalMapType,normalMapTangentSpace:G&&0===a.normalMapType,metalnessMap:X,roughnessMap:q,anisotropy:Y,anisotropyMap:ee,clearcoat:Z,clearcoatMap:et,clearcoatNormalMap:en,clearcoatRoughnessMap:ei,dispersion:J,iridescence:K,iridescenceMap:er,iridescenceThicknessMap:ea,sheen:$,sheenColorMap:es,sheenRoughnessMap:eo,specularMap:el,specularColorMap:ec,specularIntensityMap:eh,transmission:Q,transmissionMap:ed,thicknessMap:ep,gradientMap:ef,opaque:!1===a.transparent&&1===a.blending&&!1===a.alphaToCoverage,alphaMap:em,alphaTest:eg,alphaHash:ev,combine:a.combine,mapUv:F&&m(a.map.channel),aoMapUv:k&&m(a.aoMap.channel),lightMapUv:H&&m(a.lightMap.channel),bumpMapUv:V&&m(a.bumpMap.channel),normalMapUv:G&&m(a.normalMap.channel),displacementMapUv:W&&m(a.displacementMap.channel),emissiveMapUv:j&&m(a.emissiveMap.channel),metalnessMapUv:X&&m(a.metalnessMap.channel),roughnessMapUv:q&&m(a.roughnessMap.channel),anisotropyMapUv:ee&&m(a.anisotropyMap.channel),clearcoatMapUv:et&&m(a.clearcoatMap.channel),clearcoatNormalMapUv:en&&m(a.clearcoatNormalMap.channel),clearcoatRoughnessMapUv:ei&&m(a.clearcoatRoughnessMap.channel),iridescenceMapUv:er&&m(a.iridescenceMap.channel),iridescenceThicknessMapUv:ea&&m(a.iridescenceThicknessMap.channel),sheenColorMapUv:es&&m(a.sheenColorMap.channel),sheenRoughnessMapUv:eo&&m(a.sheenRoughnessMap.channel),specularMapUv:el&&m(a.specularMap.channel),specularColorMapUv:ec&&m(a.specularColorMap.channel),specularIntensityMapUv:eh&&m(a.specularIntensityMap.channel),transmissionMapUv:ed&&m(a.transmissionMap.channel),thicknessMapUv:ep&&m(a.thicknessMap.channel),alphaMapUv:em&&m(a.alphaMap.channel),vertexTangents:!!M.attributes.tangent&&(G||Y),vertexColors:a.vertexColors,vertexAlphas:!0===a.vertexColors&&!!M.attributes.color&&4===M.attributes.color.itemSize,pointsUvs:!0===v.isPoints&&!!M.attributes.uv&&(F||em),fog:!!S,useFog:!0===a.fog,fogExp2:!!S&&S.isFogExp2,flatShading:!0===a.flatShading,sizeAttenuation:!0===a.sizeAttenuation,logarithmicDepthBuffer:h,reverseDepthBuffer:N,skinning:!0===v.isSkinnedMesh,morphTargets:void 0!==M.morphAttributes.position,morphNormals:void 0!==M.morphAttributes.normal,morphColors:void 0!==M.morphAttributes.color,morphTargetsCount:R,morphTextureStride:P,numDirLights:o.directional.length,numPointLights:o.point.length,numSpotLights:o.spot.length,numSpotLightMaps:o.spotLightMap.length,numRectAreaLights:o.rectArea.length,numHemiLights:o.hemi.length,numDirLightShadows:o.directionalShadowMap.length,numPointLightShadows:o.pointShadowMap.length,numSpotLightShadows:o.spotShadowMap.length,numSpotLightShadowsWithMaps:o.numSpotLightShadowsWithMaps,numLightProbes:o.numLightProbes,numClippingPlanes:s.numPlanes,numClipIntersection:s.numIntersection,dithering:a.dithering,shadowMapEnabled:e.shadowMap.enabled&&c.length>0,shadowMapType:e.shadowMap.type,toneMapping:ey,decodeVideoTexture:F&&!0===a.map.isVideoTexture&&eu.getTransfer(a.map.colorSpace)===U,decodeVideoTextureEmissive:j&&!0===a.emissiveMap.isVideoTexture&&eu.getTransfer(a.emissiveMap.colorSpace)===U,premultipliedAlpha:a.premultipliedAlpha,doubleSided:2===a.side,flipSided:1===a.side,useDepthPacking:a.depthPacking>=0,depthPacking:a.depthPacking||0,index0AttributeName:a.index0AttributeName,extensionClipCullDistance:e_&&!0===a.extensions.clipCullDistance&&i.has("WEBGL_clip_cull_distance"),extensionMultiDraw:(e_&&!0===a.extensions.multiDraw||O)&&i.has("WEBGL_multi_draw"),rendererExtensionParallelShaderCompile:i.has("KHR_parallel_shader_compile"),customProgramCacheKey:a.customProgramCacheKey()};return ex.vertexUv1s=u.has(1),ex.vertexUv2s=u.has(2),ex.vertexUv3s=u.has(3),u.clear(),ex},getProgramCacheKey:function(t){var n,i,r,a;let s=[];if(t.shaderID?s.push(t.shaderID):(s.push(t.customVertexShaderID),s.push(t.customFragmentShaderID)),void 0!==t.defines)for(let e in t.defines)s.push(e),s.push(t.defines[e]);return!1===t.isRawShaderMaterial&&(n=s,i=t,n.push(i.precision),n.push(i.outputColorSpace),n.push(i.envMapMode),n.push(i.envMapCubeUVHeight),n.push(i.mapUv),n.push(i.alphaMapUv),n.push(i.lightMapUv),n.push(i.aoMapUv),n.push(i.bumpMapUv),n.push(i.normalMapUv),n.push(i.displacementMapUv),n.push(i.emissiveMapUv),n.push(i.metalnessMapUv),n.push(i.roughnessMapUv),n.push(i.anisotropyMapUv),n.push(i.clearcoatMapUv),n.push(i.clearcoatNormalMapUv),n.push(i.clearcoatRoughnessMapUv),n.push(i.iridescenceMapUv),n.push(i.iridescenceThicknessMapUv),n.push(i.sheenColorMapUv),n.push(i.sheenRoughnessMapUv),n.push(i.specularMapUv),n.push(i.specularColorMapUv),n.push(i.specularIntensityMapUv),n.push(i.transmissionMapUv),n.push(i.thicknessMapUv),n.push(i.combine),n.push(i.fogExp2),n.push(i.sizeAttenuation),n.push(i.morphTargetsCount),n.push(i.morphAttributeCount),n.push(i.numDirLights),n.push(i.numPointLights),n.push(i.numSpotLights),n.push(i.numSpotLightMaps),n.push(i.numHemiLights),n.push(i.numRectAreaLights),n.push(i.numDirLightShadows),n.push(i.numPointLightShadows),n.push(i.numSpotLightShadows),n.push(i.numSpotLightShadowsWithMaps),n.push(i.numLightProbes),n.push(i.shadowMapType),n.push(i.toneMapping),n.push(i.numClippingPlanes),n.push(i.numClipIntersection),n.push(i.depthPacking),r=s,a=t,o.disableAll(),a.supportsVertexTextures&&o.enable(0),a.instancing&&o.enable(1),a.instancingColor&&o.enable(2),a.instancingMorph&&o.enable(3),a.matcap&&o.enable(4),a.envMap&&o.enable(5),a.normalMapObjectSpace&&o.enable(6),a.normalMapTangentSpace&&o.enable(7),a.clearcoat&&o.enable(8),a.iridescence&&o.enable(9),a.alphaTest&&o.enable(10),a.vertexColors&&o.enable(11),a.vertexAlphas&&o.enable(12),a.vertexUv1s&&o.enable(13),a.vertexUv2s&&o.enable(14),a.vertexUv3s&&o.enable(15),a.vertexTangents&&o.enable(16),a.anisotropy&&o.enable(17),a.alphaHash&&o.enable(18),a.batching&&o.enable(19),a.dispersion&&o.enable(20),a.batchingColor&&o.enable(21),r.push(o.mask),o.disableAll(),a.fog&&o.enable(0),a.useFog&&o.enable(1),a.flatShading&&o.enable(2),a.logarithmicDepthBuffer&&o.enable(3),a.reverseDepthBuffer&&o.enable(4),a.skinning&&o.enable(5),a.morphTargets&&o.enable(6),a.morphNormals&&o.enable(7),a.morphColors&&o.enable(8),a.premultipliedAlpha&&o.enable(9),a.shadowMapEnabled&&o.enable(10),a.doubleSided&&o.enable(11),a.flipSided&&o.enable(12),a.useDepthPacking&&o.enable(13),a.dithering&&o.enable(14),a.transmission&&o.enable(15),a.sheen&&o.enable(16),a.opaque&&o.enable(17),a.pointsUvs&&o.enable(18),a.decodeVideoTexture&&o.enable(19),a.decodeVideoTextureEmissive&&o.enable(20),a.alphaToCoverage&&o.enable(21),r.push(o.mask),s.push(e.outputColorSpace)),s.push(t.customProgramCacheKey),s.join()},getUniforms:function(e){let t,n=f[e.type];if(n){let e=oH[n];t=nx.clone(e.uniforms)}else t=e.uniforms;return t},acquireProgram:function(t,n){let i;for(let e=0,t=c.length;e0?i.push(c):!0===s.transparent?r.push(c):n.push(c)},unshift:function(e,t,s,o,l,u){let c=a(e,t,s,o,l,u);s.transmission>0?i.unshift(c):!0===s.transparent?r.unshift(c):n.unshift(c)},finish:function(){for(let n=t,i=e.length;n1&&n.sort(e||uE),i.length>1&&i.sort(t||uA),r.length>1&&r.sort(t||uA)}}}function uR(){let e=new WeakMap;return{get:function(t,n){let i,r=e.get(t);return void 0===r?(i=new uC,e.set(t,[i])):n>=r.length?(i=new uC,r.push(i)):i=r[n],i},dispose:function(){e=new WeakMap}}}function uP(){let e={};return{get:function(t){let n;if(void 0!==e[t.id])return e[t.id];switch(t.type){case"DirectionalLight":n={direction:new eE,color:new tz};break;case"SpotLight":n={position:new eE,direction:new eE,color:new tz,distance:0,coneCos:0,penumbraCos:0,decay:0};break;case"PointLight":n={position:new eE,color:new tz,distance:0,decay:0};break;case"HemisphereLight":n={direction:new eE,skyColor:new tz,groundColor:new tz};break;case"RectAreaLight":n={color:new tz,position:new eE,halfWidth:new eE,halfHeight:new eE}}return e[t.id]=n,n}}}let uI=0;function uL(e,t){return 2*!!t.castShadow-2*!!e.castShadow+ +!!t.map-!!e.map}function uN(e){let t,n=new uP,i=(t={},{get:function(e){let n;if(void 0!==t[e.id])return t[e.id];switch(e.type){case"DirectionalLight":case"SpotLight":n={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Y};break;case"PointLight":n={shadowIntensity:1,shadowBias:0,shadowNormalBias:0,shadowRadius:1,shadowMapSize:new Y,shadowCameraNear:1,shadowCameraFar:1e3}}return t[e.id]=n,n}}),r={version:0,hash:{directionalLength:-1,pointLength:-1,spotLength:-1,rectAreaLength:-1,hemiLength:-1,numDirectionalShadows:-1,numPointShadows:-1,numSpotShadows:-1,numSpotMaps:-1,numLightProbes:-1},ambient:[0,0,0],probe:[],directional:[],directionalShadow:[],directionalShadowMap:[],directionalShadowMatrix:[],spot:[],spotLightMap:[],spotShadow:[],spotShadowMap:[],spotLightMatrix:[],rectArea:[],rectAreaLTC1:null,rectAreaLTC2:null,point:[],pointShadow:[],pointShadowMap:[],pointShadowMatrix:[],hemi:[],numSpotLightShadowsWithMaps:0,numLightProbes:0};for(let e=0;e<9;e++)r.probe.push(new eE);let a=new eE,s=new e2,o=new e2;return{setup:function(t){let a=0,s=0,o=0;for(let e=0;e<9;e++)r.probe[e].set(0,0,0);let l=0,u=0,c=0,h=0,d=0,p=0,f=0,m=0,g=0,v=0,_=0;t.sort(uL);for(let e=0,y=t.length;e0&&(!0===e.has("OES_texture_float_linear")?(r.rectAreaLTC1=ok.LTC_FLOAT_1,r.rectAreaLTC2=ok.LTC_FLOAT_2):(r.rectAreaLTC1=ok.LTC_HALF_1,r.rectAreaLTC2=ok.LTC_HALF_2)),r.ambient[0]=a,r.ambient[1]=s,r.ambient[2]=o;let y=r.hash;(y.directionalLength!==l||y.pointLength!==u||y.spotLength!==c||y.rectAreaLength!==h||y.hemiLength!==d||y.numDirectionalShadows!==p||y.numPointShadows!==f||y.numSpotShadows!==m||y.numSpotMaps!==g||y.numLightProbes!==_)&&(r.directional.length=l,r.spot.length=c,r.rectArea.length=h,r.point.length=u,r.hemi.length=d,r.directionalShadow.length=p,r.directionalShadowMap.length=p,r.pointShadow.length=f,r.pointShadowMap.length=f,r.spotShadow.length=m,r.spotShadowMap.length=m,r.directionalShadowMatrix.length=p,r.pointShadowMatrix.length=f,r.spotLightMatrix.length=m+g-v,r.spotLightMap.length=g,r.numSpotLightShadowsWithMaps=v,r.numLightProbes=_,y.directionalLength=l,y.pointLength=u,y.spotLength=c,y.rectAreaLength=h,y.hemiLength=d,y.numDirectionalShadows=p,y.numPointShadows=f,y.numSpotShadows=m,y.numSpotMaps=g,y.numLightProbes=_,r.version=uI++)},setupView:function(e,t){let n=0,i=0,l=0,u=0,c=0,h=t.matrixWorldInverse;for(let t=0,d=e.length;t=a.length?(r=new uU(e),a.push(r)):r=a[i],r},dispose:function(){t=new WeakMap}}}function uO(e,t,n){let i=new iS,r=new Y,a=new Y,s=new e_,o=new av({depthPacking:3201}),l=new a_,u={},c=n.maxTextureSize,h={0:1,1:0,2:2},d=new nb({defines:{VSM_SAMPLES:8},uniforms:{shadow_pass:{value:null},resolution:{value:new Y},radius:{value:4}},vertexShader:"void main() {\n gl_Position = vec4( position, 1.0 );\n}",fragmentShader:"uniform sampler2D shadow_pass;\nuniform vec2 resolution;\nuniform float radius;\n#include \nvoid main() {\n const float samples = float( VSM_SAMPLES );\n float mean = 0.0;\n float squared_mean = 0.0;\n float uvStride = samples <= 1.0 ? 0.0 : 2.0 / ( samples - 1.0 );\n float uvStart = samples <= 1.0 ? 0.0 : - 1.0;\n for ( float i = 0.0; i < samples; i ++ ) {\n float uvOffset = uvStart + i * uvStride;\n #ifdef HORIZONTAL_PASS\n vec2 distribution = unpackRGBATo2Half( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( uvOffset, 0.0 ) * radius ) / resolution ) );\n mean += distribution.x;\n squared_mean += distribution.y * distribution.y + distribution.x * distribution.x;\n #else\n float depth = unpackRGBAToDepth( texture2D( shadow_pass, ( gl_FragCoord.xy + vec2( 0.0, uvOffset ) * radius ) / resolution ) );\n mean += depth;\n squared_mean += depth * depth;\n #endif\n }\n mean = mean / samples;\n squared_mean = squared_mean / samples;\n float std_dev = sqrt( squared_mean - mean * mean );\n gl_FragColor = pack2HalfToRGBA( vec2( mean, std_dev ) );\n}"}),p=d.clone();p.defines.HORIZONTAL_PASS=1;let f=new nn;f.setAttribute("position",new tZ(new Float32Array([-1,-1,.5,3,-1,.5,-1,3,.5]),3));let m=new nf(f,d),g=this;this.enabled=!1,this.autoUpdate=!0,this.needsUpdate=!1,this.type=1;let v=this.type;function _(t,n,i,r){let a=null,s=!0===i.isPointLight?t.customDistanceMaterial:t.customDepthMaterial;if(void 0!==s)a=s;else if(a=!0===i.isPointLight?l:o,e.localClippingEnabled&&!0===n.clipShadows&&Array.isArray(n.clippingPlanes)&&0!==n.clippingPlanes.length||n.displacementMap&&0!==n.displacementScale||n.alphaMap&&n.alphaTest>0||n.map&&n.alphaTest>0){let e=a.uuid,t=n.uuid,i=u[e];void 0===i&&(i={},u[e]=i);let r=i[t];void 0===r&&(r=a.clone(),i[t]=r,n.addEventListener("dispose",y)),a=r}return a.visible=n.visible,a.wireframe=n.wireframe,3===r?a.side=null!==n.shadowSide?n.shadowSide:n.side:a.side=null!==n.shadowSide?n.shadowSide:h[n.side],a.alphaMap=n.alphaMap,a.alphaTest=n.alphaTest,a.map=n.map,a.clipShadows=n.clipShadows,a.clippingPlanes=n.clippingPlanes,a.clipIntersection=n.clipIntersection,a.displacementMap=n.displacementMap,a.displacementScale=n.displacementScale,a.displacementBias=n.displacementBias,a.wireframeLinewidth=n.wireframeLinewidth,a.linewidth=n.linewidth,!0===i.isPointLight&&!0===a.isMeshDistanceMaterial&&(e.properties.get(a).light=i),a}function y(e){for(let t in e.target.removeEventListener("dispose",y),u){let n=u[t],i=e.target.uuid;i in n&&(n[i].dispose(),delete n[i])}}this.render=function(n,o,l){if(!1===g.enabled||!1===g.autoUpdate&&!1===g.needsUpdate||0===n.length)return;let u=e.getRenderTarget(),h=e.getActiveCubeFace(),f=e.getActiveMipmapLevel(),y=e.state;y.setBlending(0),y.buffers.color.setClear(1,1,1,1),y.buffers.depth.setTest(!0),y.setScissorTest(!1);let x=3!==v&&3===this.type,b=3===v&&3!==this.type;for(let u=0,h=n.length;uc||r.y>c)&&(r.x>c&&(a.x=Math.floor(c/g.x),r.x=a.x*g.x,f.mapSize.x=a.x),r.y>c&&(a.y=Math.floor(c/g.y),r.y=a.y*g.y,f.mapSize.y=a.y)),null===f.map||!0===x||!0===b){let e=3!==this.type?{minFilter:1003,magFilter:1003}:{};null!==f.map&&f.map.dispose(),f.map=new ex(r.x,r.y,e),f.map.texture.name=h.name+".shadowMap",f.camera.updateProjectionMatrix()}e.setRenderTarget(f.map),e.clear();let v=f.getViewportCount();for(let n=0;n=1:-1!==P.indexOf("OpenGL ES")&&(R=parseFloat(/^OpenGL ES (\d)/.exec(P)[1])>=2);let I=null,L={},N=e.getParameter(e.SCISSOR_BOX),U=e.getParameter(e.VIEWPORT),D=new e_().fromArray(N),O=new e_().fromArray(U);function F(t,n,i,r){let a=new Uint8Array(4),s=e.createTexture();e.bindTexture(t,s),e.texParameteri(t,e.TEXTURE_MIN_FILTER,e.NEAREST),e.texParameteri(t,e.TEXTURE_MAG_FILTER,e.NEAREST);for(let s=0;stypeof navigator&&/OculusBrowser/g.test(navigator.userAgent),c=new Y,h=new WeakMap,d=new WeakMap,p=!1;try{p="u">typeof OffscreenCanvas&&null!==new OffscreenCanvas(1,1).getContext("2d")}catch(e){}function f(e,t){return p?new OffscreenCanvas(e,t):ee("canvas")}function m(e,t,n){let i=1,r=G(e);if((r.width>n||r.height>n)&&(i=n/Math.max(r.width,r.height)),i<1)if("u">typeof HTMLImageElement&&e instanceof HTMLImageElement||"u">typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement||"u">typeof ImageBitmap&&e instanceof ImageBitmap||"u">typeof VideoFrame&&e instanceof VideoFrame){let n=Math.floor(i*r.width),a=Math.floor(i*r.height);void 0===o&&(o=f(n,a));let s=t?f(n,a):o;return s.width=n,s.height=a,s.getContext("2d").drawImage(e,0,0,n,a),console.warn("THREE.WebGLRenderer: Texture has been resized from ("+r.width+"x"+r.height+") to ("+n+"x"+a+")."),s}else"data"in e&&console.warn("THREE.WebGLRenderer: Image in DataTexture is too big ("+r.width+"x"+r.height+").");return e}function g(e){return e.generateMipmaps}function v(t){e.generateMipmap(t)}function _(n,i,r,a,s=!1){if(null!==n){if(void 0!==e[n])return e[n];console.warn("THREE.WebGLRenderer: Attempt to use non-existing WebGL internal format '"+n+"'")}let o=i;if(i===e.RED&&(r===e.FLOAT&&(o=e.R32F),r===e.HALF_FLOAT&&(o=e.R16F),r===e.UNSIGNED_BYTE&&(o=e.R8)),i===e.RED_INTEGER&&(r===e.UNSIGNED_BYTE&&(o=e.R8UI),r===e.UNSIGNED_SHORT&&(o=e.R16UI),r===e.UNSIGNED_INT&&(o=e.R32UI),r===e.BYTE&&(o=e.R8I),r===e.SHORT&&(o=e.R16I),r===e.INT&&(o=e.R32I)),i===e.RG&&(r===e.FLOAT&&(o=e.RG32F),r===e.HALF_FLOAT&&(o=e.RG16F),r===e.UNSIGNED_BYTE&&(o=e.RG8)),i===e.RG_INTEGER&&(r===e.UNSIGNED_BYTE&&(o=e.RG8UI),r===e.UNSIGNED_SHORT&&(o=e.RG16UI),r===e.UNSIGNED_INT&&(o=e.RG32UI),r===e.BYTE&&(o=e.RG8I),r===e.SHORT&&(o=e.RG16I),r===e.INT&&(o=e.RG32I)),i===e.RGB_INTEGER&&(r===e.UNSIGNED_BYTE&&(o=e.RGB8UI),r===e.UNSIGNED_SHORT&&(o=e.RGB16UI),r===e.UNSIGNED_INT&&(o=e.RGB32UI),r===e.BYTE&&(o=e.RGB8I),r===e.SHORT&&(o=e.RGB16I),r===e.INT&&(o=e.RGB32I)),i===e.RGBA_INTEGER&&(r===e.UNSIGNED_BYTE&&(o=e.RGBA8UI),r===e.UNSIGNED_SHORT&&(o=e.RGBA16UI),r===e.UNSIGNED_INT&&(o=e.RGBA32UI),r===e.BYTE&&(o=e.RGBA8I),r===e.SHORT&&(o=e.RGBA16I),r===e.INT&&(o=e.RGBA32I)),i===e.RGB&&r===e.UNSIGNED_INT_5_9_9_9_REV&&(o=e.RGB9_E5),i===e.RGBA){let t=s?N:eu.getTransfer(a);r===e.FLOAT&&(o=e.RGBA32F),r===e.HALF_FLOAT&&(o=e.RGBA16F),r===e.UNSIGNED_BYTE&&(o=t===U?e.SRGB8_ALPHA8:e.RGBA8),r===e.UNSIGNED_SHORT_4_4_4_4&&(o=e.RGBA4),r===e.UNSIGNED_SHORT_5_5_5_1&&(o=e.RGB5_A1)}return(o===e.R16F||o===e.R32F||o===e.RG16F||o===e.RG32F||o===e.RGBA16F||o===e.RGBA32F)&&t.get("EXT_color_buffer_float"),o}function y(t,n){let i;return t?null===n||1014===n||1020===n?i=e.DEPTH24_STENCIL8:1015===n?i=e.DEPTH32F_STENCIL8:1012===n&&(i=e.DEPTH24_STENCIL8,console.warn("DepthTexture: 16 bit depth attachment is not supported with stencil. Using 24-bit attachment.")):null===n||1014===n||1020===n?i=e.DEPTH_COMPONENT24:1015===n?i=e.DEPTH_COMPONENT32F:1012===n&&(i=e.DEPTH_COMPONENT16),i}function x(e,t){return!0===g(e)||e.isFramebufferTexture&&1003!==e.minFilter&&1006!==e.minFilter?Math.log2(Math.max(t.width,t.height))+1:void 0!==e.mipmaps&&e.mipmaps.length>0?e.mipmaps.length:e.isCompressedTexture&&Array.isArray(e.image)?t.mipmaps.length:1}function b(e){let t=e.target;t.removeEventListener("dispose",b),function(e){let t=i.get(e);if(void 0===t.__webglInit)return;let n=e.source,r=d.get(n);if(r){let i=r[t.__cacheKey];i.usedTimes--,0===i.usedTimes&&M(e),0===Object.keys(r).length&&d.delete(n)}i.remove(e)}(t),t.isVideoTexture&&h.delete(t)}function S(t){let n=t.target;n.removeEventListener("dispose",S),function(t){let n=i.get(t);if(t.depthTexture&&(t.depthTexture.dispose(),i.remove(t.depthTexture)),t.isWebGLCubeRenderTarget)for(let t=0;t<6;t++){if(Array.isArray(n.__webglFramebuffer[t]))for(let i=0;i0&&l.__version!==t.version){let e=t.image;if(null===e)console.warn("THREE.WebGLRenderer: Texture marked for update but no image data found.");else{if(!1!==e.complete)return void I(l,t,r);console.warn("THREE.WebGLRenderer: Texture marked for update but image is incomplete")}}n.bindTexture(e.TEXTURE_2D,l.__webglTexture,e.TEXTURE0+r)}let E={1e3:e.REPEAT,1001:e.CLAMP_TO_EDGE,1002:e.MIRRORED_REPEAT},A={1003:e.NEAREST,1004:e.NEAREST_MIPMAP_NEAREST,1005:e.NEAREST_MIPMAP_LINEAR,1006:e.LINEAR,1007:e.LINEAR_MIPMAP_NEAREST,1008:e.LINEAR_MIPMAP_LINEAR},C={512:e.NEVER,519:e.ALWAYS,513:e.LESS,515:e.LEQUAL,514:e.EQUAL,518:e.GEQUAL,516:e.GREATER,517:e.NOTEQUAL};function R(n,a){if((1015===a.type&&!1===t.has("OES_texture_float_linear")&&(1006===a.magFilter||1007===a.magFilter||1005===a.magFilter||1008===a.magFilter||1006===a.minFilter||1007===a.minFilter||1005===a.minFilter||1008===a.minFilter)&&console.warn("THREE.WebGLRenderer: Unable to use linear filtering with floating point textures. OES_texture_float_linear not supported on this device."),e.texParameteri(n,e.TEXTURE_WRAP_S,E[a.wrapS]),e.texParameteri(n,e.TEXTURE_WRAP_T,E[a.wrapT]),(n===e.TEXTURE_3D||n===e.TEXTURE_2D_ARRAY)&&e.texParameteri(n,e.TEXTURE_WRAP_R,E[a.wrapR]),e.texParameteri(n,e.TEXTURE_MAG_FILTER,A[a.magFilter]),e.texParameteri(n,e.TEXTURE_MIN_FILTER,A[a.minFilter]),a.compareFunction&&(e.texParameteri(n,e.TEXTURE_COMPARE_MODE,e.COMPARE_REF_TO_TEXTURE),e.texParameteri(n,e.TEXTURE_COMPARE_FUNC,C[a.compareFunction])),!0===t.has("EXT_texture_filter_anisotropic"))&&1003!==a.magFilter&&(1005===a.minFilter||1008===a.minFilter)&&(1015!==a.type||!1!==t.has("OES_texture_float_linear"))&&(a.anisotropy>1||i.get(a).__currentAnisotropy)){let s=t.get("EXT_texture_filter_anisotropic");e.texParameterf(n,s.TEXTURE_MAX_ANISOTROPY_EXT,Math.min(a.anisotropy,r.getMaxAnisotropy())),i.get(a).__currentAnisotropy=a.anisotropy}}function P(t,n){let i,r=!1;void 0===t.__webglInit&&(t.__webglInit=!0,n.addEventListener("dispose",b));let a=n.source,o=d.get(a);void 0===o&&(o={},d.set(a,o));let l=((i=[]).push(n.wrapS),i.push(n.wrapT),i.push(n.wrapR||0),i.push(n.magFilter),i.push(n.minFilter),i.push(n.anisotropy),i.push(n.internalFormat),i.push(n.format),i.push(n.type),i.push(n.generateMipmaps),i.push(n.premultiplyAlpha),i.push(n.flipY),i.push(n.unpackAlignment),i.push(n.colorSpace),i.join());if(l!==t.__cacheKey){void 0===o[l]&&(o[l]={texture:e.createTexture(),usedTimes:0},s.memory.textures++,r=!0),o[l].usedTimes++;let i=o[t.__cacheKey];void 0!==i&&(o[t.__cacheKey].usedTimes--,0===i.usedTimes&&M(n)),t.__cacheKey=l,t.__webglTexture=o[l].texture}return r}function I(t,s,o){let l=e.TEXTURE_2D;(s.isDataArrayTexture||s.isCompressedArrayTexture)&&(l=e.TEXTURE_2D_ARRAY),s.isData3DTexture&&(l=e.TEXTURE_3D);let u=P(t,s),c=s.source;n.bindTexture(l,t.__webglTexture,e.TEXTURE0+o);let h=i.get(c);if(c.version!==h.__version||!0===u){let t;n.activeTexture(e.TEXTURE0+o);let i=eu.getPrimaries(eu.workingColorSpace),d=""===s.colorSpace?null:eu.getPrimaries(s.colorSpace),p=""===s.colorSpace||i===d?e.NONE:e.BROWSER_DEFAULT_WEBGL;e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,s.flipY),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,s.premultiplyAlpha),e.pixelStorei(e.UNPACK_ALIGNMENT,s.unpackAlignment),e.pixelStorei(e.UNPACK_COLORSPACE_CONVERSION_WEBGL,p);let f=m(s.image,!1,r.maxTextureSize);f=V(s,f);let b=a.convert(s.format,s.colorSpace),S=a.convert(s.type),M=_(s.internalFormat,b,S,s.colorSpace,s.isVideoTexture);R(l,s);let T=s.mipmaps,w=!0!==s.isVideoTexture,E=void 0===h.__version||!0===u,A=c.dataReady,C=x(s,f);if(s.isDepthTexture)M=y(1027===s.format,s.type),E&&(w?n.texStorage2D(e.TEXTURE_2D,1,M,f.width,f.height):n.texImage2D(e.TEXTURE_2D,0,M,f.width,f.height,0,b,S,null));else if(s.isDataTexture)if(T.length>0){w&&E&&n.texStorage2D(e.TEXTURE_2D,C,M,T[0].width,T[0].height);for(let i=0,r=T.length;i0){let r=oU(t.width,t.height,s.format,s.type);for(let a of s.layerUpdates){let s=t.data.subarray(a*r/t.data.BYTES_PER_ELEMENT,(a+1)*r/t.data.BYTES_PER_ELEMENT);n.compressedTexSubImage3D(e.TEXTURE_2D_ARRAY,i,0,0,a,t.width,t.height,1,b,s)}s.clearLayerUpdates()}else n.compressedTexSubImage3D(e.TEXTURE_2D_ARRAY,i,0,0,0,t.width,t.height,f.depth,b,t.data)}else n.compressedTexImage3D(e.TEXTURE_2D_ARRAY,i,M,t.width,t.height,f.depth,0,t.data,0,0);else console.warn("THREE.WebGLRenderer: Attempt to load unsupported compressed texture format in .uploadTexture()");else w?A&&n.texSubImage3D(e.TEXTURE_2D_ARRAY,i,0,0,0,t.width,t.height,f.depth,b,S,t.data):n.texImage3D(e.TEXTURE_2D_ARRAY,i,M,t.width,t.height,f.depth,0,b,S,t.data)}else{w&&E&&n.texStorage2D(e.TEXTURE_2D,C,M,T[0].width,T[0].height);for(let i=0,r=T.length;i0){let t=oU(f.width,f.height,s.format,s.type);for(let i of s.layerUpdates){let r=f.data.subarray(i*t/f.data.BYTES_PER_ELEMENT,(i+1)*t/f.data.BYTES_PER_ELEMENT);n.texSubImage3D(e.TEXTURE_2D_ARRAY,0,0,0,i,f.width,f.height,1,b,S,r)}s.clearLayerUpdates()}else n.texSubImage3D(e.TEXTURE_2D_ARRAY,0,0,0,0,f.width,f.height,f.depth,b,S,f.data)}else n.texImage3D(e.TEXTURE_2D_ARRAY,0,M,f.width,f.height,f.depth,0,b,S,f.data);else if(s.isData3DTexture)w?(E&&n.texStorage3D(e.TEXTURE_3D,C,M,f.width,f.height,f.depth),A&&n.texSubImage3D(e.TEXTURE_3D,0,0,0,0,f.width,f.height,f.depth,b,S,f.data)):n.texImage3D(e.TEXTURE_3D,0,M,f.width,f.height,f.depth,0,b,S,f.data);else if(s.isFramebufferTexture){if(E)if(w)n.texStorage2D(e.TEXTURE_2D,C,M,f.width,f.height);else{let t=f.width,i=f.height;for(let r=0;r>=1,i>>=1}}else if(T.length>0){if(w&&E){let t=G(T[0]);n.texStorage2D(e.TEXTURE_2D,C,M,t.width,t.height)}for(let i=0,r=T.length;i>c),i=Math.max(1,r.height>>c);u===e.TEXTURE_3D||u===e.TEXTURE_2D_ARRAY?n.texImage3D(u,c,p,t,i,r.depth,0,h,d,null):n.texImage2D(u,c,p,t,i,0,h,d,null)}n.bindFramebuffer(e.FRAMEBUFFER,t),H(r)?l.framebufferTexture2DMultisampleEXT(e.FRAMEBUFFER,o,u,m.__webglTexture,0,k(r)):(u===e.TEXTURE_2D||u>=e.TEXTURE_CUBE_MAP_POSITIVE_X&&u<=e.TEXTURE_CUBE_MAP_NEGATIVE_Z)&&e.framebufferTexture2D(e.FRAMEBUFFER,o,u,m.__webglTexture,c),n.bindFramebuffer(e.FRAMEBUFFER,null)}function O(t,n,i){if(e.bindRenderbuffer(e.RENDERBUFFER,t),n.depthBuffer){let r=n.depthTexture,a=r&&r.isDepthTexture?r.type:null,s=y(n.stencilBuffer,a),o=n.stencilBuffer?e.DEPTH_STENCIL_ATTACHMENT:e.DEPTH_ATTACHMENT,u=k(n);H(n)?l.renderbufferStorageMultisampleEXT(e.RENDERBUFFER,u,s,n.width,n.height):i?e.renderbufferStorageMultisample(e.RENDERBUFFER,u,s,n.width,n.height):e.renderbufferStorage(e.RENDERBUFFER,s,n.width,n.height),e.framebufferRenderbuffer(e.FRAMEBUFFER,o,e.RENDERBUFFER,t)}else{let t=n.textures;for(let r=0;r{delete r.__boundDepthTexture,delete r.__depthDisposeCallback,e.removeEventListener("dispose",t)};e.addEventListener("dispose",t),r.__depthDisposeCallback=t}r.__boundDepthTexture=e}if(t.depthTexture&&!r.__autoAllocateDepthBuffer){if(a)throw Error("target.depthTexture not supported in Cube render targets");!function(t,r){if(r&&r.isWebGLCubeRenderTarget)throw Error("Depth Texture with cube render targets is not supported");if(n.bindFramebuffer(e.FRAMEBUFFER,t),!(r.depthTexture&&r.depthTexture.isDepthTexture))throw Error("renderTarget.depthTexture must be an instance of THREE.DepthTexture");let a=i.get(r.depthTexture);a.__renderTarget=r,a.__webglTexture&&r.depthTexture.image.width===r.width&&r.depthTexture.image.height===r.height||(r.depthTexture.image.width=r.width,r.depthTexture.image.height=r.height,r.depthTexture.needsUpdate=!0),w(r.depthTexture,0);let s=a.__webglTexture,o=k(r);if(1026===r.depthTexture.format)H(r)?l.framebufferTexture2DMultisampleEXT(e.FRAMEBUFFER,e.DEPTH_ATTACHMENT,e.TEXTURE_2D,s,0,o):e.framebufferTexture2D(e.FRAMEBUFFER,e.DEPTH_ATTACHMENT,e.TEXTURE_2D,s,0);else if(1027===r.depthTexture.format)H(r)?l.framebufferTexture2DMultisampleEXT(e.FRAMEBUFFER,e.DEPTH_STENCIL_ATTACHMENT,e.TEXTURE_2D,s,0,o):e.framebufferTexture2D(e.FRAMEBUFFER,e.DEPTH_STENCIL_ATTACHMENT,e.TEXTURE_2D,s,0);else throw Error("Unknown depthTexture format")}(r.__webglFramebuffer,t)}else if(a){r.__webglDepthbuffer=[];for(let i=0;i<6;i++)if(n.bindFramebuffer(e.FRAMEBUFFER,r.__webglFramebuffer[i]),void 0===r.__webglDepthbuffer[i])r.__webglDepthbuffer[i]=e.createRenderbuffer(),O(r.__webglDepthbuffer[i],t,!1);else{let n=t.stencilBuffer?e.DEPTH_STENCIL_ATTACHMENT:e.DEPTH_ATTACHMENT,a=r.__webglDepthbuffer[i];e.bindRenderbuffer(e.RENDERBUFFER,a),e.framebufferRenderbuffer(e.FRAMEBUFFER,n,e.RENDERBUFFER,a)}}else if(n.bindFramebuffer(e.FRAMEBUFFER,r.__webglFramebuffer),void 0===r.__webglDepthbuffer)r.__webglDepthbuffer=e.createRenderbuffer(),O(r.__webglDepthbuffer,t,!1);else{let n=t.stencilBuffer?e.DEPTH_STENCIL_ATTACHMENT:e.DEPTH_ATTACHMENT,i=r.__webglDepthbuffer;e.bindRenderbuffer(e.RENDERBUFFER,i),e.framebufferRenderbuffer(e.FRAMEBUFFER,n,e.RENDERBUFFER,i)}n.bindFramebuffer(e.FRAMEBUFFER,null)}let z=[],B=[];function k(e){return Math.min(r.maxSamples,e.samples)}function H(e){let n=i.get(e);return e.samples>0&&!0===t.has("WEBGL_multisampled_render_to_texture")&&!1!==n.__useRenderToTexture}function V(e,t){let n=e.colorSpace,i=e.format,r=e.type;return!0===e.isCompressedTexture||!0===e.isVideoTexture||n!==L&&""!==n&&(eu.getTransfer(n)===U?(1023!==i||1009!==r)&&console.warn("THREE.WebGLTextures: sRGB encoded textures have to use RGBAFormat and UnsignedByteType."):console.error("THREE.WebGLTextures: Unsupported texture color space:",n)),t}function G(e){return"u">typeof HTMLImageElement&&e instanceof HTMLImageElement?(c.width=e.naturalWidth||e.width,c.height=e.naturalHeight||e.height):"u">typeof VideoFrame&&e instanceof VideoFrame?(c.width=e.displayWidth,c.height=e.displayHeight):(c.width=e.width,c.height=e.height),c}this.allocateTextureUnit=function(){let e=T;return e>=r.maxTextures&&console.warn("THREE.WebGLTextures: Trying to use "+e+" texture units while this GPU supports only "+r.maxTextures),T+=1,e},this.resetTextureUnits=function(){T=0},this.setTexture2D=w,this.setTexture2DArray=function(t,r){let a=i.get(t);t.version>0&&a.__version!==t.version?I(a,t,r):n.bindTexture(e.TEXTURE_2D_ARRAY,a.__webglTexture,e.TEXTURE0+r)},this.setTexture3D=function(t,r){let a=i.get(t);t.version>0&&a.__version!==t.version?I(a,t,r):n.bindTexture(e.TEXTURE_3D,a.__webglTexture,e.TEXTURE0+r)},this.setTextureCube=function(t,s){let o=i.get(t);t.version>0&&o.__version!==t.version?function(t,s,o){if(6!==s.image.length)return;let l=P(t,s),u=s.source;n.bindTexture(e.TEXTURE_CUBE_MAP,t.__webglTexture,e.TEXTURE0+o);let c=i.get(u);if(u.version!==c.__version||!0===l){let t;n.activeTexture(e.TEXTURE0+o);let i=eu.getPrimaries(eu.workingColorSpace),h=""===s.colorSpace?null:eu.getPrimaries(s.colorSpace),d=""===s.colorSpace||i===h?e.NONE:e.BROWSER_DEFAULT_WEBGL;e.pixelStorei(e.UNPACK_FLIP_Y_WEBGL,s.flipY),e.pixelStorei(e.UNPACK_PREMULTIPLY_ALPHA_WEBGL,s.premultiplyAlpha),e.pixelStorei(e.UNPACK_ALIGNMENT,s.unpackAlignment),e.pixelStorei(e.UNPACK_COLORSPACE_CONVERSION_WEBGL,d);let p=s.isCompressedTexture||s.image[0].isCompressedTexture,f=s.image[0]&&s.image[0].isDataTexture,y=[];for(let e=0;e<6;e++)p||f?y[e]=f?s.image[e].image:s.image[e]:y[e]=m(s.image[e],!0,r.maxCubemapSize),y[e]=V(s,y[e]);let b=y[0],S=a.convert(s.format,s.colorSpace),M=a.convert(s.type),T=_(s.internalFormat,S,M,s.colorSpace),w=!0!==s.isVideoTexture,E=void 0===c.__version||!0===l,A=u.dataReady,C=x(s,b);if(R(e.TEXTURE_CUBE_MAP,s),p){w&&E&&n.texStorage2D(e.TEXTURE_CUBE_MAP,C,T,b.width,b.height);for(let i=0;i<6;i++){t=y[i].mipmaps;for(let r=0;r0&&C++;let i=G(y[0]);n.texStorage2D(e.TEXTURE_CUBE_MAP,C,T,i.width,i.height)}for(let i=0;i<6;i++)if(f){w?A&&n.texSubImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+i,0,0,0,y[i].width,y[i].height,S,M,y[i].data):n.texImage2D(e.TEXTURE_CUBE_MAP_POSITIVE_X+i,0,T,y[i].width,y[i].height,0,S,M,y[i].data);for(let r=0;r1;if(!h&&(void 0===l.__webglTexture&&(l.__webglTexture=e.createTexture()),l.__version=r.version,s.memory.textures++),c){o.__webglFramebuffer=[];for(let t=0;t<6;t++)if(r.mipmaps&&r.mipmaps.length>0){o.__webglFramebuffer[t]=[];for(let n=0;n0){o.__webglFramebuffer=[];for(let t=0;t0&&!1===H(t)){o.__webglMultisampledFramebuffer=e.createFramebuffer(),o.__webglColorRenderbuffer=[],n.bindFramebuffer(e.FRAMEBUFFER,o.__webglMultisampledFramebuffer);for(let n=0;n0)for(let i=0;i0)for(let n=0;n0){if(!1===H(t)){let r=t.textures,a=t.width,s=t.height,o=e.COLOR_BUFFER_BIT,l=t.stencilBuffer?e.DEPTH_STENCIL_ATTACHMENT:e.DEPTH_ATTACHMENT,c=i.get(t),h=r.length>1;if(h)for(let t=0;t.025?(l.inputState.pinching=!1,this.dispatchEvent({type:"pinchend",handedness:e.handedness,target:this})):!l.inputState.pinching&&s<=.015&&(l.inputState.pinching=!0,this.dispatchEvent({type:"pinchstart",handedness:e.handedness,target:this}))}else null!==o&&e.gripSpace&&null!==(r=t.getPose(e.gripSpace,n))&&(o.matrix.fromArray(r.transform.matrix),o.matrix.decompose(o.position,o.rotation,o.scale),o.matrixWorldNeedsUpdate=!0,r.linearVelocity?(o.hasLinearVelocity=!0,o.linearVelocity.copy(r.linearVelocity)):o.hasLinearVelocity=!1,r.angularVelocity?(o.hasAngularVelocity=!0,o.angularVelocity.copy(r.angularVelocity)):o.hasAngularVelocity=!1);null!==s&&(null===(i=t.getPose(e.targetRaySpace,n))&&null!==r&&(i=r),null!==i&&(s.matrix.fromArray(i.transform.matrix),s.matrix.decompose(s.position,s.rotation,s.scale),s.matrixWorldNeedsUpdate=!0,i.linearVelocity?(s.hasLinearVelocity=!0,s.linearVelocity.copy(i.linearVelocity)):s.hasLinearVelocity=!1,i.angularVelocity?(s.hasAngularVelocity=!0,s.angularVelocity.copy(i.angularVelocity)):s.hasAngularVelocity=!1,this.dispatchEvent(uH)))}return null!==s&&(s.visible=null!==i),null!==o&&(o.visible=null!==r),null!==l&&(l.visible=null!==a),this}_getHandJoint(e,t){if(void 0===e.joints[t.jointName]){let n=new i6;n.matrixAutoUpdate=!1,n.visible=!1,e.joints[t.jointName]=n,e.add(n)}return e.joints[t.jointName]}}let uG=` +void main() { + + gl_Position = vec4( position, 1.0 ); + +}`,uW=` +uniform sampler2DArray depthColor; +uniform float depthWidth; +uniform float depthHeight; + +void main() { + + vec2 coord = vec2( gl_FragCoord.x / depthWidth, gl_FragCoord.y / depthHeight ); + + if ( coord.x >= 1.0 ) { + + gl_FragDepth = texture( depthColor, vec3( coord.x - 1.0, coord.y, 1 ) ).r; + + } else { + + gl_FragDepth = texture( depthColor, vec3( coord.x, coord.y, 0 ) ).r; + + } + +}`;class uj{constructor(){this.texture=null,this.mesh=null,this.depthNear=0,this.depthFar=0}init(e,t,n){if(null===this.texture){let i=new ev;e.properties.get(i).__webglTexture=t.texture,(t.depthNear!=n.depthNear||t.depthFar!=n.depthFar)&&(this.depthNear=t.depthNear,this.depthFar=t.depthFar),this.texture=i}}getMesh(e){if(null!==this.texture&&null===this.mesh){let t=e.cameras[0].viewport,n=new nb({vertexShader:uG,fragmentShader:uW,uniforms:{depthColor:{value:this.texture},depthWidth:{value:t.z},depthHeight:{value:t.w}}});this.mesh=new nf(new r9(20,20),n)}return this.mesh}reset(){this.texture=null,this.mesh=null}getDepthTexture(){return this.texture}}class uX extends O{constructor(e,t){super();const n=this;let i=null,r=1,a=null,s="local-floor",o=1,l=null,u=null,c=null,h=null,d=null,p=null;const f=new uj,m=t.getContextAttributes();let g=null,v=null;const _=[],y=[],x=new Y;let b=null;const S=new nE;S.viewport=new e_;const M=new nE;M.viewport=new e_;const T=[S,M],w=new sT;let E=null,A=null;function C(e){let t=y.indexOf(e.inputSource);if(-1===t)return;let n=_[t];void 0!==n&&(n.update(e.inputSource,e.frame,l||a),n.dispatchEvent({type:e.type,data:e.inputSource}))}function R(){i.removeEventListener("select",C),i.removeEventListener("selectstart",C),i.removeEventListener("selectend",C),i.removeEventListener("squeeze",C),i.removeEventListener("squeezestart",C),i.removeEventListener("squeezeend",C),i.removeEventListener("end",R),i.removeEventListener("inputsourceschange",P);for(let e=0;e<_.length;e++){let t=y[e];null!==t&&(y[e]=null,_[e].disconnect(t))}E=null,A=null,f.reset(),e.setRenderTarget(g),d=null,h=null,c=null,i=null,v=null,D.stop(),n.isPresenting=!1,e.setPixelRatio(b),e.setSize(x.width,x.height,!1),n.dispatchEvent({type:"sessionend"})}function P(e){for(let t=0;t=0&&(y[i]=null,_[i].disconnect(n))}for(let t=0;t=y.length){y.push(n),i=e;break}else if(null===y[e]){y[e]=n,i=e;break}if(-1===i)break}let r=_[i];r&&r.connect(n)}}this.cameraAutoUpdate=!0,this.enabled=!1,this.isPresenting=!1,this.getController=function(e){let t=_[e];return void 0===t&&(t=new uV,_[e]=t),t.getTargetRaySpace()},this.getControllerGrip=function(e){let t=_[e];return void 0===t&&(t=new uV,_[e]=t),t.getGripSpace()},this.getHand=function(e){let t=_[e];return void 0===t&&(t=new uV,_[e]=t),t.getHandSpace()},this.setFramebufferScaleFactor=function(e){r=e,!0===n.isPresenting&&console.warn("THREE.WebXRManager: Cannot change framebuffer scale while presenting.")},this.setReferenceSpaceType=function(e){s=e,!0===n.isPresenting&&console.warn("THREE.WebXRManager: Cannot change reference space type while presenting.")},this.getReferenceSpace=function(){return l||a},this.setReferenceSpace=function(e){l=e},this.getBaseLayer=function(){return null!==h?h:d},this.getBinding=function(){return c},this.getFrame=function(){return p},this.getSession=function(){return i},this.setSession=async function(u){if(null!==(i=u)){if(g=e.getRenderTarget(),i.addEventListener("select",C),i.addEventListener("selectstart",C),i.addEventListener("selectend",C),i.addEventListener("squeeze",C),i.addEventListener("squeezestart",C),i.addEventListener("squeezeend",C),i.addEventListener("end",R),i.addEventListener("inputsourceschange",P),!0!==m.xrCompatible&&await t.makeXRCompatible(),b=e.getPixelRatio(),e.getSize(x),void 0===i.renderState.layers){let n={antialias:m.antialias,alpha:!0,depth:m.depth,stencil:m.stencil,framebufferScaleFactor:r};d=new XRWebGLLayer(i,t,n),i.updateRenderState({baseLayer:d}),e.setPixelRatio(1),e.setSize(d.framebufferWidth,d.framebufferHeight,!1),v=new ex(d.framebufferWidth,d.framebufferHeight,{format:1023,type:1009,colorSpace:e.outputColorSpace,stencilBuffer:m.stencil})}else{let n=null,a=null,s=null;m.depth&&(s=m.stencil?t.DEPTH24_STENCIL8:t.DEPTH_COMPONENT24,n=m.stencil?1027:1026,a=m.stencil?1020:1014);let o={colorFormat:t.RGBA8,depthFormat:s,scaleFactor:r};h=(c=new XRWebGLBinding(i,t)).createProjectionLayer(o),i.updateRenderState({layers:[h]}),e.setPixelRatio(1),e.setSize(h.textureWidth,h.textureHeight,!1),v=new ex(h.textureWidth,h.textureHeight,{format:1023,type:1009,depthTexture:new ri(h.textureWidth,h.textureHeight,a,void 0,void 0,void 0,void 0,void 0,void 0,n),stencilBuffer:m.stencil,colorSpace:e.outputColorSpace,samples:4*!!m.antialias,resolveDepthBuffer:!1===h.ignoreDepthValues})}v.isXRRenderTarget=!0,this.setFoveation(o),l=null,a=await i.requestReferenceSpace(s),D.setContext(i),D.start(),n.isPresenting=!0,n.dispatchEvent({type:"sessionstart"})}},this.getEnvironmentBlendMode=function(){if(null!==i)return i.environmentBlendMode},this.getDepthTexture=function(){return f.getDepthTexture()};const I=new eE,L=new eE;function N(e,t){null===t?e.matrixWorld.copy(e.matrix):e.matrixWorld.multiplyMatrices(t.matrixWorld,e.matrix),e.matrixWorldInverse.copy(e.matrixWorld).invert()}this.updateCamera=function(e){var t,n,r;if(null===i)return;let a=e.near,s=e.far;null!==f.texture&&(f.depthNear>0&&(a=f.depthNear),f.depthFar>0&&(s=f.depthFar)),w.near=M.near=S.near=a,w.far=M.far=S.far=s,(E!==w.near||A!==w.far)&&(i.updateRenderState({depthNear:w.near,depthFar:w.far}),E=w.near,A=w.far),S.layers.mask=2|e.layers.mask,M.layers.mask=4|e.layers.mask,w.layers.mask=S.layers.mask|M.layers.mask;let o=e.parent,l=w.cameras;N(w,o);for(let e=0;e0&&(e.alphaTest.value=i.alphaTest);let r=t.get(i),a=r.envMap,s=r.envMapRotation;a&&(e.envMap.value=a,uq.copy(s),uq.x*=-1,uq.y*=-1,uq.z*=-1,a.isCubeTexture&&!1===a.isRenderTargetTexture&&(uq.y*=-1,uq.z*=-1),e.envMapRotation.value.setFromMatrix4(uY.makeRotationFromEuler(uq)),e.flipEnvMap.value=a.isCubeTexture&&!1===a.isRenderTargetTexture?-1:1,e.reflectivity.value=i.reflectivity,e.ior.value=i.ior,e.refractionRatio.value=i.refractionRatio),i.lightMap&&(e.lightMap.value=i.lightMap,e.lightMapIntensity.value=i.lightMapIntensity,n(i.lightMap,e.lightMapTransform)),i.aoMap&&(e.aoMap.value=i.aoMap,e.aoMapIntensity.value=i.aoMapIntensity,n(i.aoMap,e.aoMapTransform))}return{refreshFogUniforms:function(t,n){n.color.getRGB(t.fogColor.value,ny(e)),n.isFog?(t.fogNear.value=n.near,t.fogFar.value=n.far):n.isFogExp2&&(t.fogDensity.value=n.density)},refreshMaterialUniforms:function(e,r,a,s,o){var l,u,c,h,d,p,f,m,g,v,_,y,x,b,S,M,T,w,E,A,C,R,P;let I;r.isMeshBasicMaterial||r.isMeshLambertMaterial?i(e,r):r.isMeshToonMaterial?(i(e,r),l=e,(u=r).gradientMap&&(l.gradientMap.value=u.gradientMap)):r.isMeshPhongMaterial?(i(e,r),c=e,h=r,c.specular.value.copy(h.specular),c.shininess.value=Math.max(h.shininess,1e-4)):r.isMeshStandardMaterial?(i(e,r),d=e,p=r,d.metalness.value=p.metalness,p.metalnessMap&&(d.metalnessMap.value=p.metalnessMap,n(p.metalnessMap,d.metalnessMapTransform)),d.roughness.value=p.roughness,p.roughnessMap&&(d.roughnessMap.value=p.roughnessMap,n(p.roughnessMap,d.roughnessMapTransform)),p.envMap&&(d.envMapIntensity.value=p.envMapIntensity),r.isMeshPhysicalMaterial&&(f=e,m=r,g=o,f.ior.value=m.ior,m.sheen>0&&(f.sheenColor.value.copy(m.sheenColor).multiplyScalar(m.sheen),f.sheenRoughness.value=m.sheenRoughness,m.sheenColorMap&&(f.sheenColorMap.value=m.sheenColorMap,n(m.sheenColorMap,f.sheenColorMapTransform)),m.sheenRoughnessMap&&(f.sheenRoughnessMap.value=m.sheenRoughnessMap,n(m.sheenRoughnessMap,f.sheenRoughnessMapTransform))),m.clearcoat>0&&(f.clearcoat.value=m.clearcoat,f.clearcoatRoughness.value=m.clearcoatRoughness,m.clearcoatMap&&(f.clearcoatMap.value=m.clearcoatMap,n(m.clearcoatMap,f.clearcoatMapTransform)),m.clearcoatRoughnessMap&&(f.clearcoatRoughnessMap.value=m.clearcoatRoughnessMap,n(m.clearcoatRoughnessMap,f.clearcoatRoughnessMapTransform)),m.clearcoatNormalMap&&(f.clearcoatNormalMap.value=m.clearcoatNormalMap,n(m.clearcoatNormalMap,f.clearcoatNormalMapTransform),f.clearcoatNormalScale.value.copy(m.clearcoatNormalScale),1===m.side&&f.clearcoatNormalScale.value.negate())),m.dispersion>0&&(f.dispersion.value=m.dispersion),m.iridescence>0&&(f.iridescence.value=m.iridescence,f.iridescenceIOR.value=m.iridescenceIOR,f.iridescenceThicknessMinimum.value=m.iridescenceThicknessRange[0],f.iridescenceThicknessMaximum.value=m.iridescenceThicknessRange[1],m.iridescenceMap&&(f.iridescenceMap.value=m.iridescenceMap,n(m.iridescenceMap,f.iridescenceMapTransform)),m.iridescenceThicknessMap&&(f.iridescenceThicknessMap.value=m.iridescenceThicknessMap,n(m.iridescenceThicknessMap,f.iridescenceThicknessMapTransform))),m.transmission>0&&(f.transmission.value=m.transmission,f.transmissionSamplerMap.value=g.texture,f.transmissionSamplerSize.value.set(g.width,g.height),m.transmissionMap&&(f.transmissionMap.value=m.transmissionMap,n(m.transmissionMap,f.transmissionMapTransform)),f.thickness.value=m.thickness,m.thicknessMap&&(f.thicknessMap.value=m.thicknessMap,n(m.thicknessMap,f.thicknessMapTransform)),f.attenuationDistance.value=m.attenuationDistance,f.attenuationColor.value.copy(m.attenuationColor)),m.anisotropy>0&&(f.anisotropyVector.value.set(m.anisotropy*Math.cos(m.anisotropyRotation),m.anisotropy*Math.sin(m.anisotropyRotation)),m.anisotropyMap&&(f.anisotropyMap.value=m.anisotropyMap,n(m.anisotropyMap,f.anisotropyMapTransform))),f.specularIntensity.value=m.specularIntensity,f.specularColor.value.copy(m.specularColor),m.specularColorMap&&(f.specularColorMap.value=m.specularColorMap,n(m.specularColorMap,f.specularColorMapTransform)),m.specularIntensityMap&&(f.specularIntensityMap.value=m.specularIntensityMap,n(m.specularIntensityMap,f.specularIntensityMapTransform)))):r.isMeshMatcapMaterial?(i(e,r),v=e,(_=r).matcap&&(v.matcap.value=_.matcap)):r.isMeshDepthMaterial?i(e,r):r.isMeshDistanceMaterial?(i(e,r),y=e,x=r,I=t.get(x).light,y.referencePosition.value.setFromMatrixPosition(I.matrixWorld),y.nearDistance.value=I.shadow.camera.near,y.farDistance.value=I.shadow.camera.far):r.isMeshNormalMaterial?i(e,r):r.isLineBasicMaterial?(b=e,S=r,b.diffuse.value.copy(S.color),b.opacity.value=S.opacity,S.map&&(b.map.value=S.map,n(S.map,b.mapTransform)),r.isLineDashedMaterial&&(M=e,T=r,M.dashSize.value=T.dashSize,M.totalSize.value=T.dashSize+T.gapSize,M.scale.value=T.scale)):r.isPointsMaterial?(w=e,E=r,A=a,C=s,w.diffuse.value.copy(E.color),w.opacity.value=E.opacity,w.size.value=E.size*A,w.scale.value=.5*C,E.map&&(w.map.value=E.map,n(E.map,w.uvTransform)),E.alphaMap&&(w.alphaMap.value=E.alphaMap,n(E.alphaMap,w.alphaMapTransform)),E.alphaTest>0&&(w.alphaTest.value=E.alphaTest)):r.isSpriteMaterial?(R=e,P=r,R.diffuse.value.copy(P.color),R.opacity.value=P.opacity,R.rotation.value=P.rotation,P.map&&(R.map.value=P.map,n(P.map,R.mapTransform)),P.alphaMap&&(R.alphaMap.value=P.alphaMap,n(P.alphaMap,R.alphaMapTransform)),P.alphaTest>0&&(R.alphaTest.value=P.alphaTest)):r.isShadowMaterial?(e.color.value.copy(r.color),e.opacity.value=r.opacity):r.isShaderMaterial&&(r.uniformsNeedUpdate=!1)}}}function uJ(e,t,n,i){let r={},a={},s=[],o=e.getParameter(e.MAX_UNIFORM_BUFFER_BINDINGS);function l(e){let t={boundary:0,storage:0};return"number"==typeof e||"boolean"==typeof e?(t.boundary=4,t.storage=4):e.isVector2?(t.boundary=8,t.storage=8):e.isVector3||e.isColor?(t.boundary=16,t.storage=12):e.isVector4?(t.boundary=16,t.storage=16):e.isMatrix3?(t.boundary=48,t.storage=48):e.isMatrix4?(t.boundary=64,t.storage=64):e.isTexture?console.warn("THREE.WebGLRenderer: Texture samplers can not be part of an uniforms group."):console.warn("THREE.WebGLRenderer: Unsupported uniform value type.",e),t}function u(t){let n=t.target;n.removeEventListener("dispose",u);let i=s.indexOf(n.__bindingPointIndex);s.splice(i,1),e.deleteBuffer(r[n.id]),delete r[n.id],delete a[n.id]}return{bind:function(e,t){let n=t.program;i.uniformBlockBinding(e,n)},update:function(n,c){var h;let d,p,f,m,g=r[n.id];void 0===g&&(function(e){let t=e.uniforms,n=0;for(let e=0,i=t.length;e0&&(n+=16-i),e.__size=n,e.__cache={}}(n),(h=n).__bindingPointIndex=d=function(){for(let e=0;etypeof WebGLRenderingContext&&A instanceof WebGLRenderingContext)throw Error("THREE.WebGLRenderer: WebGL 1 is not supported since r163.");t=A.getContextAttributes().alpha}else t=P;const B=new Uint32Array(4),k=new Int32Array(4);let H=null,V=null;const G=[],W=[];this.domElement=E,this.debug={checkShaderErrors:!0,onShaderError:null},this.autoClear=!0,this.autoClearColor=!0,this.autoClearDepth=!0,this.autoClearStencil=!0,this.sortObjects=!0,this.clippingPlanes=[],this.localClippingEnabled=!1,this._outputColorSpace=I,this.toneMapping=0,this.toneMappingExposure=1;const j=this;let X=!1,q=0,Y=0,Z=null,J=-1,K=null;const $=new e_,Q=new e_;let ee=null;const en=new tz(0);let eo=0,el=E.width,ec=E.height,eh=1,ed=null,ep=null;const ef=new e_(0,0,el,ec),em=new e_(0,0,el,ec);let eg=!1;const ev=new iS;let ey=!1,eb=!1;const eS=new e2,eM=new e2,eT=new eE,ew=new e_,eA={background:null,fog:null,environment:null,overrideMaterial:null,isScene:!0};let eC=!1;function eR(){return null===Z?eh:1}let eP=A;function eI(e,t){return E.getContext(e,t)}try{if("setAttribute"in E&&E.setAttribute("data-engine","three.js r171"),E.addEventListener("webglcontextlost",eU,!1),E.addEventListener("webglcontextrestored",eD,!1),E.addEventListener("webglcontextcreationerror",eO,!1),null===eP){const e="webgl2";if(eP=eI(e,{alpha:!0,depth:C,stencil:R,antialias:N,premultipliedAlpha:U,preserveDrawingBuffer:D,powerPreference:O,failIfMajorPerformanceCaveat:F}),null===eP)if(eI(e))throw Error("Error creating WebGL context with your selected attributes.");else throw Error("Error creating WebGL context.")}}catch(e){throw console.error("THREE.WebGLRenderer: "+e.message),e}function eL(){(n=new lr(eP)).init(),M=new uk(eP,n),i=new oY(eP,n,e,M),r=new uz(eP,n),i.reverseDepthBuffer&&z&&r.buffers.depth.setReversed(!0),a=new lo(eP),s=new uw,o=new uB(eP,n,r,s,i,M,a),l=new oJ(j),u=new li(j),c=new oz(eP),T=new oX(eP,c),h=new la(eP,c,a,T),d=new lu(eP,h,c,a),x=new ll(eP,i,o),v=new oZ(s),p=new uT(j,l,u,n,i,T,v),f=new uZ(j,s),m=new uR,g=new uD(n),y=new oj(j,l,u,r,d,t,U),_=new uO(j,d,i),w=new uJ(eP,a,i,r),b=new oq(eP,n,a),S=new ls(eP,n,a),a.programs=p.programs,j.capabilities=i,j.extensions=n,j.properties=s,j.renderLists=m,j.shadowMap=_,j.state=r,j.info=a}eL();const eN=new uX(j,eP);function eU(e){e.preventDefault(),console.log("THREE.WebGLRenderer: Context Lost."),X=!0}function eD(){console.log("THREE.WebGLRenderer: Context Restored."),X=!1;let e=a.autoReset,t=_.enabled,n=_.autoUpdate,i=_.needsUpdate,r=_.type;eL(),a.autoReset=e,_.enabled=t,_.autoUpdate=n,_.needsUpdate=i,_.type=r}function eO(e){console.error("THREE.WebGLRenderer: A WebGL context could not be created. Reason: ",e.statusMessage)}function eF(e){var t,n;let i,r=e.target;r.removeEventListener("dispose",eF),n=t=r,void 0!==(i=s.get(n).programs)&&(i.forEach(function(e){p.releaseProgram(e)}),n.isShaderMaterial&&p.releaseShaderCache(n)),s.remove(t)}function ez(e,t,n){!0===e.transparent&&2===e.side&&!1===e.forceSinglePass?(e.side=1,e.needsUpdate=!0,eY(e,t,n),e.side=0,e.needsUpdate=!0,eY(e,t,n),e.side=2):eY(e,t,n)}this.xr=eN,this.getContext=function(){return eP},this.getContextAttributes=function(){return eP.getContextAttributes()},this.forceContextLoss=function(){let e=n.get("WEBGL_lose_context");e&&e.loseContext()},this.forceContextRestore=function(){let e=n.get("WEBGL_lose_context");e&&e.restoreContext()},this.getPixelRatio=function(){return eh},this.setPixelRatio=function(e){void 0!==e&&(eh=e,this.setSize(el,ec,!1))},this.getSize=function(e){return e.set(el,ec)},this.setSize=function(e,t,n=!0){eN.isPresenting?console.warn("THREE.WebGLRenderer: Can't change size while VR device is presenting."):(el=e,ec=t,E.width=Math.floor(e*eh),E.height=Math.floor(t*eh),!0===n&&(E.style.width=e+"px",E.style.height=t+"px"),this.setViewport(0,0,e,t))},this.getDrawingBufferSize=function(e){return e.set(el*eh,ec*eh).floor()},this.setDrawingBufferSize=function(e,t,n){el=e,ec=t,eh=n,E.width=Math.floor(e*n),E.height=Math.floor(t*n),this.setViewport(0,0,e,t)},this.getCurrentViewport=function(e){return e.copy($)},this.getViewport=function(e){return e.copy(ef)},this.setViewport=function(e,t,n,i){e.isVector4?ef.set(e.x,e.y,e.z,e.w):ef.set(e,t,n,i),r.viewport($.copy(ef).multiplyScalar(eh).round())},this.getScissor=function(e){return e.copy(em)},this.setScissor=function(e,t,n,i){e.isVector4?em.set(e.x,e.y,e.z,e.w):em.set(e,t,n,i),r.scissor(Q.copy(em).multiplyScalar(eh).round())},this.getScissorTest=function(){return eg},this.setScissorTest=function(e){r.setScissorTest(eg=e)},this.setOpaqueSort=function(e){ed=e},this.setTransparentSort=function(e){ep=e},this.getClearColor=function(e){return e.copy(y.getClearColor())},this.setClearColor=function(){y.setClearColor.apply(y,arguments)},this.getClearAlpha=function(){return y.getClearAlpha()},this.setClearAlpha=function(){y.setClearAlpha.apply(y,arguments)},this.clear=function(e=!0,t=!0,n=!0){let i=0;if(e){let e=!1;if(null!==Z){let t=Z.texture.format;e=1033===t||1031===t||1029===t}if(e){let e=Z.texture.type,t=1009===e||1014===e||1012===e||1020===e||1017===e||1018===e,n=y.getClearColor(),i=y.getClearAlpha(),r=n.r,a=n.g,s=n.b;t?(B[0]=r,B[1]=a,B[2]=s,B[3]=i,eP.clearBufferuiv(eP.COLOR,0,B)):(k[0]=r,k[1]=a,k[2]=s,k[3]=i,eP.clearBufferiv(eP.COLOR,0,k))}else i|=eP.COLOR_BUFFER_BIT}t&&(i|=eP.DEPTH_BUFFER_BIT),n&&(i|=eP.STENCIL_BUFFER_BIT,this.state.buffers.stencil.setMask(0xffffffff)),eP.clear(i)},this.clearColor=function(){this.clear(!0,!1,!1)},this.clearDepth=function(){this.clear(!1,!0,!1)},this.clearStencil=function(){this.clear(!1,!1,!0)},this.dispose=function(){E.removeEventListener("webglcontextlost",eU,!1),E.removeEventListener("webglcontextrestored",eD,!1),E.removeEventListener("webglcontextcreationerror",eO,!1),y.dispose(),m.dispose(),g.dispose(),s.dispose(),l.dispose(),u.dispose(),d.dispose(),T.dispose(),w.dispose(),p.dispose(),eN.dispose(),eN.removeEventListener("sessionstart",ek),eN.removeEventListener("sessionend",eH),eV.stop()},this.renderBufferDirect=function(e,t,a,d,p,m){let g;null===t&&(t=eA);let _=p.isMesh&&0>p.matrixWorld.determinant(),y=function(e,t,n,a,c){var h,d;!0!==t.isScene&&(t=eA),o.resetTextureUnits();let p=t.fog,m=a.isMeshStandardMaterial?t.environment:null,g=null===Z?j.outputColorSpace:!0===Z.isXRRenderTarget?Z.texture.colorSpace:L,_=(a.isMeshStandardMaterial?u:l).get(a.envMap||m),y=!0===a.vertexColors&&!!n.attributes.color&&4===n.attributes.color.itemSize,b=!!n.attributes.tangent&&(!!a.normalMap||a.anisotropy>0),S=!!n.morphAttributes.position,M=!!n.morphAttributes.normal,T=!!n.morphAttributes.color,E=0;a.toneMapped&&(null===Z||!0===Z.isXRRenderTarget)&&(E=j.toneMapping);let A=n.morphAttributes.position||n.morphAttributes.normal||n.morphAttributes.color,C=void 0!==A?A.length:0,R=s.get(a),P=V.state.lights;if(!0===ey&&(!0===eb||e!==K)){let t=e===K&&a.id===J;v.setState(a,e,t)}let I=!1;a.version===R.__version?R.needsLights&&R.lightsStateVersion!==P.state.version||R.outputColorSpace!==g||c.isBatchedMesh&&!1===R.batching?I=!0:c.isBatchedMesh||!0!==R.batching?c.isBatchedMesh&&!0===R.batchingColor&&null===c.colorTexture||c.isBatchedMesh&&!1===R.batchingColor&&null!==c.colorTexture||c.isInstancedMesh&&!1===R.instancing?I=!0:c.isInstancedMesh||!0!==R.instancing?c.isSkinnedMesh&&!1===R.skinning?I=!0:c.isSkinnedMesh||!0!==R.skinning?c.isInstancedMesh&&!0===R.instancingColor&&null===c.instanceColor||c.isInstancedMesh&&!1===R.instancingColor&&null!==c.instanceColor||c.isInstancedMesh&&!0===R.instancingMorph&&null===c.morphTexture||c.isInstancedMesh&&!1===R.instancingMorph&&null!==c.morphTexture||R.envMap!==_||!0===a.fog&&R.fog!==p||void 0!==R.numClippingPlanes&&(R.numClippingPlanes!==v.numPlanes||R.numIntersection!==v.numIntersection)||R.vertexAlphas!==y||R.vertexTangents!==b||R.morphTargets!==S||R.morphNormals!==M||R.morphColors!==T||R.toneMapping!==E?I=!0:R.morphTargetsCount!==C&&(I=!0):I=!0:I=!0:I=!0:(I=!0,R.__version=a.version);let N=R.currentProgram;!0===I&&(N=eY(a,t,c));let U=!1,D=!1,O=!1,F=N.getUniforms(),z=R.uniforms;if(r.useProgram(N.program)&&(U=!0,D=!0,O=!0),a.id!==J&&(J=a.id,D=!0),U||K!==e){r.buffers.depth.getReversed()?(eS.copy(e.projectionMatrix),ea(eS),es(eS),F.setValue(eP,"projectionMatrix",eS)):F.setValue(eP,"projectionMatrix",e.projectionMatrix),F.setValue(eP,"viewMatrix",e.matrixWorldInverse);let t=F.map.cameraPosition;void 0!==t&&t.setValue(eP,eT.setFromMatrixPosition(e.matrixWorld)),i.logarithmicDepthBuffer&&F.setValue(eP,"logDepthBufFC",2/(Math.log(e.far+1)/Math.LN2)),(a.isMeshPhongMaterial||a.isMeshToonMaterial||a.isMeshLambertMaterial||a.isMeshBasicMaterial||a.isMeshStandardMaterial||a.isShaderMaterial)&&F.setValue(eP,"isOrthographic",!0===e.isOrthographicCamera),K!==e&&(K=e,D=!0,O=!0)}if(c.isSkinnedMesh){F.setOptional(eP,c,"bindMatrix"),F.setOptional(eP,c,"bindMatrixInverse");let e=c.skeleton;e&&(null===e.boneTexture&&e.computeBoneTexture(),F.setValue(eP,"boneTexture",e.boneTexture,o))}c.isBatchedMesh&&(F.setOptional(eP,c,"batchingTexture"),F.setValue(eP,"batchingTexture",c._matricesTexture,o),F.setOptional(eP,c,"batchingIdTexture"),F.setValue(eP,"batchingIdTexture",c._indirectTexture,o),F.setOptional(eP,c,"batchingColorTexture"),null!==c._colorsTexture&&F.setValue(eP,"batchingColorTexture",c._colorsTexture,o));let B=n.morphAttributes;if((void 0!==B.position||void 0!==B.normal||void 0!==B.color)&&x.update(c,n,N),(D||R.receiveShadow!==c.receiveShadow)&&(R.receiveShadow=c.receiveShadow,F.setValue(eP,"receiveShadow",c.receiveShadow)),a.isMeshGouraudMaterial&&null!==a.envMap&&(z.envMap.value=_,z.flipEnvMap.value=_.isCubeTexture&&!1===_.isRenderTargetTexture?-1:1),a.isMeshStandardMaterial&&null===a.envMap&&null!==t.environment&&(z.envMapIntensity.value=t.environmentIntensity),D&&(F.setValue(eP,"toneMappingExposure",j.toneMappingExposure),R.needsLights&&(h=z,d=O,h.ambientLightColor.needsUpdate=d,h.lightProbe.needsUpdate=d,h.directionalLights.needsUpdate=d,h.directionalLightShadows.needsUpdate=d,h.pointLights.needsUpdate=d,h.pointLightShadows.needsUpdate=d,h.spotLights.needsUpdate=d,h.spotLightShadows.needsUpdate=d,h.rectAreaLights.needsUpdate=d,h.hemisphereLights.needsUpdate=d),p&&!0===a.fog&&f.refreshFogUniforms(z,p),f.refreshMaterialUniforms(z,a,eh,ec,V.state.transmissionRenderTarget[e.id]),ui.upload(eP,eZ(R),z,o)),a.isShaderMaterial&&!0===a.uniformsNeedUpdate&&(ui.upload(eP,eZ(R),z,o),a.uniformsNeedUpdate=!1),a.isSpriteMaterial&&F.setValue(eP,"center",c.center),F.setValue(eP,"modelViewMatrix",c.modelViewMatrix),F.setValue(eP,"normalMatrix",c.normalMatrix),F.setValue(eP,"modelMatrix",c.matrixWorld),a.isShaderMaterial||a.isRawShaderMaterial){let e=a.uniformsGroups;for(let t=0,n=e.length;t{function i(){(r.forEach(function(e){s.get(e).currentProgram.isReady()&&r.delete(e)}),0===r.size)?t(e):setTimeout(i,10)}null!==n.get("KHR_parallel_shader_compile")?i():setTimeout(i,10)})};let eB=null;function ek(){eV.stop()}function eH(){eV.start()}const eV=new oF;function eG(e,t,n,i){if(!1===e.visible)return;if(e.layers.test(t.layers)){if(e.isGroup)n=e.renderOrder;else if(e.isLOD)!0===e.autoUpdate&&e.update(t);else if(e.isLight)V.pushLight(e),e.castShadow&&V.pushShadow(e);else if(e.isSprite){if(!e.frustumCulled||ev.intersectsSprite(e)){i&&ew.setFromMatrixPosition(e.matrixWorld).applyMatrix4(eM);let t=d.update(e),r=e.material;r.visible&&H.push(e,t,r,n,ew.z,null)}}else if((e.isMesh||e.isLine||e.isPoints)&&(!e.frustumCulled||ev.intersectsObject(e))){let t=d.update(e),r=e.material;if(i&&(void 0!==e.boundingSphere?(null===e.boundingSphere&&e.computeBoundingSphere(),ew.copy(e.boundingSphere.center)):(null===t.boundingSphere&&t.computeBoundingSphere(),ew.copy(t.boundingSphere.center)),ew.applyMatrix4(e.matrixWorld).applyMatrix4(eM)),Array.isArray(r)){let i=t.groups;for(let a=0,s=i.length;a0&&eX(a,t,n),s.length>0&&eX(s,t,n),o.length>0&&eX(o,t,n),r.buffers.depth.setTest(!0),r.buffers.depth.setMask(!0),r.buffers.color.setMask(!0),r.setPolygonOffset(!1)}function ej(e,t,i,r){if(null!==(!0===i.isScene?i.overrideMaterial:null))return;void 0===V.state.transmissionRenderTarget[r.id]&&(V.state.transmissionRenderTarget[r.id]=new ex(1,1,{generateMipmaps:!0,type:n.has("EXT_color_buffer_half_float")||n.has("EXT_color_buffer_float")?1016:1009,minFilter:1008,samples:4,stencilBuffer:R,resolveDepthBuffer:!1,resolveStencilBuffer:!1,colorSpace:eu.workingColorSpace}));let a=V.state.transmissionRenderTarget[r.id],s=r.viewport||$;a.setSize(s.z,s.w);let l=j.getRenderTarget();j.setRenderTarget(a),j.getClearColor(en),(eo=j.getClearAlpha())<1&&j.setClearColor(0xffffff,.5),j.clear(),eC&&y.render(i);let u=j.toneMapping;j.toneMapping=0;let c=r.viewport;if(void 0!==r.viewport&&(r.viewport=void 0),V.setupLightsView(r),!0===ey&&v.setGlobalState(j.clippingPlanes,r),eX(e,i,r),o.updateMultisampleRenderTarget(a),o.updateRenderTargetMipmap(a),!1===n.has("WEBGL_multisampled_render_to_texture")){let e=!1;for(let n=0,a=t.length;ntypeof self&&eV.setContext(self),this.setAnimationLoop=function(e){eB=e,eN.setAnimationLoop(e),null===e?eV.stop():eV.start()},eN.addEventListener("sessionstart",ek),eN.addEventListener("sessionend",eH),this.render=function(e,t){if(void 0!==t&&!0!==t.isCamera)return void console.error("THREE.WebGLRenderer.render: camera is not an instance of THREE.Camera.");if(!0===X)return;if(!0===e.matrixWorldAutoUpdate&&e.updateMatrixWorld(),null===t.parent&&!0===t.matrixWorldAutoUpdate&&t.updateMatrixWorld(),!0===eN.enabled&&!0===eN.isPresenting&&(!0===eN.cameraAutoUpdate&&eN.updateCamera(t),t=eN.getCamera()),!0===e.isScene&&e.onBeforeRender(j,e,t,Z),(V=g.get(e,W.length)).init(t),W.push(V),eM.multiplyMatrices(t.projectionMatrix,t.matrixWorldInverse),ev.setFromProjectionMatrix(eM),eb=this.localClippingEnabled,ey=v.init(this.clippingPlanes,eb),(H=m.get(e,G.length)).init(),G.push(H),!0===eN.enabled&&!0===eN.isPresenting){let e=j.xr.getDepthSensingMesh();null!==e&&eG(e,t,-1/0,j.sortObjects)}eG(e,t,0,j.sortObjects),H.finish(),!0===j.sortObjects&&H.sort(ed,ep),(eC=!1===eN.enabled||!1===eN.isPresenting||!1===eN.hasDepthSensing())&&y.addToRenderList(H,e),this.info.render.frame++,!0===ey&&v.beginShadows();let n=V.state.shadowsArray;_.render(n,e,t),!0===ey&&v.endShadows(),!0===this.info.autoReset&&this.info.reset();let i=H.opaque,r=H.transmissive;if(V.setupLights(),t.isArrayCamera){let n=t.cameras;if(r.length>0)for(let t=0,a=n.length;t0&&ej(i,r,e,t),eC&&y.render(e),eW(H,e,t);null!==Z&&(o.updateMultisampleRenderTarget(Z),o.updateRenderTargetMipmap(Z)),!0===e.isScene&&e.onAfterRender(j,e,t),T.resetDefaultState(),J=-1,K=null,W.pop(),W.length>0?(V=W[W.length-1],!0===ey&&v.setGlobalState(j.clippingPlanes,V.state.camera)):V=null,G.pop(),H=G.length>0?G[G.length-1]:null},this.getActiveCubeFace=function(){return q},this.getActiveMipmapLevel=function(){return Y},this.getRenderTarget=function(){return Z},this.setRenderTargetTextures=function(e,t,i){s.get(e.texture).__webglTexture=t,s.get(e.depthTexture).__webglTexture=i;let r=s.get(e);r.__hasExternalTextures=!0,r.__autoAllocateDepthBuffer=void 0===i,r.__autoAllocateDepthBuffer||!0!==n.has("WEBGL_multisampled_render_to_texture")||(console.warn("THREE.WebGLRenderer: Render-to-texture extension was disabled because an external texture was provided"),r.__useRenderToTexture=!1)},this.setRenderTargetFramebuffer=function(e,t){let n=s.get(e);n.__webglFramebuffer=t,n.__useDefaultFramebuffer=void 0===t},this.setRenderTarget=function(e,t=0,n=0){Z=e,q=t,Y=n;let i=!0,a=null,l=!1,u=!1;if(e){let c=s.get(e);if(void 0!==c.__useDefaultFramebuffer)r.bindFramebuffer(eP.FRAMEBUFFER,null),i=!1;else if(void 0===c.__webglFramebuffer)o.setupRenderTarget(e);else if(c.__hasExternalTextures)o.rebindTextures(e,s.get(e.texture).__webglTexture,s.get(e.depthTexture).__webglTexture);else if(e.depthBuffer){let t=e.depthTexture;if(c.__boundDepthTexture!==t){if(null!==t&&s.has(t)&&(e.width!==t.image.width||e.height!==t.image.height))throw Error("WebGLRenderTarget: Attached DepthTexture is initialized to the incorrect size.");o.setupDepthRenderbuffer(e)}}let h=e.texture;(h.isData3DTexture||h.isDataArrayTexture||h.isCompressedArrayTexture)&&(u=!0);let d=s.get(e).__webglFramebuffer;e.isWebGLCubeRenderTarget?(a=Array.isArray(d[t])?d[t][n]:d[t],l=!0):a=e.samples>0&&!1===o.useMultisampledRTT(e)?s.get(e).__webglMultisampledFramebuffer:Array.isArray(d)?d[n]:d,$.copy(e.viewport),Q.copy(e.scissor),ee=e.scissorTest}else $.copy(ef).multiplyScalar(eh).floor(),Q.copy(em).multiplyScalar(eh).floor(),ee=eg;if(r.bindFramebuffer(eP.FRAMEBUFFER,a)&&i&&r.drawBuffers(e,a),r.viewport($),r.scissor(Q),r.setScissorTest(ee),l){let i=s.get(e.texture);eP.framebufferTexture2D(eP.FRAMEBUFFER,eP.COLOR_ATTACHMENT0,eP.TEXTURE_CUBE_MAP_POSITIVE_X+t,i.__webglTexture,n)}else if(u){let i=s.get(e.texture);eP.framebufferTextureLayer(eP.FRAMEBUFFER,eP.COLOR_ATTACHMENT0,i.__webglTexture,n||0,t||0)}J=-1},this.readRenderTargetPixels=function(e,t,n,a,o,l,u){if(!(e&&e.isWebGLRenderTarget))return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let c=s.get(e).__webglFramebuffer;if(e.isWebGLCubeRenderTarget&&void 0!==u&&(c=c[u]),c){r.bindFramebuffer(eP.FRAMEBUFFER,c);try{let r=e.texture,s=r.format,u=r.type;if(!i.textureFormatReadable(s))return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in RGBA or implementation defined format.");if(!i.textureTypeReadable(u))return void console.error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not in UnsignedByteType or implementation defined type.");t>=0&&t<=e.width-a&&n>=0&&n<=e.height-o&&eP.readPixels(t,n,a,o,M.convert(s),M.convert(u),l)}finally{let e=null!==Z?s.get(Z).__webglFramebuffer:null;r.bindFramebuffer(eP.FRAMEBUFFER,e)}}},this.readRenderTargetPixelsAsync=async function(e,t,n,a,o,l,u){if(!(e&&e.isWebGLRenderTarget))throw Error("THREE.WebGLRenderer.readRenderTargetPixels: renderTarget is not THREE.WebGLRenderTarget.");let c=s.get(e).__webglFramebuffer;if(e.isWebGLCubeRenderTarget&&void 0!==u&&(c=c[u]),c){let u=e.texture,h=u.format,d=u.type;if(!i.textureFormatReadable(h))throw Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in RGBA or implementation defined format.");if(!i.textureTypeReadable(d))throw Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: renderTarget is not in UnsignedByteType or implementation defined type.");if(t>=0&&t<=e.width-a&&n>=0&&n<=e.height-o){r.bindFramebuffer(eP.FRAMEBUFFER,c);let e=eP.createBuffer();eP.bindBuffer(eP.PIXEL_PACK_BUFFER,e),eP.bufferData(eP.PIXEL_PACK_BUFFER,l.byteLength,eP.STREAM_READ),eP.readPixels(t,n,a,o,M.convert(h),M.convert(d),0);let i=null!==Z?s.get(Z).__webglFramebuffer:null;r.bindFramebuffer(eP.FRAMEBUFFER,i);let u=eP.fenceSync(eP.SYNC_GPU_COMMANDS_COMPLETE,0);return eP.flush(),await er(eP,u,4),eP.bindBuffer(eP.PIXEL_PACK_BUFFER,e),eP.getBufferSubData(eP.PIXEL_PACK_BUFFER,0,l),eP.deleteBuffer(e),eP.deleteSync(u),l}throw Error("THREE.WebGLRenderer.readRenderTargetPixelsAsync: requested read bounds are out of range.")}},this.copyFramebufferToTexture=function(e,t=null,n=0){!0!==e.isTexture&&(ei("WebGLRenderer: copyFramebufferToTexture function signature has changed."),t=arguments[0]||null,e=arguments[1]);let i=Math.pow(2,-n),a=Math.floor(e.image.width*i),s=Math.floor(e.image.height*i),l=null!==t?t.x:0,u=null!==t?t.y:0;o.setTexture2D(e,0),eP.copyTexSubImage2D(eP.TEXTURE_2D,n,0,0,l,u,a,s),r.unbindTexture()};const eK=eP.createFramebuffer(),e$=eP.createFramebuffer();this.copyTextureToTexture=function(e,t,n=null,i=null,a=0,l=null){let u,c,h,d,p,f,m,g,v,_;!0!==e.isTexture&&(ei("WebGLRenderer: copyTextureToTexture function signature has changed."),i=arguments[0]||null,e=arguments[1],t=arguments[2],l=arguments[3]||0,n=null),null===l&&(0!==a?(ei("WebGLRenderer: copyTextureToTexture function signature has changed to support src and dst mipmap levels."),l=a,a=0):l=0);let y=e.isCompressedTexture?e.mipmaps[l]:e.image;if(null!==n)u=n.max.x-n.min.x,c=n.max.y-n.min.y,h=n.isBox3?n.max.z-n.min.z:1,d=n.min.x,p=n.min.y,f=n.isBox3?n.min.z:0;else{let t=Math.pow(2,-a);u=Math.floor(y.width*t),c=Math.floor(y.height*t),h=e.isDataArrayTexture?y.depth:e.isData3DTexture?Math.floor(y.depth*t):1,d=0,p=0,f=0}null!==i?(m=i.x,g=i.y,v=i.z):(m=0,g=0,v=0);let x=M.convert(t.format),b=M.convert(t.type);t.isData3DTexture?(o.setTexture3D(t,0),_=eP.TEXTURE_3D):t.isDataArrayTexture||t.isCompressedArrayTexture?(o.setTexture2DArray(t,0),_=eP.TEXTURE_2D_ARRAY):(o.setTexture2D(t,0),_=eP.TEXTURE_2D),eP.pixelStorei(eP.UNPACK_FLIP_Y_WEBGL,t.flipY),eP.pixelStorei(eP.UNPACK_PREMULTIPLY_ALPHA_WEBGL,t.premultiplyAlpha),eP.pixelStorei(eP.UNPACK_ALIGNMENT,t.unpackAlignment);let S=eP.getParameter(eP.UNPACK_ROW_LENGTH),T=eP.getParameter(eP.UNPACK_IMAGE_HEIGHT),w=eP.getParameter(eP.UNPACK_SKIP_PIXELS),E=eP.getParameter(eP.UNPACK_SKIP_ROWS),A=eP.getParameter(eP.UNPACK_SKIP_IMAGES);eP.pixelStorei(eP.UNPACK_ROW_LENGTH,y.width),eP.pixelStorei(eP.UNPACK_IMAGE_HEIGHT,y.height),eP.pixelStorei(eP.UNPACK_SKIP_PIXELS,d),eP.pixelStorei(eP.UNPACK_SKIP_ROWS,p),eP.pixelStorei(eP.UNPACK_SKIP_IMAGES,f);let C=e.isDataArrayTexture||e.isData3DTexture,R=t.isDataArrayTexture||t.isData3DTexture;if(e.isDepthTexture){let n=s.get(e),i=s.get(t),o=s.get(n.__renderTarget),_=s.get(i.__renderTarget);r.bindFramebuffer(eP.READ_FRAMEBUFFER,o.__webglFramebuffer),r.bindFramebuffer(eP.DRAW_FRAMEBUFFER,_.__webglFramebuffer);for(let n=0;ntypeof __THREE_DEVTOOLS__&&__THREE_DEVTOOLS__.dispatchEvent(new CustomEvent("observe",{detail:this}))}get coordinateSystem(){return 2e3}get outputColorSpace(){return this._outputColorSpace}set outputColorSpace(e){this._outputColorSpace=e;let t=this.getContext();t.drawingBufferColorspace=eu._getDrawingBufferColorSpace(e),t.unpackColorSpace=eu._getUnpackColorSpace()}}e.s(["PMREMGenerator",0,o8,"ShaderChunk",0,oB,"ShaderLib",0,oH,"UniformsLib",0,ok,"WebGLRenderer",0,uK,"WebGLUtils",0,uk],8560);var u$=e.i(30224);let uQ=e=>{let t,n=new Set,i=(e,i)=>{let r="function"==typeof e?e(t):e;if(!Object.is(r,t)){let e=t;t=(null!=i?i:"object"!=typeof r||null===r)?r:Object.assign({},t,r),n.forEach(n=>n(t,e))}},r=()=>t,a={setState:i,getState:r,getInitialState:()=>s,subscribe:e=>(n.add(e),()=>n.delete(e))},s=t=e(i,r,a);return a},u0=e=>e?uQ(e):uQ;e.s(["createStore",0,u0],8155);let{useSyncExternalStoreWithSelector:u1}=u$.default,u2=(e,t)=>{let n=u0(e),i=(e,i=t)=>(function(e,t=e=>e,n){let i=u1(e.subscribe,e.getState,e.getInitialState,t,n);return E.default.useDebugValue(i),i})(n,e,i);return Object.assign(i,n),i},u3=(e,t)=>e?u2(e,t):u2,u4=[];function u5(e,t,n=(e,t)=>e===t){if(e===t)return!0;if(!e||!t)return!1;let i=e.length;if(t.length!==i)return!1;for(let r=0;r0&&(r.timeout&&clearTimeout(r.timeout),r.timeout=setTimeout(r.remove,i.lifespan)),r.response;if(!n)throw r.promise}let r={keys:t,equal:i.equal,remove:()=>{let e=u4.indexOf(r);-1!==e&&u4.splice(e,1)},promise:("object"==typeof e&&"function"==typeof e.then?e:e(...t)).then(e=>{r.response=e,i.lifespan&&i.lifespan>0&&(r.timeout=setTimeout(r.remove,i.lifespan))}).catch(e=>r.error=e)};if(u4.push(r),!n)throw r.promise}var u8=e.i(89499),u9=e.i(43476),u7=E;function ce(e,t,n){if(!e)return;if(!0===n(e))return e;let i=t?e.return:e.child;for(;i;){let e=ce(i,t,n);if(e)return e;i=t?null:i.sibling}}function ct(e){try{return Object.defineProperties(e,{_currentRenderer:{get:()=>null,set(){}},_currentRenderer2:{get:()=>null,set(){}}})}catch(t){return e}}"u">typeof window&&((null==(y=window.document)?void 0:y.createElement)||(null==(x=window.navigator)?void 0:x.product)==="ReactNative")?u7.useLayoutEffect:u7.useEffect;let cn=ct(u7.createContext(null));class ci extends u7.Component{render(){return u7.createElement(cn.Provider,{value:this._reactInternals},this.props.children)}}function cr(){let e=u7.useContext(cn);if(null===e)throw Error("its-fine: useFiber must be called within a !");let t=u7.useId();return u7.useMemo(()=>{for(let n of[e,null==e?void 0:e.alternate]){if(!n)continue;let e=ce(n,!1,e=>{let n=e.memoizedState;for(;n;){if(n.memoizedState===t)return!0;n=n.next}});if(e)return e}},[e,t])}let ca=Symbol.for("react.context"),cs=e=>null!==e&&"object"==typeof e&&"$$typeof"in e&&e.$$typeof===ca;function co(e){let t=e.root;for(;t.getState().previousRoot;)t=t.getState().previousRoot;return t}E.act;let cl=e=>e&&e.hasOwnProperty("current"),cu=e=>null!=e&&("string"==typeof e||"number"==typeof e||e.isColor),cc="u">typeof window&&((null==(m=window.document)?void 0:m.createElement)||(null==(g=window.navigator)?void 0:g.product)==="ReactNative")?E.useLayoutEffect:E.useEffect;function ch(e){let t=E.useRef(e);return cc(()=>void(t.current=e),[e]),t}function cd(){let e,t=cr(),n=(e=function(){let e=cr(),[t]=u7.useState(()=>new Map);t.clear();let n=e;for(;n;){let e=n.type;cs(e)&&e!==cn&&!t.has(e)&&t.set(e,u7.use(ct(e))),n=n.return}return t}(),u7.useMemo(()=>Array.from(e.keys()).reduce((t,n)=>i=>u7.createElement(t,null,u7.createElement(n.Provider,{...i,value:e.get(n)})),e=>u7.createElement(ci,{...e})),[e]));return E.useMemo(()=>({children:e})=>{let i=ce(t,!0,e=>e.type===E.StrictMode)?E.StrictMode:E.Fragment;return(0,u9.jsx)(i,{children:(0,u9.jsx)(n,{children:e})})},[t,n])}function cp({set:e}){return cc(()=>(e(new Promise(()=>null)),()=>e(!1)),[e]),null}let cf=((v=class extends E.Component{constructor(...e){super(...e),this.state={error:!1}}componentDidCatch(e){this.props.set(e)}render(){return this.state.error?null:this.props.children}}).getDerivedStateFromError=()=>({error:!0}),v);function cm(e){var t;let n="u">typeof window?null!=(t=window.devicePixelRatio)?t:2:1;return Array.isArray(e)?Math.min(Math.max(e[0],n),e[1]):e}function cg(e){var t;return null==(t=e.__r3f)?void 0:t.root.getState()}let cv={obj:e=>e===Object(e)&&!cv.arr(e)&&"function"!=typeof e,fun:e=>"function"==typeof e,str:e=>"string"==typeof e,num:e=>"number"==typeof e,boo:e=>"boolean"==typeof e,und:e=>void 0===e,nul:e=>null===e,arr:e=>Array.isArray(e),equ(e,t,{arrays:n="shallow",objects:i="reference",strict:r=!0}={}){let a;if(typeof e!=typeof t||!!e!=!!t)return!1;if(cv.str(e)||cv.num(e)||cv.boo(e))return e===t;let s=cv.obj(e);if(s&&"reference"===i)return e===t;let o=cv.arr(e);if(o&&"reference"===n)return e===t;if((o||s)&&e===t)return!0;for(a in e)if(!(a in t))return!1;if(s&&"shallow"===n&&"shallow"===i){for(a in r?t:e)if(!cv.equ(e[a],t[a],{strict:r,objects:"reference"}))return!1}else for(a in r?t:e)if(e[a]!==t[a])return!1;if(cv.und(a)){if(o&&0===e.length&&0===t.length||s&&0===Object.keys(e).length&&0===Object.keys(t).length)return!0;if(e!==t)return!1}return!0}},c_=["children","key","ref"];function cy(e,t,n,i){let r=null==e?void 0:e.__r3f;return!r&&(r={root:t,type:n,parent:null,children:[],props:function(e){let t={};for(let n in e)c_.includes(n)||(t[n]=e[n]);return t}(i),object:e,eventCount:0,handlers:{},isHidden:!1},e&&(e.__r3f=r)),r}function cx(e,t){if(!t.includes("-")||t in e)return{root:e,key:t,target:e[t]};let n=e,i=t.split("-");for(let r of i){if("object"!=typeof n||null===n){if(void 0!==n)return{root:n,key:i.slice(i.indexOf(r)).join("-"),target:void 0};return{root:e,key:t,target:void 0}}t=r,e=n,n=n[t]}return{root:e,key:t,target:n}}let cb=/-\d+$/;function cS(e,t){if(cv.str(t.props.attach)){if(cb.test(t.props.attach)){let n=t.props.attach.replace(cb,""),{root:i,key:r}=cx(e.object,n);Array.isArray(i[r])||(i[r]=[])}let{root:n,key:i}=cx(e.object,t.props.attach);t.previousAttach=n[i],n[i]=t.object}else cv.fun(t.props.attach)&&(t.previousAttach=t.props.attach(e.object,t.object))}function cM(e,t){if(cv.str(t.props.attach)){let{root:n,key:i}=cx(e.object,t.props.attach),r=t.previousAttach;void 0===r?delete n[i]:n[i]=r}else null==t.previousAttach||t.previousAttach(e.object,t.object);delete t.previousAttach}let cT=[...c_,"args","dispose","attach","object","onUpdate","dispose"],cw=new Map,cE=["map","emissiveMap","sheenColorMap","specularColorMap","envMap"],cA=/^on(Pointer|Click|DoubleClick|ContextMenu|Wheel)/;function cC(e,t){var n,i;let r=e.__r3f,a=r&&co(r).getState(),s=null==r?void 0:r.eventCount;for(let n in t){let s=t[n];if(cT.includes(n))continue;if(r&&cA.test(n)){"function"==typeof s?r.handlers[n]=s:delete r.handlers[n],r.eventCount=Object.keys(r.handlers).length;continue}if(void 0===s)continue;let{root:o,key:l,target:u}=cx(e,n);if(void 0===u&&("object"!=typeof o||null===o))throw Error(`R3F: Cannot set "${n}". Ensure it is an object before setting "${l}".`);if(u instanceof ti&&s instanceof ti)u.mask=s.mask;else if(u instanceof tz&&cu(s))u.set(s);else if(null!==u&&"object"==typeof u&&"function"==typeof u.set&&"function"==typeof u.copy&&null!=s&&s.constructor&&u.constructor===s.constructor)u.copy(s);else if(null!==u&&"object"==typeof u&&"function"==typeof u.set&&Array.isArray(s))"function"==typeof u.fromArray?u.fromArray(s):u.set(...s);else if(null!==u&&"object"==typeof u&&"function"==typeof u.set&&"number"==typeof s)"function"==typeof u.setScalar?u.setScalar(s):u.set(s);else if(o instanceof nb&&"uniforms"===l&&cv.obj(s)){cv.obj(o.uniforms)||(o.uniforms={});let e=o.uniforms;for(let t in s){let n=s[t],i=e[t];i?Object.assign(i,n):e[t]={...n}}}else o[l]=s,a&&!a.linear&&cE.includes(l)&&null!=(i=o[l])&&i.isTexture&&1023===o[l].format&&1009===o[l].type&&(o[l].colorSpace=I)}if(null!=r&&r.parent&&null!=a&&a.internal&&null!=(n=r.object)&&n.isObject3D&&s!==r.eventCount){let e=r.object,t=a.internal.interaction.indexOf(e);t>-1&&a.internal.interaction.splice(t,1),r.eventCount&&null!==e.raycast&&a.internal.interaction.push(e)}return r&&void 0===r.props.attach&&(r.object.isBufferGeometry?r.props.attach="geometry":r.object.isMaterial&&(r.props.attach="material")),r&&cR(r),e}function cR(e){var t;if(!e.parent)return;null==e.props.onUpdate||e.props.onUpdate(e.object);let n=null==(t=e.root)||null==t.getState?void 0:t.getState();n&&0===n.internal.frames&&n.invalidate()}function cP(e,t){!e.manual&&(e&&e.isOrthographicCamera?(e.left=-(t.width/2),e.right=t.width/2,e.top=t.height/2,e.bottom=-(t.height/2)):e.aspect=t.width/t.height,e.updateProjectionMatrix())}let cI=e=>null==e?void 0:e.isObject3D;function cL(e){return(e.eventObject||e.object).uuid+"/"+e.index+e.instanceId}function cN(e,t,n,i){let r=n.get(t);r&&(n.delete(t),0===n.size&&(e.delete(i),r.target.releasePointerCapture(i)))}let cU=e=>!!(null!=e&&e.render),cD=E.createContext(null);function cO(){let e=E.useContext(cD);if(!e)throw Error("R3F: Hooks can only be used within the Canvas component!");return e}function cF(e=e=>e,t){return cO()(e,t)}function cz(e,t=0){let n=cO(),i=n.getState().internal.subscribe,r=ch(e);return cc(()=>i(r,t,n),[t,i,n]),null}let cB=new WeakMap;function ck(e,t){return function(n,...i){var r;let a;return"function"==typeof n&&(null==n||null==(r=n.prototype)?void 0:r.constructor)===n?(a=cB.get(n))||(a=new n,cB.set(n,a)):a=n,e&&e(a),Promise.all(i.map(e=>new Promise((n,i)=>a.load(e,e=>{var t;let i;cI(null==e?void 0:e.scene)&&Object.assign(e,(t=e.scene,i={nodes:{},materials:{},meshes:{}},t&&t.traverse(e=>{e.name&&(i.nodes[e.name]=e),e.material&&!i.materials[e.material.name]&&(i.materials[e.material.name]=e.material),e.isMesh&&!i.meshes[e.name]&&(i.meshes[e.name]=e)}),i)),n(e)},t,t=>i(Error(`Could not load ${e}: ${null==t?void 0:t.message}`))))))}}function cH(e,t,n,i){let r=Array.isArray(t)?t:[t],a=u6(ck(n,i),[e,...r],!1,{equal:cv.equ});return Array.isArray(t)?a:a[0]}cH.preload=function(e,t,n){let i,r=Array.isArray(t)?t:[t];u6(ck(n),[e,...r],!0,i)},cH.clear=function(e,t){var n=[e,...Array.isArray(t)?t:[t]];if(void 0===n||0===n.length)u4.splice(0,u4.length);else{let e=u4.find(e=>u5(n,e.keys,e.equal));e&&e.remove()}};var cV={exports:{}},cG={exports:{}};cG.exports;let cW=(T||(T=1,M||(M=1,cG.exports=function(e){function t(e,t,n,i){return new iJ(e,t,n,i)}function n(){}function i(e){var t="https://react.dev/errors/"+e;if(1sT||(e.current=sM[sT],sM[sT]=null,sT--)}function h(e,t){sM[++sT]=e.current,e.current=t}function d(e){var t=42&e;if(0!==t)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return 261888&e;case 262144:case 524288:case 1048576:case 2097152:return 3932160&e;case 4194304:case 8388608:case 0x1000000:case 0x2000000:return 0x3c00000&e;case 0x4000000:return 0x4000000;case 0x8000000:return 0x8000000;case 0x10000000:return 0x10000000;case 0x20000000:return 0x20000000;case 0x40000000:return 0;default:return e}}function p(e,t,n){var i=e.pendingLanes;if(0===i)return 0;var r=0,a=e.suspendedLanes,s=e.pingedLanes;e=e.warmLanes;var o=0x7ffffff&i;return 0!==o?0!=(i=o&~a)?r=d(i):0!=(s&=o)?r=d(s):n||0!=(n=o&~e)&&(r=d(n)):0!=(o=i&~a)?r=d(o):0!==s?r=d(s):n||0!=(n=i&~e)&&(r=d(n)),0===r?0:0!==t&&t!==r&&(t&a)==0&&((a=r&-r)>=(n=t&-t)||32===a&&(4194048&n)!=0)?t:r}function f(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)==0}function m(){var e=sI;return(0x3c00000&(sI<<=1))==0&&(sI=4194304),e}function g(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function v(e,t){e.pendingLanes|=t,0x10000000!==t&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function _(e,t,n){e.pendingLanes|=t,e.suspendedLanes&=~t;var i=31-sE(t);e.entangledLanes|=t,e.entanglements[i]=0x40000000|e.entanglements[i]|261930&n}function y(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var i=31-sE(n),r=1<)":-1r||l[i]!==u[r]){var c=` +`+l[i].replace(" at new "," at ");return e.displayName&&c.includes("")&&(c=c.replace("",e.displayName)),c}while(1<=i&&0<=r)break}}}finally{sY=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:"")?T(n):""}function C(e){try{var t="",n=null;do t+=function(e,t){switch(e.tag){case 26:case 27:case 5:return T(e.type);case 16:return T("Lazy");case 13:return e.child!==t&&null!==t?T("Suspense Fallback"):T("Suspense");case 19:return T("SuspenseList");case 0:case 15:return A(e.type,!1);case 11:return A(e.type.render,!1);case 1:return A(e.type,!0);case 31:return T("Activity");default:return""}}(e,n),n=e,e=e.return;while(e)return t}catch(e){return` +Error generating stack: `+e.message+` +`+e.stack}}function R(e,t){if("object"==typeof e&&null!==e){var n=sZ.get(e);return void 0!==n?n:(t={value:e,source:t,stack:C(t)},sZ.set(e,t),t)}return{value:e,source:t,stack:C(t)}}function P(e,t){sJ[sK++]=sQ,sJ[sK++]=s$,s$=e,sQ=t}function I(e,t,n){s0[s1++]=s3,s0[s1++]=s4,s0[s1++]=s2,s2=e;var i=s3;e=s4;var r=32-sE(i)-1;i&=~(1<>=s,r-=s,s3=1<<32-sE(t)+r|n<d?(p=h,h=null):p=h.sibling;var v=m(t,h,s[d],o);if(null===v){null===h&&(h=p);break}e&&h&&null===v.alternate&&n(t,h),i=l(v,i,d),null===c?u=v:c.sibling=v,c=v,h=p}if(d===s.length)return r(t,h),ot&&P(t,d),u;if(null===h){for(;dp?(v=d,d=null):v=d.sibling;var y=m(t,d,_.value,u);if(null===y){null===d&&(d=v);break}e&&d&&null===y.alternate&&n(t,d),s=l(y,s,p),null===h?c=y:h.sibling=y,h=y,d=v}if(_.done)return r(t,d),ot&&P(t,p),c;if(null===d){for(;!_.done;p++,_=o.next())null!==(_=f(t,_.value,u))&&(s=l(_,s,p),null===h?c=_:h.sibling=_,h=_);return ot&&P(t,p),c}for(d=a(d);!_.done;p++,_=o.next())null!==(_=g(d,t,p,_.value,u))&&(e&&null!==_.alternate&&d.delete(null===_.key?p:_.key),s=l(_,s,p),null===h?c=_:h.sibling=_,h=_);return e&&d.forEach(function(e){return n(t,e)}),ot&&P(t,p),c}(c,h,d=v.call(d),p)}if("function"==typeof d.then)return t(c,h,eM(d),p);if(d.$$typeof===rd)return t(c,h,ee(c,d),p);ew(c,d)}return"string"==typeof d&&""!==d||"number"==typeof d||"bigint"==typeof d?(d=""+d,null!==h&&6===h.tag?(r(c,h.sibling),(p=s(h,d)).return=c):(r(c,h),(p=i2(d,c.mode,p)).return=c),u(c=p)):r(c,h)}(c,h,d,p);return oR=null,v}catch(e){if(e===oT||e===oE)throw e;var _=t(29,e,null,c.mode);return _.lanes=p,_.return=c,_}finally{}}}function eA(){for(var e=oU,t=oD=oU=0;ta?a:8);var s=rM.T,o={};rM.T=o,t$(e,!1,t,n);try{var l=r(),u=rM.S;if(null!==u&&u(o,l),null!==l&&"object"==typeof l&&"function"==typeof l.then){var c,h,d=(c=[],h={status:"pending",value:null,reason:null,then:function(e){c.push(e)}},l.then(function(){h.status="fulfilled",h.value=i;for(var e=0;e";case lu:return":has("+(id(e)||"")+")";case lc:return'[role="'+e.value+'"]';case ld:return'"'+e.value+'"';case lh:return'[data-testname="'+e.value+'"]';default:throw Error(i(365))}}function ip(e,t){var n=[];e=[e,0];for(var i=0;ilO&&(t.flags|=128,a=!0,nO(r,!1),t.lanes=4194304)}else{if(!a)if(null!==(e=eK(s))){if(t.flags|=128,a=!0,t.updateQueue=e=e.updateQueue,nD(t,e),nO(r,!0),null===r.tail&&"hidden"===r.tailMode&&!s.alternate&&!ot)return nF(t),null}else 2*sO()-r.renderingStartTime>lO&&0x20000000!==n&&(t.flags|=128,a=!0,nO(r,!1),t.lanes=4194304);r.isBackwards?(s.sibling=t.child,t.child=s):(null!==(e=r.last)?e.sibling=s:t.child=s,r.last=s)}return null!==r.tail?(e=r.tail,r.rendering=e,r.tail=e.sibling,r.renderingStartTime=sO(),e.sibling=null,n=oV.current,h(oV,a?1&n|2:1&n),ot&&P(t,r.treeForkCount),e):(nF(t),null);case 22:case 23:return eJ(t),ej(),r=null!==t.memoizedState,null!==e?null!==e.memoizedState!==r&&(t.flags|=8192):r&&(t.flags|=8192),r?(0x20000000&n)!=0&&(128&t.flags)==0&&(nF(t),6&t.subtreeFlags&&(t.flags|=8192)):nF(t),null!==(n=t.updateQueue)&&nD(t,n.retryQueue),n=null,null!==e&&null!==e.memoizedState&&null!==e.memoizedState.cachePool&&(n=e.memoizedState.cachePool.pool),r=null,null!==t.memoizedState&&null!==t.memoizedState.cachePool&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),null!==e&&c(oM),null;case 24:return n=null,null!==e&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),q(oh),nF(t),null;case 25:case 30:return null}throw Error(i(156,t.tag))}(t.alternate,t,lT);if(null!==n){lv=n;return}if(null!==(t=t.sibling)){lv=t;return}lv=t=e}while(null!==t)0===lw&&(lw=5)}function iD(e,t){do{var n=function(e,t){switch(N(t),t.tag){case 1:return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 3:return q(oh),O(),(65536&(e=t.flags))!=0&&(128&e)==0?(t.flags=-65537&e|128,t):null;case 26:case 27:case 5:return z(t),null;case 31:if(null!==t.memoizedState){if(eJ(t),null===t.alternate)throw Error(i(340));G()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 13:if(eJ(t),null!==(e=t.memoizedState)&&null!==e.dehydrated){if(null===t.alternate)throw Error(i(340));G()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 19:return c(oV),null;case 4:return O(),null;case 10:return q(t.type),null;case 22:case 23:return eJ(t),ej(),null!==e&&c(oM),65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 24:return q(oh),null;default:return null}}(e.alternate,e);if(null!==n){n.flags&=32767,lv=n;return}if(null!==(n=e.return)&&(n.flags|=32768,n.subtreeFlags=0,n.deletions=null),!t&&null!==(e=e.sibling)){lv=e;return}lv=e=n}while(null!==e)lw=6,lv=null}function iO(e,t,n,r,a,s,o,l,u){e.cancelPendingCommit=null;do iH();while(0!==lB)if((6&lm)!=0)throw Error(i(327));if(null!==t){if(t===e.current)throw Error(i(177));if(function(e,t,n,i,r,a){var s=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var o=e.entanglements,l=e.expirationTimes,u=e.hiddenUpdates;for(n=s&~n;0n?32:n;n=rM.T;var a=rq();try{rX(r),rM.T=null,r=lW,lW=null;var s=lk,o=lV;if(lB=0,lH=lk=null,lV=0,(6&lm)!=0)throw Error(i(331));var l=lm;if(lm|=4,il(s.current),it(s,s.current,o,r),lm=l,es(0,!1),sW&&"function"==typeof sW.onPostCommitFiberRoot)try{sW.onPostCommitFiberRoot(sG,s)}catch{}return!0}finally{rX(a),rM.T=n,ik(e,t)}}function iG(e,t,n){t=R(n,t),t=t9(e.stateNode,t,2),null!==(e=eO(e,t,2))&&(v(e,2),ea(e))}function iW(e,t,n){if(3===e.tag)iG(e,e,n);else for(;null!==t;){if(3===t.tag){iG(t,e,n);break}if(1===t.tag){var i=t.stateNode;if("function"==typeof t.type.getDerivedStateFromError||"function"==typeof i.componentDidCatch&&(null===lz||!lz.has(i))){e=R(n,e),null!==(i=eO(t,n=t7(2),2))&&(ne(n,i,t,e),v(i,2),ea(i));break}}t=t.return}}function ij(e,t,n){var i=e.pingCache;if(null===i){i=e.pingCache=new lf;var r=new Set;i.set(t,r)}else void 0===(r=i.get(t))&&(r=new Set,i.set(t,r));r.has(n)||(lM=!0,r.add(n),e=iX.bind(null,e,t,n),t.then(e,e))}function iX(e,t,n){var i=e.pingCache;null!==i&&i.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,lg===e&&(l_&n)===n&&(4===lw||3===lw&&(0x3c00000&l_)===l_&&300>sO()-lU?(2&lm)==0&&iT(e,0):lC|=n,lP===l_&&(lP=0)),ea(e)}function iq(e,t){0===t&&(t=m()),null!==(e=eP(e,t))&&(v(e,t),ea(e))}function iY(e){var t=e.memoizedState,n=0;null!==t&&(n=t.retryLane),iq(e,n)}function iZ(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,a=e.memoizedState;null!==a&&(n=a.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(i(314))}null!==r&&r.delete(t),iq(e,n)}function iJ(e,t,n,i){this.tag=e,this.key=n,this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null,this.index=0,this.refCleanup=this.ref=null,this.pendingProps=t,this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null,this.mode=i,this.subtreeFlags=this.flags=0,this.deletions=null,this.childLanes=this.lanes=0,this.alternate=null}function iK(e){return!(!(e=e.prototype)||!e.isReactComponent)}function i$(e,n){var i=e.alternate;return null===i?((i=t(e.tag,n,e.key,e.mode)).elementType=e.elementType,i.type=e.type,i.stateNode=e.stateNode,i.alternate=e,e.alternate=i):(i.pendingProps=n,i.type=e.type,i.flags=0,i.subtreeFlags=0,i.deletions=null),i.flags=0x3e00000&e.flags,i.childLanes=e.childLanes,i.lanes=e.lanes,i.child=e.child,i.memoizedProps=e.memoizedProps,i.memoizedState=e.memoizedState,i.updateQueue=e.updateQueue,n=e.dependencies,i.dependencies=null===n?null:{lanes:n.lanes,firstContext:n.firstContext},i.sibling=e.sibling,i.index=e.index,i.ref=e.ref,i.refCleanup=e.refCleanup,i}function iQ(e,t){e.flags&=0x3e00002;var n=e.alternate;return null===n?(e.childLanes=0,e.lanes=t,e.child=null,e.subtreeFlags=0,e.memoizedProps=null,e.memoizedState=null,e.updateQueue=null,e.dependencies=null,e.stateNode=null):(e.childLanes=n.childLanes,e.lanes=n.lanes,e.child=n.child,e.subtreeFlags=0,e.deletions=null,e.memoizedProps=n.memoizedProps,e.memoizedState=n.memoizedState,e.updateQueue=n.updateQueue,e.type=n.type,e.dependencies=null===(t=n.dependencies)?null:{lanes:t.lanes,firstContext:t.firstContext}),e}function i0(e,n,r,a,s,o){var l=0;if(a=e,"function"==typeof e)iK(e)&&(l=1);else if("string"==typeof e)l=si&&sv?sr(e,r,s5.current)?26:sb(e)?27:5:si?sr(e,r,s5.current)?26:5:sv&&sb(e)?27:5;else o:switch(e){case r_:return(e=t(31,r,n,s)).elementType=r_,e.lanes=o,e;case rl:return i1(r.children,s,o,n);case ru:l=8,s|=24;break;case rc:return(e=t(12,r,n,2|s)).elementType=rc,e.lanes=o,e;case rf:return(e=t(13,r,n,s)).elementType=rf,e.lanes=o,e;case rm:return(e=t(19,r,n,s)).elementType=rm,e.lanes=o,e;default:if("object"==typeof e&&null!==e)switch(e.$$typeof){case rd:l=10;break o;case rh:l=9;break o;case rp:l=11;break o;case rg:l=14;break o;case rv:l=16,a=null;break o}l=29,r=Error(i(130,null===e?"null":typeof e,"")),a=null}return(n=t(l,r,n,s)).elementType=e,n.type=a,n.lanes=o,n}function i1(e,n,i,r){return(e=t(7,e,r,n)).lanes=i,e}function i2(e,n,i){return(e=t(6,e,null,n)).lanes=i,e}function i3(e){var n=t(18,null,null,0);return n.stateNode=e,n}function i4(e,n,i){return(n=t(4,null!==e.children?e.children:[],e.key,n)).lanes=i,n.stateNode={containerInfo:e.containerInfo,pendingChildren:null,implementation:e.implementation},n}function i5(e,t,n,i,r,a,s,o,l){this.tag=1,this.containerInfo=e,this.pingCache=this.current=this.pendingChildren=null,this.timeoutHandle=rB,this.callbackNode=this.next=this.pendingContext=this.context=this.cancelPendingCommit=null,this.callbackPriority=0,this.expirationTimes=g(-1),this.entangledLanes=this.shellSuspendCounter=this.errorRecoveryDisabledLanes=this.expiredLanes=this.warmLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0,this.entanglements=g(0),this.hiddenUpdates=g(null),this.identifierPrefix=i,this.onUncaughtError=r,this.onCaughtError=a,this.onRecoverableError=s,this.pooledCache=null,this.pooledCacheLanes=0,this.formState=l,this.incompleteTransitions=new Map}function i6(e,n,i,r,a,s,o,l,u,c,h,d){return e=new i5(e,n,i,o,u,c,h,d,l),n=1,!0===s&&(n|=24),s=t(3,null,null,n),e.current=s,s.stateNode=e,n=en(),n.refCount++,e.pooledCache=n,n.refCount++,s.memoizedState={element:r,isDehydrated:i,cache:n},eN(s),e}function i8(e){var t=e._reactInternals;if(void 0===t)throw"function"==typeof e.render?Error(i(188)):Error(i(268,e=Object.keys(e).join(",")));return null===(e=null!==(e=s(t))?function e(t){var n=t.tag;if(5===n||26===n||27===n||6===n)return t;for(t=t.child;null!==t;){if(null!==(n=e(t)))return n;t=t.sibling}return null}(e):null)?null:rA(e.stateNode)}function i9(e,t,n,i,r,a){r=sw,null===i.context?i.context=r:i.pendingContext=r,(i=eD(t)).payload={element:n},null!==(a=void 0===a?null:a)&&(i.callback=a),null!==(n=eO(e,i,t))&&(i_(n,e,t),eF(n,e,t))}function i7(e,t){if(null!==(e=e.memoizedState)&&null!==e.dehydrated){var n=e.retryLane;e.retryLane=0!==n&&n>>=0)?32:31-(sA(e)/sC|0)|0},sA=Math.log,sC=Math.LN2,sR=256,sP=262144,sI=4194304,sL=ri.unstable_scheduleCallback,sN=ri.unstable_cancelCallback,sU=ri.unstable_shouldYield,sD=ri.unstable_requestPaint,sO=ri.unstable_now,sF=ri.unstable_ImmediatePriority,sz=ri.unstable_UserBlockingPriority,sB=ri.unstable_NormalPriority,sk=ri.unstable_IdlePriority,sH=ri.log,sV=ri.unstable_setDisableYieldValue,sG=null,sW=null,sj="function"==typeof Object.is?Object.is:function(e,t){return e===t&&(0!==e||1/e==1/t)||e!=e&&t!=t},sX="function"==typeof reportError?reportError:function(e){if("object"==typeof window&&"function"==typeof window.ErrorEvent){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:"object"==typeof e&&null!==e&&"string"==typeof e.message?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if("object"==typeof w.default&&"function"==typeof w.default.emit)return void w.default.emit("uncaughtException",e);console.error(e)},sq=Object.prototype.hasOwnProperty,sY=!1,sZ=new WeakMap,sJ=[],sK=0,s$=null,sQ=0,s0=[],s1=0,s2=null,s3=1,s4="",s5=u(null),s6=u(null),s8=u(null),s9=u(null),s7=null,oe=null,ot=!1,on=null,oi=!1,or=Error(i(519)),oa=u(null),os=null,oo=null,ol="u">typeof AbortController?AbortController:function(){var e=[],t=this.signal={aborted:!1,addEventListener:function(t,n){e.push(n)}};this.abort=function(){t.aborted=!0,e.forEach(function(e){return e()})}},ou=ri.unstable_scheduleCallback,oc=ri.unstable_NormalPriority,oh={$$typeof:rd,Consumer:null,Provider:null,_currentValue:null,_currentValue2:null,_threadCount:0},od=null,op=null,of=!1,om=!1,og=!1,ov=0,o_=null,oy=0,ox=0,ob=null,oS=rM.S;rM.S=function(e,t){lD=sO(),"object"==typeof t&&null!==t&&"function"==typeof t.then&&function(e){if(null===o_){var t=o_=[];oy=0,ox=ed(),ob={status:"pending",value:void 0,then:function(e){t.push(e)}}}oy++,e.then(ep,ep)}(t),null!==oS&&oS(e,t)};var oM=u(null),oT=Error(i(460)),ow=Error(i(474)),oE=Error(i(542)),oA={then:function(){}},oC=null,oR=null,oP=0,oI=eE(!0),oL=eE(!1),oN=[],oU=0,oD=0,oO=!1,oF=!1,oz=u(null),oB=u(0),ok=u(null),oH=null,oV=u(0),oG=0,oW=null,oj=null,oX=null,oq=!1,oY=!1,oZ=!1,oJ=0,oK=0,o$=null,oQ=0,o0={readContext:Q,use:tt,useCallback:e$,useContext:e$,useEffect:e$,useImperativeHandle:e$,useLayoutEffect:e$,useInsertionEffect:e$,useMemo:e$,useReducer:e$,useRef:e$,useState:e$,useDebugValue:e$,useDeferredValue:e$,useTransition:e$,useSyncExternalStore:e$,useId:e$,useHostTransitionStatus:e$,useFormState:e$,useActionState:e$,useOptimistic:e$,useMemoCache:e$,useCacheRefresh:e$};o0.useEffectEvent=e$;var o1={readContext:Q,use:tt,useCallback:function(e,t){return e8().memoizedState=[e,void 0===t?null:t],e},useContext:Q,useEffect:tI,useImperativeHandle:function(e,t,n){n=null!=n?n.concat([e]):null,tR(4194308,4,tO.bind(null,t,e),n)},useLayoutEffect:function(e,t){return tR(4194308,4,e,t)},useInsertionEffect:function(e,t){tR(4,2,e,t)},useMemo:function(e,t){var n=e8();t=void 0===t?null:t;var i=e();return n.memoizedState=[i,t],i},useReducer:function(e,t,n){var i=e8();if(void 0!==n)var r=n(t);else r=t;return i.memoizedState=i.baseState=r,i.queue=e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:r},e=e.dispatch=tZ.bind(null,oW,e),[i.memoizedState,e]},useRef:function(e){return e8().memoizedState={current:e}},useState:function(e){var t=(e=tp(e)).queue,n=tJ.bind(null,oW,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:tz,useDeferredValue:function(e,t){return tH(e8(),e,t)},useTransition:function(){var e=tp(!1);return e=tG.bind(null,oW,e.queue,!0,!1),e8().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var r=oW,a=e8();if(ot){if(void 0===n)throw Error(i(407));n=n()}else{if(n=t(),null===lg)throw Error(i(349));(127&l_)!=0||tl(r,t,n)}a.memoizedState=n;var s={value:n,getSnapshot:t};return a.queue=s,tI(tc.bind(null,r,s,e),[e]),r.flags|=2048,tA(9,{destroy:void 0},tu.bind(null,r,s,n,t),null),n},useId:function(){var e=e8(),t=lg.identifierPrefix;if(ot){var n=s4,i=s3;t="_"+t+"R_"+(n=(i&~(1<<32-sE(i)-1)).toString(32)+n),0<(n=oJ++)&&(t+="H"+n.toString(32)),t+="_"}else t="_"+t+"r_"+(n=oQ++).toString(32)+"_";return e.memoizedState=t},useHostTransitionStatus:tj,useFormState:tS,useActionState:tS,useOptimistic:function(e){var t=e8();t.memoizedState=t.baseState=e;var n={pending:null,lanes:0,dispatch:null,lastRenderedReducer:null,lastRenderedState:null};return t.queue=n,t=t$.bind(null,oW,!0,n),n.dispatch=t,[e,t]},useMemoCache:tn,useCacheRefresh:function(){return e8().memoizedState=tY.bind(null,oW)},useEffectEvent:function(e){var t=e8(),n={impl:e};return t.memoizedState=n,function(){if((2&lm)!=0)throw Error(i(440));return n.impl.apply(void 0,arguments)}}},o2={readContext:Q,use:tt,useCallback:tB,useContext:Q,useEffect:tL,useImperativeHandle:tF,useInsertionEffect:tU,useLayoutEffect:tD,useMemo:tk,useReducer:tr,useRef:tC,useState:function(){return tr(ti)},useDebugValue:tz,useDeferredValue:function(e,t){return tV(e9(),oj.memoizedState,e,t)},useTransition:function(){var e=tr(ti)[0],t=e9().memoizedState;return["boolean"==typeof e?e:te(e),t]},useSyncExternalStore:to,useId:tX,useHostTransitionStatus:tj,useFormState:tM,useActionState:tM,useOptimistic:function(e,t){return tf(e9(),oj,e,t)},useMemoCache:tn,useCacheRefresh:tq};o2.useEffectEvent=tN;var o3={readContext:Q,use:tt,useCallback:tB,useContext:Q,useEffect:tL,useImperativeHandle:tF,useInsertionEffect:tU,useLayoutEffect:tD,useMemo:tk,useReducer:ts,useRef:tC,useState:function(){return ts(ti)},useDebugValue:tz,useDeferredValue:function(e,t){var n=e9();return null===oj?tH(n,e,t):tV(n,oj.memoizedState,e,t)},useTransition:function(){var e=ts(ti)[0],t=e9().memoizedState;return["boolean"==typeof e?e:te(e),t]},useSyncExternalStore:to,useId:tX,useHostTransitionStatus:tj,useFormState:tE,useActionState:tE,useOptimistic:function(e,t){var n=e9();return null!==oj?tf(n,oj,e,t):(n.baseState=e,[e,n.queue.dispatch])},useMemoCache:tn,useCacheRefresh:tq};o3.useEffectEvent=tN;var o4={enqueueSetState:function(e,t,n){e=e._reactInternals;var i=ig(),r=eD(i);r.payload=t,null!=n&&(r.callback=n),null!==(t=eO(e,r,i))&&(i_(t,e,i),eF(t,e,i))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var i=ig(),r=eD(i);r.tag=1,r.payload=t,null!=n&&(r.callback=n),null!==(t=eO(e,r,i))&&(i_(t,e,i),eF(t,e,i))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=ig(),i=eD(n);i.tag=2,null!=t&&(i.callback=t),null!==(t=eO(e,i,n))&&(i_(t,e,n),eF(t,e,n))}},o5=Error(i(461)),o6=!1,o8={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null},o9=!1,o7=!1,le=!1,lt="function"==typeof WeakSet?WeakSet:Set,ln=null,li=null,lr=!1,la=null,ls=8192,lo={getCacheForType:function(e){var t=Q(oh),n=t.data.get(e);return void 0===n&&(n=e(),t.data.set(e,n)),n},cacheSignal:function(){return Q(oh).controller.signal}},ll=0,lu=1,lc=2,lh=3,ld=4;if("function"==typeof Symbol&&Symbol.for){var lp=Symbol.for;ll=lp("selector.component"),lu=lp("selector.has_pseudo_class"),lc=lp("selector.role"),lh=lp("selector.test_id"),ld=lp("selector.text")}var lf="function"==typeof WeakMap?WeakMap:Map,lm=0,lg=null,lv=null,l_=0,ly=0,lx=null,lb=!1,lS=!1,lM=!1,lT=0,lw=0,lE=0,lA=0,lC=0,lR=0,lP=0,lI=null,lL=null,lN=!1,lU=0,lD=0,lO=1/0,lF=null,lz=null,lB=0,lk=null,lH=null,lV=0,lG=0,lW=null,lj=null,lX=0,lq=null;return rt.attemptContinuousHydration=function(e){if(13===e.tag||31===e.tag){var t=eP(e,0x4000000);null!==t&&i_(t,e,0x4000000),re(e,0x4000000)}},rt.attemptHydrationAtCurrentPriority=function(e){if(13===e.tag||31===e.tag){var t=ig(),n=eP(e,t=b(t));null!==n&&i_(n,e,t),re(e,t)}},rt.attemptSynchronousHydration=function(e){switch(e.tag){case 3:if((e=e.stateNode).current.memoizedState.isDehydrated){var t=d(e.pendingLanes);if(0!==t){for(e.pendingLanes|=2,e.entangledLanes|=2;t;){var n=1<<31-sE(t);e.entanglements[1]|=n,t&=~n}ea(e),(6&lm)==0&&(lO=sO()+500,es(0,!1))}}break;case 31:case 13:null!==(t=eP(e,2))&&i_(t,e,2),iS(),re(e,2)}},rt.batchedUpdates=function(e,t){return e(t)},rt.createComponentSelector=function(e){return{$$typeof:ll,value:e}},rt.createContainer=function(e,t,n,i,r,a,s,o,l,u){return i6(e,t,!1,null,n,i,a,null,s,o,l,u)},rt.createHasPseudoClassSelector=function(e){return{$$typeof:lu,value:e}},rt.createHydrationContainer=function(e,t,n,i,r,a,s,o,l,u,c,h,d,p){var f;return(e=i6(n,i,!0,e,r,a,o,p,l,u,c,h)).context=sw,n=e.current,(r=eD(i=b(i=ig()))).callback=null!=(f=t)?f:null,eO(n,r,i),t=i,e.current.lanes=t,v(e,t),ea(e),e},rt.createPortal=function(e,t,n){var i=3=c&&s>=d&&a<=h&&o<=p){e.splice(t,1);break}if(r!==c||n.width!==u.width||po){if(!(s!==d||n.height!==u.height||ha)){c>r&&(u.width+=c-r,u.x=r),hs&&(u.height+=d-s,u.y=s),pn&&(n=l)),l ")+` + +No matching component was found for: + `+e.join(" > ")}return null},rt.getPublicRootInstance=function(e){if(!(e=e.current).child)return null;switch(e.child.tag){case 27:case 5:return rA(e.child.stateNode);default:return e.child.stateNode}},rt.injectIntoDevTools=function(){var e={bundleType:0,version:rT,rendererPackageName:rw,currentDispatcherRef:rM,reconcilerVersion:"19.2.0"};if(null!==rE&&(e.rendererConfig=rE),typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>"u")e=!1;else{var t=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(t.isDisabled||!t.supportsFiber)e=!0;else{try{sG=t.inject(e),sW=t}catch{}e=!!t.checkDCE}}return e},rt.isAlreadyRendering=function(){return(6&lm)!=0},rt.observeVisibleRects=function(e,t,n,r){if(!r7)throw Error(i(363));var a=as(e=im(e,t),n,r).disconnect;return{disconnect:function(){a()}}},rt.shouldError=function(){return null},rt.shouldSuspend=function(){return!1},rt.startHostTransition=function(e,t,r,a){if(5!==e.tag)throw Error(i(476));var s=tW(e).queue;tG(e,s,t,r4,null===r?n:function(){var t=tW(e);return null===t.next&&(t=e.alternate.memoizedState),tK(e,t.next.queue,{},ig()),r(a)})},rt.updateContainer=function(e,t,n,i){var r=t.current,a=ig();return i9(r,a,e,t,n,i),a},rt.updateContainerSync=function(e,t,n,i){return i9(t.current,2,e,t,n,i),2},rt},cG.exports.default=cG.exports,Object.defineProperty(cG.exports,"__esModule",{value:!0})),cV.exports=cG.exports),(b=cV.exports)&&b.__esModule&&Object.prototype.hasOwnProperty.call(b,"default"))?b.default:b,cj={},cX=/^three(?=[A-Z])/,cq=e=>`${e[0].toUpperCase()}${e.slice(1)}`,cY=0;function cZ(e){if("function"==typeof e){let t=`${cY++}`;return cj[t]=e,t}Object.assign(cj,e)}function cJ(e,t){let n=cq(e),i=cj[n];if("primitive"!==e&&!i)throw Error(`R3F: ${n} is not part of the THREE namespace! Did you forget to extend? See: https://docs.pmnd.rs/react-three-fiber/api/objects#using-3rd-party-objects-declaratively`);if("primitive"===e&&!t.object)throw Error("R3F: Primitives without 'object' are invalid!");if(void 0!==t.args&&!Array.isArray(t.args))throw Error("R3F: The args prop must be an array!")}function cK(e){if(e.isHidden){var t;e.props.attach&&null!=(t=e.parent)&&t.object?cS(e.parent,e):cI(e.object)&&!1!==e.props.visible&&(e.object.visible=!0),e.isHidden=!1,cR(e)}}function c$(e,t,n){let i=t.root.getState();if(e.parent||e.object===i.scene){if(!t.object){var r,a;let e=cj[cq(t.type)];t.object=null!=(r=t.props.object)?r:new e(...null!=(a=t.props.args)?a:[]),t.object.__r3f=t}if(cC(t.object,t.props),t.props.attach)cS(e,t);else if(cI(t.object)&&cI(e.object)){let i=e.object.children.indexOf(null==n?void 0:n.object);if(n&&-1!==i){let n=e.object.children.indexOf(t.object);-1!==n?(e.object.children.splice(n,1),e.object.children.splice(n{try{e.dispose()}catch{}};"u">typeof IS_REACT_ACT_ENVIRONMENT?t():(0,u8.unstable_scheduleCallback)(u8.unstable_IdlePriority,t)}}function c2(e,t,n){if(!t)return;t.parent=null;let i=e.children.indexOf(t);-1!==i&&e.children.splice(i,1),t.props.attach?cM(e,t):cI(t.object)&&cI(e.object)&&(e.object.remove(t.object),function(e,t){let{internal:n}=e.getState();n.interaction=n.interaction.filter(e=>e!==t),n.initialHits=n.initialHits.filter(e=>e!==t),n.hovered.forEach((e,i)=>{(e.eventObject===t||e.object===t)&&n.hovered.delete(i)}),n.capturedMap.forEach((e,i)=>{cN(n.capturedMap,t,e,i)})}(co(t),t.object));let r=null!==t.props.dispose&&!1!==n;for(let e=t.children.length-1;e>=0;e--){let n=t.children[e];c2(t,n,r)}t.children.length=0,delete t.object.__r3f,r&&"primitive"!==t.type&&"Scene"!==t.object.type&&c1(t.object),void 0===n&&cR(t)}let c3=[],c4=()=>{},c5={},c6=0,c8=(S={isPrimaryRenderer:!1,warnsIfNotActing:!1,supportsMutation:!0,supportsPersistence:!1,supportsHydration:!1,createInstance:function(e,t,n){var i;return cJ(e=cq(e)in cj?e:e.replace(cX,""),t),"primitive"===e&&null!=(i=t.object)&&i.__r3f&&delete t.object.__r3f,cy(t.object,n,e,t)},removeChild:c2,appendChild:cQ,appendInitialChild:cQ,insertBefore:c0,appendChildToContainer(e,t){let n=e.getState().scene.__r3f;t&&n&&cQ(n,t)},removeChildFromContainer(e,t){let n=e.getState().scene.__r3f;t&&n&&c2(n,t)},insertInContainerBefore(e,t,n){let i=e.getState().scene.__r3f;t&&n&&i&&c0(i,t,n)},getRootHostContext:()=>c5,getChildHostContext:()=>c5,commitUpdate(e,t,n,i,r){var a,s,o;cJ(t,i);let l=!1;if("primitive"===e.type&&n.object!==i.object||(null==(a=i.args)?void 0:a.length)!==(null==(s=n.args)?void 0:s.length)?l=!0:null!=(o=i.args)&&o.some((e,t)=>{var i;return e!==(null==(i=n.args)?void 0:i[t])})&&(l=!0),l)c3.push([e,{...i},r]);else{let t=function(e,t){let n={};for(let i in t)if(!cT.includes(i)&&!cv.equ(t[i],e.props[i]))for(let e in n[i]=t[i],t)e.startsWith(`${i}-`)&&(n[e]=t[e]);for(let i in e.props){if(cT.includes(i)||t.hasOwnProperty(i))continue;let{root:r,key:a}=cx(e.object,i);if(r.constructor&&0===r.constructor.length){let e=function(e){let t=cw.get(e.constructor);try{t||(t=new e.constructor,cw.set(e.constructor,t))}catch(e){}return t}(r);cv.und(e)||(n[a]=e[a])}else n[a]=0}return n}(e,i);Object.keys(t).length&&(Object.assign(e.props,t),cC(e.object,t))}(null===r.sibling||(4&r.flags)==0)&&function(){for(let[e]of c3){let t=e.parent;if(t)for(let n of(e.props.attach?cM(t,e):cI(e.object)&&cI(t.object)&&t.object.remove(e.object),e.children))n.props.attach?cM(e,n):cI(n.object)&&cI(e.object)&&e.object.remove(n.object);e.isHidden&&cK(e),e.object.__r3f&&delete e.object.__r3f,"primitive"!==e.type&&c1(e.object)}for(let[i,r,a]of c3){i.props=r;let s=i.parent;if(s){let r=cj[cq(i.type)],o=i.object;i.object=null!=(e=i.props.object)?e:new r(...null!=(t=i.props.args)?t:[]),i.object.__r3f=i;var e,t,n=i.object;for(let e of[a,a.alternate])if(null!==e)if("function"==typeof e.ref){null==e.refCleanup||e.refCleanup();let t=e.ref(n);"function"==typeof t&&(e.refCleanup=t)}else e.ref&&(e.ref.current=n);for(let e of(!function(e,t,n){let{internal:i}=e.getState();for(let e=0;e{if(e.eventObject===t||e.object===t){i.hovered.delete(r);let a={...e,eventObject:e.eventObject===t?n:e.eventObject,object:e.object===t?n:e.object};i.hovered.set(cL(a),a)}}),i.capturedMap.forEach(e=>{let i=e.get(t);i&&(e.delete(t),e.set(n,i))})}(co(i),o,i.object),cC(i.object,i.props),i.props.attach?cS(s,i):cI(i.object)&&cI(s.object)&&s.object.add(i.object),i.children))e.props.attach?cS(i,e):cI(e.object)&&cI(i.object)&&i.object.add(e.object);cR(i)}}c3.length=0}()},finalizeInitialChildren:()=>!1,commitMount(){},getPublicInstance:e=>null==e?void 0:e.object,prepareForCommit:()=>null,preparePortalMount:e=>cy(e.getState().scene,e,"",{}),resetAfterCommit:()=>{},shouldSetTextContent:()=>!1,clearContainer:()=>!1,hideInstance:function(e){if(!e.isHidden){var t;e.props.attach&&null!=(t=e.parent)&&t.object?cM(e.parent,e):cI(e.object)&&(e.object.visible=!1),e.isHidden=!0,cR(e)}},unhideInstance:cK,createTextInstance:c4,hideTextInstance:c4,unhideTextInstance:c4,scheduleTimeout:"function"==typeof setTimeout?setTimeout:void 0,cancelTimeout:"function"==typeof clearTimeout?clearTimeout:void 0,noTimeout:-1,getInstanceFromNode:()=>null,beforeActiveInstanceBlur(){},afterActiveInstanceBlur(){},detachDeletedInstance(){},prepareScopeUpdate(){},getInstanceFromScope:()=>null,shouldAttemptEagerTransition:()=>!1,trackSchedulerEvent:()=>{},resolveEventType:()=>null,resolveEventTimeStamp:()=>-1.1,requestPostPaintCallback(){},maySuspendCommit:()=>!1,preloadInstance:()=>!0,suspendInstance(){},waitForCommitToBeReady:()=>null,NotPendingTransition:null,HostTransitionContext:E.createContext(null),setCurrentUpdatePriority(e){c6=e},getCurrentUpdatePriority:()=>c6,resolveUpdatePriority(){var e;if(0!==c6)return c6;switch("u">typeof window&&(null==(e=window.event)?void 0:e.type)){case"click":case"contextmenu":case"dblclick":case"pointercancel":case"pointerdown":case"pointerup":return 2;case"pointermove":case"pointerout":case"pointerover":case"pointerenter":case"pointerleave":case"wheel":return 8;default:return 32}},resetFormInstance(){},rendererPackageName:"@react-three/fiber",rendererVersion:"9.6.1",applyViewTransitionName(e,t,n){},restoreViewTransitionName(e,t){},cancelViewTransitionName(e,t,n){},cancelRootViewTransitionName(e){},restoreRootViewTransitionName(e){},InstanceMeasurement:null,measureInstance:e=>null,wasInstanceInViewport:e=>!0,hasInstanceChanged:(e,t)=>!1,hasInstanceAffectedParent:(e,t)=>!1,suspendOnActiveViewTransition(e,t){},startGestureTransition:()=>null,startViewTransition:()=>null,stopViewTransition(e){},createViewTransitionInstance:e=>null,getCurrentGestureOffset(e){throw Error("startGestureTransition is not yet supported in react-three-fiber.")},cloneMutableInstance:(e,t)=>e,cloneMutableTextInstance:e=>e,cloneRootViewTransitionContainer(e){throw Error("Not implemented.")},removeRootViewTransitionClone(e,t){throw Error("Not implemented.")},createFragmentInstance:e=>null,updateFragmentInstanceFiber(e,t){},commitNewChildToFragmentInstance(e,t){},deleteChildFromFragmentInstance(e,t){},measureClonedInstance:e=>null,maySuspendCommitOnUpdate:(e,t,n)=>!1,maySuspendCommitInSyncRender:(e,t)=>!1,startSuspendingCommit:()=>null,getSuspendedCommitReason:(e,t)=>null},(_=cW(S)).injectIntoDevTools(),_),c9=new Map,c7={objects:"shallow",strict:!1};function he(e){var t,n;let i,r,a,s,o,l,u,c=c9.get(e),h=null==c?void 0:c.fiber,d=null==c?void 0:c.store;c&&console.warn("R3F.createRoot should only be called once!");let p="function"==typeof reportError?reportError:console.error,f=d||(t=hp,n=hf,o=(s=(a=u3((e,i)=>{let r,a=new eE,s=new eE,o=new eE;function l(e=i().camera,t=s,n=i().size){let{width:r,height:u,top:c,left:h}=n,d=r/u;t.isVector3?o.copy(t):o.set(...t);let p=e.getWorldPosition(a).distanceTo(o);if(e&&e.isOrthographicCamera)return{width:r/e.zoom,height:u/e.zoom,top:c,left:h,factor:1,distance:p,aspect:d};{let t=2*Math.tan(e.fov*Math.PI/180/2)*p,n=r/u*t;return{width:n,height:t,top:c,left:h,factor:r/n,distance:p,aspect:d}}}let u=t=>e(e=>({performance:{...e.performance,current:t}})),c=new Y;return{set:e,get:i,gl:null,camera:null,raycaster:null,events:{priority:1,enabled:!0,connected:!1},scene:null,xr:null,invalidate:(e=1)=>t(i(),e),advance:(e,t)=>n(e,t,i()),legacy:!1,linear:!1,flat:!1,controls:null,clock:new sw,pointer:c,mouse:c,frameloop:"always",onPointerMissed:void 0,performance:{current:1,min:.5,max:1,debounce:200,regress:()=>{let e=i();r&&clearTimeout(r),e.performance.current!==e.performance.min&&u(e.performance.min),r=setTimeout(()=>u(i().performance.max),e.performance.debounce)}},size:{width:0,height:0,top:0,left:0},viewport:{initialDpr:0,dpr:0,width:0,height:0,top:0,left:0,aspect:0,distance:0,factor:0,getCurrentViewport:l},setEvents:t=>e(e=>({...e,events:{...e.events,...t}})),setSize:(t,n,r=0,a=0)=>{let o=i().camera,u={width:t,height:n,top:r,left:a};e(e=>({size:u,viewport:{...e.viewport,...l(o,s,u)}}))},setDpr:t=>e(e=>{let n=cm(t);return{viewport:{...e.viewport,dpr:n,initialDpr:e.viewport.initialDpr||n}}}),setFrameloop:(t="always")=>{let n=i().clock;n.stop(),n.elapsedTime=0,"never"!==t&&(n.start(),n.elapsedTime=0),e(()=>({frameloop:t}))},previousRoot:void 0,internal:{interaction:[],hovered:new Map,subscribers:[],initialClick:[0,0],initialHits:[],capturedMap:new Map,lastEvent:E.createRef(),active:!1,frames:0,priority:0,subscribe:(e,t,n)=>{let r=i().internal;return r.priority=r.priority+ +(t>0),r.subscribers.push({ref:e,priority:t,store:n}),r.subscribers=r.subscribers.sort((e,t)=>e.priority-t.priority),()=>{let n=i().internal;null!=n&&n.subscribers&&(n.priority=n.priority-(t>0),n.subscribers=n.subscribers.filter(t=>t.ref!==e))}}}}})).getState()).size,l=s.viewport.dpr,u=s.camera,a.subscribe(()=>{let{camera:e,size:t,viewport:n,gl:i,set:r}=a.getState();if(t.width!==o.width||t.height!==o.height||n.dpr!==l){o=t,l=n.dpr,cP(e,t),n.dpr>0&&i.setPixelRatio(n.dpr);let r="u">typeof HTMLCanvasElement&&i.domElement instanceof HTMLCanvasElement;i.setSize(t.width,t.height,r)}e!==u&&(u=e,r(t=>({viewport:{...t.viewport,...t.viewport.getCurrentViewport(e)}})))}),a.subscribe(e=>t(e)),a),m=h||c8.createContainer(f,1,null,!1,null,"",p,p,p,null);c||c9.set(e,{fiber:m,store:f});let g=!1,v=null;return{async configure(t={}){var n,a;let s;v=new Promise(e=>s=e);let{gl:o,size:l,scene:u,events:c,onCreated:h,shadows:d=!1,linear:p=!1,flat:m=!1,legacy:_=!1,orthographic:y=!1,frameloop:x="always",dpr:b=[1,2],performance:S,raycaster:M,camera:T,onPointerMissed:w}=t,E=f.getState(),A=E.gl;if(!E.gl){let t={canvas:e,powerPreference:"high-performance",antialias:!0,alpha:!0},n="function"==typeof o?await o(t):o;A=cU(n)?n:new uK({...t,...o}),E.set({gl:A})}let C=E.raycaster;C||E.set({raycaster:C=new s3});let{params:R,...P}=M||{};if(cv.equ(P,C,c7)||cC(C,{...P}),cv.equ(R,C.params,c7)||cC(C,{params:{...C.params,...R}}),!E.camera||E.camera===r&&!cv.equ(r,T,c7)){r=T;let e=null==T?void 0:T.isCamera,t=e?T:y?new sn(0,0,0,0,.1,1e3):new nE(75,0,.1,1e3);!e&&(t.position.z=5,T&&(cC(t,T),!t.manual&&("aspect"in T||"left"in T||"right"in T||"bottom"in T||"top"in T)&&(t.manual=!0,t.updateProjectionMatrix())),E.camera||null!=T&&T.rotation||t.lookAt(0,0,0)),E.set({camera:t}),C.camera=t}if(!E.scene){let e;null!=u&&u.isScene?cy(e=u,f,"",{}):(cy(e=new nL,f,"",{}),u&&cC(e,u)),E.set({scene:e})}c&&!E.events.handlers&&E.set({events:c(f)});let N=function(e,t){if(!t&&"u">typeof HTMLCanvasElement&&e instanceof HTMLCanvasElement&&e.parentElement){let{width:t,height:n,top:i,left:r}=e.parentElement.getBoundingClientRect();return{width:t,height:n,top:i,left:r}}return!t&&"u">typeof OffscreenCanvas&&e instanceof OffscreenCanvas?{width:e.width,height:e.height,top:0,left:0}:{width:0,height:0,top:0,left:0,...t}}(e,l);if(cv.equ(N,E.size,c7)||E.setSize(N.width,N.height,N.top,N.left),b&&E.viewport.dpr!==cm(b)&&E.setDpr(b),E.frameloop!==x&&E.setFrameloop(x),E.onPointerMissed||E.set({onPointerMissed:w}),S&&!cv.equ(S,E.performance,c7)&&E.set(e=>({performance:{...e.performance,...S}})),!E.xr){let e=(e,t)=>{let n=f.getState();"never"!==n.frameloop&&hf(e,!0,n,t)},t=()=>{let t=f.getState();t.gl.xr.enabled=t.gl.xr.isPresenting,t.gl.xr.setAnimationLoop(t.gl.xr.isPresenting?e:null),t.gl.xr.isPresenting||hp(t)},i={connect(){let e=f.getState().gl;e.xr.addEventListener("sessionstart",t),e.xr.addEventListener("sessionend",t)},disconnect(){let e=f.getState().gl;e.xr.removeEventListener("sessionstart",t),e.xr.removeEventListener("sessionend",t)}};"function"==typeof(null==(n=A.xr)?void 0:n.addEventListener)&&i.connect(),E.set({xr:i})}if(A.shadowMap){let e=A.shadowMap.enabled,t=A.shadowMap.type;A.shadowMap.enabled=!!d,cv.boo(d)?A.shadowMap.type=2:cv.str(d)?A.shadowMap.type=null!=(a=({basic:0,percentage:1,soft:2,variance:3})[d])?a:2:cv.obj(d)&&Object.assign(A.shadowMap,d),(e!==A.shadowMap.enabled||t!==A.shadowMap.type)&&(A.shadowMap.needsUpdate=!0)}return eu.enabled=!_,g||(A.outputColorSpace=p?L:I,A.toneMapping=4*!m),E.legacy!==_&&E.set(()=>({legacy:_})),E.linear!==p&&E.set(()=>({linear:p})),E.flat!==m&&E.set(()=>({flat:m})),!o||cv.fun(o)||cU(o)||cv.equ(o,A,c7)||cC(A,o),i=h,g=!0,s(),this},render(t){return g||v||this.configure(),v.then(()=>{c8.updateContainer((0,u9.jsx)(ht,{store:f,children:t,onCreated:i,rootElement:e}),m,null,()=>void 0)}),f},unmount(){hn(e)}}}function ht({store:e,children:t,onCreated:n,rootElement:i}){return cc(()=>{let t=e.getState();t.set(e=>({internal:{...e.internal,active:!0}})),n&&n(t),e.getState().events.connected||null==t.events.connect||t.events.connect(i)},[]),(0,u9.jsx)(cD.Provider,{value:e,children:t})}function hn(e,t){let n=c9.get(e),i=null==n?void 0:n.fiber;if(i){let r=null==n?void 0:n.store.getState();r&&(r.internal.active=!1),c8.updateContainer(null,i,null,()=>{r&&setTimeout(()=>{try{null==r.events.disconnect||r.events.disconnect(),null==(n=r.gl)||null==(i=n.renderLists)||null==i.dispose||i.dispose(),null==(a=r.gl)||null==a.forceContextLoss||a.forceContextLoss(),null!=(s=r.gl)&&s.xr&&r.xr.disconnect();var n,i,a,s,o=r.scene;for(let e in"Scene"!==o.type&&(null==o.dispose||o.dispose()),o){let t=o[e];(null==t?void 0:t.type)!=="Scene"&&(null==t||null==t.dispose||t.dispose())}c9.delete(e),t&&t(e)}catch(e){}},500)})}}function hi({state:e={},children:t,container:n}){let{events:i,size:r,...a}=e,s=cO(),[o]=E.useState(()=>new s3),[l]=E.useState(()=>new Y),u=ch((e,t)=>{let a;if(t.camera&&r){let n=t.camera;a=e.viewport.getCurrentViewport(n,new eE,r),n!==e.camera&&cP(n,r)}return{...e,...t,scene:n,raycaster:o,pointer:l,mouse:l,previousRoot:s,events:{...e.events,...t.events,...i},size:{...e.size,...r},viewport:{...e.viewport,...a},setEvents:e=>t.set(t=>({...t,events:{...t.events,...e}}))}}),c=E.useMemo(()=>{let e=u3((e,t)=>({...a,set:e,get:t})),t=t=>e.setState(e=>u.current(t,e));return t(s.getState()),s.subscribe(t),e},[s,n]);return(0,u9.jsx)(u9.Fragment,{children:c8.createPortal((0,u9.jsx)(cD.Provider,{value:c,children:t}),c,null)})}let hr=new Set,ha=new Set,hs=new Set;function ho(e,t){if(e.size)for(let{callback:n}of e.values())n(t)}function hl(e,t){switch(e){case"before":return ho(hr,t);case"after":return ho(ha,t);case"tail":return ho(hs,t)}}function hu(e,t,n){let i=t.clock.getDelta();"never"===t.frameloop&&"number"==typeof e&&(i=e-t.clock.elapsedTime,t.clock.oldTime=t.clock.elapsedTime,t.clock.elapsedTime=e),s=t.internal.subscribers;for(let e=0;e0)&&!(null!=(t=c.gl.xr)&&t.isPresenting)&&(l+=hu(e,c))}if(hh=!1,hl("after",e),0===l)return hl("tail",e),hc=!1,cancelAnimationFrame(u)}function hp(e,t=1){var n;if(!e)return c9.forEach(e=>hp(e.store.getState(),t));(null==(n=e.gl.xr)||!n.isPresenting)&&e.internal.active&&"never"!==e.frameloop&&(t>1?e.internal.frames=Math.min(60,e.internal.frames+t):hh?e.internal.frames=2:e.internal.frames=1,hc||(hc=!0,requestAnimationFrame(hd)))}function hf(e,t=!0,n,i){if(t&&hl("before",e),n)hu(e,n,i);else for(let t of c9.values())hu(e,t.store.getState());t&&hl("after",e)}let hm={onClick:["click",!1],onContextMenu:["contextmenu",!1],onDoubleClick:["dblclick",!1],onWheel:["wheel",!0],onPointerDown:["pointerdown",!0],onPointerUp:["pointerup",!0],onPointerLeave:["pointerleave",!0],onPointerMove:["pointermove",!0],onPointerCancel:["pointercancel",!0],onLostPointerCapture:["lostpointercapture",!0]};function hg(e){let{handlePointer:t}=function(e){function t(e){return e.filter(e=>["Move","Over","Enter","Out","Leave"].some(t=>{var n;return null==(n=e.__r3f)?void 0:n.handlers["onPointer"+t]}))}function n(t){let{internal:n}=e.getState();for(let e of n.hovered.values())if(!t.length||!t.find(t=>t.object===e.object&&t.index===e.index&&t.instanceId===e.instanceId)){let i=e.eventObject.__r3f;if(n.hovered.delete(cL(e)),null!=i&&i.eventCount){let n=i.handlers,r={...e,intersections:t};null==n.onPointerOut||n.onPointerOut(r),null==n.onPointerLeave||n.onPointerLeave(r)}}}function i(e,t){for(let n=0;nn([]);case"onLostPointerCapture":return t=>{let{internal:i}=e.getState();"pointerId"in t&&i.capturedMap.has(t.pointerId)&&requestAnimationFrame(()=>{i.capturedMap.has(t.pointerId)&&(i.capturedMap.delete(t.pointerId),n([]))})}}return function(a){let{onPointerMissed:s,internal:o}=e.getState();o.lastEvent.current=a;let l="onPointerMove"===r,u="onClick"===r||"onContextMenu"===r||"onDoubleClick"===r,c=function(t,n){let i=e.getState(),r=new Set,a=[],s=n?n(i.internal.interaction):i.internal.interaction;for(let e=0;e{let n=cg(e.object),i=cg(t.object);return n&&i&&i.events.priority-n.events.priority||e.distance-t.distance}).filter(e=>{let t=cL(e);return!r.has(t)&&(r.add(t),!0)});for(let e of(i.events.filter&&(o=i.events.filter(o,i)),o)){let t=e.object;for(;t;){var l;null!=(l=t.__r3f)&&l.eventCount&&a.push({...e,eventObject:t}),t=t.parent}}if("pointerId"in t&&i.internal.capturedMap.has(t.pointerId))for(let e of i.internal.capturedMap.get(t.pointerId).values())r.has(cL(e.intersection))||a.push(e.intersection);return a}(a,l?t:void 0),h=u?function(t){let{internal:n}=e.getState(),i=t.offsetX-n.initialClick[0],r=t.offsetY-n.initialClick[1];return Math.round(Math.sqrt(i*i+r*r))}(a):0;"onPointerDown"===r&&(o.initialClick=[a.offsetX,a.offsetY],o.initialHits=c.map(e=>e.eventObject)),u&&!c.length&&h<=2&&(i(a,o.interaction),s&&s(a)),l&&n(c),!function(e,t,i,r){if(e.length){let a={stopped:!1};for(let s of e){let o=cg(s.object);if(o||s.object.traverseAncestors(e=>{let t=cg(e);if(t)return o=t,!1}),o){let{raycaster:l,pointer:u,camera:c,internal:h}=o,d=new eE(u.x,u.y,0).unproject(c),p=e=>{var t,n;return null!=(t=null==(n=h.capturedMap.get(e))?void 0:n.has(s.eventObject))&&t},f=e=>{let n={intersection:s,target:t.target};h.capturedMap.has(e)?h.capturedMap.get(e).set(s.eventObject,n):h.capturedMap.set(e,new Map([[s.eventObject,n]])),t.target.setPointerCapture(e)},m=e=>{let t=h.capturedMap.get(e);t&&cN(h.capturedMap,s.eventObject,t,e)},g={};for(let e in t){let n=t[e];"function"!=typeof n&&(g[e]=n)}let v={...s,...g,pointer:u,intersections:e,stopped:a.stopped,delta:i,unprojectedPoint:d,ray:l.ray,camera:c,stopPropagation(){let i="pointerId"in t&&h.capturedMap.get(t.pointerId);(!i||i.has(s.eventObject))&&(v.stopped=a.stopped=!0,h.hovered.size&&Array.from(h.hovered.values()).find(e=>e.eventObject===s.eventObject)&&n([...e.slice(0,e.indexOf(s)),s]))},target:{hasPointerCapture:p,setPointerCapture:f,releasePointerCapture:m},currentTarget:{hasPointerCapture:p,setPointerCapture:f,releasePointerCapture:m},nativeEvent:t};if(r(v),!0===a.stopped)break}}}}(c,a,h,function(e){let t=e.eventObject,n=t.__r3f;if(!(null!=n&&n.eventCount))return;let s=n.handlers;if(l){if(s.onPointerOver||s.onPointerEnter||s.onPointerOut||s.onPointerLeave){let t=cL(e),n=o.hovered.get(t);n?n.stopped&&e.stopPropagation():(o.hovered.set(t,e),null==s.onPointerOver||s.onPointerOver(e),null==s.onPointerEnter||s.onPointerEnter(e))}null==s.onPointerMove||s.onPointerMove(e)}else{let n=s[r];n?(!u||o.initialHits.includes(t))&&(i(a,o.interaction.filter(e=>!o.initialHits.includes(e))),n(e)):u&&o.initialHits.includes(t)&&i(a,o.interaction.filter(e=>!o.initialHits.includes(e)))}})}}}}(e);return{priority:1,enabled:!0,compute(e,t,n){t.pointer.set(e.offsetX/t.size.width*2-1,-(2*(e.offsetY/t.size.height))+1),t.raycaster.setFromCamera(t.pointer,t.camera)},connected:void 0,handlers:Object.keys(hm).reduce((e,n)=>({...e,[n]:t(n)}),{}),update:()=>{var t;let{events:n,internal:i}=e.getState();null!=(t=i.lastEvent)&&t.current&&n.handlers&&n.handlers.onPointerMove(i.lastEvent.current)},connect:t=>{let{set:n,events:i}=e.getState();if(null==i.disconnect||i.disconnect(),n(e=>({events:{...e.events,connected:t}})),i.handlers)for(let e in i.handlers){let n=i.handlers[e],[r,a]=hm[e];t.addEventListener(r,n,{passive:a})}},disconnect:()=>{let{set:t,events:n}=e.getState();if(n.connected){if(n.handlers)for(let e in n.handlers){let t=n.handlers[e],[i]=hm[e];n.connected.removeEventListener(i,t)}t(e=>({events:{...e.events,connected:void 0}}))}}}}e.s(["A",0,cO,"B",0,cp,"C",0,cF,"D",0,cz,"E",0,cf,"G",0,cH,"a",0,ch,"b",0,cc,"c",0,he,"d",0,hn,"e",0,cZ,"f",0,hg,"i",0,cl,"o",0,function(e,t,n){return(0,u9.jsx)(hi,{children:e,container:t,state:n})},"s",0,cC,"u",0,cd],1950),e.i(8560),e.s(["ACESFilmicToneMapping",0,4,"AddEquation",0,100,"AddOperation",0,2,"AdditiveAnimationBlendMode",0,2501,"AdditiveBlending",0,2,"AgXToneMapping",0,6,"AlphaFormat",0,1021,"AlwaysCompare",0,519,"AlwaysDepth",0,1,"AlwaysStencilFunc",0,519,"AmbientLight",0,sa,"AnimationAction",0,sY,"AnimationClip",0,aB,"AnimationLoader",0,aq,"AnimationMixer",0,sJ,"AnimationObjectGroup",0,sq,"AnimationUtils",0,aE,"ArcCurve",0,rs,"ArrayCamera",0,sT,"ArrowHelper",0,oP,"AttachedBindMode",0,R,"Audio",0,sL,"AudioAnalyser",0,sz,"AudioContext",0,s_,"AudioListener",0,sI,"AudioLoader",0,sy,"AxesHelper",0,oI,"BackSide",0,1,"BasicDepthPacking",0,3200,"BasicShadowMap",0,0,"BatchedMesh",0,iz,"Bone",0,ie,"BooleanKeyframeTrack",0,aL,"Box2",0,oe,"Box3",0,eR,"Box3Helper",0,oA,"BoxGeometry",0,ng,"BoxHelper",0,oE,"BufferAttribute",0,tZ,"BufferGeometry",0,nn,"BufferGeometryLoader",0,sd,"ByteType",0,1010,"Cache",0,ak,"Camera",0,nS,"CameraHelper",0,oM,"CanvasTexture",0,rn,"CapsuleGeometry",0,rA,"CatmullRomCurve3",0,rd,"CineonToneMapping",0,3,"CircleGeometry",0,rC,"ClampToEdgeWrapping",0,1001,"Clock",0,sw,"Color",0,tz,"ColorKeyframeTrack",0,aN,"ColorManagement",0,eu,"CompressedArrayTexture",0,re,"CompressedCubeTexture",0,rt,"CompressedTexture",0,i7,"CompressedTextureLoader",0,aY,"ConeGeometry",0,rP,"ConstantAlphaFactor",0,213,"ConstantColorFactor",0,211,"Controls",0,oN,"CubeCamera",0,nA,"CubeReflectionMapping",0,301,"CubeRefractionMapping",0,302,"CubeTexture",0,nC,"CubeTextureLoader",0,aJ,"CubeUVReflectionMapping",0,306,"CubicBezierCurve",0,rg,"CubicBezierCurve3",0,rv,"CubicInterpolant",0,aC,"CullFaceBack",0,1,"CullFaceFront",0,2,"CullFaceFrontBack",0,3,"CullFaceNone",0,0,"Curve",0,rr,"CurvePath",0,rT,"CustomBlending",0,5,"CustomToneMapping",0,5,"CylinderGeometry",0,rR,"Cylindrical",0,s8,"Data3DTexture",0,eM,"DataArrayTexture",0,eb,"DataTexture",0,it,"DataTextureLoader",0,aK,"DataUtils",0,tX,"DecrementStencilOp",0,7683,"DecrementWrapStencilOp",0,34056,"DefaultLoadingManager",0,aV,"DepthFormat",0,1026,"DepthStencilFormat",0,1027,"DepthTexture",0,ri,"DetachedBindMode",0,P,"DirectionalLight",0,sr,"DirectionalLightHelper",0,ox,"DiscreteInterpolant",0,aP,"DodecahedronGeometry",0,rL,"DoubleSide",0,2,"DstAlphaFactor",0,206,"DstColorFactor",0,208,"DynamicCopyUsage",0,35050,"DynamicDrawUsage",0,35048,"DynamicReadUsage",0,35049,"EdgesGeometry",0,rF,"EllipseCurve",0,ra,"EqualCompare",0,514,"EqualDepth",0,4,"EqualStencilFunc",0,514,"EquirectangularReflectionMapping",0,303,"EquirectangularRefractionMapping",0,304,"Euler",0,tn,"EventDispatcher",0,O,"ExtrudeGeometry",0,r4,"FileLoader",0,aX,"Float16BufferAttribute",0,t3,"Float32BufferAttribute",0,t4,"FloatType",0,1015,"Fog",0,nI,"FogExp2",0,nP,"FramebufferTexture",0,i9,"FrontSide",0,0,"Frustum",0,iS,"GLBufferAttribute",0,s1,"GLSL1",0,"100","GLSL3",0,D,"GreaterCompare",0,516,"GreaterDepth",0,6,"GreaterEqualCompare",0,518,"GreaterEqualDepth",0,5,"GreaterEqualStencilFunc",0,518,"GreaterStencilFunc",0,516,"GridHelper",0,om,"Group",0,i6,"HalfFloatType",0,1016,"HemisphereLight",0,a0,"HemisphereLightHelper",0,of,"IcosahedronGeometry",0,r6,"ImageBitmapLoader",0,sv,"ImageLoader",0,aZ,"ImageUtils",0,ed,"IncrementStencilOp",0,7682,"IncrementWrapStencilOp",0,34055,"InstancedBufferAttribute",0,is,"InstancedBufferGeometry",0,sh,"InstancedInterleavedBuffer",0,s0,"InstancedMesh",0,im,"Int16BufferAttribute",0,tQ,"Int32BufferAttribute",0,t1,"Int8BufferAttribute",0,tJ,"IntType",0,1013,"InterleavedBuffer",0,nN,"InterleavedBufferAttribute",0,nD,"Interpolant",0,aA,"InterpolateDiscrete",0,2300,"InterpolateLinear",0,2301,"InterpolateSmooth",0,2302,"InvertStencilOp",0,5386,"KeepStencilOp",0,7680,"KeyframeTrack",0,aI,"LOD",0,nQ,"LatheGeometry",0,rE,"Layers",0,ti,"LessCompare",0,513,"LessDepth",0,2,"LessEqualCompare",0,515,"LessEqualDepth",0,3,"LessEqualStencilFunc",0,515,"LessStencilFunc",0,513,"Light",0,aQ,"LightProbe",0,sl,"Line",0,iq,"Line3",0,oi,"LineBasicMaterial",0,iB,"LineCurve",0,r_,"LineCurve3",0,ry,"LineDashedMaterial",0,ax,"LineLoop",0,i$,"LineSegments",0,iK,"LinearFilter",0,1006,"LinearInterpolant",0,aR,"LinearMipMapLinearFilter",0,1008,"LinearMipMapNearestFilter",0,1007,"LinearMipmapLinearFilter",0,1008,"LinearMipmapNearestFilter",0,1007,"LinearSRGBColorSpace",0,L,"LinearToneMapping",0,1,"LinearTransfer",0,N,"Loader",0,aG,"LoaderUtils",0,sc,"LoadingManager",0,aH,"LoopOnce",0,2200,"LoopPingPong",0,2202,"LoopRepeat",0,2201,"LuminanceAlphaFormat",0,1025,"LuminanceFormat",0,1024,"MOUSE",0,A,"Material",0,tH,"MaterialLoader",0,su,"MathUtils",0,q,"Matrix2",0,s9,"Matrix3",0,Z,"Matrix4",0,e2,"MaxEquation",0,104,"Mesh",0,nf,"MeshBasicMaterial",0,tV,"MeshDepthMaterial",0,av,"MeshDistanceMaterial",0,a_,"MeshLambertMaterial",0,ag,"MeshMatcapMaterial",0,ay,"MeshNormalMaterial",0,am,"MeshPhongMaterial",0,ap,"MeshPhysicalMaterial",0,ad,"MeshStandardMaterial",0,ah,"MeshToonMaterial",0,af,"MinEquation",0,103,"MirroredRepeatWrapping",0,1002,"MixOperation",0,1,"MultiplyBlending",0,4,"MultiplyOperation",0,0,"NearestFilter",0,1003,"NearestMipMapLinearFilter",0,1005,"NearestMipMapNearestFilter",0,1004,"NearestMipmapLinearFilter",0,1005,"NearestMipmapNearestFilter",0,1004,"NeutralToneMapping",0,7,"NeverCompare",0,512,"NeverDepth",0,0,"NeverStencilFunc",0,512,"NoBlending",0,0,"NoColorSpace",0,"","NoToneMapping",0,0,"NormalAnimationBlendMode",0,2500,"NormalBlending",0,1,"NotEqualCompare",0,517,"NotEqualDepth",0,7,"NotEqualStencilFunc",0,517,"NumberKeyframeTrack",0,aU,"Object3D",0,ty,"ObjectLoader",0,sp,"ObjectSpaceNormalMap",0,1,"OctahedronGeometry",0,r8,"OneFactor",0,201,"OneMinusConstantAlphaFactor",0,214,"OneMinusConstantColorFactor",0,212,"OneMinusDstAlphaFactor",0,207,"OneMinusDstColorFactor",0,209,"OneMinusSrcAlphaFactor",0,205,"OneMinusSrcColorFactor",0,203,"OrthographicCamera",0,sn,"PCFShadowMap",0,1,"PCFSoftShadowMap",0,2,"PMREMGenerator",0,o8,"Path",0,rw,"PerspectiveCamera",0,nE,"Plane",0,iy,"PlaneGeometry",0,r9,"PlaneHelper",0,oC,"PointLight",0,st,"PointLightHelper",0,oc,"Points",0,i4,"PointsMaterial",0,iQ,"PolarGridHelper",0,og,"PolyhedronGeometry",0,rI,"PositionalAudio",0,sF,"PropertyBinding",0,sX,"PropertyMixer",0,sB,"QuadraticBezierCurve",0,rx,"QuadraticBezierCurve3",0,rb,"Quaternion",0,ew,"QuaternionKeyframeTrack",0,aO,"QuaternionLinearInterpolant",0,aD,"RED_GREEN_RGTC2_Format",0,36285,"RED_RGTC1_Format",0,36283,"REVISION",0,"171","RGBADepthPacking",0,3201,"RGBAFormat",0,1023,"RGBAIntegerFormat",0,1033,"RGBA_ASTC_10x10_Format",0,37819,"RGBA_ASTC_10x5_Format",0,37816,"RGBA_ASTC_10x6_Format",0,37817,"RGBA_ASTC_10x8_Format",0,37818,"RGBA_ASTC_12x10_Format",0,37820,"RGBA_ASTC_12x12_Format",0,37821,"RGBA_ASTC_4x4_Format",0,37808,"RGBA_ASTC_5x4_Format",0,37809,"RGBA_ASTC_5x5_Format",0,37810,"RGBA_ASTC_6x5_Format",0,37811,"RGBA_ASTC_6x6_Format",0,37812,"RGBA_ASTC_8x5_Format",0,37813,"RGBA_ASTC_8x6_Format",0,37814,"RGBA_ASTC_8x8_Format",0,37815,"RGBA_BPTC_Format",0,36492,"RGBA_ETC2_EAC_Format",0,37496,"RGBA_PVRTC_2BPPV1_Format",0,35843,"RGBA_PVRTC_4BPPV1_Format",0,35842,"RGBA_S3TC_DXT1_Format",0,33777,"RGBA_S3TC_DXT3_Format",0,33778,"RGBA_S3TC_DXT5_Format",0,33779,"RGBDepthPacking",0,3202,"RGBFormat",0,1022,"RGBIntegerFormat",0,1032,"RGB_BPTC_SIGNED_Format",0,36494,"RGB_BPTC_UNSIGNED_Format",0,36495,"RGB_ETC1_Format",0,36196,"RGB_ETC2_Format",0,37492,"RGB_PVRTC_2BPPV1_Format",0,35841,"RGB_PVRTC_4BPPV1_Format",0,35840,"RGB_S3TC_DXT1_Format",0,33776,"RGDepthPacking",0,3203,"RGFormat",0,1030,"RGIntegerFormat",0,1031,"RawShaderMaterial",0,ac,"Ray",0,e1,"Raycaster",0,s3,"RectAreaLight",0,ss,"RedFormat",0,1028,"RedIntegerFormat",0,1029,"ReinhardToneMapping",0,2,"RenderTarget",0,ey,"RepeatWrapping",0,1e3,"ReplaceStencilOp",0,7681,"ReverseSubtractEquation",0,102,"RingGeometry",0,r7,"SIGNED_RED_GREEN_RGTC2_Format",0,36286,"SIGNED_RED_RGTC1_Format",0,36284,"SRGBColorSpace",0,I,"SRGBTransfer",0,U,"Scene",0,nL,"ShaderChunk",0,oB,"ShaderLib",0,oH,"ShaderMaterial",0,nb,"ShadowMaterial",0,au,"Shape",0,rz,"ShapeGeometry",0,ae,"ShapePath",0,oL,"ShapeUtils",0,r1,"ShortType",0,1011,"Skeleton",0,ia,"SkeletonHelper",0,ou,"SkinnedMesh",0,n7,"Source",0,ef,"Sphere",0,eq,"SphereGeometry",0,at,"Spherical",0,s6,"SphericalHarmonics3",0,so,"SplineCurve",0,rS,"SpotLight",0,a6,"SpotLightHelper",0,oa,"Sprite",0,nZ,"SpriteMaterial",0,nO,"SrcAlphaFactor",0,204,"SrcAlphaSaturateFactor",0,210,"SrcColorFactor",0,202,"StaticCopyUsage",0,35046,"StaticDrawUsage",0,35044,"StaticReadUsage",0,35045,"StereoCamera",0,sM,"StreamCopyUsage",0,35042,"StreamDrawUsage",0,35040,"StreamReadUsage",0,35041,"StringKeyframeTrack",0,aF,"SubtractEquation",0,101,"SubtractiveBlending",0,3,"TOUCH",0,C,"TangentSpaceNormalMap",0,0,"TetrahedronGeometry",0,an,"Texture",0,ev,"TextureLoader",0,a$,"TextureUtils",0,oD,"TorusGeometry",0,ai,"TorusKnotGeometry",0,ar,"Triangle",0,tN,"TriangleFanDrawMode",0,2,"TriangleStripDrawMode",0,1,"TrianglesDrawMode",0,0,"TubeGeometry",0,aa,"UVMapping",0,300,"Uint16BufferAttribute",0,t0,"Uint32BufferAttribute",0,t2,"Uint8BufferAttribute",0,tK,"Uint8ClampedBufferAttribute",0,t$,"Uniform",0,sK,"UniformsGroup",0,sQ,"UniformsLib",0,ok,"UniformsUtils",0,nx,"UnsignedByteType",0,1009,"UnsignedInt248Type",0,1020,"UnsignedInt5999Type",0,35902,"UnsignedIntType",0,1014,"UnsignedShort4444Type",0,1017,"UnsignedShort5551Type",0,1018,"UnsignedShortType",0,1012,"VSMShadowMap",0,3,"Vector2",0,Y,"Vector3",0,eE,"Vector4",0,e_,"VectorKeyframeTrack",0,az,"VideoTexture",0,i8,"WebGL3DRenderTarget",0,eT,"WebGLArrayRenderTarget",0,eS,"WebGLCoordinateSystem",0,2e3,"WebGLCubeRenderTarget",0,nR,"WebGLMultipleRenderTargets",0,oO,"WebGLRenderTarget",0,ex,"WebGLRenderer",0,uK,"WebGLUtils",0,uk,"WebGPUCoordinateSystem",0,2001,"WireframeGeometry",0,as,"WrapAroundEnding",0,2402,"ZeroCurvatureEnding",0,2400,"ZeroFactor",0,200,"ZeroSlopeEnding",0,2401,"ZeroStencilOp",0,0,"createCanvasElement",0,et],32009);var hv=e.i(32009);function h_(e,t){let n;return(...i)=>{window.clearTimeout(n),n=window.setTimeout(()=>e(...i),t)}}let hy=["x","y","top","bottom","left","right","width","height"];function hx({ref:e,children:t,fallback:n,resize:i,style:r,gl:a,events:s=hg,eventSource:o,eventPrefix:l,shadows:u,linear:c,flat:h,legacy:d,orthographic:p,frameloop:f,dpr:m,performance:g,raycaster:v,camera:_,scene:y,onPointerMissed:x,onCreated:b,...S}){E.useMemo(()=>cZ(hv),[]);let M=cd(),[T,w]=function({debounce:e,scroll:t,polyfill:n,offsetSize:i}={debounce:0,scroll:!1,offsetSize:!1}){var r,a,s;let o=n||("u"(p.current=!0,()=>void(p.current=!1)));let[f,m,g]=(0,E.useMemo)(()=>{let e=()=>{let e,t;if(!c.current.element)return;let{left:n,top:r,width:a,height:s,bottom:o,right:l,x:h,y:d}=c.current.element.getBoundingClientRect(),f={left:n,top:r,width:a,height:s,bottom:o,right:l,x:h,y:d};c.current.element instanceof HTMLElement&&i&&(f.height=c.current.element.offsetHeight,f.width=c.current.element.offsetWidth),Object.freeze(f),p.current&&(e=c.current.lastBounds,t=f,!hy.every(n=>e[n]===t[n]))&&u(c.current.lastBounds=f)};return[e,d?h_(e,d):e,h?h_(e,h):e]},[u,i,h,d]);function v(){c.current.scrollContainers&&(c.current.scrollContainers.forEach(e=>e.removeEventListener("scroll",g,!0)),c.current.scrollContainers=null),c.current.resizeObserver&&(c.current.resizeObserver.disconnect(),c.current.resizeObserver=null),c.current.orientationHandler&&("orientation"in screen&&"removeEventListener"in screen.orientation?screen.orientation.removeEventListener("change",c.current.orientationHandler):"onorientationchange"in window&&window.removeEventListener("orientationchange",c.current.orientationHandler))}function _(){c.current.element&&(c.current.resizeObserver=new o(g),c.current.resizeObserver.observe(c.current.element),t&&c.current.scrollContainers&&c.current.scrollContainers.forEach(e=>e.addEventListener("scroll",g,{capture:!0,passive:!0})),c.current.orientationHandler=()=>{g()},"orientation"in screen&&"addEventListener"in screen.orientation?screen.orientation.addEventListener("change",c.current.orientationHandler):"onorientationchange"in window&&window.addEventListener("orientationchange",c.current.orientationHandler))}return r=g,a=!!t,(0,E.useEffect)(()=>{if(a)return window.addEventListener("scroll",r,{capture:!0,passive:!0}),()=>void window.removeEventListener("scroll",r,!0)},[r,a]),s=m,(0,E.useEffect)(()=>(window.addEventListener("resize",s),()=>void window.removeEventListener("resize",s)),[s]),(0,E.useEffect)(()=>{v(),_()},[t,g,m]),(0,E.useEffect)(()=>v,[]),[e=>{e&&e!==c.current.element&&(v(),c.current.element=e,c.current.scrollContainers=function e(t){let n=[];if(!t||t===document.body)return n;let{overflow:i,overflowX:r,overflowY:a}=window.getComputedStyle(t);return[i,r,a].some(e=>"auto"===e||"scroll"===e)&&n.push(t),[...n,...e(t.parentElement)]}(e),_())},l,f]}({scroll:!0,debounce:{scroll:50,resize:0},...i}),A=E.useRef(null),C=E.useRef(null);E.useImperativeHandle(e,()=>A.current);let R=ch(x),[P,I]=E.useState(!1),[L,N]=E.useState(!1);if(P)throw P;if(L)throw L;let U=E.useRef(null);cc(()=>{let e=A.current;w.width>0&&w.height>0&&e&&(U.current||(U.current=he(e)),async function(){await U.current.configure({gl:a,scene:y,events:s,shadows:u,linear:c,flat:h,legacy:d,orthographic:p,frameloop:f,dpr:m,performance:g,raycaster:v,camera:_,size:w,onPointerMissed:(...e)=>null==R.current?void 0:R.current(...e),onCreated:e=>{null==e.events.connect||e.events.connect(o?cl(o)?o.current:o:C.current),l&&e.setEvents({compute:(e,t)=>{let n=e[l+"X"],i=e[l+"Y"];t.pointer.set(n/t.size.width*2-1,-(2*(i/t.size.height))+1),t.raycaster.setFromCamera(t.pointer,t.camera)}}),null==b||b(e)}}),U.current.render((0,u9.jsx)(M,{children:(0,u9.jsx)(cf,{set:N,children:(0,u9.jsx)(E.Suspense,{fallback:(0,u9.jsx)(cp,{set:I}),children:null!=t?t:null})})}))}())}),E.useEffect(()=>{let e=A.current;if(e)return()=>hn(e)},[]);let D=o?"none":"auto";return(0,u9.jsx)("div",{ref:C,style:{position:"relative",width:"100%",height:"100%",overflow:"hidden",pointerEvents:D,...r},...S,children:(0,u9.jsx)("div",{ref:T,style:{width:"100%",height:"100%"},children:(0,u9.jsx)("canvas",{ref:A,style:{display:"block"},children:n})})})}e.s(["Canvas",0,function(e){return(0,u9.jsx)(ci,{children:(0,u9.jsx)(hx,{...e})})}],75056),e.s(["useFrame",0,cz],25234),e.s(["useThree",0,cF],28600)},67335,e=>{"use strict";var t=e.i(1950);e.s(["extend",()=>t.e])},44208,e=>{"use strict";var t=e.i(1950);e.s(["createPortal",()=>t.o])},60602,e=>{"use strict";var t=e.i(1950);e.s(["useLoader",()=>t.G])},24205,e=>{"use strict";var t=e.i(1950);e.s(["applyProps",()=>t.s])}]); \ No newline at end of file diff --git a/build/_next/static/chunks/00fiud~fayo7s.css b/build/_next/static/chunks/00fiud~fayo7s.css new file mode 100644 index 0000000..f80e93b --- /dev/null +++ b/build/_next/static/chunks/00fiud~fayo7s.css @@ -0,0 +1 @@ +.OfficeMap-module__ToIo3G__root{border-radius:inherit;isolation:isolate;background:#0b0b0b;width:100%;height:100%;position:relative;overflow:hidden}.OfficeMap-module__ToIo3G__map{width:100%;height:100%;font-family:var(--font-manrope), system-ui, -apple-system, sans-serif;background:#0b0b0b}.OfficeMap-module__ToIo3G__map:focus-visible{outline-offset:-2px;outline:2px solid #c01227}.OfficeMap-module__ToIo3G__controls{z-index:600;pointer-events:none;flex-wrap:wrap;justify-content:center;gap:8px;display:flex;position:absolute;top:14px;left:12px;right:12px}.OfficeMap-module__ToIo3G__controlBtn{pointer-events:auto;appearance:none;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);color:#f5f5f5;font-family:var(--font-manrope), system-ui, -apple-system, sans-serif;letter-spacing:.01em;cursor:pointer;white-space:nowrap;background:#0f0f11d1;border:1px solid #ffffff2e;border-radius:999px;margin:0;padding:9px 16px;font-size:13px;font-weight:700;line-height:1;transition:background-color .2s,border-color .2s,color .2s,transform .2s cubic-bezier(.16,1,.3,1),box-shadow .2s}.OfficeMap-module__ToIo3G__controlBtn:hover{background:#c01227e6;border-color:#c01227;transform:translateY(-1px)}.OfficeMap-module__ToIo3G__controlBtn:focus-visible{outline-offset:2px;outline:2px solid #fff}.OfficeMap-module__ToIo3G__controlBtnActive,.OfficeMap-module__ToIo3G__controlBtnActive:hover{color:#fff;background:#c01227;border-color:#c01227;box-shadow:0 6px 18px #c0122773}.OfficeMap-module__ToIo3G__controlBtnHq{border-color:#c012278c;box-shadow:0 0 0 1px #c0122740,0 4px 14px #c0122733}.OfficeMap-module__ToIo3G__controlBtnHq.OfficeMap-module__ToIo3G__controlBtnActive{box-shadow:0 6px 20px #c012278c}@media (max-width:480px){.OfficeMap-module__ToIo3G__controls{flex-wrap:nowrap;gap:5px;top:12px}.OfficeMap-module__ToIo3G__controlBtn{padding:7px 9px;font-size:11px}}.OfficeMap-module__ToIo3G__markerIcon{filter:drop-shadow(0 4px 6px #0000008c);background:0 0;border:0;transition:transform .18s cubic-bezier(.16,1,.3,1)}.OfficeMap-module__ToIo3G__markerIcon:hover,.OfficeMap-module__ToIo3G__markerIcon:focus-visible{transform:translateY(-3px)scale(1.06)}.OfficeMap-module__ToIo3G__markerIconHq{filter:drop-shadow(0 0 9px #c01227d9)drop-shadow(0 5px 7px #0000008c);background:0 0;border:0;transition:transform .18s cubic-bezier(.16,1,.3,1)}.OfficeMap-module__ToIo3G__markerIconHq svg{z-index:2;position:relative}.OfficeMap-module__ToIo3G__markerIconHq:hover,.OfficeMap-module__ToIo3G__markerIconHq:focus-visible{transform:translateY(-3px)scale(1.05)}.OfficeMap-module__ToIo3G__pinPulse{z-index:1;pointer-events:none;background:#c0122780;border-radius:50%;width:18px;height:18px;margin:-9px 0 0 -9px;animation:2.2s ease-out infinite OfficeMap-module__ToIo3G__hqPulse;position:absolute;top:19px;left:20px}@keyframes OfficeMap-module__ToIo3G__hqPulse{0%{opacity:.75;transform:scale(.6)}70%{opacity:0;transform:scale(3)}to{opacity:0;transform:scale(3)}}.OfficeMap-module__ToIo3G__root .leaflet-container{background:#0b0b0b}.OfficeMap-module__ToIo3G__root .leaflet-bar{border:1px solid #ffffff1f;box-shadow:0 6px 18px #0006}.OfficeMap-module__ToIo3G__root .leaflet-bar a{color:#f5f5f5;background:#0f0f11eb;border-bottom-color:#ffffff1f;transition:background-color .2s,color .2s}.OfficeMap-module__ToIo3G__root .leaflet-bar a:hover{color:#fff;background:#c01227}.OfficeMap-module__ToIo3G__root .leaflet-bar a:focus-visible{outline-offset:2px;outline:2px solid #c01227}.OfficeMap-module__ToIo3G__root .leaflet-control-attribution{color:#ffffffa6;-webkit-backdrop-filter:blur(6px);background:#0a0a0ab8;border-radius:6px 0 0;padding:2px 8px;font-size:11px}.OfficeMap-module__ToIo3G__root .leaflet-control-attribution a{color:#ffffffd9}.OfficeMap-module__ToIo3G__root .leaflet-popup{animation:.2s ease-out forwards OfficeMap-module__ToIo3G__popupFade}.OfficeMap-module__ToIo3G__root .leaflet-popup-content-wrapper{color:#fff;transform-origin:bottom;background:#0f0f11;border:1px solid #ffffff14;border-radius:8px;padding:0;animation:.2s cubic-bezier(.16,1,.3,1) forwards OfficeMap-module__ToIo3G__popupScale;overflow:hidden;box-shadow:0 12px 32px #0009}.OfficeMap-module__ToIo3G__root .leaflet-popup-content{width:auto!important;height:auto!important;margin:0!important}.OfficeMap-module__ToIo3G__root .leaflet-popup-tip{background:#0f0f11;border:1px solid #ffffff14}@keyframes OfficeMap-module__ToIo3G__popupFade{0%{opacity:0}to{opacity:1}}@keyframes OfficeMap-module__ToIo3G__popupScale{0%{transform:scale(.92)}to{transform:scale(1)}}.OfficeMap-module__ToIo3G__card{box-sizing:border-box;min-width:230px;max-width:280px;font-family:var(--font-manrope), system-ui, -apple-system, sans-serif;background:#0f0f11;border-top:2px solid #c01227;flex-direction:column;height:auto;padding:12px 16px;display:flex}.OfficeMap-module__ToIo3G__cardHeader{border-bottom:1px solid #ffffff14;align-items:center;gap:6px;margin-bottom:8px;padding-bottom:6px;display:flex}.OfficeMap-module__ToIo3G__cardIcon{align-items:center;font-size:15px;display:inline-flex}.OfficeMap-module__ToIo3G__cardTitle{color:#fff!important;letter-spacing:-.01em!important;margin:0!important;font-size:17px!important;font-weight:800!important}.OfficeMap-module__ToIo3G__cardBody{flex-direction:column;gap:4px;display:flex}.OfficeMap-module__ToIo3G__addressLine{color:#ffffffbf!important;margin:0 0 6px!important;padding:0!important;font-size:14px!important;font-weight:500!important;line-height:1.5!important}.OfficeMap-module__ToIo3G__addressLine:last-child{margin-bottom:0!important}@media (max-width:480px){.OfficeMap-module__ToIo3G__card{min-width:200px;max-width:230px;padding:9px 12px}.OfficeMap-module__ToIo3G__cardTitle{font-size:14px!important}.OfficeMap-module__ToIo3G__addressLine{margin-bottom:3px!important;font-size:12px!important;line-height:1.4!important}}.OfficeMap-module__ToIo3G__mapMountReserve{border-radius:inherit;width:100%;height:100%}@media (prefers-reduced-motion:reduce){.OfficeMap-module__ToIo3G__markerIcon,.OfficeMap-module__ToIo3G__markerIconHq{transition:none}.OfficeMap-module__ToIo3G__pinPulse{opacity:.45;animation:none}}.OfficeMap-module__ToIo3G__errorOverlay{z-index:500;text-align:center;color:#ffffffd1;font-family:var(--font-manrope), system-ui, sans-serif;background:#101012;flex-direction:column;justify-content:center;align-items:center;gap:14px;padding:24px;display:flex;position:absolute;inset:0}.OfficeMap-module__ToIo3G__errorTitle{color:#fff;margin:0;font-size:clamp(15px,2.4vw,18px);font-weight:800}.OfficeMap-module__ToIo3G__errorText{color:#fff9;max-width:38ch;margin:0;font-size:13px;line-height:1.55}.OfficeMap-module__ToIo3G__errorList{flex-wrap:wrap;justify-content:center;gap:8px 12px;margin:4px 0 0;padding:0;list-style:none;display:flex}.OfficeMap-module__ToIo3G__errorList li{color:#f1f1f1;align-items:center;gap:7px;font-size:13px;font-weight:700;display:inline-flex}.OfficeMap-module__ToIo3G__errorList li:before{content:"";background:#c01227;border-radius:50%;width:7px;height:7px}.OfficeMap-module__ToIo3G__srOnly{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden} diff --git a/build/_next/static/chunks/01xlw8hd842-c.js b/build/_next/static/chunks/01xlw8hd842-c.js new file mode 100644 index 0000000..fd61718 --- /dev/null +++ b/build/_next/static/chunks/01xlw8hd842-c.js @@ -0,0 +1 @@ +(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,33525,(e,r,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"warnOnce",{enumerable:!0,get:function(){return n}});let n=e=>{}},18967,(e,r,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={DecodeError:function(){return P},MiddlewareNotFoundError:function(){return O},MissingStaticPage:function(){return h},NormalizeError:function(){return E},PageNotFoundError:function(){return b},SP:function(){return m},ST:function(){return y},WEB_VITALS:function(){return i},execOnce:function(){return u},getDisplayName:function(){return l},getLocationOrigin:function(){return c},getURL:function(){return f},isAbsoluteUrl:function(){return a},isResSent:function(){return d},loadGetInitialProps:function(){return g},normalizeRepeatedSlashes:function(){return p},stringifyError:function(){return N}};for(var o in n)Object.defineProperty(t,o,{enumerable:!0,get:n[o]});let i=["CLS","FCP","FID","INP","LCP","TTFB"];function u(e){let r,t=!1;return(...n)=>(t||(t=!0,r=e(...n)),r)}let s=/^[a-zA-Z][a-zA-Z\d+\-.]*?:/,a=e=>s.test(e);function c(){let{protocol:e,hostname:r,port:t}=window.location;return`${e}//${r}${t?":"+t:""}`}function f(){let{href:e}=window.location,r=c();return e.substring(r.length)}function l(e){return"string"==typeof e?e:e.displayName||e.name||"Unknown"}function d(e){return e.finished||e.headersSent}function p(e){let r=e.split("?");return r[0].replace(/\\/g,"/").replace(/\/\/+/g,"/")+(r[1]?`?${r.slice(1).join("?")}`:"")}async function g(e,r){let t=r.res||r.ctx&&r.ctx.res;if(!e.getInitialProps)return r.ctx&&r.Component?{pageProps:await g(r.Component,r.ctx)}:{};let n=await e.getInitialProps(r);if(t&&d(t))return n;if(!n)throw Object.defineProperty(Error(`"${l(e)}.getInitialProps()" should resolve to an object. But found "${n}" instead.`),"__NEXT_ERROR_CODE",{value:"E1025",enumerable:!1,configurable:!0});return n}let m="u">typeof performance,y=m&&["mark","measure","getEntriesByName"].every(e=>"function"==typeof performance[e]);class P extends Error{}class E extends Error{}class b extends Error{constructor(e){super(),this.code="ENOENT",this.name="PageNotFoundError",this.message=`Cannot find module for page: ${e}`}}class h extends Error{constructor(e,r){super(),this.message=`Failed to load static file for page: ${e} ${r}`}}class O extends Error{constructor(){super(),this.code="ENOENT",this.message="Cannot find the middleware module"}}function N(e){return JSON.stringify({message:e.message,stack:e.stack})}},98183,(e,r,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n={assign:function(){return a},searchParamsToUrlQuery:function(){return i},urlQueryToSearchParams:function(){return s}};for(var o in n)Object.defineProperty(t,o,{enumerable:!0,get:n[o]});function i(e){let r={};for(let[t,n]of e.entries()){let e=r[t];void 0===e?r[t]=n:Array.isArray(e)?e.push(n):r[t]=[e,n]}return r}function u(e){return"string"==typeof e?e:("number"!=typeof e||isNaN(e))&&"boolean"!=typeof e?"":String(e)}function s(e){let r=new URLSearchParams;for(let[t,n]of Object.entries(e))if(Array.isArray(n))for(let e of n)r.append(t,u(e));else r.set(t,u(n));return r}function a(e,...r){for(let t of r){for(let r of t.keys())e.delete(r);for(let[r,n]of t.entries())e.append(r,n)}return e}}]); \ No newline at end of file diff --git a/build/_next/static/chunks/03~yq9q893hmn.js b/build/_next/static/chunks/03~yq9q893hmn.js new file mode 100644 index 0000000..ab422b9 --- /dev/null +++ b/build/_next/static/chunks/03~yq9q893hmn.js @@ -0,0 +1 @@ +!function(){var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function e(t){var e={exports:{}};return t(e,e.exports),e.exports}var r,n,o=function(t){return t&&t.Math===Math&&t},i=o("object"==typeof globalThis&&globalThis)||o("object"==typeof window&&window)||o("object"==typeof self&&self)||o("object"==typeof t&&t)||o("object"==typeof t&&t)||function(){return this}()||Function("return this")(),a=function(t){try{return!!t()}catch(t){return!0}},u=!a(function(){return 7!==Object.defineProperty({},1,{get:function(){return 7}})[1]}),s=!a(function(){var t=function(){}.bind();return"function"!=typeof t||t.hasOwnProperty("prototype")}),c=Function.prototype.call,f=s?c.bind(c):function(){return c.apply(c,arguments)},l={}.propertyIsEnumerable,h=Object.getOwnPropertyDescriptor,p=h&&!l.call({1:2},1)?function(t){var e=h(this,t);return!!e&&e.enumerable}:l,v={f:p},d=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}},g=Function.prototype,y=g.call,m=s&&g.bind.bind(y,y),b=s?m:function(t){return function(){return y.apply(t,arguments)}},w=b({}.toString),S=b("".slice),E=function(t){return S(w(t),8,-1)},O=Object,x=b("".split),R=a(function(){return!O("z").propertyIsEnumerable(0)})?function(t){return"String"===E(t)?x(t,""):O(t)}:O,P=function(t){return null==t},A=TypeError,j=function(t){if(P(t))throw new A("Can't call method on "+t);return t},k=function(t){return R(j(t))},I="object"==typeof document&&document.all,T=void 0===I&&void 0!==I?function(t){return"function"==typeof t||t===I}:function(t){return"function"==typeof t},M=function(t){return"object"==typeof t?null!==t:T(t)},L=function(t,e){return arguments.length<2?T(r=i[t])?r:void 0:i[t]&&i[t][e];var r},U=b({}.isPrototypeOf),N=i.navigator,C=N&&N.userAgent,_=C?String(C):"",F=i.process,B=i.Deno,D=F&&F.versions||B&&B.version,z=D&&D.v8;z&&(n=(r=z.split("."))[0]>0&&r[0]<4?1:+(r[0]+r[1])),!n&&_&&(!(r=_.match(/Edge\/(\d+)/))||r[1]>=74)&&(r=_.match(/Chrome\/(\d+)/))&&(n=+r[1]);var W=n,q=i.String,H=!!Object.getOwnPropertySymbols&&!a(function(){var t=Symbol("symbol detection");return!q(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&W&&W<41}),$=H&&!Symbol.sham&&"symbol"==typeof Symbol.iterator,K=Object,G=$?function(t){return"symbol"==typeof t}:function(t){var e=L("Symbol");return T(e)&&U(e.prototype,K(t))},V=String,Y=function(t){try{return V(t)}catch(t){return"Object"}},X=TypeError,J=function(t){if(T(t))return t;throw new X(Y(t)+" is not a function")},Q=function(t,e){var r=t[e];return P(r)?void 0:J(r)},Z=TypeError,tt=Object.defineProperty,et=function(t,e){try{tt(i,t,{value:e,configurable:!0,writable:!0})}catch(r){i[t]=e}return e},rt=e(function(t){var e="__core-js_shared__",r=t.exports=i[e]||et(e,{});(r.versions||(r.versions=[])).push({version:"3.38.1",mode:"global",copyright:"© 2014-2024 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.38.1/LICENSE",source:"https://github.com/zloirock/core-js"})}),nt=function(t,e){return rt[t]||(rt[t]=e||{})},ot=Object,it=function(t){return ot(j(t))},at=b({}.hasOwnProperty),ut=Object.hasOwn||function(t,e){return at(it(t),e)},st=0,ct=Math.random(),ft=b(1..toString),lt=function(t){return"Symbol("+(void 0===t?"":t)+")_"+ft(++st+ct,36)},ht=i.Symbol,pt=nt("wks"),vt=$?ht.for||ht:ht&&ht.withoutSetter||lt,dt=function(t){return ut(pt,t)||(pt[t]=H&&ut(ht,t)?ht[t]:vt("Symbol."+t)),pt[t]},gt=TypeError,yt=dt("toPrimitive"),mt=function(t,e){if(!M(t)||G(t))return t;var r,n=Q(t,yt);if(n){if(void 0===e&&(e="default"),r=f(n,t,e),!M(r)||G(r))return r;throw new gt("Can't convert object to primitive value")}return void 0===e&&(e="number"),function(t,e){var r,n;if("string"===e&&T(r=t.toString)&&!M(n=f(r,t)))return n;if(T(r=t.valueOf)&&!M(n=f(r,t)))return n;if("string"!==e&&T(r=t.toString)&&!M(n=f(r,t)))return n;throw new Z("Can't convert object to primitive value")}(t,e)},bt=function(t){var e=mt(t,"string");return G(e)?e:e+""},wt=i.document,St=M(wt)&&M(wt.createElement),Et=function(t){return St?wt.createElement(t):{}},Ot=!u&&!a(function(){return 7!==Object.defineProperty(Et("div"),"a",{get:function(){return 7}}).a}),xt=Object.getOwnPropertyDescriptor,Rt={f:u?xt:function(t,e){if(t=k(t),e=bt(e),Ot)try{return xt(t,e)}catch(t){}if(ut(t,e))return d(!f(v.f,t,e),t[e])}},Pt=u&&a(function(){return 42!==Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype}),At=String,jt=TypeError,kt=function(t){if(M(t))return t;throw new jt(At(t)+" is not an object")},It=TypeError,Tt=Object.defineProperty,Mt=Object.getOwnPropertyDescriptor,Lt="enumerable",Ut="configurable",Nt="writable",Ct={f:u?Pt?function(t,e,r){if(kt(t),e=bt(e),kt(r),"function"==typeof t&&"prototype"===e&&"value"in r&&Nt in r&&!r[Nt]){var n=Mt(t,e);n&&n[Nt]&&(t[e]=r.value,r={configurable:Ut in r?r[Ut]:n[Ut],enumerable:Lt in r?r[Lt]:n[Lt],writable:!1})}return Tt(t,e,r)}:Tt:function(t,e,r){if(kt(t),e=bt(e),kt(r),Ot)try{return Tt(t,e,r)}catch(t){}if("get"in r||"set"in r)throw new It("Accessors not supported");return"value"in r&&(t[e]=r.value),t}},_t=u?function(t,e,r){return Ct.f(t,e,d(1,r))}:function(t,e,r){return t[e]=r,t},Ft=Function.prototype,Bt=u&&Object.getOwnPropertyDescriptor,Dt=ut(Ft,"name"),zt={EXISTS:Dt,PROPER:Dt&&"something"===function(){}.name,CONFIGURABLE:Dt&&(!u||u&&Bt(Ft,"name").configurable)},Wt=b(Function.toString);T(rt.inspectSource)||(rt.inspectSource=function(t){return Wt(t)});var qt,Ht,$t,Kt=rt.inspectSource,Gt=i.WeakMap,Vt=T(Gt)&&/native code/.test(String(Gt)),Yt=nt("keys"),Xt=function(t){return Yt[t]||(Yt[t]=lt(t))},Jt={},Qt="Object already initialized",Zt=i.TypeError;if(Vt||rt.state){var te=rt.state||(rt.state=new(0,i.WeakMap));te.get=te.get,te.has=te.has,te.set=te.set,qt=function(t,e){if(te.has(t))throw new Zt(Qt);return e.facade=t,te.set(t,e),e},Ht=function(t){return te.get(t)||{}},$t=function(t){return te.has(t)}}else{var ee=Xt("state");Jt[ee]=!0,qt=function(t,e){if(ut(t,ee))throw new Zt(Qt);return e.facade=t,_t(t,ee,e),e},Ht=function(t){return ut(t,ee)?t[ee]:{}},$t=function(t){return ut(t,ee)}}var re,ne={set:qt,get:Ht,has:$t,enforce:function(t){return $t(t)?Ht(t):qt(t,{})},getterFor:function(t){return function(e){var r;if(!M(e)||(r=Ht(e)).type!==t)throw new Zt("Incompatible receiver, "+t+" required");return r}}},oe=e(function(t){var e=zt.CONFIGURABLE,r=ne.enforce,n=ne.get,o=String,i=Object.defineProperty,s=b("".slice),c=b("".replace),f=b([].join),l=u&&!a(function(){return 8!==i(function(){},"length",{value:8}).length}),h=String(String).split("String"),p=t.exports=function(t,n,a){"Symbol("===s(o(n),0,7)&&(n="["+c(o(n),/^Symbol\(([^)]*)\).*$/,"$1")+"]"),a&&a.getter&&(n="get "+n),a&&a.setter&&(n="set "+n),(!ut(t,"name")||e&&t.name!==n)&&(u?i(t,"name",{value:n,configurable:!0}):t.name=n),l&&a&&ut(a,"arity")&&t.length!==a.arity&&i(t,"length",{value:a.arity});try{a&&ut(a,"constructor")&&a.constructor?u&&i(t,"prototype",{writable:!1}):t.prototype&&(t.prototype=void 0)}catch(t){}var p=r(t);return ut(p,"source")||(p.source=f(h,"string"==typeof n?n:"")),t};Function.prototype.toString=p(function(){return T(this)&&n(this).source||Kt(this)},"toString")}),ie=function(t,e,r,n){n||(n={});var o=n.enumerable,i=void 0!==n.name?n.name:e;if(T(r)&&oe(r,i,n),n.global)o?t[e]=r:et(e,r);else{try{n.unsafe?t[e]&&(o=!0):delete t[e]}catch(t){}o?t[e]=r:Ct.f(t,e,{value:r,enumerable:!1,configurable:!n.nonConfigurable,writable:!n.nonWritable})}return t},ae=Math.ceil,ue=Math.floor,se=Math.trunc||function(t){var e=+t;return(e>0?ue:ae)(e)},ce=function(t){var e=+t;return e!=e||0===e?0:se(e)},fe=Math.max,le=Math.min,he=function(t,e){var r=ce(t);return r<0?fe(r+e,0):le(r,e)},pe=Math.min,ve=function(t){var e=ce(t);return e>0?pe(e,9007199254740991):0},de=function(t){return ve(t.length)},ge=function(t){return function(e,r,n){var o=k(e),i=de(o);if(0===i)return!t&&-1;var a,u=he(n,i);if(t&&r!=r){for(;i>u;)if((a=o[u++])!=a)return!0}else for(;i>u;u++)if((t||u in o)&&o[u]===r)return t||u||0;return!t&&-1}},ye={includes:ge(!0),indexOf:ge(!1)},me=ye.indexOf,be=b([].push),we=function(t,e){var r,n=k(t),o=0,i=[];for(r in n)!ut(Jt,r)&&ut(n,r)&&be(i,r);for(;e.length>o;)ut(n,r=e[o++])&&(~me(i,r)||be(i,r));return i},Se=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],Ee=Se.concat("length","prototype"),Oe={f:Object.getOwnPropertyNames||function(t){return we(t,Ee)}},xe={f:Object.getOwnPropertySymbols},Re=b([].concat),Pe=L("Reflect","ownKeys")||function(t){var e=Oe.f(kt(t)),r=xe.f;return r?Re(e,r(t)):e},Ae=function(t,e,r){for(var n=Pe(e),o=Ct.f,i=Rt.f,a=0;aa;)Ct.f(t,r=o[a++],n[r]);return t},Be={f:Fe},De=L("document","documentElement"),ze="prototype",We="script",qe=Xt("IE_PROTO"),He=function(){},$e=function(t){return"<"+We+">"+t+""},Ke=function(t){t.write($e("")),t.close();var e=t.parentWindow.Object;return t=null,e},Ge=function(){try{re=new ActiveXObject("htmlfile")}catch(t){}var t,e,r;Ge="undefined"!=typeof document?document.domain&&re?Ke(re):(e=Et("iframe"),r="java"+We+":",e.style.display="none",De.appendChild(e),e.src=String(r),(t=e.contentWindow.document).open(),t.write($e("document.F=Object")),t.close(),t.F):Ke(re);for(var n=Se.length;n--;)delete Ge[ze][Se[n]];return Ge()};Jt[qe]=!0;var Ve=Object.create||function(t,e){var r;return null!==t?(He[ze]=kt(t),r=new He,He[ze]=null,r[qe]=t):r=Ge(),void 0===e?r:Be.f(r,e)},Ye=Ct.f,Xe=dt("unscopables"),Je=Array.prototype;void 0===Je[Xe]&&Ye(Je,Xe,{configurable:!0,value:Ve(null)});var Qe=function(t){Je[Xe][t]=!0};Ce({target:"Array",proto:!0},{at:function(t){var e=it(this),r=de(e),n=ce(t),o=n>=0?n:r+n;return o<0||o>=r?void 0:e[o]}}),Qe("at");var Ze=function(t,e){return b(i[t].prototype[e])},tr=(Ze("Array","at"),TypeError),er=function(t,e){if(!delete t[e])throw new tr("Cannot delete property "+Y(e)+" of "+Y(t))},rr=Math.min,nr=[].copyWithin||function(t,e){var r=it(this),n=de(r),o=he(t,n),i=he(e,n),a=arguments.length>2?arguments[2]:void 0,u=rr((void 0===a?n:he(a,n))-i,n-o),s=1;for(i0;)i in r?r[o]=r[i]:er(r,o),o+=s,i+=s;return r};Ce({target:"Array",proto:!0},{copyWithin:nr}),Qe("copyWithin"),Ze("Array","copyWithin"),Ce({target:"Array",proto:!0},{fill:function(t){for(var e=it(this),r=de(e),n=arguments.length,o=he(n>1?arguments[1]:void 0,r),i=n>2?arguments[2]:void 0,a=void 0===i?r:he(i,r);a>o;)e[o++]=t;return e}}),Qe("fill"),Ze("Array","fill");var or=function(t){if("Function"===E(t))return b(t)},ir=or(or.bind),ar=function(t,e){return J(t),void 0===e?t:s?ir(t,e):function(){return t.apply(e,arguments)}},ur=Array.isArray||function(t){return"Array"===E(t)},sr={};sr[dt("toStringTag")]="z";var cr="[object z]"===String(sr),fr=dt("toStringTag"),lr=Object,hr="Arguments"===E(function(){return arguments}()),pr=cr?E:function(t){var e,r,n;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(r=function(t,e){try{return t[e]}catch(t){}}(e=lr(t),fr))?r:hr?E(e):"Object"===(n=E(e))&&T(e.callee)?"Arguments":n},vr=function(){},dr=L("Reflect","construct"),gr=/^\s*(?:class|function)\b/,yr=b(gr.exec),mr=!gr.test(vr),br=function(t){if(!T(t))return!1;try{return dr(vr,[],t),!0}catch(t){return!1}},wr=function(t){if(!T(t))return!1;switch(pr(t)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return mr||!!yr(gr,Kt(t))}catch(t){return!0}};wr.sham=!0;var Sr=!dr||a(function(){var t;return br(br.call)||!br(Object)||!br(function(){t=!0})||t})?wr:br,Er=dt("species"),Or=Array,xr=function(t,e){return new(function(t){var e;return ur(t)&&(Sr(e=t.constructor)&&(e===Or||ur(e.prototype))||M(e)&&null===(e=e[Er]))&&(e=void 0),void 0===e?Or:e}(t))(0===e?0:e)},Rr=b([].push),Pr=function(t){var e=1===t,r=2===t,n=3===t,o=4===t,i=6===t,a=7===t,u=5===t||i;return function(s,c,f,l){for(var h,p,v=it(s),d=R(v),g=de(d),y=ar(c,f),m=0,b=l||xr,w=e?b(s,g):r||a?b(s,0):void 0;g>m;m++)if((u||m in d)&&(p=y(h=d[m],m,v),t))if(e)w[m]=p;else if(p)switch(t){case 3:return!0;case 5:return h;case 6:return m;case 2:Rr(w,h)}else switch(t){case 4:return!1;case 7:Rr(w,h)}return i?-1:n||o?o:w}},Ar={forEach:Pr(0),map:Pr(1),filter:Pr(2),some:Pr(3),every:Pr(4),find:Pr(5),findIndex:Pr(6),filterReject:Pr(7)},jr=Ar.find,kr="find",Ir=!0;kr in[]&&Array(1)[kr](function(){Ir=!1}),Ce({target:"Array",proto:!0,forced:Ir},{find:function(t){return jr(this,t,arguments.length>1?arguments[1]:void 0)}}),Qe(kr),Ze("Array","find");var Tr=Ar.findIndex,Mr="findIndex",Lr=!0;Mr in[]&&Array(1)[Mr](function(){Lr=!1}),Ce({target:"Array",proto:!0,forced:Lr},{findIndex:function(t){return Tr(this,t,arguments.length>1?arguments[1]:void 0)}}),Qe(Mr),Ze("Array","findIndex");var Ur=TypeError,Nr=function(t){if(t>9007199254740991)throw Ur("Maximum allowed index exceeded");return t},Cr=function(t,e,r,n,o,i,a,u){for(var s,c,f=o,l=0,h=!!a&&ar(a,u);l0&&ur(s)?(c=de(s),f=Cr(t,e,s,c,f,i-1)-1):(Nr(f+1),t[f]=s),f++),l++;return f},_r=Cr;Ce({target:"Array",proto:!0},{flatMap:function(t){var e,r=it(this),n=de(r);return J(t),(e=xr(r,0)).length=_r(e,r,r,n,0,1,t,arguments.length>1?arguments[1]:void 0),e}}),Qe("flatMap"),Ze("Array","flatMap"),Ce({target:"Array",proto:!0},{flat:function(){var t=arguments.length?arguments[0]:void 0,e=it(this),r=de(e),n=xr(e,0);return n.length=_r(n,e,e,r,0,void 0===t?1:ce(t)),n}}),Qe("flat"),Ze("Array","flat");var Fr,Br,Dr,zr=String,Wr=function(t){if("Symbol"===pr(t))throw new TypeError("Cannot convert a Symbol value to a string");return zr(t)},qr=b("".charAt),Hr=b("".charCodeAt),$r=b("".slice),Kr=function(t){return function(e,r){var n,o,i=Wr(j(e)),a=ce(r),u=i.length;return a<0||a>=u?t?"":void 0:(n=Hr(i,a))<55296||n>56319||a+1===u||(o=Hr(i,a+1))<56320||o>57343?t?qr(i,a):n:t?$r(i,a,a+2):o-56320+(n-55296<<10)+65536}},Gr={codeAt:Kr(!1),charAt:Kr(!0)},Vr=!a(function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype}),Yr=Xt("IE_PROTO"),Xr=Object,Jr=Xr.prototype,Qr=Vr?Xr.getPrototypeOf:function(t){var e=it(t);if(ut(e,Yr))return e[Yr];var r=e.constructor;return T(r)&&e instanceof r?r.prototype:e instanceof Xr?Jr:null},Zr=dt("iterator"),tn=!1;[].keys&&("next"in(Dr=[].keys())?(Br=Qr(Qr(Dr)))!==Object.prototype&&(Fr=Br):tn=!0);var en=!M(Fr)||a(function(){var t={};return Fr[Zr].call(t)!==t});en&&(Fr={}),T(Fr[Zr])||ie(Fr,Zr,function(){return this});var rn={IteratorPrototype:Fr,BUGGY_SAFARI_ITERATORS:tn},nn=Ct.f,on=dt("toStringTag"),an=function(t,e,r){t&&!r&&(t=t.prototype),t&&!ut(t,on)&&nn(t,on,{configurable:!0,value:e})},un={},sn=rn.IteratorPrototype,cn=function(){return this},fn=function(t,e,r,n){var o=e+" Iterator";return t.prototype=Ve(sn,{next:d(+!n,r)}),an(t,o,!1),un[o]=cn,t},ln=function(t,e,r){try{return b(J(Object.getOwnPropertyDescriptor(t,e)[r]))}catch(t){}},hn=String,pn=TypeError,vn=function(t){if(function(t){return M(t)||null===t}(t))return t;throw new pn("Can't set "+hn(t)+" as a prototype")},dn=Object.setPrototypeOf||("__proto__"in{}?function(){var t,e=!1,r={};try{(t=ln(Object.prototype,"__proto__","set"))(r,[]),e=r instanceof Array}catch(t){}return function(r,n){return j(r),vn(n),M(r)?(e?t(r,n):r.__proto__=n,r):r}}():void 0),gn=zt.PROPER,yn=zt.CONFIGURABLE,mn=rn.IteratorPrototype,bn=rn.BUGGY_SAFARI_ITERATORS,wn=dt("iterator"),Sn="keys",En="values",On="entries",xn=function(){return this},Rn=function(t,e,r,n,o,i,a){fn(r,e,n);var u,s,c,l=function(t){if(t===o&&g)return g;if(!bn&&t&&t in v)return v[t];switch(t){case Sn:case En:case On:return function(){return new r(this,t)}}return function(){return new r(this)}},h=e+" Iterator",p=!1,v=t.prototype,d=v[wn]||v["@@iterator"]||o&&v[o],g=!bn&&d||l(o),y="Array"===e&&v.entries||d;if(y&&(u=Qr(y.call(new t)))!==Object.prototype&&u.next&&(Qr(u)!==mn&&(dn?dn(u,mn):T(u[wn])||ie(u,wn,xn)),an(u,h,!0)),gn&&o===En&&d&&d.name!==En&&(yn?_t(v,"name",En):(p=!0,g=function(){return f(d,this)})),o)if(s={values:l(En),keys:i?g:l(Sn),entries:l(On)},a)for(c in s)(bn||p||!(c in v))&&ie(v,c,s[c]);else Ce({target:e,proto:!0,forced:bn||p},s);return v[wn]!==g&&ie(v,wn,g,{name:o}),un[e]=g,s},Pn=function(t,e){return{value:t,done:e}},An=Gr.charAt,jn="String Iterator",kn=ne.set,In=ne.getterFor(jn);Rn(String,"String",function(t){kn(this,{type:jn,string:Wr(t),index:0})},function(){var t,e=In(this),r=e.string,n=e.index;return n>=r.length?Pn(void 0,!0):(t=An(r,n),e.index+=t.length,Pn(t,!1))});var Tn=function(t,e,r){var n,o;kt(t);try{if(!(n=Q(t,"return"))){if("throw"===e)throw r;return r}n=f(n,t)}catch(t){o=!0,n=t}if("throw"===e)throw r;if(o)throw n;return kt(n),r},Mn=function(t,e,r,n){try{return n?e(kt(r)[0],r[1]):e(r)}catch(e){Tn(t,"throw",e)}},Ln=dt("iterator"),Un=Array.prototype,Nn=function(t){return void 0!==t&&(un.Array===t||Un[Ln]===t)},Cn=function(t,e,r){u?Ct.f(t,e,d(0,r)):t[e]=r},_n=dt("iterator"),Fn=function(t){if(!P(t))return Q(t,_n)||Q(t,"@@iterator")||un[pr(t)]},Bn=TypeError,Dn=function(t,e){var r=arguments.length<2?Fn(t):e;if(J(r))return kt(f(r,t));throw new Bn(Y(t)+" is not iterable")},zn=Array,Wn=function(t){var e=it(t),r=Sr(this),n=arguments.length,o=n>1?arguments[1]:void 0,i=void 0!==o;i&&(o=ar(o,n>2?arguments[2]:void 0));var a,u,s,c,l,h,p=Fn(e),v=0;if(!p||this===zn&&Nn(p))for(a=de(e),u=r?new this(a):zn(a);a>v;v++)h=i?o(e[v],v):e[v],Cn(u,v,h);else for(u=r?new this:[],l=(c=Dn(e,p)).next;!(s=f(l,c)).done;v++)h=i?Mn(c,o,[s.value,v],!0):s.value,Cn(u,v,h);return u.length=v,u},qn=dt("iterator"),Hn=!1;try{var $n=0,Kn={next:function(){return{done:!!$n++}},return:function(){Hn=!0}};Kn[qn]=function(){return this},Array.from(Kn,function(){throw 2})}catch(t){}var Gn=function(t,e){try{if(!e&&!Hn)return!1}catch(t){return!1}var r=!1;try{var n={};n[qn]=function(){return{next:function(){return{done:r=!0}}}},t(n)}catch(t){}return r},Vn=!Gn(function(t){Array.from(t)});Ce({target:"Array",stat:!0,forced:Vn},{from:Wn});var Yn=i,Xn=ye.includes,Jn=a(function(){return!Array(1).includes()});Ce({target:"Array",proto:!0,forced:Jn},{includes:function(t){return Xn(this,t,arguments.length>1?arguments[1]:void 0)}}),Qe("includes"),Ze("Array","includes");var Qn=Ct.f,Zn="Array Iterator",to=ne.set,eo=ne.getterFor(Zn),ro=Rn(Array,"Array",function(t,e){to(this,{type:Zn,target:k(t),index:0,kind:e})},function(){var t=eo(this),e=t.target,r=t.index++;if(!e||r>=e.length)return t.target=null,Pn(void 0,!0);switch(t.kind){case"keys":return Pn(r,!1);case"values":return Pn(e[r],!1)}return Pn([r,e[r]],!1)},"values"),no=un.Arguments=un.Array;if(Qe("keys"),Qe("values"),Qe("entries"),u&&"values"!==no.name)try{Qn(no,"name",{value:"values"})}catch(t){}cr||ie(Object.prototype,"toString",cr?{}.toString:function(){return"[object "+pr(this)+"]"},{unsafe:!0}),Ze("Array","values");var oo=Array,io=a(function(){function t(){}return!(oo.of.call(t)instanceof t)});Ce({target:"Array",stat:!0,forced:io},{of:function(){for(var t=0,e=arguments.length,r=new(Sr(this)?this:oo)(e);e>t;)Cn(r,t,arguments[t++]);return r.length=e,r}});var ao=dt("hasInstance"),uo=Function.prototype;ao in uo||Ct.f(uo,ao,{value:oe(function(t){if(!T(this)||!M(t))return!1;var e=this.prototype;return M(e)?U(e,t):t instanceof this},ao)}),dt("hasInstance");var so=function(t,e,r){return r.get&&oe(r.get,e,{getter:!0}),r.set&&oe(r.set,e,{setter:!0}),Ct.f(t,e,r)},co=zt.EXISTS,fo=Function.prototype,lo=b(fo.toString),ho=/function\b(?:\s|\/\*[\S\s]*?\*\/|\/\/[^\n\r]*[\n\r]+)*([^\s(/]*)/,po=b(ho.exec);u&&!co&&so(fo,"name",{configurable:!0,get:function(){try{return po(ho,lo(this))[1]}catch(t){return""}}});var vo=b([].slice),go=Oe.f,yo="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],mo={f:function(t){return yo&&"Window"===E(t)?function(t){try{return go(t)}catch(t){return vo(yo)}}(t):go(k(t))}},bo=a(function(){if("function"==typeof ArrayBuffer){var t=new ArrayBuffer(8);Object.isExtensible(t)&&Object.defineProperty(t,"a",{value:8})}}),wo=Object.isExtensible,So=a(function(){wo(1)})||bo?function(t){return!!M(t)&&(!bo||"ArrayBuffer"!==E(t))&&(!wo||wo(t))}:wo,Eo=!a(function(){return Object.isExtensible(Object.preventExtensions({}))}),Oo=e(function(t){var e=Ct.f,r=!1,n=lt("meta"),o=0,i=function(t){e(t,n,{value:{objectID:"O"+o++,weakData:{}}})},a=t.exports={enable:function(){a.enable=function(){},r=!0;var t=Oe.f,e=b([].splice),o={};o[n]=1,t(o).length&&(Oe.f=function(r){for(var o=t(r),i=0,a=o.length;ii;i++)if((u=y(t[i]))&&U(Po,u))return u;return new Ro(!1)}n=Dn(t,o)}for(s=h?t.next:n.next;!(c=f(s,n)).done;){try{u=y(c.value)}catch(t){Tn(n,"throw",t)}if("object"==typeof u&&u&&U(Po,u))return u}return new Ro(!1)},jo=TypeError,ko=function(t,e){if(U(e,t))return t;throw new jo("Incorrect invocation")},Io=function(t,e,r){var n,o;return dn&&T(n=e.constructor)&&n!==r&&M(o=n.prototype)&&o!==r.prototype&&dn(t,o),t},To=function(t,e,r){var n=-1!==t.indexOf("Map"),o=-1!==t.indexOf("Weak"),u=n?"set":"add",s=i[t],c=s&&s.prototype,f=s,l={},h=function(t){var e=b(c[t]);ie(c,t,"add"===t?function(t){return e(this,0===t?0:t),this}:"delete"===t?function(t){return!(o&&!M(t))&&e(this,0===t?0:t)}:"get"===t?function(t){return o&&!M(t)?void 0:e(this,0===t?0:t)}:"has"===t?function(t){return!(o&&!M(t))&&e(this,0===t?0:t)}:function(t,r){return e(this,0===t?0:t,r),this})};if(Ue(t,!T(s)||!(o||c.forEach&&!a(function(){(new s).entries().next()}))))f=r.getConstructor(e,t,n,u),Oo.enable();else if(Ue(t,!0)){var p=new f,v=p[u](o?{}:-0,1)!==p,d=a(function(){p.has(1)}),g=Gn(function(t){new s(t)}),y=!o&&a(function(){for(var t=new s,e=5;e--;)t[u](e,e);return!t.has(-0)});g||((f=e(function(t,e){ko(t,c);var r=Io(new s,t,f);return P(e)||Ao(e,r[u],{that:r,AS_ENTRIES:n}),r})).prototype=c,c.constructor=f),(d||y)&&(h("delete"),h("has"),n&&h("get")),(y||v)&&h(u),o&&c.clear&&delete c.clear}return l[t]=f,Ce({global:!0,constructor:!0,forced:f!==s},l),an(f,t),o||r.setStrong(f,t,n),f},Mo=function(t,e,r){for(var n in e)ie(t,n,e[n],r);return t},Lo=dt("species"),Uo=function(t){var e=L(t);u&&e&&!e[Lo]&&so(e,Lo,{configurable:!0,get:function(){return this}})},No=Oo.fastKey,Co=ne.set,_o=ne.getterFor,Fo={getConstructor:function(t,e,r,n){var o=t(function(t,o){ko(t,i),Co(t,{type:e,index:Ve(null),first:null,last:null,size:0}),u||(t.size=0),P(o)||Ao(o,t[n],{that:t,AS_ENTRIES:r})}),i=o.prototype,a=_o(e),s=function(t,e,r){var n,o,i=a(t),s=c(t,e);return s?s.value=r:(i.last=s={index:o=No(e,!0),key:e,value:r,previous:n=i.last,next:null,removed:!1},i.first||(i.first=s),n&&(n.next=s),u?i.size++:t.size++,"F"!==o&&(i.index[o]=s)),t},c=function(t,e){var r,n=a(t),o=No(e);if("F"!==o)return n.index[o];for(r=n.first;r;r=r.next)if(r.key===e)return r};return Mo(i,{clear:function(){for(var t=a(this),e=t.first;e;)e.removed=!0,e.previous&&(e.previous=e.previous.next=null),e=e.next;t.first=t.last=null,t.index=Ve(null),u?t.size=0:this.size=0},delete:function(t){var e=this,r=a(e),n=c(e,t);if(n){var o=n.next,i=n.previous;delete r.index[n.index],n.removed=!0,i&&(i.next=o),o&&(o.previous=i),r.first===n&&(r.first=o),r.last===n&&(r.last=i),u?r.size--:e.size--}return!!n},forEach:function(t){for(var e,r=a(this),n=ar(t,arguments.length>1?arguments[1]:void 0);e=e?e.next:r.first;)for(n(e.value,e.key,this);e&&e.removed;)e=e.previous},has:function(t){return!!c(this,t)}}),Mo(i,r?{get:function(t){var e=c(this,t);return e&&e.value},set:function(t,e){return s(this,0===t?0:t,e)}}:{add:function(t){return s(this,t=0===t?0:t,t)}}),u&&so(i,"size",{configurable:!0,get:function(){return a(this).size}}),o},setStrong:function(t,e,r){var n=e+" Iterator",o=_o(e),i=_o(n);Rn(t,e,function(t,e){Co(this,{type:n,target:t,state:o(t),kind:e,last:null})},function(){for(var t=i(this),e=t.kind,r=t.last;r&&r.removed;)r=r.previous;return t.target&&(t.last=r=r?r.next:t.state.first)?Pn("keys"===e?r.key:"values"===e?r.value:[r.key,r.value],!1):(t.target=null,Pn(void 0,!0))},r?"entries":"values",!r,!0),Uo(e)}};To("Map",function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}},Fo);var Bo=Map.prototype,Do={Map:Map,set:b(Bo.set),get:b(Bo.get),has:b(Bo.has),remove:b(Bo.delete),proto:Bo},zo=Do.Map,Wo=Do.has,qo=Do.get,Ho=Do.set,$o=b([].push),Ko=a(function(){return 1!==zo.groupBy("ab",function(t){return t}).get("a").length});Ce({target:"Map",stat:!0,forced:Ko},{groupBy:function(t,e){j(t),J(e);var r=new zo,n=0;return Ao(t,function(t){var o=e(t,n++);Wo(r,o)?$o(qo(r,o),t):Ho(r,o,[t])}),r}});var Go={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0},Vo=Et("span").classList,Yo=Vo&&Vo.constructor&&Vo.constructor.prototype,Xo=Yo===Object.prototype?void 0:Yo,Jo=dt("iterator"),Qo=ro.values,Zo=function(t,e){if(t){if(t[Jo]!==Qo)try{_t(t,Jo,Qo)}catch(e){t[Jo]=Qo}if(an(t,e,!0),Go[e])for(var r in ro)if(t[r]!==ro[r])try{_t(t,r,ro[r])}catch(e){t[r]=ro[r]}}};for(var ti in Go)Zo(i[ti]&&i[ti].prototype,ti);Zo(Xo,"DOMTokenList");var ei=function(t,e,r){return function(n){var o=it(n),i=arguments.length,a=i>1?arguments[1]:void 0,u=void 0!==a,s=u?ar(a,i>2?arguments[2]:void 0):void 0,c=new t,f=0;return Ao(o,function(t){var n=u?s(t,f++):t;r?e(c,kt(n)[0],n[1]):e(c,n)}),c}};Ce({target:"Map",stat:!0,forced:!0},{from:ei(Do.Map,Do.set,!0)});var ri=function(t,e,r){return function(){for(var n=new t,o=arguments.length,i=0;i1?arguments[1]:void 0);return!1!==di(e,function(t,n){if(!r(t,n,e))return!1},!0)}});var gi=Do.Map,yi=Do.set;Ce({target:"Map",proto:!0,real:!0,forced:!0},{filter:function(t){var e=oi(this),r=ar(t,arguments.length>1?arguments[1]:void 0),n=new gi;return di(e,function(t,o){r(t,o,e)&&yi(n,o,t)}),n}}),Ce({target:"Map",proto:!0,real:!0,forced:!0},{find:function(t){var e=oi(this),r=ar(t,arguments.length>1?arguments[1]:void 0),n=di(e,function(t,n){if(r(t,n,e))return{value:t}},!0);return n&&n.value}}),Ce({target:"Map",proto:!0,real:!0,forced:!0},{findKey:function(t){var e=oi(this),r=ar(t,arguments.length>1?arguments[1]:void 0),n=di(e,function(t,n){if(r(t,n,e))return{key:n}},!0);return n&&n.key}}),Ce({target:"Map",proto:!0,real:!0,forced:!0},{includes:function(t){return!0===di(oi(this),function(e){if((r=e)===(n=t)||r!=r&&n!=n)return!0;var r,n},!0)}});var mi=Do.Map;Ce({target:"Map",stat:!0,forced:!0},{keyBy:function(t,e){var r=new(T(this)?this:mi);J(e);var n=J(r.set);return Ao(t,function(t){f(n,r,e(t),t)}),r}}),Ce({target:"Map",proto:!0,real:!0,forced:!0},{keyOf:function(t){var e=di(oi(this),function(e,r){if(e===t)return{key:r}},!0);return e&&e.key}});var bi=Do.Map,wi=Do.set;Ce({target:"Map",proto:!0,real:!0,forced:!0},{mapKeys:function(t){var e=oi(this),r=ar(t,arguments.length>1?arguments[1]:void 0),n=new bi;return di(e,function(t,o){wi(n,r(t,o,e),t)}),n}});var Si=Do.Map,Ei=Do.set;Ce({target:"Map",proto:!0,real:!0,forced:!0},{mapValues:function(t){var e=oi(this),r=ar(t,arguments.length>1?arguments[1]:void 0),n=new Si;return di(e,function(t,o){Ei(n,o,r(t,o,e))}),n}});var Oi=Do.set;Ce({target:"Map",proto:!0,real:!0,arity:1,forced:!0},{merge:function(t){for(var e=oi(this),r=arguments.length,n=0;n1?arguments[1]:void 0);return!0===di(e,function(t,n){if(r(t,n,e))return!0},!0)}});var Ri=TypeError,Pi=Do.get,Ai=Do.has,ji=Do.set;Ce({target:"Map",proto:!0,real:!0,forced:!0},{update:function(t,e){var r=oi(this),n=arguments.length;J(e);var o=Ai(r,t);if(!o&&n<3)throw new Ri("Updating absent value");var i=o?Pi(r,t):J(n>2?arguments[2]:void 0)(t,r);return ji(r,t,e(i,t,r)),r}});var ki=TypeError,Ii=function(t,e){var r,n=kt(this),o=J(n.get),i=J(n.has),a=J(n.set),u=arguments.length>2?arguments[2]:void 0;if(!T(e)&&!T(u))throw new ki("At least one callback required");return f(i,n,t)?(r=f(o,n,t),T(e)&&(r=e(r),f(a,n,t,r))):T(u)&&(r=u(),f(a,n,t,r)),r};Ce({target:"Map",proto:!0,real:!0,forced:!0},{upsert:Ii}),Ce({target:"Map",proto:!0,real:!0,name:"upsert",forced:!0},{updateOrInsert:Ii});var Ti=b(1..valueOf),Mi="\t\n\v\f\r                 \u2028\u2029\ufeff",Li=b("".replace),Ui=RegExp("^["+Mi+"]+"),Ni=RegExp("(^|[^"+Mi+"])["+Mi+"]+$"),Ci=function(t){return function(e){var r=Wr(j(e));return 1&t&&(r=Li(r,Ui,"")),2&t&&(r=Li(r,Ni,"$1")),r}},_i={start:Ci(1),end:Ci(2),trim:Ci(3)},Fi=Oe.f,Bi=Rt.f,Di=Ct.f,zi=_i.trim,Wi="Number",qi=i[Wi],Hi=qi.prototype,$i=i.TypeError,Ki=b("".slice),Gi=b("".charCodeAt),Vi=Ue(Wi,!qi(" 0o1")||!qi("0b1")||qi("+0x1")),Yi=function(t){var e,r=arguments.length<1?0:qi(function(t){var e=mt(t,"number");return"bigint"==typeof e?e:function(t){var e,r,n,o,i,a,u,s,c=mt(t,"number");if(G(c))throw new $i("Cannot convert a Symbol value to a number");if("string"==typeof c&&c.length>2)if(c=zi(c),43===(e=Gi(c,0))||45===e){if(88===(r=Gi(c,2))||120===r)return NaN}else if(48===e){switch(Gi(c,1)){case 66:case 98:n=2,o=49;break;case 79:case 111:n=8,o=55;break;default:return+c}for(a=(i=Ki(c,2)).length,u=0;uo)return NaN;return parseInt(i,n)}return+c}(e)}(t));return U(Hi,e=this)&&a(function(){Ti(e)})?Io(Object(r),this,Yi):r};Yi.prototype=Hi,Vi&&(Hi.constructor=Yi),Ce({global:!0,constructor:!0,wrap:!0,forced:Vi},{Number:Yi}),Vi&&function(t,e){for(var r,n=u?Fi(e):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,fromString,range".split(","),o=0;n.length>o;o++)ut(e,r=n[o])&&!ut(t,r)&&Di(t,r,Bi(e,r))}(Yn[Wi],qi),Ce({target:"Number",stat:!0,nonConfigurable:!0,nonWritable:!0},{EPSILON:Math.pow(2,-52)});var Xi=i.isFinite;Ce({target:"Number",stat:!0},{isFinite:Number.isFinite||function(t){return"number"==typeof t&&Xi(t)}});var Ji=Math.floor,Qi=Number.isInteger||function(t){return!M(t)&&isFinite(t)&&Ji(t)===t};Ce({target:"Number",stat:!0},{isInteger:Qi}),Ce({target:"Number",stat:!0},{isNaN:function(t){return t!=t}});var Zi=Math.abs;Ce({target:"Number",stat:!0},{isSafeInteger:function(t){return Qi(t)&&Zi(t)<=9007199254740991}}),Ce({target:"Number",stat:!0,nonConfigurable:!0,nonWritable:!0},{MAX_SAFE_INTEGER:9007199254740991}),Ce({target:"Number",stat:!0,nonConfigurable:!0,nonWritable:!0},{MIN_SAFE_INTEGER:-9007199254740991});var ta=_i.trim,ea=b("".charAt),ra=i.parseFloat,na=i.Symbol,oa=na&&na.iterator,ia=1/ra(Mi+"-0")!=-Infinity||oa&&!a(function(){ra(Object(oa))})?function(t){var e=ta(Wr(t)),r=ra(e);return 0===r&&"-"===ea(e,0)?-0:r}:ra;Ce({target:"Number",stat:!0,forced:Number.parseFloat!==ia},{parseFloat:ia});var aa=_i.trim,ua=i.parseInt,sa=i.Symbol,ca=sa&&sa.iterator,fa=/^[+-]?0x/i,la=b(fa.exec),ha=8!==ua(Mi+"08")||22!==ua(Mi+"0x16")||ca&&!a(function(){ua(Object(ca))})?function(t,e){var r=aa(Wr(t));return ua(r,e>>>0||(la(fa,r)?16:10))}:ua;Ce({target:"Number",stat:!0,forced:Number.parseInt!==ha},{parseInt:ha});var pa=b(v.f),va=b([].push),da=u&&a(function(){var t=Object.create(null);return t[2]=2,!pa(t,2)}),ga=function(t){return function(e){for(var r,n=k(e),o=_e(n),i=da&&null===Qr(n),a=o.length,s=0,c=[];a>s;)r=o[s++],u&&!(i?r in n:pa(n,r))||va(c,t?[r,n[r]]:n[r]);return c}},ya={entries:ga(!0),values:ga(!1)},ma=ya.entries;Ce({target:"Object",stat:!0},{entries:function(t){return ma(t)}}),Ce({target:"Object",stat:!0,sham:!u},{getOwnPropertyDescriptors:function(t){for(var e,r,n=k(t),o=Rt.f,i=Pe(n),a={},u=0;i.length>u;)void 0!==(r=o(n,e=i[u++]))&&Cn(a,e,r);return a}});var ba=a(function(){_e(1)});Ce({target:"Object",stat:!0,forced:ba},{keys:function(t){return _e(it(t))}});var wa=Object.is||function(t,e){return t===e?0!==t||1/t==1/e:t!=t&&e!=e};Ce({target:"Object",stat:!0},{is:wa});var Sa=ya.values;Ce({target:"Object",stat:!0},{values:function(t){return Sa(t)}}),Ce({target:"Object",stat:!0},{hasOwn:ut});var Ea=Function.prototype,Oa=Ea.apply,xa=Ea.call,Ra="object"==typeof Reflect&&Reflect.apply||(s?xa.bind(Oa):function(){return xa.apply(Oa,arguments)}),Pa=!a(function(){Reflect.apply(function(){})});Ce({target:"Reflect",stat:!0,forced:Pa},{apply:function(t,e,r){return Ra(J(t),e,kt(r))}});var Aa=Function,ja=b([].concat),ka=b([].join),Ia={},Ta=s?Aa.bind:function(t){var e=J(this),r=e.prototype,n=vo(arguments,1),o=function(){var r=ja(n,vo(arguments));return this instanceof o?function(t,e,r){if(!ut(Ia,e)){for(var n=[],o=0;ob)","g");return"b"!==t.exec("b").groups.a||"bc"!=="b".replace(t,"$c")}),gs=Oe.f,ys=ne.enforce,ms=dt("match"),bs=i.RegExp,ws=bs.prototype,Ss=i.SyntaxError,Es=b(ws.exec),Os=b("".charAt),xs=b("".replace),Rs=b("".indexOf),Ps=b("".slice),As=/^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/,js=/a/g,ks=/a/g,Is=new bs(js)!==js,Ts=cs.MISSED_STICKY,Ms=cs.UNSUPPORTED_Y,Ls=u&&(!Is||Ts||ps||ds||a(function(){return ks[ms]=!1,bs(js)!==js||bs(ks)===ks||"/a/i"!==String(bs(js,"i"))}));if(Ue("RegExp",Ls)){for(var Us=function(t,e){var r,n,o,i,a,u,s=U(ws,this),c=es(t),f=void 0===e,l=[],h=t;if(!s&&c&&f&&t.constructor===Us)return t;if((c||U(ws,t))&&(t=t.source,f&&(e=os(h))),t=void 0===t?"":Wr(t),e=void 0===e?"":Wr(e),h=t,ps&&"dotAll"in js&&(n=!!e&&Rs(e,"s")>-1)&&(e=xs(e,/s/g,"")),r=e,Ts&&"sticky"in js&&(o=!!e&&Rs(e,"y")>-1)&&Ms&&(e=xs(e,/y/g,"")),ds&&(i=function(t){for(var e,r=t.length,n=0,o="",i=[],a=Ve(null),u=!1,s=!1,c=0,f="";n<=r;n++){if("\\"===(e=Os(t,n)))e+=Os(t,++n);else if("]"===e)u=!1;else if(!u)switch(!0){case"["===e:u=!0;break;case"("===e:if(o+=e,"?:"===Ps(t,n+1,n+3))continue;Es(As,Ps(t,n+1))&&(n+=2,s=!0),c++;continue;case">"===e&&s:if(""===f||ut(a,f))throw new Ss("Invalid capture group name");a[f]=!0,i[i.length]=[f,c],s=!1,f="";continue}s?f+=e:o+=e}return[o,i]}(t),t=i[0],l=i[1]),a=Io(bs(t,e),s?this:ws,Us),(n||o||l.length)&&(u=ys(a),n&&(u.dotAll=!0,u.raw=Us(function(t){for(var e,r=t.length,n=0,o="",i=!1;n<=r;n++)"\\"!==(e=Os(t,n))?i||"."!==e?("["===e?i=!0:"]"===e&&(i=!1),o+=e):o+="[\\s\\S]":o+=e+Os(t,++n);return o}(t),r)),o&&(u.sticky=!0),l.length&&(u.groups=l)),t!==h)try{_t(a,"source",""===h?"(?:)":h)}catch(t){}return a},Ns=gs(bs),Cs=0;Ns.length>Cs;)ls(Us,bs,Ns[Cs++]);ws.constructor=Us,Us.prototype=ws,ie(i,"RegExp",Us,{constructor:!0})}Uo("RegExp");var _s=zt.PROPER,Fs="toString",Bs=RegExp.prototype,Ds=Bs[Fs];(a(function(){return"/a/b"!==Ds.call({source:"a",flags:"b"})})||_s&&Ds.name!==Fs)&&ie(Bs,Fs,function(){var t=kt(this);return"/"+Wr(t.source)+"/"+Wr(os(t))},{unsafe:!0});var zs=ne.get,Ws=RegExp.prototype,qs=TypeError;u&&ps&&so(Ws,"dotAll",{configurable:!0,get:function(){if(this!==Ws){if("RegExp"===E(this))return!!zs(this).dotAll;throw new qs("Incompatible receiver, RegExp required")}}});var Hs=ne.get,$s=nt("native-string-replace",String.prototype.replace),Ks=RegExp.prototype.exec,Gs=Ks,Vs=b("".charAt),Ys=b("".indexOf),Xs=b("".replace),Js=b("".slice),Qs=function(){var t=/a/,e=/b*/g;return f(Ks,t,"a"),f(Ks,e,"a"),0!==t.lastIndex||0!==e.lastIndex}(),Zs=cs.BROKEN_CARET,tc=void 0!==/()??/.exec("")[1];(Qs||tc||Zs||ps||ds)&&(Gs=function(t){var e,r,n,o,i,a,u,s=this,c=Hs(s),l=Wr(t),h=c.raw;if(h)return h.lastIndex=s.lastIndex,e=f(Gs,h,l),s.lastIndex=h.lastIndex,e;var p=c.groups,v=Zs&&s.sticky,d=f(rs,s),g=s.source,y=0,m=l;if(v&&(d=Xs(d,"y",""),-1===Ys(d,"g")&&(d+="g"),m=Js(l,s.lastIndex),s.lastIndex>0&&(!s.multiline||s.multiline&&"\n"!==Vs(l,s.lastIndex-1))&&(g="(?: "+g+")",m=" "+m,y++),r=new RegExp("^(?:"+g+")",d)),tc&&(r=new RegExp("^"+g+"$(?!\\s)",d)),Qs&&(n=s.lastIndex),o=f(Ks,v?r:s,m),v?o?(o.input=Js(o.input,y),o[0]=Js(o[0],y),o.index=s.lastIndex,s.lastIndex+=o[0].length):s.lastIndex=0:Qs&&o&&(s.lastIndex=s.global?o.index+o[0].length:n),tc&&o&&o.length>1&&f($s,o[0],r,function(){for(i=1;i]*>)/g,Oc=/\$([$&'`]|\d{1,2})/g,xc=function(t,e,r,n,o,i){var a=r+t.length,u=n.length,s=Oc;return void 0!==o&&(o=it(o),s=Ec),wc(i,s,function(i,s){var c;switch(bc(s,0)){case"$":return"$";case"&":return t;case"`":return Sc(e,0,r);case"'":return Sc(e,a);case"<":c=o[Sc(s,1,-1)];break;default:var f=+s;if(0===f)return i;if(f>u){var l=mc(f/10);return 0===l?i:l<=u?void 0===n[l-1]?bc(s,1):n[l-1]+bc(s,1):i}c=n[f-1]}return void 0===c?"":c})},Rc=dt("replace"),Pc=Math.max,Ac=Math.min,jc=b([].concat),kc=b([].push),Ic=b("".indexOf),Tc=b("".slice),Mc="$0"==="a".replace(/./,"$0"),Lc=!!/./[Rc]&&""===/./[Rc]("a","$0"),Uc=!a(function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$")});pc("replace",function(t,e,r){var n=Lc?"$":"$0";return[function(t,r){var n=j(this),o=P(t)?void 0:Q(t,Rc);return o?f(o,t,n,r):f(e,Wr(n),t,r)},function(t,o){var i=kt(this),a=Wr(t);if("string"==typeof o&&-1===Ic(o,n)&&-1===Ic(o,"$<")){var u=r(e,i,a,o);if(u.done)return u.value}var s=T(o);s||(o=Wr(o));var c,f=i.global;f&&(c=i.unicode,i.lastIndex=0);for(var l,h=[];null!==(l=yc(i,a))&&(kc(h,l),f);)""===Wr(l[0])&&(i.lastIndex=dc(a,ve(i.lastIndex),c));for(var p,v="",d=0,g=0;g=d&&(v+=Tc(a,d,b)+y,d=b+m.length)}return v+Tc(a,d)}]},!Uc||!Mc||Lc),pc("search",function(t,e,r){return[function(e){var r=j(this),n=P(e)?void 0:Q(e,t);return n?f(n,e,r):new RegExp(e)[t](Wr(r))},function(t){var n=kt(this),o=Wr(t),i=r(e,n,o);if(i.done)return i.value;var a=n.lastIndex;wa(a,0)||(n.lastIndex=0);var u=yc(n,o);return wa(n.lastIndex,a)||(n.lastIndex=a),null===u?-1:u.index}]});var Nc=dt("species"),Cc=function(t,e){var r,n=kt(t).constructor;return void 0===n||P(r=kt(n)[Nc])?e:La(r)},_c=cs.UNSUPPORTED_Y,Fc=Math.min,Bc=b([].push),Dc=b("".slice),zc=!a(function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var r="ab".split(t);return 2!==r.length||"a"!==r[0]||"b"!==r[1]}),Wc="c"==="abbc".split(/(b)*/)[1]||4!=="test".split(/(?:)/,-1).length||2!=="ab".split(/(?:ab)*/).length||4!==".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length;pc("split",function(t,e,r){var n="0".split(void 0,0).length?function(t,r){return void 0===t&&0===r?[]:f(e,this,t,r)}:e;return[function(e,r){var o=j(this),i=P(e)?void 0:Q(e,t);return i?f(i,e,o,r):f(n,Wr(o),e,r)},function(t,o){var i=kt(this),a=Wr(t);if(!Wc){var u=r(n,i,a,o,n!==e);if(u.done)return u.value}var s=Cc(i,RegExp),c=i.unicode,f=new s(_c?"^(?:"+i.source+")":i,(i.ignoreCase?"i":"")+(i.multiline?"m":"")+(i.unicode?"u":"")+(_c?"g":"y")),l=void 0===o?4294967295:o>>>0;if(0===l)return[];if(0===a.length)return null===yc(f,a)?[a]:[];for(var h=0,p=0,v=[];p0;(n>>>=1)&&(e+=e))1&n&&(r+=e);return r},Kc=b($c),Gc=b("".slice),Vc=Math.ceil,Yc=function(t){return function(e,r,n){var o,i,a=Wr(j(e)),u=ve(r),s=a.length,c=void 0===n?" ":Wr(n);return u<=s||""===c?a:((i=Kc(c,Vc((o=u-s)/c.length))).length>o&&(i=Gc(i,0,o)),t?a+i:i+a)}},Xc={start:Yc(!1),end:Yc(!0)},Jc=Xc.start,Qc=Array,Zc=RegExp.escape,tf=b("".charAt),ef=b("".charCodeAt),rf=b(1.1.toString),nf=b([].join),of=/^[0-9a-z]/i,af=/^[$()*+./?[\\\]^{|}]/,uf=RegExp("^[!\"#%&',\\-:;<=>@`~"+Mi+"]"),sf=b(of.exec),cf={"\t":"t","\n":"n","\v":"v","\f":"f","\r":"r"},ff=function(t){var e=rf(ef(t,0),16);return e.length<3?"\\x"+Jc(e,2,"0"):"\\u"+Jc(e,4,"0")},lf=!Zc||"\\x61b"!==Zc("ab");Ce({target:"RegExp",stat:!0,forced:lf},{escape:function(t){!function(t){if("string"==typeof t)return t;throw new qc("Argument is not a string")}(t);for(var e=t.length,r=Qc(e),n=0;n=56320||n+1>=e||56320!=(64512&ef(t,n+1))?r[n]=ff(o):(r[n]=o,r[++n]=tf(t,n))}}return nf(r,"")}}),To("Set",function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}},Fo);var hf=Set.prototype,pf={Set:Set,add:b(hf.add),has:b(hf.has),remove:b(hf.delete),proto:hf},vf=pf.has,df=function(t){return vf(t),t},gf=pf.Set,yf=pf.proto,mf=b(yf.forEach),bf=b(yf.keys),wf=bf(new gf).next,Sf=function(t,e,r){return r?ci({iterator:bf(t),next:wf},e):mf(t,e)},Ef=pf.Set,Of=pf.add,xf=function(t){var e=new Ef;return Sf(t,function(t){Of(e,t)}),e},Rf=ln(pf.proto,"size","get")||function(t){return t.size},Pf="Invalid size",Af=RangeError,jf=TypeError,kf=Math.max,If=function(t,e){this.set=t,this.size=kf(e,0),this.has=J(t.has),this.keys=J(t.keys)};If.prototype={getIterator:function(){return{iterator:t=kt(f(this.keys,this.set)),next:t.next,done:!1};var t},includes:function(t){return f(this.has,this.set,t)}};var Tf=function(t){kt(t);var e=+t.size;if(e!=e)throw new jf(Pf);var r=ce(e);if(r<0)throw new Af(Pf);return new If(t,r)},Mf=pf.has,Lf=pf.remove,Uf=function(t){var e=df(this),r=Tf(t),n=xf(e);return Rf(e)<=r.size?Sf(e,function(t){r.includes(t)&&Lf(n,t)}):ci(r.getIterator(),function(t){Mf(e,t)&&Lf(n,t)}),n},Nf=function(t){return{size:t,has:function(){return!1},keys:function(){return{next:function(){return{done:!0}}}}}},Cf=function(t){var e=L("Set");try{(new e)[t](Nf(0));try{return(new e)[t](Nf(-1)),!1}catch(t){return!0}}catch(t){return!1}};Ce({target:"Set",proto:!0,real:!0,forced:!Cf("difference")},{difference:Uf});var _f=pf.Set,Ff=pf.add,Bf=pf.has,Df=function(t){var e=df(this),r=Tf(t),n=new _f;return Rf(e)>r.size?ci(r.getIterator(),function(t){Bf(e,t)&&Ff(n,t)}):Sf(e,function(t){r.includes(t)&&Ff(n,t)}),n},zf=!Cf("intersection")||a(function(){return"3,2"!==String(Array.from(new Set([1,2,3]).intersection(new Set([3,2]))))});Ce({target:"Set",proto:!0,real:!0,forced:zf},{intersection:Df});var Wf=pf.has,qf=function(t){var e=df(this),r=Tf(t);if(Rf(e)<=r.size)return!1!==Sf(e,function(t){if(r.includes(t))return!1},!0);var n=r.getIterator();return!1!==ci(n,function(t){if(Wf(e,t))return Tn(n,"normal",!1)})};Ce({target:"Set",proto:!0,real:!0,forced:!Cf("isDisjointFrom")},{isDisjointFrom:qf});var Hf=function(t){var e=df(this),r=Tf(t);return!(Rf(e)>r.size)&&!1!==Sf(e,function(t){if(!r.includes(t))return!1},!0)};Ce({target:"Set",proto:!0,real:!0,forced:!Cf("isSubsetOf")},{isSubsetOf:Hf});var $f=pf.has,Kf=function(t){var e=df(this),r=Tf(t);if(Rf(e)1?arguments[1]:void 0);return!1!==Sf(e,function(t){if(!r(t,t,e))return!1},!0)}});var el=dt("iterator"),rl=Object,nl=L("Set"),ol=function(t){return function(t){return M(t)&&"number"==typeof t.size&&T(t.has)&&T(t.keys)}(t)?t:function(t){if(P(t))return!1;var e=rl(t);return void 0!==e[el]||"@@iterator"in e||ut(un,pr(e))}(t)?new nl(t):t};Ce({target:"Set",proto:!0,real:!0,forced:!0},{difference:function(t){return f(Uf,this,ol(t))}});var il=pf.Set,al=pf.add;Ce({target:"Set",proto:!0,real:!0,forced:!0},{filter:function(t){var e=df(this),r=ar(t,arguments.length>1?arguments[1]:void 0),n=new il;return Sf(e,function(t){r(t,t,e)&&al(n,t)}),n}}),Ce({target:"Set",proto:!0,real:!0,forced:!0},{find:function(t){var e=df(this),r=ar(t,arguments.length>1?arguments[1]:void 0),n=Sf(e,function(t){if(r(t,t,e))return{value:t}},!0);return n&&n.value}}),Ce({target:"Set",proto:!0,real:!0,forced:!0},{intersection:function(t){return f(Df,this,ol(t))}}),Ce({target:"Set",proto:!0,real:!0,forced:!0},{isDisjointFrom:function(t){return f(qf,this,ol(t))}}),Ce({target:"Set",proto:!0,real:!0,forced:!0},{isSubsetOf:function(t){return f(Hf,this,ol(t))}}),Ce({target:"Set",proto:!0,real:!0,forced:!0},{isSupersetOf:function(t){return f(Kf,this,ol(t))}});var ul=b([].join),sl=b([].push);Ce({target:"Set",proto:!0,real:!0,forced:!0},{join:function(t){var e=df(this),r=void 0===t?",":Wr(t),n=[];return Sf(e,function(t){sl(n,t)}),ul(n,r)}});var cl=pf.Set,fl=pf.add;Ce({target:"Set",proto:!0,real:!0,forced:!0},{map:function(t){var e=df(this),r=ar(t,arguments.length>1?arguments[1]:void 0),n=new cl;return Sf(e,function(t){fl(n,r(t,t,e))}),n}});var ll=TypeError;Ce({target:"Set",proto:!0,real:!0,forced:!0},{reduce:function(t){var e=df(this),r=arguments.length<2,n=r?void 0:arguments[1];if(J(t),Sf(e,function(o){r?(r=!1,n=o):n=t(n,o,o,e)}),r)throw new ll("Reduce of empty set with no initial value");return n}}),Ce({target:"Set",proto:!0,real:!0,forced:!0},{some:function(t){var e=df(this),r=ar(t,arguments.length>1?arguments[1]:void 0);return!0===Sf(e,function(t){if(r(t,t,e))return!0},!0)}}),Ce({target:"Set",proto:!0,real:!0,forced:!0},{symmetricDifference:function(t){return f(Xf,this,ol(t))}}),Ce({target:"Set",proto:!0,real:!0,forced:!0},{union:function(t){return f(Qf,this,ol(t))}});var hl=dt("species"),pl=dt("isConcatSpreadable"),vl=W>=51||!a(function(){var t=[];return t[pl]=!1,t.concat()[0]!==t}),dl=function(t){if(!M(t))return!1;var e=t[pl];return void 0!==e?!!e:ur(t)},gl=!(vl&&(W>=51||!a(function(){var t=[];return(t.constructor={})[hl]=function(){return{foo:1}},1!==t.concat(Boolean).foo})));Ce({target:"Array",proto:!0,arity:1,forced:gl},{concat:function(t){var e,r,n,o,i,a=it(this),u=xr(a,0),s=0;for(e=-1,n=arguments.length;e1?arguments[1]:void 0,n=e.length,o=void 0===r?n:ip(ve(r),n),i=Wr(t);return op(e,o-i.length,o)===i}}),Ze("String","endsWith");var sp=RangeError,cp=String.fromCharCode,fp=String.fromCodePoint,lp=b([].join);Ce({target:"String",stat:!0,arity:1,forced:!!fp&&1!==fp.length},{fromCodePoint:function(t){for(var e,r=[],n=arguments.length,o=0;n>o;){if(e=+arguments[o++],he(e,1114111)!==e)throw new sp(e+" is not a valid code point");r[o]=e<65536?cp(e):cp(55296+((e-=65536)>>10),e%1024+56320)}return lp(r,"")}});var hp=b("".indexOf);Ce({target:"String",proto:!0,forced:!rp("includes")},{includes:function(t){return!!~hp(Wr(j(this)),Wr(tp(t)),arguments.length>1?arguments[1]:void 0)}}),Ze("String","includes"),b(un.String);var pp=/Version\/10(?:\.\d+){1,2}(?: [\w./]+)?(?: Mobile\/\w+)? Safari\//.test(_),vp=Xc.start;Ce({target:"String",proto:!0,forced:pp},{padStart:function(t){return vp(this,t,arguments.length>1?arguments[1]:void 0)}}),Ze("String","padStart");var dp=Xc.end;Ce({target:"String",proto:!0,forced:pp},{padEnd:function(t){return dp(this,t,arguments.length>1?arguments[1]:void 0)}}),Ze("String","padEnd");var gp=b([].push),yp=b([].join);Ce({target:"String",stat:!0},{raw:function(t){var e=k(it(t).raw),r=de(e);if(!r)return"";for(var n=arguments.length,o=[],i=0;;){if(gp(o,Wr(e[i++])),i===r)return yp(o,"");i1?arguments[1]:void 0,e.length)),n=Wr(t);return bp(e,r,r+n.length)===n}}),Ze("String","startsWith");var Op=zt.PROPER,xp=function(t){return a(function(){return!!Mi[t]()||"​…᠎"!=="​…᠎"[t]()||Op&&Mi[t].name!==t})},Rp=_i.start,Pp=xp("trimStart")?function(){return Rp(this)}:"".trimStart;Ce({target:"String",proto:!0,name:"trimStart",forced:"".trimLeft!==Pp},{trimLeft:Pp}),Ce({target:"String",proto:!0,name:"trimStart",forced:"".trimStart!==Pp},{trimStart:Pp}),Ze("String","trimLeft");var Ap=_i.end,jp=xp("trimEnd")?function(){return Ap(this)}:"".trimEnd;Ce({target:"String",proto:!0,name:"trimEnd",forced:"".trimRight!==jp},{trimRight:jp}),Ce({target:"String",proto:!0,name:"trimEnd",forced:"".trimEnd!==jp},{trimEnd:jp}),Ze("String","trimRight");var kp=Object.getOwnPropertyDescriptor,Ip=function(t){if(!u)return i[t];var e=kp(i,t);return e&&e.value},Tp=dt("iterator"),Mp=!a(function(){var t=new URL("b?a=1&b=2&c=3","https://a"),e=t.searchParams,r=new URLSearchParams("a=1&a=2&b=3"),n="";return t.pathname="c%20d",e.forEach(function(t,r){e.delete("b"),n+=r+t}),r.delete("a",2),r.delete("b",void 0),!e.size&&!u||!e.sort||"https://a/c%20d?a=1&c=3"!==t.href||"3"!==e.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!e[Tp]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("https://тест").host||"#%D0%B1"!==new URL("https://a#б").hash||"a1c3"!==n||"x"!==new URL("https://x",void 0).host}),Lp=TypeError,Up=function(t,e){if(t0;)t[o]=t[--o];o!==i++&&(t[o]=n)}else for(var a=Np(r/2),u=Cp(vo(t,0,a),e),s=Cp(vo(t,a),e),c=u.length,f=s.length,l=0,h=0;l0&&0!=(t&r);r>>=1)e++;return e},pv=function(t){var e=null;switch(t.length){case 1:e=t[0];break;case 2:e=(31&t[0])<<6|63&t[1];break;case 3:e=(15&t[0])<<12|(63&t[1])<<6|63&t[2];break;case 4:e=(7&t[0])<<18|(63&t[1])<<12|(63&t[2])<<6|63&t[3]}return e>1114111?null:e},vv=function(t){for(var e=(t=nv(t,cv," ")).length,r="",n=0;ne){r+="%",n++;continue}var i=lv(t,n+1);if(i!=i){r+=o,n++;continue}n+=2;var a=hv(i);if(0===a)o=Jp(i);else{if(1===a||a>4){r+="�",n++;continue}for(var u=[i],s=1;se||"%"!==tv(t,n));){var c=lv(t,n+1);if(c!=c){n+=3;break}if(c>191||c<128)break;rv(u,c),n+=2,s++}if(u.length!==a){r+="�";continue}var f=pv(u);null===f?r+="�":o=Qp(f)}}r+=o,n++}return r},dv=/[!'()~]|%20/g,gv={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},yv=function(t){return gv[t]},mv=function(t){return nv(Xp(t),dv,yv)},bv=fn(function(t,e){zp(this,{type:Dp,target:Wp(t).entries,index:0,kind:e})},Bp,function(){var t=qp(this),e=t.target,r=t.index++;if(!e||r>=e.length)return t.target=null,Pn(void 0,!0);var n=e[r];switch(t.kind){case"keys":return Pn(n.key,!1);case"values":return Pn(n.value,!1)}return Pn([n.key,n.value],!1)},!0),wv=function(t){this.entries=[],this.url=null,void 0!==t&&(M(t)?this.parseObject(t):this.parseQuery("string"==typeof t?"?"===tv(t,0)?uv(t,1):t:Wr(t)))};wv.prototype={type:Bp,bindURL:function(t){this.url=t,this.update()},parseObject:function(t){var e,r,n,o,i,a,u,s=this.entries,c=Fn(t);if(c)for(r=(e=Dn(t,c)).next;!(n=f(r,e)).done;){if(o=Dn(kt(n.value)),(a=f(i=o.next,o)).done||(u=f(i,o)).done||!f(i,o).done)throw new Yp("Expected sequence with length 2");rv(s,{key:Wr(a.value),value:Wr(u.value)})}else for(var l in t)ut(t,l)&&rv(s,{key:l,value:Wr(t[l])})},parseQuery:function(t){if(t)for(var e,r,n=this.entries,o=av(t,"&"),i=0;i0?arguments[0]:void 0));u||(this.size=t.entries.length)},Ev=Sv.prototype;if(Mo(Ev,{append:function(t,e){var r=Wp(this);Up(arguments.length,2),rv(r.entries,{key:Wr(t),value:Wr(e)}),u||this.length++,r.updateURL()},delete:function(t){for(var e=Wp(this),r=Up(arguments.length,1),n=e.entries,o=Wr(t),i=r<2?void 0:arguments[1],a=void 0===i?i:Wr(i),s=0;se.key?1:-1}),t.updateURL()},forEach:function(t){for(var e,r=Wp(this).entries,n=ar(t,arguments.length>1?arguments[1]:void 0),o=0;o1?Rv(arguments[1]):{})}}),T($p)){var Pv=function(t){return ko(this,Gp),new $p(t,arguments.length>1?Rv(arguments[1]):{})};Gp.constructor=Pv,Pv.prototype=Gp,Ce({global:!0,constructor:!0,dontCallGetSet:!0,forced:!0},{Request:Pv})}}var Av={URLSearchParams:Sv,getState:Wp},jv=URLSearchParams,kv=jv.prototype,Iv=b(kv.append),Tv=b(kv.delete),Mv=b(kv.forEach),Lv=b([].push),Uv=new jv("a=1&a=2&b=3");Uv.delete("a",1),Uv.delete("b",void 0),Uv+""!="a=2"&&ie(kv,"delete",function(t){var e=arguments.length,r=e<2?void 0:arguments[1];if(e&&void 0===r)return Tv(this,t);var n=[];Mv(this,function(t,e){Lv(n,{key:e,value:t})}),Up(e,1);for(var o,i=Wr(t),a=Wr(r),u=0,s=0,c=!1,f=n.length;uo;)for(var s,c=R(arguments[o++]),l=i?$v(_e(c),i(c)):_e(c),h=l.length,p=0;h>p;)s=l[p++],u&&!f(a,c,s)||(r[s]=c[s]);return r}:qv,Gv=2147483647,Vv=/[^\0-\u007E]/,Yv=/[.\u3002\uFF0E\uFF61]/g,Xv="Overflow: input needs wider integers to process",Jv=RangeError,Qv=b(Yv.exec),Zv=Math.floor,td=String.fromCharCode,ed=b("".charCodeAt),rd=b([].join),nd=b([].push),od=b("".replace),id=b("".split),ad=b("".toLowerCase),ud=function(t){return t+22+75*(t<26)},sd=function(t,e,r){var n=0;for(t=r?Zv(t/700):t>>1,t+=Zv(t/e);t>455;)t=Zv(t/35),n+=36;return Zv(n+36*t/(t+38))},cd=function(t){var e=[];t=function(t){for(var e=[],r=0,n=t.length;r=55296&&o<=56319&&r=i&&nZv((Gv-a)/l))throw new Jv(Xv);for(a+=(f-i)*l,i=f,r=0;rGv)throw new Jv(Xv);if(n===i){for(var h=a,p=36;;){var v=p<=u?1:p>=u+26?26:p-u;if(h?@[\\\]^|]/,qd=/[\0\t\n\r #/:<>?@[\\\]^|]/,Hd=/^[\u0000-\u0020]+/,$d=/(^|[^\u0000-\u0020])[\u0000-\u0020]+$/,Kd=/[\t\n\r]/g,Gd=function(t){var e,r,n,o;if("number"==typeof t){for(e=[],r=0;r<4;r++)Td(e,t%256),t=md(t/256);return Ed(e,".")}if("object"==typeof t){for(e="",n=function(t){for(var e=null,r=1,n=null,o=0,i=0;i<8;i++)0!==t[i]?(o>r&&(e=n,r=o),n=null,o=0):(null===n&&(n=i),++o);return o>r?n:e}(t),r=0;r<8;r++)o&&0===t[r]||(o&&(o=!1),n===r?(e+=r?":":"::",o=!0):(e+=Od(t[r],16),r<7&&(e+=":")));return"["+e+"]"}return t},Vd={},Yd=Kv({},Vd,{" ":1,'"':1,"<":1,">":1,"`":1}),Xd=Kv({},Yd,{"#":1,"?":1,"{":1,"}":1}),Jd=Kv({},Xd,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),Qd=function(t,e){var r=fd(t,0);return r>32&&r<127&&!ut(e,t)?t:encodeURIComponent(t)},Zd={ftp:21,file:null,http:80,https:443,ws:80,wss:443},tg=function(t,e){var r;return 2===t.length&&Sd(Nd,wd(t,0))&&(":"===(r=wd(t,1))||!e&&"|"===r)},eg=function(t){var e;return t.length>1&&tg(kd(t,0,2))&&(2===t.length||"/"===(e=wd(t,2))||"\\"===e||"?"===e||"#"===e)},rg=function(t){return"."===t||"%2e"===Id(t)},ng={},og={},ig={},ag={},ug={},sg={},cg={},fg={},lg={},hg={},pg={},vg={},dg={},gg={},yg={},mg={},bg={},wg={},Sg={},Eg={},Og={},xg=function(t,e,r){var n,o,i,a=Wr(t);if(e){if(o=this.parse(a))throw new gd(o);this.searchParams=null}else{if(void 0!==r&&(n=new xg(r,!0)),o=this.parse(a,null,n))throw new gd(o);(i=vd(new pd)).bindURL(this),this.searchParams=i}};xg.prototype={type:"URL",parse:function(t,e,r){var n,o,i,a,u,s=this,c=e||ng,f=0,l="",h=!1,p=!1,v=!1;for(t=Wr(t),e||(s.scheme="",s.username="",s.password="",s.host=null,s.port=null,s.path=[],s.query=null,s.fragment=null,s.cannotBeABaseURL=!1,t=Pd(t,Hd,""),t=Pd(t,$d,"$1")),t=Pd(t,Kd,""),n=Wn(t);f<=n.length;){switch(o=n[f],c){case ng:if(!o||!Sd(Nd,o)){if(e)return Md;c=ig;continue}l+=Id(o),c=og;break;case og:if(o&&(Sd(Cd,o)||"+"===o||"-"===o||"."===o))l+=Id(o);else{if(":"!==o){if(e)return Md;l="",c=ig,f=0;continue}if(e&&(s.isSpecial()!==ut(Zd,l)||"file"===l&&(s.includesCredentials()||null!==s.port)||"file"===s.scheme&&!s.host))return;if(s.scheme=l,e)return void(s.isSpecial()&&Zd[s.scheme]===s.port&&(s.port=null));l="","file"===s.scheme?c=gg:s.isSpecial()&&r&&r.scheme===s.scheme?c=ag:s.isSpecial()?c=fg:"/"===n[f+1]?(c=ug,f++):(s.cannotBeABaseURL=!0,Rd(s.path,""),c=Sg)}break;case ig:if(!r||r.cannotBeABaseURL&&"#"!==o)return Md;if(r.cannotBeABaseURL&&"#"===o){s.scheme=r.scheme,s.path=vo(r.path),s.query=r.query,s.fragment="",s.cannotBeABaseURL=!0,c=Og;break}c="file"===r.scheme?gg:sg;continue;case ag:if("/"!==o||"/"!==n[f+1]){c=sg;continue}c=lg,f++;break;case ug:if("/"===o){c=hg;break}c=wg;continue;case sg:if(s.scheme=r.scheme,o===Wv)s.username=r.username,s.password=r.password,s.host=r.host,s.port=r.port,s.path=vo(r.path),s.query=r.query;else if("/"===o||"\\"===o&&s.isSpecial())c=cg;else if("?"===o)s.username=r.username,s.password=r.password,s.host=r.host,s.port=r.port,s.path=vo(r.path),s.query="",c=Eg;else{if("#"!==o){s.username=r.username,s.password=r.password,s.host=r.host,s.port=r.port,s.path=vo(r.path),s.path.length--,c=wg;continue}s.username=r.username,s.password=r.password,s.host=r.host,s.port=r.port,s.path=vo(r.path),s.query=r.query,s.fragment="",c=Og}break;case cg:if(!s.isSpecial()||"/"!==o&&"\\"!==o){if("/"!==o){s.username=r.username,s.password=r.password,s.host=r.host,s.port=r.port,c=wg;continue}c=hg}else c=lg;break;case fg:if(c=lg,"/"!==o||"/"!==wd(l,f+1))continue;f++;break;case lg:if("/"!==o&&"\\"!==o){c=hg;continue}break;case hg:if("@"===o){h&&(l="%40"+l),h=!0,i=Wn(l);for(var d=0;d65535)return Ud;s.port=s.isSpecial()&&m===Zd[s.scheme]?null:m,l=""}if(e)return;c=bg;continue}return Ud}l+=o;break;case gg:if(s.scheme="file","/"===o||"\\"===o)c=yg;else{if(!r||"file"!==r.scheme){c=wg;continue}switch(o){case Wv:s.host=r.host,s.path=vo(r.path),s.query=r.query;break;case"?":s.host=r.host,s.path=vo(r.path),s.query="",c=Eg;break;case"#":s.host=r.host,s.path=vo(r.path),s.query=r.query,s.fragment="",c=Og;break;default:eg(Ed(vo(n,f),""))||(s.host=r.host,s.path=vo(r.path),s.shortenPath()),c=wg;continue}}break;case yg:if("/"===o||"\\"===o){c=mg;break}r&&"file"===r.scheme&&!eg(Ed(vo(n,f),""))&&(tg(r.path[0],!0)?Rd(s.path,r.path[0]):s.host=r.host),c=wg;continue;case mg:if(o===Wv||"/"===o||"\\"===o||"?"===o||"#"===o){if(!e&&tg(l))c=wg;else if(""===l){if(s.host="",e)return;c=bg}else{if(a=s.parseHost(l))return a;if("localhost"===s.host&&(s.host=""),e)return;l="",c=bg}continue}l+=o;break;case bg:if(s.isSpecial()){if(c=wg,"/"!==o&&"\\"!==o)continue}else if(e||"?"!==o)if(e||"#"!==o){if(o!==Wv&&(c=wg,"/"!==o))continue}else s.fragment="",c=Og;else s.query="",c=Eg;break;case wg:if(o===Wv||"/"===o||"\\"===o&&s.isSpecial()||!e&&("?"===o||"#"===o)){if(".."===(u=Id(u=l))||"%2e."===u||".%2e"===u||"%2e%2e"===u?(s.shortenPath(),"/"===o||"\\"===o&&s.isSpecial()||Rd(s.path,"")):rg(l)?"/"===o||"\\"===o&&s.isSpecial()||Rd(s.path,""):("file"===s.scheme&&!s.path.length&&tg(l)&&(s.host&&(s.host=""),l=wd(l,0)+":"),Rd(s.path,l)),l="","file"===s.scheme&&(o===Wv||"?"===o||"#"===o))for(;s.path.length>1&&""===s.path[0];)Ad(s.path);"?"===o?(s.query="",c=Eg):"#"===o&&(s.fragment="",c=Og)}else l+=Qd(o,Xd);break;case Sg:"?"===o?(s.query="",c=Eg):"#"===o?(s.fragment="",c=Og):o!==Wv&&(s.path[0]+=Qd(o,Vd));break;case Eg:e||"#"!==o?o!==Wv&&("'"===o&&s.isSpecial()?s.query+="%27":s.query+="#"===o?"%23":Qd(o,Vd)):(s.fragment="",c=Og);break;case Og:o!==Wv&&(s.fragment+=Qd(o,Yd))}f++}},parseHost:function(t){var e,r,n;if("["===wd(t,0)){if("]"!==wd(t,t.length-1))return Ld;if(e=function(t){var e,r,n,o,i,a,u,s=[0,0,0,0,0,0,0,0],c=0,f=null,l=0,h=function(){return wd(t,l)};if(":"===h()){if(":"!==wd(t,1))return;l+=2,f=++c}for(;h();){if(8===c)return;if(":"!==h()){for(e=r=0;r<4&&Sd(zd,h());)e=16*e+yd(h(),16),l++,r++;if("."===h()){if(0===r)return;if(l-=r,c>6)return;for(n=0;h();){if(o=null,n>0){if(!("."===h()&&n<4))return;l++}if(!Sd(_d,h()))return;for(;Sd(_d,h());){if(i=yd(h(),10),null===o)o=i;else{if(0===o)return;o=10*o+i}if(o>255)return;l++}s[c]=256*s[c]+o,2!=++n&&4!==n||c++}if(4!==n)return;break}if(":"===h()){if(l++,!h())return}else if(h())return;s[c++]=e}else{if(null!==f)return;l++,f=++c}}if(null!==f)for(a=c-f,c=7;0!==c&&a>0;)u=s[c],s[c--]=s[f+a-1],s[f+--a]=u;else if(8!==c)return;return s}(kd(t,1,-1)),!e)return Ld;this.host=e}else if(this.isSpecial()){if(t=function(t){var e,r,n=[],o=id(od(ad(t),Yv,"."),".");for(e=0;e4)return t;for(r=[],n=0;n1&&"0"===wd(o,0)&&(i=Sd(Fd,o)?16:8,o=kd(o,8===i?1:2)),""===o)a=0;else{if(!Sd(10===i?Dd:8===i?Bd:zd,o))return t;a=yd(o,i)}Rd(r,a)}for(n=0;n=bd(256,5-e))return null}else if(a>255)return null;for(u=xd(r),n=0;n1?arguments[1]:void 0,n=ld(e,new xg(t,!1,r));u||(e.href=n.serialize(),e.origin=n.getOrigin(),e.protocol=n.getProtocol(),e.username=n.getUsername(),e.password=n.getPassword(),e.host=n.getHost(),e.hostname=n.getHostname(),e.port=n.getPort(),e.pathname=n.getPathname(),e.search=n.getSearch(),e.searchParams=n.getSearchParams(),e.hash=n.getHash())},Pg=Rg.prototype,Ag=function(t,e){return{get:function(){return hd(this)[t]()},set:e&&function(t){return hd(this)[e](t)},configurable:!0,enumerable:!0}};if(u&&(so(Pg,"href",Ag("serialize","setHref")),so(Pg,"origin",Ag("getOrigin")),so(Pg,"protocol",Ag("getProtocol","setProtocol")),so(Pg,"username",Ag("getUsername","setUsername")),so(Pg,"password",Ag("getPassword","setPassword")),so(Pg,"host",Ag("getHost","setHost")),so(Pg,"hostname",Ag("getHostname","setHostname")),so(Pg,"port",Ag("getPort","setPort")),so(Pg,"pathname",Ag("getPathname","setPathname")),so(Pg,"search",Ag("getSearch","setSearch")),so(Pg,"searchParams",Ag("getSearchParams")),so(Pg,"hash",Ag("getHash","setHash"))),ie(Pg,"toJSON",function(){return hd(this).serialize()},{enumerable:!0}),ie(Pg,"toString",function(){return hd(this).serialize()},{enumerable:!0}),dd){var jg=dd.createObjectURL,kg=dd.revokeObjectURL;jg&&ie(Rg,"createObjectURL",ar(jg,dd)),kg&&ie(Rg,"revokeObjectURL",ar(kg,dd))}an(Rg,"URL"),Ce({global:!0,constructor:!0,forced:!Mp,sham:!u},{URL:Rg});var Ig=L("URL"),Tg=Mp&&a(function(){Ig.canParse()}),Mg=a(function(){return 1!==Ig.canParse.length});Ce({target:"URL",stat:!0,forced:!Tg||Mg},{canParse:function(t){var e=Up(arguments.length,1),r=Wr(t),n=e<2||void 0===arguments[1]?void 0:Wr(arguments[1]);try{return!!new Ig(r,n)}catch(t){return!1}}});var Lg=L("URL");Ce({target:"URL",stat:!0,forced:!Mp},{parse:function(t){var e=Up(arguments.length,1),r=Wr(t),n=e<2||void 0===arguments[1]?void 0:Wr(arguments[1]);try{return new Lg(r,n)}catch(t){return null}}}),Ce({target:"URL",proto:!0,enumerable:!0},{toJSON:function(){return f(URL.prototype.toString,this)}});var Ug=WeakMap.prototype,Ng={WeakMap:WeakMap,set:b(Ug.set),get:b(Ug.get),has:b(Ug.has),remove:b(Ug.delete)},Cg=Ng.has,_g=function(t){return Cg(t),t},Fg=Ng.get,Bg=Ng.has,Dg=Ng.set;Ce({target:"WeakMap",proto:!0,real:!0,forced:!0},{emplace:function(t,e){var r,n,o=_g(this);return Bg(o,t)?(r=Fg(o,t),"update"in e&&(r=e.update(r,t,o),Dg(o,t,r)),r):(n=e.insert(t,o),Dg(o,t,n),n)}}),Ce({target:"WeakMap",stat:!0,forced:!0},{from:ei(Ng.WeakMap,Ng.set,!0)}),Ce({target:"WeakMap",stat:!0,forced:!0},{of:ri(Ng.WeakMap,Ng.set,!0)});var zg=Ng.remove;Ce({target:"WeakMap",proto:!0,real:!0,forced:!0},{deleteAll:function(){for(var t,e=_g(this),r=!0,n=0,o=arguments.length;n2&&(n=r,M(o=arguments[2])&&"cause"in o&&_t(n,"cause",o.cause));var s=[];return Ao(t,ny,{that:s}),_t(r,"errors",s),r};dn?dn(oy,ry):Ae(oy,ry,{name:!0});var iy=oy.prototype=Ve(ry.prototype,{constructor:d(1,oy),message:d(1,""),name:d(1,"AggregateError")});Ce({global:!0,constructor:!0,arity:2},{AggregateError:oy});var ay,uy,sy,cy,fy=function(t){return _.slice(0,t.length)===t},ly=fy("Bun/")?"BUN":fy("Cloudflare-Workers")?"CLOUDFLARE":fy("Deno/")?"DENO":fy("Node.js/")?"NODE":i.Bun&&"string"==typeof Bun.version?"BUN":i.Deno&&"object"==typeof Deno.version?"DENO":"process"===E(i.process)?"NODE":i.window&&i.document?"BROWSER":"REST",hy="NODE"===ly,py=/(?:ipad|iphone|ipod).*applewebkit/i.test(_),vy=i.setImmediate,dy=i.clearImmediate,gy=i.process,yy=i.Dispatch,my=i.Function,by=i.MessageChannel,wy=i.String,Sy=0,Ey={},Oy="onreadystatechange";a(function(){ay=i.location});var xy=function(t){if(ut(Ey,t)){var e=Ey[t];delete Ey[t],e()}},Ry=function(t){return function(){xy(t)}},Py=function(t){xy(t.data)},Ay=function(t){i.postMessage(wy(t),ay.protocol+"//"+ay.host)};vy&&dy||(vy=function(t){Up(arguments.length,1);var e=T(t)?t:my(t),r=vo(arguments,1);return Ey[++Sy]=function(){Ra(e,void 0,r)},uy(Sy),Sy},dy=function(t){delete Ey[t]},hy?uy=function(t){gy.nextTick(Ry(t))}:yy&&yy.now?uy=function(t){yy.now(Ry(t))}:by&&!py?(cy=(sy=new by).port2,sy.port1.onmessage=Py,uy=ar(cy.postMessage,cy)):i.addEventListener&&T(i.postMessage)&&!i.importScripts&&ay&&"file:"!==ay.protocol&&!a(Ay)?(uy=Ay,i.addEventListener("message",Py,!1)):uy=Oy in Et("script")?function(t){De.appendChild(Et("script"))[Oy]=function(){De.removeChild(this),xy(t)}}:function(t){setTimeout(Ry(t),0)});var jy={set:vy,clear:dy},ky=function(){this.head=null,this.tail=null};ky.prototype={add:function(t){var e={item:t,next:null},r=this.tail;r?r.next=e:this.head=e,this.tail=e},get:function(){var t=this.head;if(t)return null===(this.head=t.next)&&(this.tail=null),t.item}};var Iy,Ty,My,Ly,Uy,Ny=ky,Cy=/ipad|iphone|ipod/i.test(_)&&"undefined"!=typeof Pebble,_y=/web0s(?!.*chrome)/i.test(_),Fy=jy.set,By=i.MutationObserver||i.WebKitMutationObserver,Dy=i.document,zy=i.process,Wy=i.Promise,qy=Ip("queueMicrotask");if(!qy){var Hy=new Ny,$y=function(){var t,e;for(hy&&(t=zy.domain)&&t.exit();e=Hy.get();)try{e()}catch(t){throw Hy.head&&Iy(),t}t&&t.enter()};py||hy||_y||!By||!Dy?!Cy&&Wy&&Wy.resolve?((Ly=Wy.resolve(void 0)).constructor=Wy,Uy=ar(Ly.then,Ly),Iy=function(){Uy($y)}):hy?Iy=function(){zy.nextTick($y)}:(Fy=ar(Fy,i),Iy=function(){Fy($y)}):(Ty=!0,My=Dy.createTextNode(""),new By($y).observe(My,{characterData:!0}),Iy=function(){My.data=Ty=!Ty}),qy=function(t){Hy.head||Iy(),Hy.add(t)}}var Ky,Gy,Vy,Yy=qy,Xy=function(t){try{return{error:!1,value:t()}}catch(t){return{error:!0,value:t}}},Jy=i.Promise,Qy=dt("species"),Zy=!1,tm=T(i.PromiseRejectionEvent),em=Ue("Promise",function(){var t=Kt(Jy),e=t!==String(Jy);if(!e&&66===W)return!0;if(!W||W<51||!/native code/.test(t)){var r=new Jy(function(t){t(1)}),n=function(t){t(function(){},function(){})};if((r.constructor={})[Qy]=n,!(Zy=r.then(function(){})instanceof n))return!0}return!(e||"BROWSER"!==ly&&"DENO"!==ly||tm)}),rm={CONSTRUCTOR:em,REJECTION_EVENT:tm,SUBCLASSING:Zy},nm=TypeError,om=function(t){var e,r;this.promise=new t(function(t,n){if(void 0!==e||void 0!==r)throw new nm("Bad Promise constructor");e=t,r=n}),this.resolve=J(e),this.reject=J(r)},im={f:function(t){return new om(t)}},am=jy.set,um="Promise",sm=rm.CONSTRUCTOR,cm=rm.REJECTION_EVENT,fm=rm.SUBCLASSING,lm=ne.getterFor(um),hm=ne.set,pm=Jy&&Jy.prototype,vm=Jy,dm=pm,gm=i.TypeError,ym=i.document,mm=i.process,bm=im.f,wm=bm,Sm=!!(ym&&ym.createEvent&&i.dispatchEvent),Em="unhandledrejection",Om=function(t){var e;return!(!M(t)||!T(e=t.then))&&e},xm=function(t,e){var r,n,o,i=e.value,a=1===e.state,u=a?t.ok:t.fail,s=t.resolve,c=t.reject,l=t.domain;try{u?(a||(2===e.rejection&&km(e),e.rejection=1),!0===u?r=i:(l&&l.enter(),r=u(i),l&&(l.exit(),o=!0)),r===t.promise?c(new gm("Promise-chain cycle")):(n=Om(r))?f(n,r,s,c):s(r)):c(i)}catch(t){l&&!o&&l.exit(),c(t)}},Rm=function(t,e){t.notified||(t.notified=!0,Yy(function(){for(var r,n=t.reactions;r=n.get();)xm(r,t);t.notified=!1,e&&!t.rejection&&Am(t)}))},Pm=function(t,e,r){var n,o;Sm?((n=ym.createEvent("Event")).promise=e,n.reason=r,n.initEvent(t,!1,!0),i.dispatchEvent(n)):n={promise:e,reason:r},!cm&&(o=i["on"+t])?o(n):t===Em&&function(t,e){try{1===arguments.length?console.error(t):console.error(t,e)}catch(t){}}("Unhandled promise rejection",r)},Am=function(t){f(am,i,function(){var e,r=t.facade,n=t.value;if(jm(t)&&(e=Xy(function(){hy?mm.emit("unhandledRejection",n,r):Pm(Em,r,n)}),t.rejection=hy||jm(t)?2:1,e.error))throw e.value})},jm=function(t){return 1!==t.rejection&&!t.parent},km=function(t){f(am,i,function(){var e=t.facade;hy?mm.emit("rejectionHandled",e):Pm("rejectionhandled",e,t.value)})},Im=function(t,e,r){return function(n){t(e,n,r)}},Tm=function(t,e,r){t.done||(t.done=!0,r&&(t=r),t.value=e,t.state=2,Rm(t,!0))},Mm=function(t,e,r){if(!t.done){t.done=!0,r&&(t=r);try{if(t.facade===e)throw new gm("Promise can't be resolved itself");var n=Om(e);n?Yy(function(){var r={done:!1};try{f(n,e,Im(Mm,r,t),Im(Tm,r,t))}catch(e){Tm(r,e,t)}}):(t.value=e,t.state=1,Rm(t,!1))}catch(e){Tm({done:!1},e,t)}}};if(sm&&(vm=function(t){ko(this,dm),J(t),f(Ky,this);var e=lm(this);try{t(Im(Mm,e),Im(Tm,e))}catch(t){Tm(e,t)}},(Ky=function(t){hm(this,{type:um,done:!1,notified:!1,parent:!1,reactions:new Ny,rejection:!1,state:0,value:null})}).prototype=ie(dm=vm.prototype,"then",function(t,e){var r=lm(this),n=bm(Cc(this,vm));return r.parent=!0,n.ok=!T(t)||t,n.fail=T(e)&&e,n.domain=hy?mm.domain:void 0,0===r.state?r.reactions.add(n):Yy(function(){xm(n,r)}),n.promise}),Gy=function(){var t=new Ky,e=lm(t);this.promise=t,this.resolve=Im(Mm,e),this.reject=Im(Tm,e)},im.f=bm=function(t){return t===vm||void 0===t?new Gy(t):wm(t)},T(Jy)&&pm!==Object.prototype)){Vy=pm.then,fm||ie(pm,"then",function(t,e){var r=this;return new vm(function(t,e){f(Vy,r,t,e)}).then(t,e)},{unsafe:!0});try{delete pm.constructor}catch(t){}dn&&dn(pm,dm)}Ce({global:!0,constructor:!0,wrap:!0,forced:sm},{Promise:vm}),an(vm,um,!1),Uo(um);var Lm=rm.CONSTRUCTOR||!Gn(function(t){Jy.all(t).then(void 0,function(){})});Ce({target:"Promise",stat:!0,forced:Lm},{all:function(t){var e=this,r=im.f(e),n=r.resolve,o=r.reject,i=Xy(function(){var r=J(e.resolve),i=[],a=0,u=1;Ao(t,function(t){var s=a++,c=!1;u++,f(r,e,t).then(function(t){c||(c=!0,i[s]=t,--u||n(i))},o)}),--u||n(i)});return i.error&&o(i.value),r.promise}});var Um=Jy&&Jy.prototype;if(Ce({target:"Promise",proto:!0,forced:rm.CONSTRUCTOR,real:!0},{catch:function(t){return this.then(void 0,t)}}),T(Jy)){var Nm=L("Promise").prototype.catch;Um.catch!==Nm&&ie(Um,"catch",Nm,{unsafe:!0})}Ce({target:"Promise",stat:!0,forced:Lm},{race:function(t){var e=this,r=im.f(e),n=r.reject,o=Xy(function(){var o=J(e.resolve);Ao(t,function(t){f(o,e,t).then(r.resolve,n)})});return o.error&&n(o.value),r.promise}}),Ce({target:"Promise",stat:!0,forced:rm.CONSTRUCTOR},{reject:function(t){var e=im.f(this);return(0,e.reject)(t),e.promise}});var Cm=function(t,e){if(kt(t),M(e)&&e.constructor===t)return e;var r=im.f(t);return(0,r.resolve)(e),r.promise};Ce({target:"Promise",stat:!0,forced:rm.CONSTRUCTOR},{resolve:function(t){return Cm(this,t)}}),Ce({target:"Promise",stat:!0,forced:Lm},{allSettled:function(t){var e=this,r=im.f(e),n=r.resolve,o=r.reject,i=Xy(function(){var r=J(e.resolve),o=[],i=0,a=1;Ao(t,function(t){var u=i++,s=!1;a++,f(r,e,t).then(function(t){s||(s=!0,o[u]={status:"fulfilled",value:t},--a||n(o))},function(t){s||(s=!0,o[u]={status:"rejected",reason:t},--a||n(o))})}),--a||n(o)});return i.error&&o(i.value),r.promise}});var _m="No one promise resolved";Ce({target:"Promise",stat:!0,forced:Lm},{any:function(t){var e=this,r=L("AggregateError"),n=im.f(e),o=n.resolve,i=n.reject,a=Xy(function(){var n=J(e.resolve),a=[],u=0,s=1,c=!1;Ao(t,function(t){var l=u++,h=!1;s++,f(n,e,t).then(function(t){h||c||(c=!0,o(t))},function(t){h||c||(h=!0,a[l]=t,--s||i(new r(a,_m)))})}),--s||i(new r(a,_m))});return a.error&&i(a.value),n.promise}}),Ce({target:"Promise",stat:!0},{withResolvers:function(){var t=im.f(this);return{promise:t.promise,resolve:t.resolve,reject:t.reject}}});var Fm=Jy&&Jy.prototype,Bm=!!Jy&&a(function(){Fm.finally.call({then:function(){}},function(){})});if(Ce({target:"Promise",proto:!0,real:!0,forced:Bm},{finally:function(t){var e=Cc(this,L("Promise")),r=T(t);return this.then(r?function(r){return Cm(e,t()).then(function(){return r})}:t,r?function(r){return Cm(e,t()).then(function(){throw r})}:t)}}),T(Jy)){var Dm=L("Promise").prototype.finally;Fm.finally!==Dm&&ie(Fm,"finally",Dm,{unsafe:!0})}var zm=i.Promise,Wm=!1,qm=!zm||!zm.try||Xy(function(){zm.try(function(t){Wm=8===t},8)}).error||!Wm;Ce({target:"Promise",stat:!0,forced:qm},{try:function(t){var e=arguments.length>1?vo(arguments,1):[],r=im.f(this),n=Xy(function(){return Ra(J(t),void 0,e)});return(n.error?r.reject:r.resolve)(n.value),r.promise}}),Ze("Promise","finally");var Hm="URLSearchParams"in self,$m="Symbol"in self&&"iterator"in Symbol,Km="FileReader"in self&&"Blob"in self&&function(){try{return new Blob,!0}catch(t){return!1}}(),Gm="FormData"in self,Vm="ArrayBuffer"in self;if(Vm)var Ym=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],Xm=ArrayBuffer.isView||function(t){return t&&Ym.indexOf(Object.prototype.toString.call(t))>-1};function Jm(t){if("string"!=typeof t&&(t=String(t)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(t))throw new TypeError("Invalid character in header field name");return t.toLowerCase()}function Qm(t){return"string"!=typeof t&&(t=String(t)),t}function Zm(t){var e={next:function(){var e=t.shift();return{done:void 0===e,value:e}}};return $m&&(e[Symbol.iterator]=function(){return e}),e}function tb(t){this.map={},t instanceof tb?t.forEach(function(t,e){this.append(e,t)},this):Array.isArray(t)?t.forEach(function(t){this.append(t[0],t[1])},this):t&&Object.getOwnPropertyNames(t).forEach(function(e){this.append(e,t[e])},this)}function eb(t){if(t.bodyUsed)return Promise.reject(new TypeError("Already read"));t.bodyUsed=!0}function rb(t){return new Promise(function(e,r){t.onload=function(){e(t.result)},t.onerror=function(){r(t.error)}})}function nb(t){var e=new FileReader,r=rb(e);return e.readAsArrayBuffer(t),r}function ob(t){if(t.slice)return t.slice(0);var e=new Uint8Array(t.byteLength);return e.set(new Uint8Array(t)),e.buffer}function ib(){return this.bodyUsed=!1,this._initBody=function(t){var e;this._bodyInit=t,t?"string"==typeof t?this._bodyText=t:Km&&Blob.prototype.isPrototypeOf(t)?this._bodyBlob=t:Gm&&FormData.prototype.isPrototypeOf(t)?this._bodyFormData=t:Hm&&URLSearchParams.prototype.isPrototypeOf(t)?this._bodyText=t.toString():Vm&&Km&&(e=t)&&DataView.prototype.isPrototypeOf(e)?(this._bodyArrayBuffer=ob(t.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):Vm&&(ArrayBuffer.prototype.isPrototypeOf(t)||Xm(t))?this._bodyArrayBuffer=ob(t):this._bodyText=t=Object.prototype.toString.call(t):this._bodyText="",this.headers.get("content-type")||("string"==typeof t?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):Hm&&URLSearchParams.prototype.isPrototypeOf(t)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},Km&&(this.blob=function(){var t=eb(this);if(t)return t;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?eb(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(nb)}),this.text=function(){var t=eb(this);if(t)return t;if(this._bodyBlob)return function(t){var e=new FileReader,r=rb(e);return e.readAsText(t),r}(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(function(t){for(var e=new Uint8Array(t),r=new Array(e.length),n=0;n-1?e:t}(e.method||this.method||"GET"),this.mode=e.mode||this.mode||null,this.signal=e.signal||this.signal,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&r)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(r)}function sb(t){var e=new FormData;return t.trim().split("&").forEach(function(t){if(t){var r=t.split("="),n=r.shift().replace(/\+/g," "),o=r.join("=").replace(/\+/g," ");e.append(decodeURIComponent(n),decodeURIComponent(o))}}),e}function cb(t,e){e||(e={}),this.type="default",this.status=void 0===e.status?200:e.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in e?e.statusText:"OK",this.headers=new tb(e.headers),this.url=e.url||"",this._initBody(t)}ub.prototype.clone=function(){return new ub(this,{body:this._bodyInit})},ib.call(ub.prototype),ib.call(cb.prototype),cb.prototype.clone=function(){return new cb(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new tb(this.headers),url:this.url})},cb.error=function(){var t=new cb(null,{status:0,statusText:""});return t.type="error",t};var fb=[301,302,303,307,308];cb.redirect=function(t,e){if(-1===fb.indexOf(e))throw new RangeError("Invalid status code");return new cb(null,{status:e,headers:{location:t}})};var lb=self.DOMException;try{new lb}catch(t){(lb=function(t,e){this.message=t,this.name=e;var r=Error(t);this.stack=r.stack}).prototype=Object.create(Error.prototype),lb.prototype.constructor=lb}function hb(t,e){return new Promise(function(r,n){var o=new ub(t,e);if(o.signal&&o.signal.aborted)return n(new lb("Aborted","AbortError"));var i=new XMLHttpRequest;function a(){i.abort()}i.onload=function(){var t,e,n={status:i.status,statusText:i.statusText,headers:(t=i.getAllResponseHeaders()||"",e=new tb,t.replace(/\r?\n[\t ]+/g," ").split(/\r?\n/).forEach(function(t){var r=t.split(":"),n=r.shift().trim();if(n){var o=r.join(":").trim();e.append(n,o)}}),e)};n.url="responseURL"in i?i.responseURL:n.headers.get("X-Request-URL"),r(new cb("response"in i?i.response:i.responseText,n))},i.onerror=function(){n(new TypeError("Network request failed"))},i.ontimeout=function(){n(new TypeError("Network request failed"))},i.onabort=function(){n(new lb("Aborted","AbortError"))},i.open(o.method,o.url,!0),"include"===o.credentials?i.withCredentials=!0:"omit"===o.credentials&&(i.withCredentials=!1),"responseType"in i&&Km&&(i.responseType="blob"),o.headers.forEach(function(t,e){i.setRequestHeader(e,t)}),o.signal&&(o.signal.addEventListener("abort",a),i.onreadystatechange=function(){4===i.readyState&&o.signal.removeEventListener("abort",a)}),i.send(void 0===o._bodyInit?null:o._bodyInit)})}hb.polyfill=!0,self.fetch||(self.fetch=hb,self.Headers=tb,self.Request=ub,self.Response=cb);var pb=Object.getOwnPropertySymbols,vb=Object.prototype.hasOwnProperty,db=Object.prototype.propertyIsEnumerable,gb=function(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de","5"===Object.getOwnPropertyNames(t)[0])return!1;for(var e={},r=0;r<10;r++)e["_"+String.fromCharCode(r)]=r;if("0123456789"!==Object.getOwnPropertyNames(e).map(function(t){return e[t]}).join(""))return!1;var n={};return"abcdefghijklmnopqrst".split("").forEach(function(t){n[t]=t}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},n)).join("")}catch(t){return!1}}()?Object.assign:function(t,e){for(var r,n,o=function(t){if(null==t)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}(t),i=1;i{"use strict";var t,r,n,i,s,o,a,l,c,u,d,p,f,m,h,g,v,y,x,w,b,_,j,M,S,R=e.i(43476),N=e.i(71645),k=e.i(75056),V=e.i(25234),A=e.i(43257),P=e.i(8560),C=e.i(28600);function T(e,t,r){t.traverse(t=>{t.material&&(e.properties.remove(t.material),null==t.material.dispose||t.material.dispose())}),e.info.programs.length=0,e.compile(t,r)}function I({focus:e=0,samples:t=10,size:r=25}){let n=(0,C.useThree)(e=>e.gl),i=(0,C.useThree)(e=>e.scene),s=(0,C.useThree)(e=>e.camera);return N.useEffect(()=>{let o=P.ShaderChunk.shadowmap_pars_fragment;return P.ShaderChunk.shadowmap_pars_fragment=P.ShaderChunk.shadowmap_pars_fragment.replace("#ifdef USE_SHADOWMAP","#ifdef USE_SHADOWMAP\n"+(({focus:e=0,size:t=25,samples:r=10}={})=>` +#define PENUMBRA_FILTER_SIZE float(${t}) +#define RGB_NOISE_FUNCTION(uv) (randRGB(uv)) +vec3 randRGB(vec2 uv) { + return vec3( + fract(sin(dot(uv, vec2(12.75613, 38.12123))) * 13234.76575), + fract(sin(dot(uv, vec2(19.45531, 58.46547))) * 43678.23431), + fract(sin(dot(uv, vec2(23.67817, 78.23121))) * 93567.23423) + ); +} + +vec3 lowPassRandRGB(vec2 uv) { + // 3x3 convolution (average) + // can be implemented as separable with an extra buffer for a total of 6 samples instead of 9 + vec3 result = vec3(0); + result += RGB_NOISE_FUNCTION(uv + vec2(-1.0, -1.0)); + result += RGB_NOISE_FUNCTION(uv + vec2(-1.0, 0.0)); + result += RGB_NOISE_FUNCTION(uv + vec2(-1.0, +1.0)); + result += RGB_NOISE_FUNCTION(uv + vec2( 0.0, -1.0)); + result += RGB_NOISE_FUNCTION(uv + vec2( 0.0, 0.0)); + result += RGB_NOISE_FUNCTION(uv + vec2( 0.0, +1.0)); + result += RGB_NOISE_FUNCTION(uv + vec2(+1.0, -1.0)); + result += RGB_NOISE_FUNCTION(uv + vec2(+1.0, 0.0)); + result += RGB_NOISE_FUNCTION(uv + vec2(+1.0, +1.0)); + result *= 0.111111111; // 1.0 / 9.0 + return result; +} +vec3 highPassRandRGB(vec2 uv) { + // by subtracting the low-pass signal from the original signal, we're being left with the high-pass signal + // hp(x) = x - lp(x) + return RGB_NOISE_FUNCTION(uv) - lowPassRandRGB(uv) + 0.5; +} + + +vec2 vogelDiskSample(int sampleIndex, int sampleCount, float angle) { + const float goldenAngle = 2.399963f; // radians + float r = sqrt(float(sampleIndex) + 0.5f) / sqrt(float(sampleCount)); + float theta = float(sampleIndex) * goldenAngle + angle; + float sine = sin(theta); + float cosine = cos(theta); + return vec2(cosine, sine) * r; +} +float penumbraSize( const in float zReceiver, const in float zBlocker ) { // Parallel plane estimation + return (zReceiver - zBlocker) / zBlocker; +} +float findBlocker(sampler2D shadowMap, vec2 uv, float compare, float angle) { + float texelSize = 1.0 / float(textureSize(shadowMap, 0).x); + float blockerDepthSum = float(${e}); + float blockers = 0.0; + + int j = 0; + vec2 offset = vec2(0.); + float depth = 0.; + + #pragma unroll_loop_start + for(int i = 0; i < ${r}; i ++) { + offset = (vogelDiskSample(j, ${r}, angle) * texelSize) * 2.0 * PENUMBRA_FILTER_SIZE; + depth = unpackRGBAToDepth( texture2D( shadowMap, uv + offset)); + if (depth < compare) { + blockerDepthSum += depth; + blockers++; + } + j++; + } + #pragma unroll_loop_end + + if (blockers > 0.0) { + return blockerDepthSum / blockers; + } + return -1.0; +} + + +float vogelFilter(sampler2D shadowMap, vec2 uv, float zReceiver, float filterRadius, float angle) { + float texelSize = 1.0 / float(textureSize(shadowMap, 0).x); + float shadow = 0.0f; + int j = 0; + vec2 vogelSample = vec2(0.0); + vec2 offset = vec2(0.0); + #pragma unroll_loop_start + for (int i = 0; i < ${r}; i++) { + vogelSample = vogelDiskSample(j, ${r}, angle) * texelSize; + offset = vogelSample * (1.0 + filterRadius * float(${t})); + shadow += step( zReceiver, unpackRGBAToDepth( texture2D( shadowMap, uv + offset ) ) ); + j++; + } + #pragma unroll_loop_end + return shadow * 1.0 / ${r}.0; +} + +float PCSS (sampler2D shadowMap, vec4 coords) { + vec2 uv = coords.xy; + float zReceiver = coords.z; // Assumed to be eye-space z in this code + float angle = highPassRandRGB(gl_FragCoord.xy).r * PI2; + float avgBlockerDepth = findBlocker(shadowMap, uv, zReceiver, angle); + if (avgBlockerDepth == -1.0) { + return 1.0; + } + float penumbraRatio = penumbraSize(zReceiver, avgBlockerDepth); + return vogelFilter(shadowMap, uv, zReceiver, 1.25 * penumbraRatio, angle); +}`)({size:r,samples:t,focus:e})).replace("#if defined( SHADOWMAP_TYPE_PCF )","\nreturn PCSS(shadowMap, shadowCoord);\n#if defined( SHADOWMAP_TYPE_PCF )"),T(n,i,s),()=>{P.ShaderChunk.shadowmap_pars_fragment=o,T(n,i,s)}},[e,r,t]),null}var F=e.i(90072);e.i(47167);var z=e.i(78140);let E="/models/3d_scene_final.glb",O="/draco/",B=[/WheelStock_FR_RB1c_Tire_1k_0$/i,/WheelStock_FR_RB1c_Tire_1k_0\.001$/i,/WheelStock_RL_RB1c_Tire/i,/WheelStock_RR_RB1c_Tire/i],L=/^LCT300007/i,D=/road|floor|slab|driveway|apron|grass|ground|pad|curb/i,W=/asphalt|concrete|lane|apron|curb|pavement|tarmac|grass/i,G=/tree|foliage|atlas|bush|hedge|shrub/i,q=/tree|leaf|leaves|bark|foliage|shrub|grass/i,U=/carton|cube|crate|package_box|barrel|pallet|bench/i,$=/cardboard|pallet/i,H=/street_light|streetlight|lamp/i,Z=/street_light/i,Q=/atlas|background_tree/i,Y=/background_tree_atlas/i;function K({truckRef:e,wheelRefs:t,tier:r="desktop",...n}){let{scene:i}=(0,z.useGLTF)(E,O);return(0,N.useLayoutEffect)(()=>{let n=[null,null,null,null],s=null;if(i.traverse(e=>{if(!e.isMesh)return;let t=e.name||"";/WheelStock_(FR|RL|RR)_RB1c_Tire/i.test(t)&&(s=e,B.forEach((r,i)=>{!n[i]&&r.test(t)&&(n[i]=e)}))}),n.forEach((e,r)=>{let n=e?.parent?.parent??null;n&&t?.[r]&&(t[r].current=n)}),e){let t=s;for(;t&&t.parent&&t.parent!==i;)t=t.parent;e.current=t??null}i.traverse(e=>{if(!e.isMesh)return;let t=e.name||"",n=(Array.isArray(e.material)?e.material[0]?.name:e.material?.name)||"",i=L.test(t),s=D.test(t)||W.test(n);e.castShadow=i,e.receiveShadow=i||s,i&&(e.frustumCulled=!1);let o=!1;"mobile"===r?o=G.test(t)||q.test(n)||U.test(t)||$.test(n)||H.test(t)||Z.test(n):"tablet"===r&&(o=Q.test(t)||Y.test(n)),e.visible=!o})},[i,e,t,r]),(0,R.jsx)("primitive",{object:i,...n,dispose:null})}z.useGLTF.preload(E,O);let J=(0,e.i(68834).create)(e=>({scrollProgress:0,activeSection:0,truckProgress:0,cameraTarget:[19.727,4.397,-31.08],lenis:null,setScrollProgress:t=>e({scrollProgress:t}),setActiveSection:t=>e({activeSection:t}),setTruckProgress:t=>e({truckProgress:t}),setCameraTarget:t=>e({cameraTarget:t}),setLenis:t=>e({lenis:t})})),X=[new F.Vector3(15.5,.45,-26.5),new F.Vector3(13.399,.324,-24.742),new F.Vector3(11.211,.178,-22.973),new F.Vector3(8.823,.111,-20.949),new F.Vector3(6.447,.059,-19.06),new F.Vector3(3.786,.072,-17.002),new F.Vector3(.732,.124,-14.955),new F.Vector3(-2.156,.124,-12.903),new F.Vector3(-4.417,.124,-10.929),new F.Vector3(-5.896,.124,-8.052),new F.Vector3(-5.985,.124,-5.497),new F.Vector3(-4.362,.124,-3.25),new F.Vector3(-1.448,.124,-1.234),new F.Vector3(2.539,.124,.986),new F.Vector3(6.686,.124,3.379),new F.Vector3(8.213,.124,6.14),new F.Vector3(7.976,.124,9.176),new F.Vector3(6.424,.124,12.428),new F.Vector3(3.883,.124,15.769),new F.Vector3(1.241,.124,19.056)],ee=new F.CatmullRomCurve3(X);function et(e){return e<.14?0:e<.38?.5*(e-.14)/.24:e<.5?.5:e<.76?.5+.5*(e-.5)/.26:1}let er={firstMileWhole:{position:new F.Vector3(38,15,-10),target:new F.Vector3(24.377,4,-39.303)},firstMileFront:{position:new F.Vector3(7,3,-19),target:new F.Vector3(15.5,1.5,-26.5)},midMile:{position:new F.Vector3(-7,7.5,8),target:new F.Vector3(-19.146,2.5,-9)},lastMileClose:{position:new F.Vector3(-3.5,4,15),target:new F.Vector3(8,2,20)},lastMileZoomedOut:{position:new F.Vector3(-10.4,5.2,12),target:new F.Vector3(8,2,20)},analytics:{position:new F.Vector3(-13.5,5,31),target:new F.Vector3(-7.7,3.5,25.4)}},en=new F.Vector3,ei=new F.Vector3,es=new F.Vector3(0,1,0),eo=new F.Vector3,ea=new F.Vector3,el=new F.Vector3,ec=e=>e*e*(3-2*e);function eu(e,t,r){return t in e?Object.defineProperty(e,t,{value:r,enumerable:!0,configurable:!0,writable:!0}):e[t]=r,e}function ed(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=Array(t);rtypeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||ep(e)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}new F.Vector2,new F.Vector2;function em(e,t){if(!(e instanceof t))throw TypeError("Cannot call a class as a function")}var eh=function e(t,r,n){var i=this;em(this,e),eu(this,"dot2",function(e,t){return i.x*e+i.y*t}),eu(this,"dot3",function(e,t,r){return i.x*e+i.y*t+i.z*r}),this.x=t,this.y=r,this.z=n},eg=[new eh(1,1,0),new eh(-1,1,0),new eh(1,-1,0),new eh(-1,-1,0),new eh(1,0,1),new eh(-1,0,1),new eh(1,0,-1),new eh(-1,0,-1),new eh(0,1,1),new eh(0,-1,1),new eh(0,1,-1),new eh(0,-1,-1)],ev=[151,160,137,91,90,15,131,13,201,95,96,53,194,233,7,225,140,36,103,30,69,142,8,99,37,240,21,10,23,190,6,148,247,120,234,75,0,26,197,62,94,252,219,203,117,35,11,32,57,177,33,88,237,149,56,87,174,20,125,136,171,168,68,175,74,165,71,134,139,48,27,166,77,146,158,231,83,111,229,122,60,211,133,230,220,105,92,41,55,46,245,40,244,102,143,54,65,25,63,161,1,216,80,73,209,76,132,187,208,89,18,169,200,196,135,130,116,188,159,86,164,100,109,198,173,186,3,64,52,217,226,250,124,123,5,202,38,147,118,126,255,82,85,212,207,206,59,227,47,16,58,17,182,189,28,42,223,183,170,213,119,248,152,2,44,154,163,70,221,153,101,155,167,43,172,9,129,22,39,253,19,98,108,110,79,113,224,232,178,185,112,104,218,246,97,228,251,34,242,193,238,210,144,12,191,179,162,241,81,51,145,235,249,14,239,107,49,192,214,31,181,199,106,157,184,84,204,176,115,121,50,45,127,4,150,254,138,236,205,93,222,114,67,29,24,72,243,141,128,195,78,66,215,61,156,180],ey=Array(512),ex=Array(512),ew=0;(ew=Math.floor(ew))<256&&(ew|=ew<<8);for(var eb,e_=0;e_<256;e_++)eb=1&e_?ev[e_]^255&ew:ev[e_]^ew>>8&255,ey[e_]=ey[e_+256]=eb,ex[e_]=ex[e_+256]=eg[eb%12];function ej(e){var t=function(e){if("number"==typeof e)e=Math.abs(e);else if("string"==typeof e){var t=e;e=0;for(var r=0;r3&&void 0!==arguments[3]?arguments[3]:.25,i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:.01,s=arguments.length>5&&void 0!==arguments[5]?arguments[5]:1/0,o=arguments.length>6&&void 0!==arguments[6]?arguments[6]:eM,a=arguments.length>7&&void 0!==arguments[7]?arguments[7]:.001,l="velocity_"+t;if(void 0===e.__damp&&(e.__damp={}),void 0===e.__damp[l]&&(e.__damp[l]=0),Math.abs(e[t]-r)<=a)return e[t]=r,!1;var c=2/(n=Math.max(1e-4,n)),u=o(c*i),d=e[t]-r,p=r,f=s*n;d=Math.min(Math.max(d,-f),f),r=e[t]-d;var m=(e.__damp[l]+c*d)*i;e.__damp[l]=(e.__damp[l]-c*m)*u;var h=r+(d+m)*u;return p-e[t]>0==h>p&&(h=p,e.__damp[l]=(h-p)/i),e[t]=h,!0}var eR=new F.Vector3,eN=new F.Quaternion,ek=new F.Quaternion,eV=new F.Matrix4,eA=new F.Vector3;function eP(e,t,r,n,i,s,o,a){var l,c,u,d;return eS(e,t,e[t]+(u=(l=r-e[t])-Math.floor(l/(c=2*Math.PI))*c,(d=Math.max(0,Math.min(c,u)))>Math.PI&&(d-=2*Math.PI),d),n,i,s,o,a)}var eC=new F.Vector2,eT=new F.Vector3;function eI(e,t,r,o,a,l,c){return"number"==typeof t?eT.setScalar(t):Array.isArray(t)?eT.set(t[0],t[1],t[2]):eT.copy(t),n=eS(e,"x",eT.x,r,o,a,l,c),i=eS(e,"y",eT.y,r,o,a,l,c),s=eS(e,"z",eT.z,r,o,a,l,c),n||i||s}var eF=new F.Vector4,ez=new F.Euler,eE=new F.Color,eO=new F.Quaternion,eB=new F.Vector4,eL=new F.Vector4,eD=new F.Vector4;function eW(e,t,r,n,i,s,o){Array.isArray(t)?eO.set(t[0],t[1],t[2],t[3]):eO.copy(t);var a=e.dot(eO)>0?1:-1;return eO.x*=a,eO.y*=a,eO.z*=a,eO.w*=a,g=eS(e,"x",eO.x,r,n,i,s,o),v=eS(e,"y",eO.y,r,n,i,s,o),y=eS(e,"z",eO.z,r,n,i,s,o),x=eS(e,"w",eO.w,r,n,i,s,o),eB.set(e.x,e.y,e.z,e.w).normalize(),eL.set(e.__damp.velocity_x,e.__damp.velocity_y,e.__damp.velocity_z,e.__damp.velocity_w),eD.copy(eB).multiplyScalar(eL.dot(eB)/eB.dot(eB)),e.__damp.velocity_x-=eD.x,e.__damp.velocity_y-=eD.y,e.__damp.velocity_z-=eD.z,e.__damp.velocity_w-=eD.w,e.set(eB.x,eB.y,eB.z,eB.w),g||v||y||x}var eG=new F.Spherical,eq=new F.Matrix4,eU=new F.Vector3,e$=new F.Quaternion,eH=new F.Vector3,eZ=Object.freeze({__proto__:null,rsqw:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:.01,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1,n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:1/(2*Math.PI);return r/Math.atan(1/t)*Math.atan(Math.sin(2*Math.PI*e*n)/t)},exp:eM,linear:function(e){return e},sine:{in:function(e){return 1-Math.cos(e*Math.PI/2)},out:function(e){return Math.sin(e*Math.PI/2)},inOut:function(e){return-(Math.cos(Math.PI*e)-1)/2}},cubic:{in:function(e){return e*e*e},out:function(e){return 1-Math.pow(1-e,3)},inOut:function(e){return e<.5?4*e*e*e:1-Math.pow(-2*e+2,3)/2}},quint:{in:function(e){return e*e*e*e*e},out:function(e){return 1-Math.pow(1-e,5)},inOut:function(e){return e<.5?16*e*e*e*e*e:1-Math.pow(-2*e+2,5)/2}},circ:{in:function(e){return 1-Math.sqrt(1-Math.pow(e,2))},out:function(e){return Math.sqrt(1-Math.pow(e-1,2))},inOut:function(e){return e<.5?(1-Math.sqrt(1-Math.pow(2*e,2)))/2:(Math.sqrt(1-Math.pow(-2*e+2,2))+1)/2}},quart:{in:function(e){return e*e*e*e},out:function(e){return 1- --e*e*e*e},inOut:function(e){return e<.5?8*e*e*e*e:1-8*--e*e*e*e}},expo:{in:function(e){return 0===e?0:Math.pow(2,10*e-10)},out:function(e){return 1===e?1:1-Math.pow(2,-10*e)},inOut:function(e){return 0===e?0:1===e?1:e<.5?Math.pow(2,20*e-10)/2:(2-Math.pow(2,-20*e+10))/2}},damp:eS,dampLookAt:function(e,t,r,n,i,s,o){"number"==typeof t?eR.setScalar(t):Array.isArray(t)?eR.set(t[0],t[1],t[2]):eR.copy(t);var a=e.parent;(e.updateWorldMatrix(!0,!1),eA.setFromMatrixPosition(e.matrixWorld),e&&e.isCamera||e&&e.isLight)?eV.lookAt(eA,eR,e.up):eV.lookAt(eR,eA,e.up),eW(e.quaternion,ek.setFromRotationMatrix(eV),r,n,i,s,o),a&&(eV.extractRotation(a.matrixWorld),eN.setFromRotationMatrix(eV),eW(e.quaternion,ek.copy(e.quaternion).premultiply(eN.invert()),r,n,i,s,o))},dampAngle:eP,damp2:function(e,n,i,s,o,a,l){return"number"==typeof n?eC.setScalar(n):Array.isArray(n)?eC.set(n[0],n[1]):eC.copy(n),t=eS(e,"x",eC.x,i,s,o,a,l),r=eS(e,"y",eC.y,i,s,o,a,l),t||r},damp3:eI,damp4:function(e,t,r,n,i,s,u){return"number"==typeof t?eF.setScalar(t):Array.isArray(t)?eF.set(t[0],t[1],t[2],t[3]):eF.copy(t),o=eS(e,"x",eF.x,r,n,i,s,u),a=eS(e,"y",eF.y,r,n,i,s,u),l=eS(e,"z",eF.z,r,n,i,s,u),c=eS(e,"w",eF.w,r,n,i,s,u),o||a||l||c},dampE:function(e,t,r,n,i,s,o){return Array.isArray(t)?ez.set(t[0],t[1],t[2],t[3]):ez.copy(t),u=eP(e,"x",ez.x,r,n,i,s,o),d=eP(e,"y",ez.y,r,n,i,s,o),p=eP(e,"z",ez.z,r,n,i,s,o),u||d||p},dampC:function(e,t,r,n,i,s,o){return t instanceof F.Color?eE.copy(t):Array.isArray(t)?eE.setRGB(t[0],t[1],t[2]):eE.set(t),f=eS(e,"r",eE.r,r,n,i,s,o),m=eS(e,"g",eE.g,r,n,i,s,o),h=eS(e,"b",eE.b,r,n,i,s,o),f||m||h},dampQ:eW,dampS:function(e,t,r,n,i,s,o){return Array.isArray(t)?eG.set(t[0],t[1],t[2]):eG.copy(t),w=eS(e,"radius",eG.radius,r,n,i,s,o),b=eP(e,"phi",eG.phi,r,n,i,s,o),_=eP(e,"theta",eG.theta,r,n,i,s,o),w||b||_},dampM:function(e,t,r,n,i,s,o){return void 0===e.__damp&&(e.__damp={position:new F.Vector3,rotation:new F.Quaternion,scale:new F.Vector3},e.decompose(e.__damp.position,e.__damp.rotation,e.__damp.scale)),Array.isArray(t)?eq.set.apply(eq,ef(t)):eq.copy(t),eq.decompose(eU,e$,eH),j=eI(e.__damp.position,eU,r,n,i,s,o),M=eW(e.__damp.rotation,e$,r,n,i,s,o),S=eI(e.__damp.scale,eH,r,n,i,s,o),e.compose(e.__damp.position,e.__damp.rotation,e.__damp.scale),j||M||S}});function eQ(){let e=(0,N.useRef)(new F.Vector3(19.7,4.4,-31.08)),t=(0,N.useRef)(new F.Vector3).current,r=(0,N.useRef)(new F.Vector3).current;return(0,V.useFrame)((n,i)=>{let{camera:s}=n;!function(e,t,r){let n=et(e);if(ee.getPoint(n,en),ee.getTangent(n,ei).normalize(),eo.crossVectors(ei,es).normalize(),ea.copy(en).addScaledVector(ei,7.2).addScaledVector(es,3.2).addScaledVector(eo,-3),el.copy(en).addScaledVector(ei,7.2).addScaledVector(es,3.2).addScaledVector(eo,3),e<.04)t.copy(er.firstMileWhole.position),r.copy(er.firstMileWhole.target);else if(e<.14){let n=ec((e-.04)/.1);t.lerpVectors(er.firstMileWhole.position,er.firstMileFront.position,n),r.lerpVectors(er.firstMileWhole.target,er.firstMileFront.target,n)}else if(e<.18){let n=ec((e-.14)/.04);t.lerpVectors(er.firstMileFront.position,ea,n),r.lerpVectors(er.firstMileFront.target,en,n)}else if(e<.34)t.copy(ea),r.copy(en);else if(e<.38){let n=ec((e-.34)/.04);t.lerpVectors(ea,er.midMile.position,n),r.lerpVectors(en,er.midMile.target,n)}else if(e<.5)t.copy(er.midMile.position),r.copy(er.midMile.target);else if(e<.54){let n=ec((e-.5)/.04);t.lerpVectors(er.midMile.position,el,n),r.lerpVectors(er.midMile.target,en,n)}else if(e<.72)t.copy(el),r.copy(en);else if(e<.76){let n=ec((e-.72)/.04);t.lerpVectors(el,er.lastMileClose.position,n),r.lerpVectors(en,er.lastMileClose.target,n)}else if(e<.92)if(e<.8)t.copy(er.lastMileClose.position),r.copy(er.lastMileClose.target);else if(e<.84){let n=ec((e-.8)/.04);t.lerpVectors(er.lastMileClose.position,er.lastMileZoomedOut.position,n),r.lerpVectors(er.lastMileClose.target,er.lastMileZoomedOut.target,n)}else t.copy(er.lastMileZoomedOut.position),r.copy(er.lastMileZoomedOut.target);else if(e<.96){let n=ec((e-.92)/.04);t.lerpVectors(er.lastMileZoomedOut.position,er.analytics.position,n),r.lerpVectors(er.lastMileZoomedOut.target,er.analytics.target,n)}else t.copy(er.analytics.position),r.copy(er.analytics.target)}(J.getState().scrollProgress,t,r);let o=Number.isFinite(i)&&i>0?Math.min(i,.1):1/60;eZ.damp3(s.position,t,.35,o),eZ.damp3(e.current,r,.25,o),Number.isFinite(s.position.x)||s.position.copy(t),Number.isFinite(e.current.x)||e.current.copy(r),s.lookAt(e.current);let a=n.size.width/n.size.height,l=a<1?Math.min(75,45/Math.sqrt(a)):45;s.fov!==l&&(s.fov=l,s.updateProjectionMatrix())}),null}function eY({truckRef:e,wheelRefs:t}){let r=(0,N.useRef)(!1),n=(0,N.useRef)(0),i=(0,N.useRef)(0),s=(0,N.useRef)(!1),o=(0,N.useRef)(0),a=(0,N.useRef)(0),l=(0,N.useRef)(0);return(0,V.useFrame)((c,u)=>{var d;let p;if(!e.current)return;let f=Number.isFinite(u)&&u>0?Math.min(u,.1):1/60,m=J.getState().scrollProgress,h=et(m),g=m-i.current;g<-1e-4?s.current=!0:g>1e-4&&(s.current=!1),i.current=m;let v=e.current.children[0];if(v&&e.current.children.length>1&&([...e.current.children].slice(1).forEach(e=>{v.attach(e)}),v.rotation.set(0,-Math.PI/2,0),e.current.traverse(e=>{e.isMesh&&(e.frustumCulled=!1,e.castShadow=!0,e.receiveShadow=!0)})),!r.current){let t;n.current=h,n.current_velocity=0,l.current=h,i.current=m,s.current=!1,o.current=0,o.current_velocity=0;let a=ee.getPoint(n.current);if(n.current>=.99){let e=ee.getTangent(1),r=ee.getPoint(1);t=new F.Vector3().copy(r).addScaledVector(e,1)}else{let e=Math.min(n.current+.01,1);t=ee.getPoint(e)}e.current.position.copy(a),e.current.position.distanceToSquared(t)>1e-4&&e.current.lookAt(t),r.current=!0}eZ.damp(n,"current",h,.3,f),!Number.isFinite(n.current)&&(n.current=h,n.__damp&&(n.__damp={})),n.current=F.MathUtils.clamp(n.current,0,1);let y=ee.getPoint(n.current);if(n.current>=.99){let e=ee.getTangent(1),t=ee.getPoint(1);p=new F.Vector3().copy(t).addScaledVector(e,1)}else{let e=Math.min(n.current+.01,1);p=ee.getPoint(e)}e.current.position.copy(y),e.current.position.distanceToSquared(p)>1e-4&&e.current.lookAt(p);let x=0;n.current>.05&&n.current<.95&&s.current&&(x=Math.PI),eZ.damp(o,"current",x,.2,f),!Number.isFinite(o.current)&&(o.current=x,o.current_velocity=0,o.__damp&&(o.__damp={})),e.current.rotateY(o.current);let w=Math.abs(n.current-l.current);l.current=n.current,n.current>.001&&n.current<.999&&(a.current+=250*w),d=a.current,t&&0!==t.length&&t.forEach((e,t)=>{e.current&&(e.current.rotation.y=d*(t%2==0?1:-1))}),e.current.children&&e.current.children[0]&&(e.current.children[0].position.y=.003*Math.sin(45*c.clock.getElapsedTime()))}),null}let eK=[{pos:[0,4.2,-4.56],target:[0,0,-4.56]},{pos:[9.113,4.2,.944],target:[9.113,0,.944]},{pos:[-10.158,4.2,-9.874],target:[-10.158,0,-9.874]},{pos:[3.513,4.2,9.195],target:[3.513,0,9.195]},{pos:[3.96,4.2,-21.17],target:[3.96,0,-21.17]},{pos:[12.25,4.2,-16.7],target:[12.25,0,-16.7]},{pos:[3.052,4.2,-12.335],target:[3.052,0,-12.335]},{pos:[-2.03,4.2,-16.89],target:[-2.03,0,-16.89]},{pos:[-27.151,3.98,-9],target:[-27.151,0,-9]}],eJ=new F.Color("#333333"),eX=new F.Color("#ffdf6d"),e0=new F.Color("#000000"),e1=new F.Color("#ffdf6d");function e2({pos:e,targetPos:t}){let r=(0,N.useRef)(),n=(0,N.useRef)(),i=(0,N.useRef)();return(0,N.useEffect)(()=>{r.current&&n.current&&(r.current.target=n.current,r.current.target.updateMatrixWorld())},[]),(0,V.useFrame)(()=>{r.current&&(r.current.intensity=0),i.current&&(i.current.material.color.lerpColors(eJ,eX,0),i.current.material.emissive.lerpColors(e0,e1,0))}),(0,R.jsxs)("group",{children:[(0,R.jsx)("spotLight",{ref:r,position:e,intensity:0,distance:12,angle:Math.PI/4.5,penumbra:.6,decay:1.2,color:"#ffdf6d",castShadow:!1}),(0,R.jsxs)("mesh",{ref:i,position:e,children:[(0,R.jsx)("sphereGeometry",{args:[.16,16,16]}),(0,R.jsx)("meshStandardMaterial",{color:"#333333",emissive:"#000000",emissiveIntensity:3.5,roughness:.1})]}),(0,R.jsx)("object3D",{ref:n,position:t})]})}let e3=N.default.memo(function(){return(0,R.jsx)("group",{children:eK.map((e,t)=>(0,R.jsx)(e2,{pos:e.pos,targetPos:e.target},t))})}),e5=new F.Color("#f5f5f7"),e4=new F.Color,e9=new F.Vector3,e6={desktop:{shadows:!0,softShadows:!0,environment:!0,streetLights:!0,dpr:[1,1.5],antialias:!0,shadowMap:2048},tablet:{shadows:!0,softShadows:!1,environment:!0,streetLights:!1,dpr:[1,1.5],antialias:!1,shadowMap:1024},mobile:{shadows:!1,softShadows:!1,environment:!1,streetLights:!1,dpr:[1,1],antialias:!1,shadowMap:512}},e7=N.default.memo(function({truckRef:e,shadows:t,shadowMap:r}){let n=(0,N.useRef)(),i=(0,N.useRef)();return(0,N.useEffect)(()=>{n.current&&i.current&&(n.current.target=i.current)},[]),(0,V.useFrame)(t=>{n.current&&i.current&&e.current&&(e.current.getWorldPosition(e9),i.current.position.copy(e9),i.current.updateMatrixWorld(),n.current.position.set(e9.x+10,e9.y+20,e9.z+10)),t.scene&&(t.scene.background=e4.copy(e5),t.scene.environmentIntensity=1)}),(0,R.jsxs)("group",{children:[(0,R.jsx)("ambientLight",{intensity:.45}),(0,R.jsx)("directionalLight",{ref:n,castShadow:t,position:[10,20,10],intensity:1.5,"shadow-mapSize-width":r,"shadow-mapSize-height":r,"shadow-camera-far":100,"shadow-camera-left":-35,"shadow-camera-right":35,"shadow-camera-top":35,"shadow-camera-bottom":-35,"shadow-bias":-1e-4}),(0,R.jsx)("object3D",{ref:i})]})});function e8({onReady:e}){return(0,N.useEffect)(()=>{let t=0,r=0;return t=requestAnimationFrame(()=>{r=requestAnimationFrame(()=>e?.())}),()=>{cancelAnimationFrame(t),cancelAnimationFrame(r)}},[e]),null}let te=N.default.memo(function({dashboardRefs:e,wheelRefs:t,truckRef:r,tier:n="desktop",onReady:i}){let s=e6[n]??e6.desktop;return(0,R.jsx)("div",{style:{width:"100%",height:"100%",position:"absolute",top:0,left:0},children:(0,R.jsxs)(k.Canvas,{shadows:s.shadows,dpr:s.dpr,camera:{position:[32,12,-18],fov:45},gl:{antialias:s.antialias,powerPreference:"high-performance"},children:[(0,R.jsx)("color",{attach:"background",args:["#f5f5f7"]}),s.softShadows&&(0,R.jsx)(I,{size:10,samples:12,focus:1}),(0,R.jsx)(e7,{truckRef:r,shadows:s.shadows,shadowMap:s.shadowMap}),s.streetLights&&(0,R.jsx)(e3,{}),s.environment?(0,R.jsx)(N.Suspense,{fallback:null,children:(0,R.jsx)(A.Environment,{preset:"city"})}):(0,R.jsx)("hemisphereLight",{args:["#ffffff","#9aa0a6",.9]}),(0,R.jsxs)(N.Suspense,{fallback:null,children:[(0,R.jsx)(K,{dashboardRefs:e,truckRef:r,wheelRefs:t,tier:n}),(0,R.jsx)(e8,{onReady:i})]}),(0,R.jsx)(eY,{truckRef:r,wheelRefs:t}),(0,R.jsx)(eQ,{})]})})});var tt=e.i(89970),tr=e.i(83495);let tn=(e,t,r)=>Math.min(Math.max(e,t),r),ti=e=>{if("u"{e?e.scrollTo(t,{duration:1.5}):window.scrollTo({top:t,behavior:"smooth"})};tt.default.registerPlugin(tr.ScrollTrigger);let to={desktop:600,tablet:550,mobile:500};function ta({dashboardRefs:e,onPinState:t,tier:r="desktop",ready:n=!1}){let i=J(e=>e.setScrollProgress),s=J(e=>e.setActiveSection),o=(0,N.useRef)(null),a=(0,N.useRef)(0),l=(0,N.useRef)("before"),c=(0,N.useRef)(null);return(0,N.useEffect)(()=>{let r=o.current;if(!r)return;let n=r=>{i(r);let n=r<=2e-4?"before":r>=.9998?"after":"pinned";n!==l.current&&(l.current=n,t?.(n));let o=0;if(r>=.92?o=3:r>=.5?o=2:r>=.12&&(o=1),o!==a.current&&(a.current=o,s(o)),e){var c,u,d;c=e.bars||[],u=e.pieQuarters||[],d=r>=.92?(r-.92)/.08:0,c.forEach((e,t)=>{if(e.current){let r=tn((d-.08*t)/.5,0,1);e.current.scale.y=r}}),u.forEach((e,t)=>{e.current&&(e.current.rotation.y=-.709+d*Math.PI*2*(2+.5*t))})}},u=tr.ScrollTrigger.create({trigger:r,start:"top top",end:"bottom bottom",scrub:2.5,invalidateOnRefresh:!0,onUpdate:e=>n(e.progress),onRefresh:e=>n(e.progress)});c.current=u;let d=requestAnimationFrame(()=>tr.ScrollTrigger.refresh()),p=0,f=new ResizeObserver(()=>{cancelAnimationFrame(p),p=requestAnimationFrame(()=>tr.ScrollTrigger.refresh())});f.observe(document.documentElement);let m=!1;return document.fonts?.ready&&document.fonts.ready.then(()=>{m||tr.ScrollTrigger.refresh()}),()=>{cancelAnimationFrame(d),cancelAnimationFrame(p),f.disconnect(),m=!0,u.kill(),c.current=null}},[i,s,e,t]),(0,N.useEffect)(()=>{n&&tr.ScrollTrigger.refresh()},[n]),(0,R.jsx)("div",{ref:o,id:"scroll-trigger-trigger",style:{position:"relative",width:"100%",height:`${to[r]??600}vh`,pointerEvents:"none",zIndex:0}})}function tl(){let e=J(e=>e.activeSection),t=J(e=>e.lenis);return(0,R.jsx)("div",{className:"side-navigation",id:"main-navbar",children:[{label:"First Mile",index:0},{label:"Mid Mile",index:1},{label:"Last Mile",index:2},{label:"Analytics",index:3}].map(r=>(0,R.jsxs)("button",{onClick:()=>{ts(t,ti([0,.38,.76,.92][r.index]))},className:`side-nav-item ${e===r.index?"active":""}`,children:[(0,R.jsx)("span",{className:"side-nav-label",children:r.label}),(0,R.jsx)("span",{className:"side-nav-dot"})]},r.index))})}let tc=[{id:"first-mile",title:"First Mile Warehouse",subtitle:"Consolidation & Prep",description:"Incoming shipments are securely loaded, checked, and queued for transfer in our high-capacity fulfillment centers.",progressStart:0,progressEnd:.25},{id:"mid-mile",title:"Mid Mile Hub",subtitle:"Sorting & Direct Dispatch",description:"Consolidated goods travel between primary distribution nodes. Heavy logistics lanes sorting thousands of parcels per hour.",progressStart:.25,progressEnd:.5},{id:"last-mile",title:"Last Mile Delivery",subtitle:"Doorstep Courier Services",description:"Local courier fleets take over for the final leg — MileTruth™ AI sequences the fastest doorstep routes and keeps every package tracked through to a confirmed delivery.",progressStart:.5,progressEnd:.75},{id:"analytics",title:"Fulfillment Analytics",subtitle:"Real-Time Operational Insights",description:"A fully centralized dashboard monitoring transit times, fleet coordinates, carbon footprint, and delivery success rates.",progressStart:.75,progressEnd:1}];function tu({children:e,active:t,id:r,className:n=""}){let i=(0,N.useRef)(null);return(0,N.useEffect)(()=>{let e=i.current;if(!e)return;let n=e.querySelectorAll(".section-badge, .section-title, .section-subtitle, .section-description, .section-metrics, .section-supporting, .section-close-btn"),s="promise-section"===r;t?(tt.default.killTweensOf([e,n]),tt.default.to(e,{xPercent:s?-50:0,yPercent:s?-50:0,y:0,scale:1,opacity:1,duration:.85,ease:"power4.out"}),tt.default.fromTo(n,{y:15,opacity:0},{y:0,opacity:1,duration:.6,stagger:.08,ease:"power3.out",delay:.1})):(tt.default.killTweensOf([e,n]),tt.default.to(e,{xPercent:s?-50:0,yPercent:s?-50:0,y:s?18:20,scale:.96,opacity:0,duration:.5,ease:"power3.inOut"}),tt.default.to(n,{y:10,opacity:0,duration:.35,ease:"power2.in"}))},[t,r]),(0,R.jsx)("div",{ref:i,id:r,className:`section-panel ${t?"active":""} ${n}`,style:{opacity:0,transform:"promise-section"===r?"translate(-50%, -50%) translateY(18px) scale(0.96)":"translateY(20px) scale(0.96)"},children:e})}function td({active:e}){let t=tc[0];return(0,R.jsxs)(tu,{active:e,id:"first-mile-section",children:[(0,R.jsx)("div",{className:"section-badge",children:"Stage 01"}),(0,R.jsx)("h2",{className:"section-title",children:t.title}),(0,R.jsx)("h3",{className:"section-subtitle",children:t.subtitle}),(0,R.jsx)("p",{className:"section-description",children:t.description}),(0,R.jsxs)("div",{className:"section-metrics",children:[(0,R.jsxs)("div",{className:"metric-item",children:[(0,R.jsx)("span",{className:"metric-value",children:"14,250"}),(0,R.jsx)("span",{className:"metric-label",children:"Parcels Processed"})]}),(0,R.jsxs)("div",{className:"metric-item",children:[(0,R.jsx)("span",{className:"metric-value",children:"99.98%"}),(0,R.jsx)("span",{className:"metric-label",children:"Sorting Accuracy"})]})]})]})}function tp({active:e}){let t=tc[1],r=J(e=>e.lenis);return(0,R.jsxs)(tu,{active:e,id:"mid-mile-section",children:[(0,R.jsx)("div",{className:"section-badge",children:"Stage 02"}),(0,R.jsx)("h2",{className:"section-title",children:t.title}),(0,R.jsx)("h3",{className:"section-subtitle",children:t.subtitle}),(0,R.jsx)("p",{className:"section-description",children:t.description}),(0,R.jsxs)("div",{className:"section-metrics mm-info-strip",children:[(0,R.jsxs)("div",{className:"mm-info-row",children:[(0,R.jsx)("span",{className:"mm-info-icon","aria-hidden":"true",children:(0,R.jsxs)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,R.jsx)("rect",{x:"1",y:"3",width:"15",height:"13"}),(0,R.jsx)("polygon",{points:"16 8 20 8 23 11 23 16 16 16 16 8"}),(0,R.jsx)("circle",{cx:"5.5",cy:"18.5",r:"2.5"}),(0,R.jsx)("circle",{cx:"18.5",cy:"18.5",r:"2.5"})]})}),(0,R.jsxs)("div",{className:"mm-info-content",children:[(0,R.jsx)("h4",{className:"mm-info-title",children:"Vehicles In Transit"}),(0,R.jsx)("p",{className:"mm-info-text",children:"A live view of active vehicles moving shipments between regional distribution hubs."})]})]}),(0,R.jsxs)("div",{className:"mm-info-row",children:[(0,R.jsx)("span",{className:"mm-info-icon","aria-hidden":"true",children:(0,R.jsxs)("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:[(0,R.jsx)("line",{x1:"16.5",y1:"9.4",x2:"7.5",y2:"4.21"}),(0,R.jsx)("path",{d:"M21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16z"}),(0,R.jsx)("polyline",{points:"3.27 6.96 12 12.01 20.73 6.96"}),(0,R.jsx)("line",{x1:"12",y1:"22.08",x2:"12",y2:"12"})]})}),(0,R.jsxs)("div",{className:"mm-info-content",children:[(0,R.jsx)("h4",{className:"mm-info-title",children:"Packages In Transit"}),(0,R.jsx)("p",{className:"mm-info-text",children:"Real-time visibility into parcels currently moving through the mid-mile network."})]})]})]}),(0,R.jsxs)("button",{className:"section-close-btn",onClick:()=>{ts(r,ti(.575))},children:["Continue Journey",(0,R.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",style:{marginLeft:"6px"},children:[(0,R.jsx)("line",{x1:"5",y1:"12",x2:"19",y2:"12"}),(0,R.jsx)("polyline",{points:"12 5 19 12 12 19"})]})]})]})}function tf({active:e}){let t=tc[2],r=J(e=>e.lenis);return(0,R.jsxs)(tu,{active:e,id:"last-mile-section",children:[(0,R.jsx)("div",{className:"section-badge",children:"Stage 03"}),(0,R.jsx)("h2",{className:"section-title",children:t.title}),(0,R.jsx)("h3",{className:"section-subtitle",children:t.subtitle}),(0,R.jsx)("p",{className:"section-description",children:t.description}),(0,R.jsxs)("div",{className:"section-metrics",children:[(0,R.jsxs)("div",{className:"metric-item",children:[(0,R.jsx)("span",{className:"metric-value",children:"99.4%"}),(0,R.jsx)("span",{className:"metric-label",children:"On-Time Delivery"})]}),(0,R.jsxs)("div",{className:"metric-item",children:[(0,R.jsx)("span",{className:"metric-value",children:"12.5 min"}),(0,R.jsx)("span",{className:"metric-label",children:"Avg. Doorstep Time"})]})]}),(0,R.jsxs)("div",{className:"section-supporting",children:[(0,R.jsx)("span",{className:"supporting-dot"}),(0,R.jsxs)("div",{className:"supporting-text",children:[(0,R.jsx)("span",{className:"supporting-value",children:"Real-Time visibility"}),(0,R.jsx)("span",{className:"supporting-label",children:"Live GPS · Active now"})]})]}),(0,R.jsxs)("button",{className:"section-close-btn",onClick:()=>{ts(r,ti(.92))},children:["Continue",(0,R.jsxs)("svg",{width:"14",height:"14",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2.5",strokeLinecap:"round",strokeLinejoin:"round",style:{marginLeft:"6px"},children:[(0,R.jsx)("line",{x1:"5",y1:"12",x2:"19",y2:"12"}),(0,R.jsx)("polyline",{points:"12 5 19 12 12 19"})]})]})]})}function tm({active:e}){return(0,R.jsxs)(tu,{active:e,id:"promise-section",children:[(0,R.jsx)("div",{className:"section-badge",children:"The Doormile Promise"}),(0,R.jsxs)("h2",{className:"section-title promise-title",children:["One Connected System.",(0,R.jsx)("br",{}),"One Promise Kept."]}),(0,R.jsx)("span",{className:"promise-divider","aria-hidden":!0}),(0,R.jsx)("p",{className:"section-description promise-desc",children:"Stop managing three separate logistics services. Doormile unifies first, mid and last mile into a single intelligent delivery system powered by MileTruth™ AI."})]})}var th=e.i(92599);function tg(){let e=J(e=>e.scrollProgress<.14),t=J(e=>e.scrollProgress>=.38&&e.scrollProgress<.5),r=J(e=>e.scrollProgress>=.78&&e.scrollProgress<.875),n=J(e=>e.scrollProgress>=.9);return(0,R.jsxs)("div",{className:"sections-overlay-container",children:[(0,R.jsx)(td,{active:e}),(0,R.jsx)(tp,{active:t}),(0,R.jsx)(tf,{active:r}),(0,R.jsx)(tm,{active:n})]})}function tv({hidden:e}){return(0,R.jsxs)("div",{className:"dm-hiw-3d-loader","aria-hidden":e,style:{position:"absolute",inset:0,zIndex:50,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:"18px",background:"linear-gradient(180deg, #f5f5f7 0%, #e9edf2 100%)",opacity:+!e,pointerEvents:e?"none":"auto",transition:"opacity 0.6s ease"},children:[(0,R.jsx)("span",{style:{width:30,height:30,borderRadius:"50%",border:"3px solid rgba(192,18,39,0.18)",borderTopColor:"#c01227",animation:"dm-hiw-spin 0.8s linear infinite"}}),(0,R.jsx)("span",{style:{fontWeight:600,letterSpacing:"0.01em",color:"#1f1f1f",fontSize:"0.95rem"},children:"Loading Doormile Experience…"}),(0,R.jsx)("style",{children:"@keyframes dm-hiw-spin{to{transform:rotate(360deg)}}"})]})}function ty(){return(0,R.jsxs)("section",{className:"dm-hiw-3d-fallback",style:{position:"relative",minHeight:"70vh",display:"flex",alignItems:"flex-end",background:"linear-gradient(180deg, #eef1f5 0%, #dfe5ec 55%, #cfd7e0 100%)",overflow:"hidden"},children:[(0,R.jsx)("img",{src:"/images/home2-banner-1.webp",alt:"Doormile delivery journey — first mile to last mile",loading:"lazy",decoding:"async",onError:e=>{e.currentTarget.style.display="none"},style:{position:"absolute",inset:0,width:"100%",height:"100%",objectFit:"cover"}}),(0,R.jsx)("div",{style:{position:"relative",padding:"2rem clamp(1rem, 5vw, 4rem)",maxWidth:720},children:(0,R.jsx)("p",{style:{fontWeight:700,fontSize:"clamp(1.25rem, 3vw, 2rem)",lineHeight:1.2,margin:0},children:"From first mile to last mile, every delivery tracked."})})]})}tt.default.registerPlugin(tr.ScrollTrigger),e.s(["default",0,function(){let e=J(e=>e.setLenis),t=function(){let[e,t]=(0,N.useState)(null);return(0,N.useEffect)(()=>{let e,r,n,i,s,o,a;t((r=window.matchMedia("(prefers-reduced-motion: reduce)").matches,n=window.matchMedia("(pointer: coarse)").matches||navigator.maxTouchPoints>0,i=window.innerWidth,s="number"==typeof navigator.deviceMemory?navigator.deviceMemory:8,o=navigator.hardwareConcurrency||8,a=function(){if("u"=1024?"desktop":i>=768&&i<=1366?"tablet":n&&i<768||i<768?"mobile":"tablet",(s<=2||o<=2)&&"mobile"!==e&&(e="mobile"),{tier:e,isTouch:n,reducedMotion:r,fallback:r||!a||s<=1,lowMemory:s<=4}))},[]),e}(),r=(0,N.useRef)(null),n=(0,N.useRef)(null),[i,s]=(0,N.useState)("before"),[o,a]=(0,N.useState)(!1),[l,c]=(0,N.useState)(!1),u=(0,N.useCallback)(()=>c(!0),[]),d=t?.tier??"desktop",p=t?.fallback??!1,f=t?.isTouch??!1,m=null!=t&&!p;(0,N.useEffect)(()=>{if(!m)return;let e=r.current;if(!e)return;let t=new IntersectionObserver(e=>{e.some(e=>e.isIntersecting)&&(a(!0),t.disconnect())},{rootMargin:"200% 0px"});return t.observe(e),()=>t.disconnect()},[m]),(0,N.useEffect)(()=>{let t;if(!m||f)return;let r=new th.default({duration:1.2,lerp:.08,syncTouch:!1});e(r),r.on("scroll",tr.ScrollTrigger.update);let n=e=>{r.raf(e),t=requestAnimationFrame(n)};return t=requestAnimationFrame(n),tr.ScrollTrigger.refresh(),()=>{cancelAnimationFrame(t),r.destroy(),e(null)}},[m,f,e]),(0,N.useEffect)(()=>{if(!o)return;let e=n.current;if(!e)return;let t=null,r=r=>{let n=r>=.92;n!==t&&(t=n,e.style.opacity=n?"0.85":"1")};return r(J.getState().scrollProgress),J.subscribe(e=>r(e.scrollProgress))},[o]);let h=(0,N.useRef)(null),g=N.default.useMemo(()=>[{current:null},{current:null},{current:null},{current:null}],[]),v=N.default.useMemo(()=>({bars:[],floorBars:[],pieQuarters:[]}),[]);return null==t?(0,R.jsx)("div",{ref:r,className:"dm-hiw-3d",style:{minHeight:"100vh"},"aria-hidden":!0}):p?(0,R.jsx)(ty,{}):(0,R.jsxs)("div",{ref:r,className:`dm-hiw-3d is-${i}`,children:[(0,R.jsxs)("div",{className:"dm-hiw-3d-stage",children:[(0,R.jsx)("div",{ref:n,className:"canvas-wrapper",style:{transition:"opacity 0.8s cubic-bezier(0.16, 1, 0.3, 1)"},children:o&&(0,R.jsx)(te,{truckRef:h,wheelRefs:g,dashboardRefs:v,tier:d,onReady:u})}),o&&(0,R.jsx)(tv,{hidden:l}),(0,R.jsx)(tl,{}),(0,R.jsx)(tg,{})]}),(0,R.jsx)(ta,{dashboardRefs:v,onPinState:s,tier:d,ready:l})]})}],41626)},88493,e=>{e.n(e.i(41626))}]); \ No newline at end of file diff --git a/build/_next/static/chunks/04xui0pxt.et1.js b/build/_next/static/chunks/04xui0pxt.et1.js new file mode 100644 index 0000000..ba8e2d7 --- /dev/null +++ b/build/_next/static/chunks/04xui0pxt.et1.js @@ -0,0 +1 @@ +(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,89970,83495,t=>{"use strict";function e(t){if(void 0===t)throw ReferenceError("this hasn't been initialised - super() hasn't been called");return t}function r(t,e){t.prototype=Object.create(e.prototype),t.prototype.constructor=t,t.__proto__=e}var n,i,s,a,o,u,l,c,f,h,p,d,_,g,m,v,y,x,b,T,w,k,M,O,C,E,S={autoSleep:120,force3D:"auto",nullTargetWarn:1,units:{lineHeight:""}},A={duration:.5,overwrite:!1,delay:0},P=2*Math.PI,D=P/4,R=0,z=Math.sqrt,F=Math.cos,I=Math.sin,B=function(t){return"string"==typeof t},Y=function(t){return"function"==typeof t},L=function(t){return"number"==typeof t},N=function(t){return void 0===t},X=function(t){return"object"==typeof t},U=function(t){return!1!==t},q=function(){return"u">typeof window},H=function(t){return Y(t)||B(t)},W="function"==typeof ArrayBuffer&&ArrayBuffer.isView||function(){},V=Array.isArray,j=/random\([^)]+\)/g,G=/,\s*/g,Q=/(?:-?\.?\d|\.)+/gi,Z=/[-+=.]*\d+[.e\-+]*\d*[e\-+]*\d*/g,$=/[-+=.]*\d+[.e-]*\d*[a-z%]*/g,K=/[-+=.]*\d+\.?\d*(?:e-|e\+)?\d*/gi,J=/[+-]=-?[.\d]+/,tt=/[^,'"\[\]\s]+/gi,te=/^[+\-=e\s\d]*\d+[.\d]*([a-z]*|%)\s*$/i,tr={},tn={},ti=function(t){return(tn=tz(t,tr))&&rM},ts=function(t,e){return console.warn("Invalid property",t,"set to",e,"Missing plugin? gsap.registerPlugin()")},ta=function(t,e){return!e&&console.warn(t)},to=function(t,e){return t&&(tr[t]=e)&&tn&&(tn[t]=e)||tr},tu=function(){return 0},tl={suppressEvents:!0,isStart:!0,kill:!1},tc={suppressEvents:!0,kill:!1},tf={suppressEvents:!0},th={},tp=[],td={},t_={},tg={},tm=30,tv=[],ty="",tx=function(t){var e,r,n=t[0];if(X(n)||Y(n)||(t=[t]),!(e=(n._gsap||{}).harness)){for(r=tv.length;r--&&!tv[r].targetTest(n););e=tv[r]}for(r=t.length;r--;)t[r]&&(t[r]._gsap||(t[r]._gsap=new eX(t[r],e)))||t.splice(r,1);return t},tb=function(t){return t._gsap||tx(ei(t))[0]._gsap},tT=function(t,e,r){return(r=t[e])&&Y(r)?t[e]():N(r)&&t.getAttribute&&t.getAttribute(e)||r},tw=function(t,e){return(t=t.split(",")).forEach(e)||t},tk=function(t){return Math.round(1e5*t)/1e5||0},tM=function(t){return Math.round(1e7*t)/1e7||0},tO=function(t,e){var r=e.charAt(0),n=parseFloat(e.substr(2));return t=parseFloat(t),"+"===r?t+n:"-"===r?t-n:"*"===r?t*n:t/n},tC=function(t,e){for(var r=e.length,n=0;0>t.indexOf(e[n])&&++ns;)a=a._prev;return a?(e._next=a._next,a._next=e):(e._next=t[r],t[r]=e),e._next?e._next._prev=e:t[n]=e,e._prev=a,e.parent=e._dp=t,e},tN=function(t,e,r,n){void 0===r&&(r="_first"),void 0===n&&(n="_last");var i=e._prev,s=e._next;i?i._next=s:t[r]===e&&(t[r]=s),s?s._prev=i:t[n]===e&&(t[n]=i),e._next=e._prev=e.parent=null},tX=function(t,e){t.parent&&(!e||t.parent.autoRemoveChildren)&&t.parent.remove&&t.parent.remove(t),t._act=0},tU=function(t,e){if(t&&(!e||e._end>t._dur||e._start<0))for(var r=t;r;)r._dirty=1,r=r.parent;return t},tq=function(t){for(var e=t.parent;e&&e.parent;)e._dirty=1,e.totalDuration(),e=e.parent;return t},tH=function(t,e,r,n){return t._startAt&&(y?t._startAt.revert(tc):t.vars.immediateRender&&!t.vars.autoRevert||t._startAt.render(e,!0,n))},tW=function(t){return t._repeat?tV(t._tTime,t=t.duration()+t._rDelay)*t:0},tV=function(t,e){var r=Math.floor(t=tM(t/e));return t&&r===t?r-1:r},tj=function(t,e){return(t-e._start)*e._ts+(e._ts>=0?0:e._dirty?e.totalDuration():e._tDur)},tG=function(t){return t._end=tM(t._start+(t._tDur/Math.abs(t._ts||t._rts||1e-8)||0))},tQ=function(t,e){var r=t._dp;return r&&r.smoothChildTiming&&t._ts&&(t._start=tM(r._time-(t._ts>0?e/t._ts:-(((t._dirty?t.totalDuration():t._tDur)-e)/t._ts))),tG(t),r._dirty||tU(r,t)),t},tZ=function(t,e){var r;if((e._time||!e._dur&&e._initted||e._start1e-8)&&e.render(r,!0)),tU(t,e)._dp&&t._initted&&t._time>=t._dur&&t._ts){if(t._dur=0&&r.totalTime(r._tTime),r=r._dp;t._zTime=-1e-8}},t$=function(t,e,r,n){return e.parent&&tX(e),e._start=tM((L(r)?r:r||t!==b?t4(t,r,e):t._time)+e._delay),e._end=tM(e._start+(e.totalDuration()/Math.abs(e.timeScale())||0)),tL(t,e,"_first","_last",t._sort?"_start":0),t1(e)||(t._recent=e),n||tZ(t,e),t._ts<0&&tQ(t,t._tTime),t},tK=function(t,e){return(tr.ScrollTrigger||ts("scrollTrigger",e))&&tr.ScrollTrigger.create(e,t)},tJ=function(t,e,r,n,i){return(e0(t,e,i),t._initted)?!r&&t._pt&&!y&&(t._dur&&!1!==t.vars.lazy||!t._dur&&t.vars.lazy)&&O!==eC.frame?(tp.push(t),t._lazy=[i,n],1):void 0:1},t0=function t(e){var r=e.parent;return r&&r._ts&&r._initted&&!r._lock&&(0>r.rawTime()||t(r))},t1=function(t){var e=t.data;return"isFromStart"===e||"isStart"===e},t2=function(t,e,r,n){var i,s,a,o=t.ratio,u=e<0||!e&&(!t._start&&t0(t)&&!(!t._initted&&t1(t))||(t._ts<0||t._dp._ts<0)&&!t1(t))?0:1,l=t._rDelay,c=0;if(l&&t._repeat&&(s=tV(c=et(0,t._tDur,e),l),t._yoyo&&1&s&&(u=1-u),s!==tV(t._tTime,l)&&(o=1-u,t.vars.repeatRefresh&&t._initted&&t.invalidate())),u!==o||y||n||1e-8===t._zTime||!e&&t._zTime){if(!t._initted&&tJ(t,e,n,r,c))return;for(a=t._zTime,t._zTime=e||1e-8*!!r,r||(r=e&&!a),t.ratio=u,t._from&&(u=1-u),t._time=0,t._tTime=c,i=t._pt;i;)i.r(u,i.d),i=i._next;e<0&&tH(t,e,r,!0),t._onUpdate&&!r&&e_(t,"onUpdate"),c&&t._repeat&&!r&&t.parent&&e_(t,"onRepeat"),(e>=t._tDur||e<0)&&t.ratio===u&&(u&&tX(t,1),r||y||(e_(t,u?"onComplete":"onReverseComplete",!0),t._prom&&t._prom()))}else t._zTime||(t._zTime=e)},t5=function(t,e,r){var n;if(r>e)for(n=t._first;n&&n._start<=r;){if("isPause"===n.data&&n._start>e)return n;n=n._next}else for(n=t._last;n&&n._start>=r;){if("isPause"===n.data&&n._start0&&!n&&tQ(t,t._tTime=t._tDur*a),t.parent&&tG(t),r||tU(t.parent,t),t},t8=function(t){return t instanceof eq?tU(t):t3(t,t._dur)},t6={_start:0,endTime:tu,totalDuration:tu},t4=function t(e,r,n){var i,s,a,o=e.labels,u=e._recent||t6,l=e.duration()>=1e8?u.endTime(!1):e._dur;return B(r)&&(isNaN(r)||r in o)?(s=r.charAt(0),a="%"===r.substr(-1),i=r.indexOf("="),"<"===s||">"===s)?(i>=0&&(r=r.replace(/=/,"")),("<"===s?u._start:u.endTime(u._repeat>=0))+(parseFloat(r.substr(1))||0)*(a?(i<0?u:n).totalDuration()/100:1)):i<0?(r in o||(o[r]=l),o[r]):(s=parseFloat(r.charAt(i-1)+r.substr(i+1)),a&&n&&(s=s/100*(V(n)?n[0]:n).totalDuration()),i>1?t(e,r.substr(0,i-1),n)+s:l+s):null==r?l:+r},t9=function(t,e,r){var n,i,s=L(e[1]),a=(s?2:1)+(t<2?0:1),o=e[a];if(s&&(o.duration=e[1]),o.parent=r,t){for(n=o,i=r;i&&!("immediateRender"in n);)n=i.vars.defaults||{},i=U(i.vars.inherit)&&i.parent;o.immediateRender=U(n.immediateRender),t<2?o.runBackwards=1:o.startAt=e[a-1]}return new e4(e[0],o,e[a+1])},t7=function(t,e){return t||0===t?e(t):e},et=function(t,e,r){return re?e:r},ee=function(t,e){return B(t)&&(e=te.exec(t))?e[1]:""},er=[].slice,en=function(t,e){return t&&X(t)&&"length"in t&&(!e&&!t.length||t.length-1 in t&&X(t[0]))&&!t.nodeType&&t!==T},ei=function(t,e,r){var n;return x&&!e&&x.selector?x.selector(t):B(t)&&!r&&(w||!eE())?er.call((e||k).querySelectorAll(t),0):V(t)?(void 0===n&&(n=[]),t.forEach(function(t){var e;return B(t)&&!r||en(t,1)?(e=n).push.apply(e,ei(t)):n.push(t)})||n):en(t)?er.call(t,0):t?[t]:[]},es=function(t){return t=ei(t)[0]||ta("Invalid scope")||{},function(e){var r=t.current||t.nativeElement||t;return ei(e,r.querySelectorAll?r:r===t?ta("Invalid scope")||k.createElement("div"):t)}},ea=function(t){return t.sort(function(){return .5-Math.random()})},eo=function(t){if(Y(t))return t;var e=X(t)?t:{each:t},r=eI(e.ease),n=e.from||0,i=parseFloat(e.base)||0,s={},a=n>0&&n<1,o=isNaN(n)||a,u=e.axis,l=n,c=n;return B(n)?l=c=({center:.5,edges:.5,end:1})[n]||0:!a&&o&&(l=n[0],c=n[1]),function(t,a,f){var h,p,d,_,g,m,v,y,x,b=(f||e).length,T=s[b];if(!T){if(!(x="auto"===e.grid?0:(e.grid||[1,1e8])[1])){for(v=-1e8;v<(v=f[x++].getBoundingClientRect().left)&&xv&&(v=g),gb?b-1:u?"y"===u?b/x:x:Math.max(x,b/x))||0)*("edges"===n?-1:1),T.b=b<0?i-b:i,T.u=ee(e.amount||e.each)||0,r=r&&b<0?eF(r):r}return b=(T[t]-T.min)/T.max||0,tM(T.b+(r?r(b):b)*T.v)+T.u}},eu=function(t){var e=Math.pow(10,((t+"").split(".")[1]||"").length);return function(r){var n=tM(Math.round(parseFloat(r)/t)*t*e);return(n-n%1)/e+(L(r)?0:ee(r))}},el=function(t,e){var r,n,i=V(t);return!i&&X(t)&&(r=i=t.radius||1e8,t.values?(n=!L((t=ei(t.values))[0]))&&(r*=r):t=eu(t.increment)),t7(e,i?Y(t)?function(e){return Math.abs((n=t(e))-e)<=r?n:e}:function(e){for(var i,s,a=parseFloat(n?e.x:e),o=parseFloat(n?e.y:0),u=1e8,l=0,c=t.length;c--;)(i=n?(i=t[c].x-a)*i+(s=t[c].y-o)*s:Math.abs(t[c]-a))(i=Math.abs(i))&&(s=n,o=i);return s},e_=function(t,e,r){var n,i,s,a=t.vars,o=a[e],u=x,l=t._ctx;if(o)return n=a[e+"Params"],i=a.callbackScope||t,r&&tp.length&&tE(),l&&(x=l),s=n?o.apply(i,n):o.call(i),x=u,s},eg=function(t){return tX(t),t.scrollTrigger&&t.scrollTrigger.kill(!!y),1>t.progress()&&e_(t,"onInterrupt"),t},em=[],ev=function(t){if(t)if(t=!t.name&&t.default||t,q()||t.headless){var e=t.name,r=Y(t),n=e&&!r&&t.init?function(){this._props=[]}:t,i={init:tu,render:ra,add:e$,kill:ru,modifier:ro,rawVars:0},s={targetTest:0,get:0,getSetter:rr,aliases:{},register:0};if(eE(),t!==n){if(t_[e])return;tR(n,tR(tI(t,i),s)),tz(n.prototype,tz(i,tI(t,s))),t_[n.prop=e]=n,t.targetTest&&(tv.push(n),th[e]=1),e=("css"===e?"CSS":e.charAt(0).toUpperCase()+e.substr(1))+"Plugin"}to(e,n),t.register&&t.register(rM,n,rf)}else em.push(t)},ey={aqua:[0,255,255],lime:[0,255,0],silver:[192,192,192],black:[0,0,0],maroon:[128,0,0],teal:[0,128,128],blue:[0,0,255],navy:[0,0,128],white:[255,255,255],olive:[128,128,0],yellow:[255,255,0],orange:[255,165,0],gray:[128,128,128],purple:[128,0,128],green:[0,128,0],red:[255,0,0],pink:[255,192,203],cyan:[0,255,255],transparent:[255,255,255,0]},ex=function(t,e,r){return(6*(t+=t<0?1:t>1?-1:0)<1?e+(r-e)*t*6:t<.5?r:3*t<2?e+(r-e)*(2/3-t)*6:e)*255+.5|0},eb=function(t,e,r){var n,i,s,a,o,u,l,c,f,h,p=t?L(t)?[t>>16,t>>8&255,255&t]:0:ey.black;if(!p){if(","===t.substr(-1)&&(t=t.substr(0,t.length-1)),ey[t])p=ey[t];else if("#"===t.charAt(0)){if(t.length<6&&(n=t.charAt(1),t="#"+n+n+(i=t.charAt(2))+i+(s=t.charAt(3))+s+(5===t.length?t.charAt(4)+t.charAt(4):"")),9===t.length)return[(p=parseInt(t.substr(1,6),16))>>16,p>>8&255,255&p,parseInt(t.substr(7),16)/255];p=[(t=parseInt(t.substr(1),16))>>16,t>>8&255,255&t]}else if("hsl"===t.substr(0,3))if(p=h=t.match(Q),e){if(~t.indexOf("="))return p=t.match(Z),r&&p.length<4&&(p[3]=1),p}else a=p[0]%360/360,o=p[1]/100,i=(u=p[2]/100)<=.5?u*(o+1):u+o-u*o,n=2*u-i,p.length>3&&(p[3]*=1),p[0]=ex(a+1/3,n,i),p[1]=ex(a,n,i),p[2]=ex(a-1/3,n,i);else p=t.match(Q)||ey.transparent;p=p.map(Number)}return e&&!h&&(n=p[0]/255,u=((l=Math.max(n,i=p[1]/255,s=p[2]/255))+(c=Math.min(n,i,s)))/2,l===c?a=o=0:(f=l-c,o=u>.5?f/(2-l-c):f/(l+c),a=(l===n?(i-s)/f+6*(ic||y<0)&&(h+=y-f),p+=y,((r=(m=p-h)-_)>0||x)&&(v=++a.frame,o=m-1e3*a.time,a.time=m/=1e3,_+=r+(r>=d?4:d-r),s=1),x||(n=i(t)),s)for(u=0;utypeof requestAnimationFrame&&requestAnimationFrame,n&&a.sleep(),i=s||function(t){return setTimeout(t,_-1e3*a.time+1|0)},E=1,m(2))},sleep:function(){(s?cancelAnimationFrame:clearTimeout)(n),E=0,i=tu},lagSmoothing:function(t,e){f=Math.min(e||33,c=t||1/0)},fps:function(t){d=1e3/(t||240),_=1e3*a.time+d},add:function(t,e,r){var n=e?function(e,r,i,s){t(e,r,i,s),a.remove(n)}:t;return a.remove(t),g[r?"unshift":"push"](n),eE(),n},remove:function(t,e){~(e=g.indexOf(t))&&g.splice(e,1)&&u>=e&&u--},_listeners:g}),eE=function(){return!E&&eC.wake()},eS={},eA=/^[\d.\-M][\d.\-,\s]/,eP=/["']/g,eD=function(t){for(var e,r,n,i={},s=t.substr(1,t.length-3).split(":"),a=s[0],o=1,u=s.length;o1&&r.config?r.config.apply(null,~t.indexOf("{")?[eD(e[1])]:eR(t).split(",").map(tP)):eS._CE&&eA.test(t)?eS._CE("",t):r},eF=function(t){return function(e){return 1-t(1-e)}},eI=function(t,e){return t&&(Y(t)?t:eS[t]||ez(t))||e},eB=function(t,e,r,n){void 0===r&&(r=function(t){return 1-e(1-t)}),void 0===n&&(n=function(t){return t<.5?e(2*t)/2:1-e((1-t)*2)/2});var i,s={easeIn:e,easeOut:r,easeInOut:n};return tw(t,function(t){for(var e in eS[t]=tr[t]=s,eS[i=t.toLowerCase()]=r,s)eS[i+("easeIn"===e?".in":"easeOut"===e?".out":".inOut")]=eS[t+"."+e]=s[e]}),s},eY=function(t){return function(e){return e<.5?(1-t(1-2*e))/2:.5+t((e-.5)*2)/2}},eL=function t(e,r,n){var i=r>=1?r:1,s=(n||(e?.3:.45))/(r<1?r:1),a=s/P*(Math.asin(1/i)||0),o=function(t){return 1===t?1:i*Math.pow(2,-10*t)*I((t-a)*s)+1},u="out"===e?o:"in"===e?function(t){return 1-o(1-t)}:eY(o);return s=P/s,u.config=function(r,n){return t(e,r,n)},u},eN=function t(e,r){void 0===r&&(r=1.70158);var n=function(t){return t?--t*t*((r+1)*t+r)+1:0},i="out"===e?n:"in"===e?function(t){return 1-n(1-t)}:eY(n);return i.config=function(r){return t(e,r)},i};tw("Linear,Quad,Cubic,Quart,Quint,Strong",function(t,e){var r=e<5?e+1:e;eB(t+",Power"+(r-1),e?function(t){return Math.pow(t,r)}:function(t){return t},function(t){return 1-Math.pow(1-t,r)},function(t){return t<.5?Math.pow(2*t,r)/2:1-Math.pow((1-t)*2,r)/2})}),eS.Linear.easeNone=eS.none=eS.Linear.easeIn,eB("Elastic",eL("in"),eL("out"),eL()),eW=2*(eH=1/2.75),eV=2.5*eH,eB("Bounce",function(t){return 1-ej(1-t)},ej=function(t){return t0?t+(t+this._rDelay)*this._repeat:t):this.totalDuration()&&this._dur},e.totalDuration=function(t){return arguments.length?(this._dirty=0,t3(this,this._repeat<0?t:(t-this._repeat*this._rDelay)/(this._repeat+1))):this._tDur},e.totalTime=function(t,e){if(eE(),!arguments.length)return this._tTime;var r=this._dp;if(r&&r.smoothChildTiming&&this._ts){for(tQ(this,t),!r._dp||r.parent||tZ(r,this);r&&r.parent;)r.parent._time!==r._start+(r._ts>=0?r._tTime/r._ts:-((r.totalDuration()-r._tTime)/r._ts))&&r.totalTime(r._tTime,!0),r=r.parent;!this.parent&&this._dp.autoRemoveChildren&&(this._ts>0&&t0||!this._tDur&&!t)&&t$(this._dp,this,this._start-this._delay)}return(this._tTime!==t||!this._dur&&!e||this._initted&&1e-8===Math.abs(this._zTime)||!this._initted&&this._dur&&t||!t&&!this._initted&&(this.add||this._ptLookup))&&(this._ts||(this._pTime=t),tA(this,t,e)),this},e.time=function(t,e){return arguments.length?this.totalTime(Math.min(this.totalDuration(),t+tW(this))%(this._dur+this._rDelay)||(t?this._dur:0),e):this._time},e.totalProgress=function(t,e){return arguments.length?this.totalTime(this.totalDuration()*t,e):this.totalDuration()?Math.min(1,this._tTime/this._tDur):this.rawTime()>=0&&this._initted?1:0},e.progress=function(t,e){return arguments.length?this.totalTime(this.duration()*(this._yoyo&&!(1&this.iteration())?1-t:t)+tW(this),e):this.duration()?Math.min(1,this._time/this._dur):+(this.rawTime()>0)},e.iteration=function(t,e){var r=this.duration()+this._rDelay;return arguments.length?this.totalTime(this._time+(t-1)*r,e):this._repeat?tV(this._tTime,r)+1:1},e.timeScale=function(t,e){if(!arguments.length)return -1e-8===this._rts?0:this._rts;if(this._rts===t)return this;var r=this.parent&&this._ts?tj(this.parent._time,this):this._tTime;return this._rts=+t||0,this._ts=this._ps||-1e-8===t?0:this._rts,this.totalTime(et(-Math.abs(this._delay),this.totalDuration(),r),!1!==e),tG(this),tq(this)},e.paused=function(t){return arguments.length?(this._ps!==t&&(this._ps=t,t?(this._pTime=this._tTime||Math.max(-this._delay,this.rawTime()),this._ts=this._act=0):(eE(),this._ts=this._rts,this.totalTime(this.parent&&!this.parent.smoothChildTiming?this.rawTime():this._tTime||this._pTime,1===this.progress()&&1e-8!==Math.abs(this._zTime)&&(this._tTime-=1e-8)))),this):this._ps},e.startTime=function(t){if(arguments.length){this._start=tM(t);var e=this.parent||this._dp;return e&&(e._sort||!this.parent)&&t$(e,this,this._start-this._delay),this}return this._start},e.endTime=function(t){return this._start+(U(t)?this.totalDuration():this.duration())/Math.abs(this._ts||1)},e.rawTime=function(t){var e=this.parent||this._dp;return e?t&&(!this._ts||this._repeat&&this._time&&1>this.totalProgress())?this._tTime%(this._dur+this._rDelay):this._ts?tj(e.rawTime(t),this):this._tTime:this._tTime},e.revert=function(t){void 0===t&&(t=tf);var e=y;return y=t,tS(this)&&(this.timeline&&this.timeline.revert(t),this.totalTime(-.01,t.suppressEvents)),"nested"!==this.data&&!1!==t.kill&&this.kill(),y=e,this},e.globalTime=function(t){for(var e=this,r=arguments.length?t:e.rawTime();e;)r=e._start+r/(Math.abs(e._ts)||1),e=e._dp;return!this.parent&&this._sat?this._sat.globalTime(t):r},e.repeat=function(t){return arguments.length?(this._repeat=t===1/0?-2:t,t8(this)):-2===this._repeat?1/0:this._repeat},e.repeatDelay=function(t){if(arguments.length){var e=this._time;return this._rDelay=t,t8(this),e?this.time(e):this}return this._rDelay},e.yoyo=function(t){return arguments.length?(this._yoyo=t,this):this._yoyo},e.seek=function(t,e){return this.totalTime(t4(this,t),U(e))},e.restart=function(t,e){return this.play().totalTime(t?-this._delay:0,U(e)),this._dur||(this._zTime=-1e-8),this},e.play=function(t,e){return null!=t&&this.seek(t,e),this.reversed(!1).paused(!1)},e.reverse=function(t,e){return null!=t&&this.seek(t||this.totalDuration(),e),this.reversed(!0).paused(!1)},e.pause=function(t,e){return null!=t&&this.seek(t,e),this.paused(!0)},e.resume=function(){return this.paused(!1)},e.reversed=function(t){return arguments.length?(!!t!==this.reversed()&&this.timeScale(-this._rts||(t?-1e-8:0)),this):this._rts<0},e.invalidate=function(){return this._initted=this._act=0,this._zTime=-1e-8,this},e.isActive=function(){var t,e=this.parent||this._dp,r=this._start;return!!(!e||this._ts&&this._initted&&e.isActive()&&(t=e.rawTime(!0))>=r&&t1?(e?(n[t]=e,r&&(n[t+"Params"]=r),"onUpdate"===t&&(this._onUpdate=e)):delete n[t],this):n[t]},e.then=function(t){var e=this,r=e._prom;return new Promise(function(n){var i=Y(t)?t:tD,s=function(){var t=e.then;e.then=null,r&&r(),Y(i)&&(i=i(e))&&(i.then||i===e)&&(e.then=t),n(i),e.then=t};e._initted&&1===e.totalProgress()&&e._ts>=0||!e._tTime&&e._ts<0?s():e._prom=s})},e.kill=function(){eg(this)},t}();tR(eU.prototype,{_time:0,_start:0,_end:0,_tTime:0,_tDur:0,_dirty:0,_repeat:0,_yoyo:!1,parent:null,_initted:!1,_rDelay:0,_ts:1,_dp:0,ratio:0,_zTime:-1e-8,_prom:0,_ps:!1,_rts:1});var eq=function(t){function n(r,n){var i;return void 0===r&&(r={}),(i=t.call(this,r)||this).labels={},i.smoothChildTiming=!!r.smoothChildTiming,i.autoRemoveChildren=!!r.autoRemoveChildren,i._sort=U(r.sortChildren),b&&t$(r.parent||b,e(i),n),r.reversed&&i.reverse(),r.paused&&i.paused(!0),r.scrollTrigger&&tK(e(i),r.scrollTrigger),i}r(n,t);var i=n.prototype;return i.to=function(t,e,r){return t9(0,arguments,this),this},i.from=function(t,e,r){return t9(1,arguments,this),this},i.fromTo=function(t,e,r,n){return t9(2,arguments,this),this},i.set=function(t,e,r){return e.duration=0,e.parent=this,tB(e).repeatDelay||(e.repeat=0),e.immediateRender=!!e.immediateRender,new e4(t,e,t4(this,r),1),this},i.call=function(t,e,r){return t$(this,e4.delayedCall(0,t,e),r)},i.staggerTo=function(t,e,r,n,i,s,a){return r.duration=e,r.stagger=r.stagger||n,r.onComplete=s,r.onCompleteParams=a,r.parent=this,new e4(t,r,t4(this,i)),this},i.staggerFrom=function(t,e,r,n,i,s,a){return r.runBackwards=1,tB(r).immediateRender=U(r.immediateRender),this.staggerTo(t,e,r,n,i,s,a)},i.staggerFromTo=function(t,e,r,n,i,s,a,o){return n.startAt=r,tB(n).immediateRender=U(n.immediateRender),this.staggerTo(t,e,n,i,s,a,o)},i.render=function(t,e,r){var n,i,s,a,o,u,l,c,f,h,p,d,_=this._time,g=this._dirty?this.totalDuration():this._tDur,m=this._dur,v=t<=0?0:tM(t),x=this._zTime<0!=t<0&&(this._initted||!m);if(this!==b&&v>g&&t>=0&&(v=g),v!==this._tTime||r||x){if(_!==this._time&&m&&(v+=this._time-_,t+=this._time-_),n=v,f=this._start,u=!(c=this._ts),x&&(m||(_=this._zTime),(t||!e)&&(this._zTime=t)),this._repeat){if(p=this._yoyo,o=m+this._rDelay,this._repeat<-1&&t<0)return this.totalTime(100*o+t,e,r);if(n=tM(v%o),v===g?(a=this._repeat,n=m):((a=~~(h=tM(v/o)))&&a===h&&(n=m,a--),n>m&&(n=m)),h=tV(this._tTime,o),!_&&this._tTime&&h!==a&&this._tTime-h*o-this._dur<=0&&(h=a),p&&1&a&&(n=m-n,d=1),a!==h&&!this._lock){var T=p&&1&h,w=T===(p&&1&a);if(a=_&&t>=0)for(i=this._first;i;){if(s=i._next,(i._act||n>=i._start)&&i._ts&&l!==i){if(i.parent!==this)return this.render(t,e,r);if(i.render(i._ts>0?(n-i._start)*i._ts:(i._dirty?i.totalDuration():i._tDur)+(n-i._start)*i._ts,e,r),n!==this._time||!this._ts&&!u){l=0,s&&(v+=this._zTime=-1e-8);break}}i=s}else{i=this._last;for(var k=t<0?t:n;i;){if(s=i._prev,(i._act||k<=i._end)&&i._ts&&l!==i){if(i.parent!==this)return this.render(t,e,r);if(i.render(i._ts>0?(k-i._start)*i._ts:(i._dirty?i.totalDuration():i._tDur)+(k-i._start)*i._ts,e,r||y&&tS(i)),n!==this._time||!this._ts&&!u){l=0,s&&(v+=this._zTime=k?-1e-8:1e-8);break}}i=s}}if(l&&!e&&(this.pause(),l.render(n>=_?0:-1e-8)._zTime=n>=_?1:-1,this._ts))return this._start=f,tG(this),this.render(t,e,r);this._onUpdate&&!e&&e_(this,"onUpdate",!0),(v===g&&this._tTime>=this.totalDuration()||!v&&_)&&(f===this._start||Math.abs(c)!==Math.abs(this._ts))&&!this._lock&&((t||!m)&&(v===g&&this._ts>0||!v&&this._ts<0)&&tX(this,1),e||t<0&&!_||!v&&!_&&g||(e_(this,v===g&&t>=0?"onComplete":"onReverseComplete",!0),this._prom&&!(v0)&&this._prom()))}return this},i.add=function(t,e){var r=this;if(L(e)||(e=t4(this,e,t)),!(t instanceof eU)){if(V(t))return t.forEach(function(t){return r.add(t,e)}),this;if(B(t))return this.addLabel(t,e);if(!Y(t))return this;t=e4.delayedCall(0,t)}return this!==t?t$(this,t,e):this},i.getChildren=function(t,e,r,n){void 0===t&&(t=!0),void 0===e&&(e=!0),void 0===r&&(r=!0),void 0===n&&(n=-1e8);for(var i=[],s=this._first;s;)s._start>=n&&(s instanceof e4?e&&i.push(s):(r&&i.push(s),t&&i.push.apply(i,s.getChildren(!0,e,r)))),s=s._next;return i},i.getById=function(t){for(var e=this.getChildren(1,1,1),r=e.length;r--;)if(e[r].vars.id===t)return e[r]},i.remove=function(t){return B(t)?this.removeLabel(t):Y(t)?this.killTweensOf(t):(t.parent===this&&tN(this,t),t===this._recent&&(this._recent=this._last),tU(this))},i.totalTime=function(e,r){return arguments.length?(this._forcing=1,!this._dp&&this._ts&&(this._start=tM(eC.time-(this._ts>0?e/this._ts:-((this.totalDuration()-e)/this._ts)))),t.prototype.totalTime.call(this,e,r),this._forcing=0,this):this._tTime},i.addLabel=function(t,e){return this.labels[t]=t4(this,e),this},i.removeLabel=function(t){return delete this.labels[t],this},i.addPause=function(t,e,r){var n=e4.delayedCall(0,e||tu,r);return n.data="isPause",this._hasPause=1,t$(this,n,t4(this,t))},i.removePause=function(t){var e=this._first;for(t=t4(this,t);e;)e._start===t&&"isPause"===e.data&&tX(e),e=e._next},i.killTweensOf=function(t,e,r){for(var n=this.getTweensOf(t,r),i=n.length;i--;)eG!==n[i]&&n[i].kill(t,e);return this},i.getTweensOf=function(t,e){for(var r,n=[],i=ei(t),s=this._first,a=L(e);s;)s instanceof e4?tC(s._targets,i)&&(a?(!eG||s._initted&&s._ts)&&s.globalTime(0)<=e&&s.globalTime(s.totalDuration())>e:!e||s.isActive())&&n.push(s):(r=s.getTweensOf(i,e)).length&&n.push.apply(n,r),s=s._next;return n},i.tweenTo=function(t,e){e=e||{};var r,n=this,i=t4(n,t),s=e,a=s.startAt,o=s.onStart,u=s.onStartParams,l=s.immediateRender,c=e4.to(n,tR({ease:e.ease||"none",lazy:!1,immediateRender:!1,time:i,overwrite:"auto",duration:e.duration||Math.abs((i-(a&&"time"in a?a.time:n._time))/n.timeScale())||1e-8,onStart:function(){if(n.pause(),!r){var t=e.duration||Math.abs((i-(a&&"time"in a?a.time:n._time))/n.timeScale());c._dur!==t&&t3(c,t,0,1).render(c._time,!0,!0),r=1}o&&o.apply(c,u||[])}},e));return l?c.render(0):c},i.tweenFromTo=function(t,e,r){return this.tweenTo(e,tR({startAt:{time:t4(this,t)}},r))},i.recent=function(){return this._recent},i.nextLabel=function(t){return void 0===t&&(t=this._time),ed(this,t4(this,t))},i.previousLabel=function(t){return void 0===t&&(t=this._time),ed(this,t4(this,t),1)},i.currentLabel=function(t){return arguments.length?this.seek(t,!0):this.previousLabel(this._time+1e-8)},i.shiftChildren=function(t,e,r){void 0===r&&(r=0);var n,i=this._first,s=this.labels;for(t=tM(t);i;)i._start>=r&&(i._start+=t,i._end+=t),i=i._next;if(e)for(n in s)s[n]>=r&&(s[n]+=t);return tU(this)},i.invalidate=function(e){var r=this._first;for(this._lock=0;r;)r.invalidate(e),r=r._next;return t.prototype.invalidate.call(this,e)},i.clear=function(t){void 0===t&&(t=!0);for(var e,r=this._first;r;)e=r._next,this.remove(r),r=e;return this._dp&&(this._time=this._tTime=this._pTime=0),t&&(this.labels={}),tU(this)},i.totalDuration=function(t){var e,r,n,i=0,s=this._last,a=1e8;if(arguments.length)return this.timeScale((this._repeat<0?this.duration():this.totalDuration())/(this.reversed()?-t:t));if(this._dirty){for(n=this.parent;s;)e=s._prev,s._dirty&&s.totalDuration(),(r=s._start)>a&&this._sort&&s._ts&&!this._lock?(this._lock=1,t$(this,s,r-s._delay,1)._lock=0):a=r,r<0&&s._ts&&(i-=r,(!n&&!this._dp||n&&n.smoothChildTiming)&&(this._start+=tM(r/this._ts),this._time-=r,this._tTime-=r),this.shiftChildren(-r,!1,-Infinity),a=0),s._end>i&&s._ts&&(i=s._end),s=e;t3(this,this===b&&this._time>i?this._time:i,1,1),this._dirty=0}return this._tDur},n.updateRoot=function(t){if(b._ts&&(tA(b,tj(t,b)),O=eC.frame),eC.frame>=tm){tm+=S.autoSleep||120;var e=b._first;if((!e||!e._ts)&&S.autoSleep&&eC._listeners.length<2){for(;e&&!e._ts;)e=e._next;e||eC.sleep()}}},n}(eU);tR(eq.prototype,{_lock:0,_hasPause:0,_forcing:0});var eH,eW,eV,ej,eG,eQ,eZ=function(t,e,r,n,i,s,a){var o,u,l,c,f,h,p,d,_=new rf(this._pt,t,e,0,1,rs,null,i),g=0,m=0;for(_.b=r,_.e=n,r+="",n+="",(p=~n.indexOf("random("))&&(n=eh(n)),s&&(s(d=[r,n],t,e),r=d[0],n=d[1]),u=r.match(K)||[];o=K.exec(n);)c=o[0],f=n.substring(g,o.index),l?l=(l+1)%5:"rgba("===f.substr(-5)&&(l=1),c!==u[m++]&&(h=parseFloat(u[m-1])||0,_._pt={_next:_._pt,p:f||1===m?f:",",s:h,c:"="===c.charAt(1)?tO(h,c)-h:parseFloat(c)-h,m:l&&l<4?Math.round:0},g=K.lastIndex);return _.c=g")}),a.duration();else{for(c in u={},w)"ease"===c||"easeEach"===c||e5(c,w[c],u,w.easeEach);for(c in u)for(o=0,A=u[c].sort(function(t,e){return t.t-e.t}),R=0;oh-1e-8&&!d?h:t<1e-8?0:t;if(p){if(_!==this._tTime||!t||r||!this._initted&&this._tTime||this._startAt&&this._zTime<0!==d||this._lazy){if(n=_,c=this.timeline,this._repeat){if(a=p+this._rDelay,this._repeat<-1&&d)return this.totalTime(100*a+t,e,r);if(n=tM(_%a),_===h?(s=this._repeat,n=p):(s=~~(o=tM(_/a)))&&s===o?(n=p,s--):n>p&&(n=p),(u=this._yoyo&&1&s)&&(n=p-n),o=tV(this._tTime,a),n===f&&!r&&this._initted&&s===o)return this._tTime=_,this;s!==o&&this.vars.repeatRefresh&&!u&&!this._lock&&n!==a&&this._initted&&(this._lock=r=1,this.render(tM(a*s),!0).invalidate()._lock=0)}if(!this._initted){if(tJ(this,d?t:n,r,e,_))return this._tTime=0,this;if(f!==this._time&&!(r&&this.vars.repeatRefresh&&s!==o))return this;if(p!==this._dur)return this.render(t,e,r)}if(this._rEase){var g=n0||!_&&this._ts<0)&&tX(this,1),!e&&!(d&&!f)&&(_||f||u)&&(e_(this,_===h?"onComplete":"onReverseComplete",!0),this._prom&&!(_0)&&this._prom()))}}else t2(this,t,e,r);return this},i.targets=function(){return this._targets},i.invalidate=function(e){return e&&this.vars.runBackwards||(this._startAt=0),this._pt=this._op=this._onUpdate=this._lazy=this.ratio=0,this._ptLookup=[],this.timeline&&this.timeline.invalidate(e),t.prototype.invalidate.call(this,e)},i.resetTo=function(t,e,r,n,i){E||eC.wake(),this._ts||this.play();var s=Math.min(this._dur,(this._dp._time-this._start)*this._ts);return(this._initted||e0(this,s),e1(this,t,e,r,n,this._ease(s/this._dur),s,i))?this.resetTo(t,e,r,n,1):(tQ(this,0),this.parent||tL(this._dp,this,"_first","_last",this._dp._sort?"_start":0),this.render(0))},i.kill=function(t,e){if(void 0===e&&(e="all"),!t&&(!e||"all"===e))return this._lazy=this._pt=0,this.parent?eg(this):this.scrollTrigger&&this.scrollTrigger.kill(!!y),this;if(this.timeline){var r=this.timeline.totalDuration();return this.timeline.killTweensOf(t,e,eG&&!0!==eG.vars.overwrite)._first||eg(this),this.parent&&r!==this.timeline.totalDuration()&&t3(this,this._dur*this.timeline._tDur/r,0,1),this}var n,i,s,a,o,u,l,c=this._targets,f=t?ei(t):c,h=this._ptLookup,p=this._pt;if((!e||"all"===e)&&tY(c,f))return"all"===e&&(this._pt=0),eg(this);for(n=this._op=this._op||[],"all"!==e&&(B(e)&&(o={},tw(e,function(t){return o[t]=1}),e=o),e=e2(c,e)),l=c.length;l--;)if(~f.indexOf(c[l]))for(o in i=h[l],"all"===e?(n[l]=e,a=i,s={}):(s=n[l]=n[l]||{},a=e),a)(u=i&&i[o])&&("kill"in u.d&&!0!==u.d.kill(o)||tN(this,u,"_pt"),delete i[o]),"all"!==s&&(s[o]=1);return this._initted&&!this._pt&&p&&eg(this),this},n.to=function(t,e){return new n(t,e,arguments[2])},n.from=function(t,e){return t9(1,arguments)},n.delayedCall=function(t,e,r,i){return new n(e,0,{immediateRender:!1,lazy:!1,overwrite:!1,delay:t,onComplete:e,onReverseComplete:e,onCompleteParams:r,onReverseCompleteParams:r,callbackScope:i})},n.fromTo=function(t,e,r){return t9(2,arguments)},n.set=function(t,e){return e.duration=0,e.repeatDelay||(e.repeat=0),new n(t,e)},n.killTweensOf=function(t,e,r){return b.killTweensOf(t,e,r)},n}(eU);tR(e4.prototype,{_targets:[],_lazy:0,_startAt:0,_op:0,_onInit:0}),tw("staggerTo,staggerFrom,staggerFromTo",function(t){e4[t]=function(){var e=new eq,r=er.call(arguments,0);return r.splice("staggerFromTo"===t?5:4,0,0),e[t].apply(e,r)}});var e9=function(t,e,r){return t[e]=r},e7=function(t,e,r){return t[e](r)},rt=function(t,e,r,n){return t[e](n.fp,r)},re=function(t,e,r){return t.setAttribute(e,r)},rr=function(t,e){return Y(t[e])?e7:N(t[e])&&t.setAttribute?re:e9},rn=function(t,e){return e.set(e.t,e.p,Math.round((e.s+e.c*t)*1e6)/1e6,e)},ri=function(t,e){return e.set(e.t,e.p,!!(e.s+e.c*t),e)},rs=function(t,e){var r=e._pt,n="";if(!t&&e.b)n=e.b;else if(1===t&&e.e)n=e.e;else{for(;r;)n=r.p+(r.m?r.m(r.s+r.c*t):Math.round((r.s+r.c*t)*1e4)/1e4)+n,r=r._next;n+=e.c}e.set(e.t,e.p,n,e)},ra=function(t,e){for(var r=e._pt;r;)r.r(t,r.d),r=r._next},ro=function(t,e,r,n){for(var i,s=this._pt;s;)i=s._next,s.p===n&&s.modifier(t,e,r),s=i},ru=function(t){for(var e,r,n=this._pt;n;)r=n._next,(n.p!==t||n.op)&&n.op!==t?n.dep||(e=1):tN(this,n,"_pt"),n=r;return!e},rl=function(t,e,r,n){n.mSet(t,e,n.m.call(n.tween,r,n.mt),n)},rc=function(t){for(var e,r,n,i,s=t._pt;s;){for(e=s._next,r=n;r&&r.pr>s.pr;)r=r._next;(s._prev=r?r._prev:i)?s._prev._next=s:n=s,(s._next=r)?r._prev=s:i=s,s=e}t._pt=n},rf=function(){function t(t,e,r,n,i,s,a,o,u){this.t=e,this.s=n,this.c=i,this.p=r,this.r=s||rn,this.d=a||this,this.set=o||e9,this.pr=u||0,this._next=t,t&&(t._prev=this)}return t.prototype.modifier=function(t,e,r){this.mSet=this.mSet||this.set,this.set=rl,this.m=t,this.mt=r,this.tween=e},t}();tw(ty+"parent,duration,ease,delay,overwrite,runBackwards,startAt,yoyo,immediateRender,repeat,repeatDelay,data,paused,reversed,lazy,callbackScope,stringFilter,id,yoyoEase,stagger,inherit,repeatRefresh,keyframes,autoRevert,scrollTrigger,easeReverse",function(t){return th[t]=1}),tr.TweenMax=tr.TweenLite=e4,tr.TimelineLite=tr.TimelineMax=eq,b=new eq({sortChildren:!1,defaults:A,autoRemoveChildren:!0,id:"root",smoothChildTiming:!0}),S.stringFilter=eO;var rh=[],rp={},rd=[],r_=0,rg=0,rm=function(t){return(rp[t]||rd).map(function(t){return t()})},rv=function(){var t=Date.now(),e=[];t-r_>2&&(rm("matchMediaInit"),rh.forEach(function(t){var r,n,i,s,a=t.queries,o=t.conditions;for(n in a)(r=T.matchMedia(a[n]).matches)&&(i=1),r!==o[n]&&(o[n]=r,s=1);s&&(t.revert(),i&&e.push(t))}),rm("matchMediaRevert"),e.forEach(function(t){return t.onMatch(t,function(e){return t.add(null,e)})}),r_=t,rm("matchMedia"))},ry=function(){function t(t,e){this.selector=e&&es(e),this.data=[],this._r=[],this.isReverted=!1,this.id=rg++,t&&this.add(t)}var e=t.prototype;return e.add=function(t,e,r){Y(t)&&(r=e,e=t,t=Y);var n=this,i=function(){var t,i=x,s=n.selector;return i&&i!==n&&i.data.push(n),r&&(n.selector=es(r)),x=n,t=e.apply(n,arguments),Y(t)&&n._r.push(t),x=i,n.selector=s,n.isReverted=!1,t};return n.last=i,t===Y?i(n,function(t){return n.add(null,t)}):t?n[t]=i:i},e.ignore=function(t){var e=x;x=null,t(this),x=e},e.getTweens=function(){var e=[];return this.data.forEach(function(r){return r instanceof t?e.push.apply(e,r.getTweens()):r instanceof e4&&!(r.parent&&"nested"===r.parent.data)&&e.push(r)}),e},e.clear=function(){this._r.length=this.data.length=0},e.kill=function(t,e){var r=this;if(t){for(var n,i=r.getTweens(),s=r.data.length;s--;)"isFlip"===(n=r.data[s]).data&&(n.revert(),n.getChildren(!0,!0,!1).forEach(function(t){return i.splice(i.indexOf(t),1)}));for(i.map(function(t){return{g:t._dur||t._delay||t._sat&&!t._sat.vars.immediateRender?t.globalTime(0):-1/0,t:t}}).sort(function(t,e){return e.g-t.g||-1/0}).forEach(function(e){return e.t.revert(t)}),s=r.data.length;s--;)(n=r.data[s])instanceof eq?"nested"!==n.data&&(n.scrollTrigger&&n.scrollTrigger.revert(),n.kill()):n instanceof e4||!n.revert||n.revert(t);r._r.forEach(function(e){return e(t,r)}),r.isReverted=!0}else this.data.forEach(function(t){return t.kill&&t.kill()});if(this.clear(),e)for(var a=rh.length;a--;)rh[a].id===this.id&&rh.splice(a,1)},e.revert=function(t){this.kill(t||{})},t}(),rx=function(){function t(t){this.contexts=[],this.scope=t,x&&x.data.push(this)}var e=t.prototype;return e.add=function(t,e,r){X(t)||(t={matches:t});var n,i,s,a=new ry(0,r||this.scope),o=a.conditions={};for(i in x&&!a.selector&&(a.selector=x.selector),this.contexts.push(a),e=a.add("onMatch",e),a.queries=t,t)"all"===i?s=1:(n=T.matchMedia(t[i]))&&(0>rh.indexOf(a)&&rh.push(a),(o[i]=n.matches)&&(s=1),n.addListener?n.addListener(rv):n.addEventListener("change",rv));return s&&e(a,function(t){return a.add(null,t)}),this},e.revert=function(t){this.kill(t||{})},e.kill=function(t){this.contexts.forEach(function(e){return e.kill(t,!0)})},t}(),rb={registerPlugin:function(){for(var t=arguments.length,e=Array(t),r=0;r1){var n=t.map(function(t){return rM.quickSetter(t,e,r)}),i=n.length;return function(t){for(var e=i;e--;)n[e](t)}}t=t[0]||{};var s=t_[e],a=tb(t),o=a.harness&&(a.harness.aliases||{})[e]||e,u=s?function(e){var n=new s;C._pt=0,n.init(t,r?e+r:e,C,0,[t]),n.render(1,n),C._pt&&ra(1,C)}:a.set(t,o);return s?u:function(e){return u(t,o,r?e+r:e,a,1)}},quickTo:function(t,e,r){var n,i=rM.to(t,tR(((n={})[e]="+=0.1",n.paused=!0,n.stagger=0,n),r||{})),s=function(t,r,n){return i.resetTo(e,t,r,n)};return s.tween=i,s},isTweening:function(t){return b.getTweensOf(t,!0).length>0},defaults:function(t){return t&&t.ease&&(t.ease=eI(t.ease,A.ease)),tF(A,t||{})},config:function(t){return tF(S,t||{})},registerEffect:function(t){var e=t.name,r=t.effect,n=t.plugins,i=t.defaults,s=t.extendTimeline;(n||"").split(",").forEach(function(t){return t&&!t_[t]&&!tr[t]&&ta(e+" effect requires "+t+" plugin.")}),tg[e]=function(t,e,n){return r(ei(t),tR(e||{},i),n)},s&&(eq.prototype[e]=function(t,r,n){return this.add(tg[e](t,X(r)?r:(n=r)&&{},this),n)})},registerEase:function(t,e){eS[t]=eI(e)},parseEase:function(t,e){return arguments.length?eI(t,e):eS},getById:function(t){return b.getById(t)},exportRoot:function(t,e){void 0===t&&(t={});var r,n,i=new eq(t);for(i.smoothChildTiming=U(t.smoothChildTiming),b.remove(i),i._dp=0,i._time=i._tTime=b._time,r=b._first;r;)n=r._next,(e||!(!r._dur&&r instanceof e4&&r.vars.onComplete===r._targets[0]))&&t$(i,r,r._start-r._delay),r=n;return t$(b,i,0),i},context:function(t,e){return t?new ry(t,e):x},matchMedia:function(t){return new rx(t)},matchMediaRefresh:function(){return rh.forEach(function(t){var e,r,n=t.conditions;for(r in n)n[r]&&(n[r]=!1,e=1);e&&t.revert()})||rv()},addEventListener:function(t,e){var r=rp[t]||(rp[t]=[]);~r.indexOf(e)||r.push(e)},removeEventListener:function(t,e){var r=rp[t],n=r&&r.indexOf(e);n>=0&&r.splice(n,1)},utils:{wrap:function t(e,r,n){var i=r-e;return V(e)?ef(e,t(0,e.length),r):t7(n,function(t){return(i+(t-e)%i)%i+e})},wrapYoyo:function t(e,r,n){var i=r-e,s=2*i;return V(e)?ef(e,t(0,e.length-1),r):t7(n,function(t){return t=(s+(t-e)%s)%s||0,e+(t>i?s-t:t)})},distribute:eo,random:ec,snap:el,normalize:function(t,e,r){return ep(t,e,0,1,r)},getUnit:ee,clamp:function(t,e,r){return t7(r,function(r){return et(t,e,r)})},splitColor:eb,toArray:ei,selector:es,mapRange:ep,pipe:function(){for(var t=arguments.length,e=Array(t),r=0;r=0)return;a.svg&&(this.svgo=i.getAttribute("data-svg-origin"),this.props.push(r1,r,"")),e=r0}(s||r)&&this.props.push(e,r,s[e])},r5=function(t){t.translate&&(t.removeProperty("translate"),t.removeProperty("scale"),t.removeProperty("rotate"))},r3=function(){var t,e,r=this.props,n=this.target,i=n.style,s=n._gsap;for(t=0;t=0?r9[i]:"")+t},nt=function(){"u">typeof window&&window.document&&(rC=(rO=window.document).documentElement,rS=r6("div")||{style:{}},r6("div"),r1=(r0=r7(r0))+"Origin",rS.style.cssText="border-width:0;line-height:0;position:absolute;padding:0",rD=!!r7("perspective"),rP=rM.core.reverting,rE=1)},ne=function(t){var e,r=t.ownerSVGElement,n=r6("svg",r&&r.getAttribute("xmlns")||"http://www.w3.org/2000/svg"),i=t.cloneNode(!0);i.style.display="block",n.appendChild(i),rC.appendChild(n);try{e=i.getBBox()}catch(t){}return n.removeChild(i),rC.removeChild(n),e},nr=function(t,e){for(var r=e.length;r--;)if(t.hasAttribute(e[r]))return t.getAttribute(e[r])},nn=function(t){var e,r;try{e=t.getBBox()}catch(n){e=ne(t),r=1}return e&&(e.width||e.height)||r||(e=ne(t)),!e||e.width||e.x||e.y?e:{x:+nr(t,["x","cx","x1"])||0,y:+nr(t,["y","cy","y1"])||0,width:0,height:0}},ni=function(t){return!!(t.getCTM&&(!t.parentNode||t.ownerSVGElement)&&nn(t))},ns=function(t,e){if(e){var r,n=t.style;e in rR&&e!==r1&&(e=r0),n.removeProperty?(("ms"===(r=e.substr(0,2))||"webkit"===e.substr(0,6))&&(e="-"+e),n.removeProperty("--"===r?e:e.replace(rB,"-$1").toLowerCase())):n.removeAttribute(e)}},na=function(t,e,r,n,i,s){var a=new rf(t._pt,e,r,0,1,s?rj:rV);return t._pt=a,a.b=n,a.e=i,t._props.push(r),a},no={deg:1,rad:1,turn:1},nu={grid:1,flex:1},nl=function t(e,r,n,i){var s,a,o,u,l=parseFloat(n)||0,c=(n+"").trim().substr((l+"").length)||"px",f=rS.style,h=rY.test(r),p="svg"===e.tagName.toLowerCase(),d=(p?"client":"offset")+(h?"Width":"Height"),_="px"===i,g="%"===i;if(i===c||!l||no[i]||no[c])return l;if("px"===c||_||(l=t(e,r,n,"px")),u=e.getCTM&&ni(e),(g||"%"===c)&&(rR[r]||~r.indexOf("adius")))return s=u?e.getBBox()[h?"width":"height"]:e[d],tk(g?l/s*100:l/100*s);if(f[h?"width":"height"]=100+(_?c:i),a="rem"!==i&&~r.indexOf("adius")||"em"===i&&e.appendChild&&!p?e:e.parentNode,u&&(a=(e.ownerSVGElement||{}).parentNode),a&&a!==rO&&a.appendChild||(a=rO.body),(o=a._gsap)&&g&&o.width&&h&&o.time===eC.time&&!o.uncache)return tk(l/o.width*100);if(g&&("height"===r||"width"===r)){var m=e.style[r];e.style[r]=100+i,s=e[d],m?e.style[r]=m:ns(e,r)}else(g||"%"===c)&&!nu[r4(a,"display")]&&(f.position=r4(e,"position")),a===e&&(f.position="static"),a.appendChild(rS),s=rS[d],a.removeChild(rS),f.position="absolute";return h&&g&&((o=tb(a)).time=eC.time,o.width=a[d]),tk(_?s*l/100:s&&l?100/s*l:0)},nc=function(t,e,r,n){var i;return rE||nt(),e in rN&&"transform"!==e&&~(e=rN[e]).indexOf(",")&&(e=e.split(",")[0]),rR[e]&&"transform"!==e?(i=nT(t,n),i="transformOrigin"!==e?i[e]:i.svg?i.origin:nw(r4(t,r1))+" "+i.zOrigin+"px"):(!(i=t.style[e])||"auto"===i||n||~(i+"").indexOf("calc("))&&(i=n_[e]&&n_[e](t,e,r)||r4(t,e)||tT(t,e)||+("opacity"===e)),r&&!~(i+"").trim().indexOf(" ")?nl(t,e,i,r)+r:i},nf=function(t,e,r,n){if(!r||"none"===r){var i=r7(e,t,1),s=i&&r4(t,i,1);s&&s!==r?(e=i,r=s):"borderColor"===e&&(r=r4(t,"borderTopColor"))}var a,o,u,l,c,f,h,p,d,_,g,m=new rf(this._pt,t.style,e,0,1,rs),v=0,y=0;if(m.b=r,m.e=n,r+="","var(--"===(n+="").substring(0,6)&&(n=r4(t,n.substring(4,n.indexOf(")")))),"auto"===n&&(f=t.style[e],t.style[e]=n,n=r4(t,e)||n,f?t.style[e]=f:ns(t,e)),eO(a=[r,n]),r=a[0],n=a[1],u=r.match($)||[],(n.match($)||[]).length){for(;o=$.exec(n);)h=o[0],d=n.substring(v,o.index),c?c=(c+1)%5:("rgba("===d.substr(-5)||"hsla("===d.substr(-5))&&(c=1),h!==(f=u[y++]||"")&&(l=parseFloat(f)||0,g=f.substr((l+"").length),"="===h.charAt(1)&&(h=tO(l,h)+g),p=parseFloat(h),_=h.substr((p+"").length),v=$.lastIndex-_.length,_||(_=_||S.units[e]||g,v===n.length&&(n+=_,m.e+=_)),g!==_&&(l=nl(t,e,f,_)||0),m._pt={_next:m._pt,p:d||1===y?d:",",s:l,c:p-l,m:c&&c<4||"zIndex"===e?Math.round:0});m.c=v-1;)rR[r=o[i]]&&(n=1,r="transformOrigin"===r?r1:r0),ns(s,r);n&&(ns(s,r0),u&&(u.svg&&s.removeAttribute("transform"),a.scale=a.rotate=a.translate="none",nT(s,1),u.uncache=1,r5(a)))}},n_={clearProps:function(t,e,r,n,i){if("isFromStart"!==i.data){var s=t._pt=new rf(t._pt,e,r,0,0,nd);return s.u=n,s.pr=-10,s.tween=i,t._props.push(r),1}}},ng=[1,0,0,1,0,0],nm={},nv=function(t){return"matrix(1, 0, 0, 1, 0, 0)"===t||"none"===t||!t},ny=function(t){var e=r4(t,r0);return nv(e)?ng:e.substr(7).match(Z).map(tk)},nx=function(t,e){var r,n,i,s,a=t._gsap||tb(t),o=t.style,u=ny(t);return a.svg&&t.getAttribute("transform")?"1,0,0,1,0,0"===(u=[(i=t.transform.baseVal.consolidate().matrix).a,i.b,i.c,i.d,i.e,i.f]).join(",")?ng:u:(u!==ng||t.offsetParent||t===rC||a.svg||(i=o.display,o.display="block",(r=t.parentNode)&&(t.offsetParent||t.getBoundingClientRect().width)||(s=1,n=t.nextElementSibling,rC.appendChild(t)),u=ny(t),i?o.display=i:ns(t,"display"),s&&(n?r.insertBefore(t,n):r?r.appendChild(t):rC.removeChild(t))),e&&u.length>6?[u[0],u[1],u[4],u[5],u[12],u[13]]:u)},nb=function(t,e,r,n,i,s){var a,o,u,l,c=t._gsap,f=i||nx(t,!0),h=c.xOrigin||0,p=c.yOrigin||0,d=c.xOffset||0,_=c.yOffset||0,g=f[0],m=f[1],v=f[2],y=f[3],x=f[4],b=f[5],T=e.split(" "),w=parseFloat(T[0])||0,k=parseFloat(T[1])||0;r?f!==ng&&(o=g*y-m*v)&&(u=y/o*w+-v/o*k+(v*b-y*x)/o,l=-m/o*w+g/o*k-(g*b-m*x)/o,w=u,k=l):(w=(a=nn(t)).x+(~T[0].indexOf("%")?w/100*a.width:w),k=a.y+(~(T[1]||T[0]).indexOf("%")?k/100*a.height:k)),n||!1!==n&&c.smooth?(c.xOffset=d+((x=w-h)*g+(b=k-p)*v)-x,c.yOffset=_+(x*m+b*y)-b):c.xOffset=c.yOffset=0,c.xOrigin=w,c.yOrigin=k,c.smooth=!!n,c.origin=e,c.originIsAbsolute=!!r,t.style[r1]="0px 0px",s&&(na(s,c,"xOrigin",h,w),na(s,c,"yOrigin",p,k),na(s,c,"xOffset",d,c.xOffset),na(s,c,"yOffset",_,c.yOffset)),t.setAttribute("data-svg-origin",w+" "+k)},nT=function(t,e){var r=t._gsap||new eX(t);if("x"in r&&!e&&!r.uncache)return r;var n,i,s,a,o,u,l,c,f,h,p,d,_,g,m,v,y,x,b,T,w,k,M,O,C,E,A,P,D,R,z,F,I=t.style,B=r.scaleX<0,Y=getComputedStyle(t),L=r4(t,r1)||"0";return n=i=s=u=l=c=f=h=p=0,a=o=1,r.svg=!!(t.getCTM&&ni(t)),Y.translate&&(("none"!==Y.translate||"none"!==Y.scale||"none"!==Y.rotate)&&(I[r0]=("none"!==Y.translate?"translate3d("+(Y.translate+" 0 0").split(" ").slice(0,3).join(", ")+") ":"")+("none"!==Y.rotate?"rotate("+Y.rotate+") ":"")+("none"!==Y.scale?"scale("+Y.scale.split(" ").join(",")+") ":"")+("none"!==Y[r0]?Y[r0]:"")),I.scale=I.rotate=I.translate="none"),g=nx(t,r.svg),r.svg&&(r.uncache?(C=t.getBBox(),L=r.xOrigin-C.x+"px "+(r.yOrigin-C.y)+"px",O=""):O=!e&&t.getAttribute("data-svg-origin"),nb(t,O||L,!!O||r.originIsAbsolute,!1!==r.smooth,g)),d=r.xOrigin||0,_=r.yOrigin||0,g!==ng&&(x=g[0],b=g[1],T=g[2],w=g[3],n=k=g[4],i=M=g[5],6===g.length?(a=Math.sqrt(x*x+b*b),o=Math.sqrt(w*w+T*T),u=x||b?rI(b,x)*rz:0,(f=T||w?rI(T,w)*rz+u:0)&&(o*=Math.abs(Math.cos(f*rF))),r.svg&&(n-=d-(d*x+_*T),i-=_-(d*b+_*w))):(F=g[6],R=g[7],A=g[8],P=g[9],D=g[10],z=g[11],n=g[12],i=g[13],s=g[14],l=(m=rI(F,D))*rz,m&&(O=k*(v=Math.cos(-m))+A*(y=Math.sin(-m)),C=M*v+P*y,E=F*v+D*y,A=-(k*y)+A*v,P=-(M*y)+P*v,D=-(F*y)+D*v,z=-(R*y)+z*v,k=O,M=C,F=E),c=(m=rI(-T,D))*rz,m&&(O=x*(v=Math.cos(-m))-A*(y=Math.sin(-m)),C=b*v-P*y,E=T*v-D*y,z=w*y+z*v,x=O,b=C,T=E),u=(m=rI(b,x))*rz,m&&(O=x*(v=Math.cos(m))+b*(y=Math.sin(m)),C=k*v+M*y,b=b*v-x*y,M=M*v-k*y,x=O,k=C),l&&Math.abs(l)+Math.abs(u)>359.9&&(l=u=0,c=180-c),a=tk(Math.sqrt(x*x+b*b+T*T)),o=tk(Math.sqrt(M*M+F*F)),f=Math.abs(m=rI(k,M))>2e-4?m*rz:0,p=z?1/(z<0?-z:z):0),r.svg&&(O=t.getAttribute("transform"),r.forceCSS=t.setAttribute("transform","")||!nv(r4(t,r0)),O&&t.setAttribute("transform",O))),Math.abs(f)>90&&270>Math.abs(f)&&(B?(a*=-1,f+=u<=0?180:-180,u+=u<=0?180:-180):(o*=-1,f+=f<=0?180:-180)),e=e||r.uncache,r.x=n-((r.xPercent=n&&(!e&&r.xPercent||(Math.round(t.offsetWidth/2)===Math.round(-n)?-50:0)))?t.offsetWidth*r.xPercent/100:0)+"px",r.y=i-((r.yPercent=i&&(!e&&r.yPercent||(Math.round(t.offsetHeight/2)===Math.round(-i)?-50:0)))?t.offsetHeight*r.yPercent/100:0)+"px",r.z=s+"px",r.scaleX=tk(a),r.scaleY=tk(o),r.rotation=tk(u)+"deg",r.rotationX=tk(l)+"deg",r.rotationY=tk(c)+"deg",r.skewX=f+"deg",r.skewY=h+"deg",r.transformPerspective=p+"px",(r.zOrigin=parseFloat(L.split(" ")[2])||!e&&r.zOrigin||0)&&(I[r1]=nw(L)),r.xOffset=r.yOffset=0,r.force3D=S.force3D,r.renderTransform=r.svg?nE:rD?nC:nM,r.uncache=0,r},nw=function(t){return(t=t.split(" "))[0]+" "+t[1]},nk=function(t,e,r){var n=ee(e);return tk(parseFloat(e)+parseFloat(nl(t,"x",r+"px",n)))+n},nM=function(t,e){e.z="0px",e.rotationY=e.rotationX="0deg",e.force3D=0,nC(t,e)},nO="0deg",nC=function(t,e){var r=e||this,n=r.xPercent,i=r.yPercent,s=r.x,a=r.y,o=r.z,u=r.rotation,l=r.rotationY,c=r.rotationX,f=r.skewX,h=r.skewY,p=r.scaleX,d=r.scaleY,_=r.transformPerspective,g=r.force3D,m=r.target,v=r.zOrigin,y="",x="auto"===g&&t&&1!==t||!0===g;if(v&&(c!==nO||l!==nO)){var b,T=parseFloat(l)*rF,w=Math.sin(T),k=Math.cos(T);s=nk(m,s,-(w*(b=Math.cos(T=parseFloat(c)*rF))*v)),a=nk(m,a,-(-Math.sin(T)*v)),o=nk(m,o,-(k*b*v)+v)}"0px"!==_&&(y+="perspective("+_+") "),(n||i)&&(y+="translate("+n+"%, "+i+"%) "),(x||"0px"!==s||"0px"!==a||"0px"!==o)&&(y+="0px"!==o||x?"translate3d("+s+", "+a+", "+o+") ":"translate("+s+", "+a+") "),u!==nO&&(y+="rotate("+u+") "),l!==nO&&(y+="rotateY("+l+") "),c!==nO&&(y+="rotateX("+c+") "),(f!==nO||h!==nO)&&(y+="skew("+f+", "+h+") "),(1!==p||1!==d)&&(y+="scale("+p+", "+d+") "),m.style[r0]=y||"translate(0, 0)"},nE=function(t,e){var r,n,i,s,a,o=e||this,u=o.xPercent,l=o.yPercent,c=o.x,f=o.y,h=o.rotation,p=o.skewX,d=o.skewY,_=o.scaleX,g=o.scaleY,m=o.target,v=o.xOrigin,y=o.yOrigin,x=o.xOffset,b=o.yOffset,T=o.forceCSS,w=parseFloat(c),k=parseFloat(f);h=parseFloat(h),p=parseFloat(p),(d=parseFloat(d))&&(p+=d=parseFloat(d),h+=d),h||p?(h*=rF,p*=rF,r=Math.cos(h)*_,n=Math.sin(h)*_,i=-(Math.sin(h-p)*g),s=Math.cos(h-p)*g,p&&(d*=rF,i*=a=Math.sqrt(1+(a=Math.tan(p-d))*a),s*=a,d&&(r*=a=Math.sqrt(1+(a=Math.tan(d))*a),n*=a)),r=tk(r),n=tk(n),i=tk(i),s=tk(s)):(r=_,s=g,n=i=0),(w&&!~(c+"").indexOf("px")||k&&!~(f+"").indexOf("px"))&&(w=nl(m,"x",c,"px"),k=nl(m,"y",f,"px")),(v||y||x||b)&&(w=tk(w+v-(v*r+y*i)+x),k=tk(k+y-(v*n+y*s)+b)),(u||l)&&(w=tk(w+u/100*(a=m.getBBox()).width),k=tk(k+l/100*a.height)),a="matrix("+r+","+n+","+i+","+s+","+w+","+k+")",m.setAttribute("transform",a),T&&(m.style[r0]=a)},nS=function(t,e,r,n,i){var s,a,o=B(i),u=parseFloat(i)*(o&&~i.indexOf("rad")?rz:1)-n,l=n+u+"deg";return o&&("short"===(s=i.split("_")[1])&&(u%=360)!=u%180&&(u+=u<0?360:-360),"cw"===s&&u<0?u=(u+36e9)%360-360*~~(u/360):"ccw"===s&&u>0&&(u=(u-36e9)%360-360*~~(u/360))),t._pt=a=new rf(t._pt,e,r,n,u,rU),a.e=l,a.u="deg",t._props.push(r),a},nA=function(t,e){for(var r in e)t[r]=e[r];return t},nP=function(t,e,r){var n,i,s,a,o,u,l,c=nA({},r._gsap),f=r.style;for(i in c.svg?(s=r.getAttribute("transform"),r.setAttribute("transform",""),f[r0]=e,n=nT(r,1),ns(r,r0),r.setAttribute("transform",s)):(s=getComputedStyle(r)[r0],f[r0]=e,n=nT(r,1),f[r0]=s),rR)(s=c[i])!==(a=n[i])&&0>"perspective,force3D,transformOrigin,svgOrigin".indexOf(i)&&(o=ee(s)!==(l=ee(a))?nl(r,i,s,l):parseFloat(s),u=parseFloat(a),t._pt=new rf(t._pt,n,i,o,u-o,rX),t._pt.u=l||0,t._props.push(i));nA(n,c)};tw("padding,margin,Width,Radius",function(t,e){var r="Right",n="Bottom",i="Left",s=(e<3?["Top",r,n,i]:["Top"+i,"Top"+r,n+r,n+i]).map(function(r){return e<2?t+r:"border"+r+t});n_[e>1?"border"+t:t]=function(t,e,r,n,i){var a,o;if(arguments.length<4)return 5===(o=(a=s.map(function(e){return nc(t,e,r)})).join(" ")).split(a[0]).length?a[0]:o;a=(n+"").split(" "),o={},s.forEach(function(t,e){return o[t]=a[e]=a[e]||a[(e-1)/2|0]}),t.init(e,o,i)}});var nD={name:"css",register:nt,targetTest:function(t){return t.style&&t.nodeType},init:function(t,e,r,n,i){var s,a,o,u,l,c,f,h,p,d,_,g,m,v,y,x,b,T=this._props,w=t.style,k=r.vars.startAt;for(f in rE||nt(),this.styles=this.styles||r8(t),x=this.styles.props,this.tween=r,e)if("autoRound"!==f&&(a=e[f],!(t_[f]&&eJ(f,e,r,n,t,i)))){if(l=typeof a,c=n_[f],"function"===l&&(l=typeof(a=a.call(r,n,t,i))),"string"===l&&~a.indexOf("random(")&&(a=eh(a)),c)c(this,t,f,a,r)&&(y=1);else if("--"===f.substr(0,2))s=(getComputedStyle(t).getPropertyValue(f)+"").trim(),a+="",ek.lastIndex=0,!ek.test(s)&&(h=ee(s),(p=ee(a))?h!==p&&(s=nl(t,f,s,p)+p):h&&(a+=h)),this.add(w,"setProperty",s,a,n,i,0,0,f),T.push(f),x.push(f,0,w[f]);else if("undefined"!==l){if(k&&f in k?(B(s="function"==typeof k[f]?k[f].call(r,n,t,i):k[f])&&~s.indexOf("random(")&&(s=eh(s)),ee(s+"")||"auto"===s||(s+=S.units[f]||ee(nc(t,f))||""),"="===(s+"").charAt(1)&&(s=nc(t,f))):s=nc(t,f),u=parseFloat(s),(d="string"===l&&"="===a.charAt(1)&&a.substr(0,2))&&(a=a.substr(2)),o=parseFloat(a),f in rN&&("autoAlpha"===f&&(1===u&&"hidden"===nc(t,"visibility")&&o&&(u=0),x.push("visibility",0,w.visibility),na(this,w,"visibility",u?"inherit":"hidden",o?"inherit":"hidden",!o)),"scale"!==f&&"transform"!==f&&~(f=rN[f]).indexOf(",")&&(f=f.split(",")[0])),_=f in rR){if(this.styles.save(f),b=a,"string"===l&&"var(--"===a.substring(0,6)){if("calc("===(a=r4(t,a.substring(4,a.indexOf(")")))).substring(0,5)){var M=t.style.perspective;t.style.perspective=a,a=r4(t,"perspective"),M?t.style.perspective=M:ns(t,"perspective")}o=parseFloat(a)}if(g||((m=t._gsap).renderTransform&&!e.parseTransform||nT(t,e.parseTransform),v=!1!==e.smoothOrigin&&m.smooth,(g=this._pt=new rf(this._pt,w,r0,0,1,m.renderTransform,m,0,-1)).dep=1),"scale"===f)this._pt=new rf(this._pt,m,"scaleY",m.scaleY,(d?tO(m.scaleY,d+o):o)-m.scaleY||0,rX),this._pt.u=0,T.push("scaleY",f),f+="X";else if("transformOrigin"===f){x.push(r1,0,w[r1]),a=np(a),m.svg?nb(t,a,0,v,0,this):((p=parseFloat(a.split(" ")[2])||0)!==m.zOrigin&&na(this,m,"zOrigin",m.zOrigin,p),na(this,w,f,nw(s),nw(a)));continue}else if("svgOrigin"===f){nb(t,a,1,v,0,this);continue}else if(f in nm){nS(this,m,f,u,d?tO(u,d+a):a);continue}else if("smoothOrigin"===f){na(this,m,"smooth",m.smooth,a);continue}else if("force3D"===f){m[f]=a;continue}else if("transform"===f){nP(this,a,t);continue}}else f in w||(f=r7(f)||f);if(_||(o||0===o)&&(u||0===u)&&!rL.test(a)&&f in w)h=(s+"").substr((u+"").length),o||(o=0),p=ee(a)||(f in S.units?S.units[f]:h),h!==p&&(u=nl(t,f,s,p)),this._pt=new rf(this._pt,_?m:w,f,u,(d?tO(u,d+o):o)-u,!_&&("px"===p||"zIndex"===f)&&!1!==e.autoRound?rW:rX),this._pt.u=p||0,_&&b!==a?(this._pt.b=s,this._pt.e=b,this._pt.r=rH):h!==p&&"%"!==p&&(this._pt.b=s,this._pt.r=rq);else if(f in w)nf.call(this,t,f,s,d?d+a:a);else if(f in t)this.add(t,f,s||t[f],d?d+a:a,n,i);else if("parseTransform"!==f){ts(f,a);continue}_||(f in w?x.push(f,0,w[f]):"function"==typeof t[f]?x.push(f,2,t[f]()):x.push(f,1,s||t[f])),T.push(f)}}y&&rc(this)},render:function(t,e){if(e.tween._time||!rP())for(var r=e._pt;r;)r.r(t,r.d),r=r._next;else e.styles.revert()},get:nc,aliases:rN,getSetter:function(t,e,r){var n=rN[e];return n&&0>n.indexOf(",")&&(e=n),e in rR&&e!==r1&&(t._gsap.x||nc(t,"x"))?r&&rA===r?"scale"===e?r$:rZ:(rA=r||{},"scale"===e?rK:rJ):t.style&&!N(t.style[e])?rG:~e.indexOf("-")?rQ:rr(t,e)},core:{_removeProperty:ns,_getMatrix:nx}};rM.utils.checkPrefix=r7,rM.core.getStyleSaver=r8,nF=tw("x,y,z,scale,scaleX,scaleY,xPercent,yPercent,"+(nz="rotation,rotationX,rotationY,skewX,skewY")+",transform,transformOrigin,svgOrigin,force3D,smoothOrigin,transformPerspective",function(t){rR[t]=1}),tw(nz,function(t){S.units[t]="deg",nm[t]=1}),rN[nF[13]]="x,y,z,scale,scaleX,scaleY,xPercent,yPercent,"+nz,tw("0:translateX,1:translateY,2:translateZ,8:rotate,8:rotationZ,8:rotateZ,9:rotateX,10:rotateY",function(t){var e=t.split(":");rN[e[1]]=nF[e[0]]}),tw("x,y,z,top,right,bottom,left,width,height,fontSize,padding,margin,perspective",function(t){S.units[t]="px"}),rM.registerPlugin(nD);var nR=rM.registerPlugin(nD)||rM;nR.core.Tween,t.s(["default",0,nR],89970);var nz,nF,nI,nB,nY,nL,nN,nX,nU,nq,nH,nW,nV,nj,nG,nQ=function(){return nI||"u">typeof window&&(nI=window.gsap)&&nI.registerPlugin&&nI},nZ=1,n$=[],nK=[],nJ=[],n0=Date.now,n1=function(t,e){return e},n2=function(){var t=nH.core,e=t.bridge||{},r=t._scrollers,n=t._proxies;r.push.apply(r,nK),n.push.apply(n,nJ),nK=r,nJ=n,n1=function(t,r){return e[t](r)}},n5=function(t,e){return~nJ.indexOf(t)&&nJ[nJ.indexOf(t)+1][e]},n3=function(t){return!!~nW.indexOf(t)},n8=function(t,e,r,n,i){return t.addEventListener(e,r,{passive:!1!==n,capture:!!i})},n6=function(t,e,r,n){return t.removeEventListener(e,r,!!n)},n4="scrollLeft",n9="scrollTop",n7=function(){return nV&&nV.isPressed||nK.cache++},it=function(t,e){var r=function r(n){if(n||0===n){nZ&&(nY.history.scrollRestoration="manual");var i=nV&&nV.isPressed;t(n=r.v=Math.round(n)||(nV&&nV.iOS?1:0)),r.cacheID=nK.cache,i&&n1("ss",n)}else(e||nK.cache!==r.cacheID||n1("ref"))&&(r.cacheID=nK.cache,r.v=t());return r.v+r.offset};return r.offset=0,t&&r},ie={s:n4,p:"left",p2:"Left",os:"right",os2:"Right",d:"width",d2:"Width",a:"x",sc:it(function(t){return arguments.length?nY.scrollTo(t,ir.sc()):nY.pageXOffset||nL[n4]||nN[n4]||nX[n4]||0})},ir={s:n9,p:"top",p2:"Top",os:"bottom",os2:"Bottom",d:"height",d2:"Height",a:"y",op:ie,sc:it(function(t){return arguments.length?nY.scrollTo(ie.sc(),t):nY.pageYOffset||nL[n9]||nN[n9]||nX[n9]||0})},ii=function(t,e){return(e&&e._ctx&&e._ctx.selector||nI.utils.toArray)(t)[0]||("string"==typeof t&&!1!==nI.config().nullTargetWarn?console.warn("Element not found:",t):null)},is=function(t,e){for(var r=e.length;r--;)if(e[r]===t||e[r].contains(t))return!0;return!1},ia=function(t,e){var r=e.s,n=e.sc;n3(t)&&(t=nL.scrollingElement||nN);var i=nK.indexOf(t),s=n===ir.sc?1:2;~i||(i=nK.push(t)-1),nK[i+s]||n8(t,"scroll",n7);var a=nK[i+s],o=a||(nK[i+s]=it(n5(t,r),!0)||(n3(t)?n:it(function(e){return arguments.length?t[r]=e:t[r]})));return o.target=t,a||(o.smooth="smooth"===nI.getProperty(t,"scrollBehavior")),o},io=function(t,e,r){var n=t,i=t,s=n0(),a=s,o=e||50,u=Math.max(500,3*o),l=function(t,e){var u=n0();e||u-s>o?(i=n,n=t,a=s,s=u):r?n+=t:n=i+(t-i)/(u-a)*(s-a)};return{update:l,reset:function(){i=n=r?0:n,a=s=0},getVelocity:function(t){var e=a,o=i,c=n0();return(t||0===t)&&t!==n&&l(t),s===a||c-a>u?0:(n+(r?o:-o))/((r?c:s)-e)*1e3}}},iu=function(t,e){return e&&!t._gsapAllow&&!1!==t.cancelable&&t.preventDefault(),t.changedTouches?t.changedTouches[0]:t},il=function(t){var e=Math.max.apply(Math,t),r=Math.min.apply(Math,t);return Math.abs(e)>=Math.abs(r)?e:r},ic=function(){(nH=nI.core.globals().ScrollTrigger)&&nH.core&&n2()},ih=function(t){return nI=t||nQ(),!nB&&nI&&"u">typeof document&&document.body&&(nY=window,nN=(nL=document).documentElement,nX=nL.body,nW=[nY,nL,nN,nX],nI.utils.clamp,nG=nI.core.context||function(){},nq="onpointerenter"in nX?"pointer":"mouse",nU=ip.isTouch=nY.matchMedia&&nY.matchMedia("(hover: none), (pointer: coarse)").matches?1:2*("ontouchstart"in nY||navigator.maxTouchPoints>0||navigator.msMaxTouchPoints>0),nj=ip.eventTypes=("ontouchstart"in nN?"touchstart,touchmove,touchcancel,touchend":!("onpointerdown"in nN)?"mousedown,mousemove,mouseup,mouseup":"pointerdown,pointermove,pointercancel,pointerup").split(","),setTimeout(function(){return nZ=0},500),nB=1),nH||ic(),nB};ie.op=ir,nK.cache=0;var ip=function(){var t;function e(t){this.init(t)}return e.prototype.init=function(t){nB||ih(nI)||console.warn("Please gsap.registerPlugin(Observer)"),nH||ic();var e=t.tolerance,r=t.dragMinimum,n=t.type,i=t.target,s=t.lineHeight,a=t.debounce,o=t.preventDefault,u=t.onStop,l=t.onStopDelay,c=t.ignore,f=t.wheelSpeed,h=t.event,p=t.onDragStart,d=t.onDragEnd,_=t.onDrag,g=t.onPress,m=t.onRelease,v=t.onRight,y=t.onLeft,x=t.onUp,b=t.onDown,T=t.onChangeX,w=t.onChangeY,k=t.onChange,M=t.onToggleX,O=t.onToggleY,C=t.onHover,E=t.onHoverEnd,S=t.onMove,A=t.ignoreCheck,P=t.isNormalizer,D=t.onGestureStart,R=t.onGestureEnd,z=t.onWheel,F=t.onEnable,I=t.onDisable,B=t.onClick,Y=t.scrollSpeed,L=t.capture,N=t.allowClicks,X=t.lockAxis,U=t.onLockAxis;this.target=i=ii(i)||nN,this.vars=t,c&&(c=nI.utils.toArray(c)),e=e||1e-9,r=r||0,f=f||1,Y=Y||1,n=n||"wheel,touch,pointer",a=!1!==a,s||(s=parseFloat(nY.getComputedStyle(nX).lineHeight)||22);var q,H,W,V,j,G,Q,Z=this,$=0,K=0,J=t.passive||!o&&!1!==t.passive,tt=ia(i,ie),te=ia(i,ir),tr=tt(),tn=te(),ti=~n.indexOf("touch")&&!~n.indexOf("pointer")&&"pointerdown"===nj[0],ts=n3(i),ta=i.ownerDocument||nL,to=[0,0,0],tu=[0,0,0],tl=0,tc=function(){return tl=n0()},tf=function(t,e){return(Z.event=t)&&c&&is(t.target,c)||e&&ti&&"touch"!==t.pointerType||A&&A(t,e)},th=function(){var t=Z.deltaX=il(to),r=Z.deltaY=il(tu),n=Math.abs(t)>=e,i=Math.abs(r)>=e;k&&(n||i)&&k(Z,t,r,to,tu),n&&(v&&Z.deltaX>0&&v(Z),y&&Z.deltaX<0&&y(Z),T&&T(Z),M&&Z.deltaX<0!=$<0&&M(Z),$=Z.deltaX,to[0]=to[1]=to[2]=0),i&&(b&&Z.deltaY>0&&b(Z),x&&Z.deltaY<0&&x(Z),w&&w(Z),O&&Z.deltaY<0!=K<0&&O(Z),K=Z.deltaY,tu[0]=tu[1]=tu[2]=0),(V||W)&&(S&&S(Z),W&&(p&&1===W&&p(Z),_&&_(Z),W=0),V=!1),G&&(G=!1,1)&&U&&U(Z),j&&(z(Z),j=!1),q=0},tp=function(t,e,r){to[r]+=t,tu[r]+=e,Z._vx.update(t),Z._vy.update(e),a?q||(q=requestAnimationFrame(th)):th()},td=function(t,e){X&&!Q&&(Z.axis=Q=Math.abs(t)>Math.abs(e)?"x":"y",G=!0),"y"!==Q&&(to[2]+=t,Z._vx.update(t,!0)),"x"!==Q&&(tu[2]+=e,Z._vy.update(e,!0)),a?q||(q=requestAnimationFrame(th)):th()},t_=function(t){if(!tf(t,1)){var e=(t=iu(t,o)).clientX,n=t.clientY,i=e-Z.x,s=n-Z.y,a=Z.isDragging;Z.x=e,Z.y=n,(a||(i||s)&&(Math.abs(Z.startX-e)>=r||Math.abs(Z.startY-n)>=r))&&(W||(W=a?2:1),a||(Z.isDragging=!0),td(i,s))}},tg=Z.onPress=function(t){tf(t,1)||t&&t.button||(Z.axis=Q=null,H.pause(),Z.isPressed=!0,t=iu(t),$=K=0,Z.startX=Z.x=t.clientX,Z.startY=Z.y=t.clientY,Z._vx.reset(),Z._vy.reset(),n8(P?i:ta,nj[1],t_,J,!0),Z.deltaX=Z.deltaY=0,g&&g(Z))},tm=Z.onRelease=function(t){if(!tf(t,1)){n6(P?i:ta,nj[1],t_,!0);var e=!isNaN(Z.y-Z.startY),r=Z.isDragging,n=r&&(Math.abs(Z.x-Z.startX)>3||Math.abs(Z.y-Z.startY)>3),s=iu(t);!n&&e&&(Z._vx.reset(),Z._vy.reset(),o&&N&&nI.delayedCall(.08,function(){if(n0()-tl>300&&!t.defaultPrevented){if(t.target.click)t.target.click();else if(ta.createEvent){var e=ta.createEvent("MouseEvents");e.initMouseEvent("click",!0,!0,nY,1,s.screenX,s.screenY,s.clientX,s.clientY,!1,!1,!1,!1,0,null),t.target.dispatchEvent(e)}}})),Z.isDragging=Z.isGesturing=Z.isPressed=!1,u&&r&&!P&&H.restart(!0),W&&th(),d&&r&&d(Z),m&&m(Z,n)}},tv=function(t){return t.touches&&t.touches.length>1&&(Z.isGesturing=!0)&&D(t,Z.isDragging)},ty=function(){return Z.isGesturing=!1,R(Z)},tx=function(t){if(!tf(t)){var e=tt(),r=te();tp((e-tr)*Y,(r-tn)*Y,1),tr=e,tn=r,u&&H.restart(!0)}},tb=function(t){if(!tf(t)){t=iu(t,o),z&&(j=!0);var e=(1===t.deltaMode?s:2===t.deltaMode?nY.innerHeight:1)*f;tp(t.deltaX*e,t.deltaY*e,0),u&&!P&&H.restart(!0)}},tT=function(t){if(!tf(t)){var e=t.clientX,r=t.clientY,n=e-Z.x,i=r-Z.y;Z.x=e,Z.y=r,V=!0,u&&H.restart(!0),(n||i)&&td(n,i)}},tw=function(t){Z.event=t,C(Z)},tk=function(t){Z.event=t,E(Z)},tM=function(t){return tf(t)||iu(t,o)&&B(Z)};H=Z._dc=nI.delayedCall(l||.25,function(){Z._vx.reset(),Z._vy.reset(),H.pause(),u&&u(Z)}).pause(),Z.deltaX=Z.deltaY=0,Z._vx=io(0,50,!0),Z._vy=io(0,50,!0),Z.scrollX=tt,Z.scrollY=te,Z.isDragging=Z.isGesturing=Z.isPressed=!1,nG(this),Z.enable=function(t){return!Z.isEnabled&&(n8(ts?ta:i,"scroll",n7),n.indexOf("scroll")>=0&&n8(ts?ta:i,"scroll",tx,J,L),n.indexOf("wheel")>=0&&n8(i,"wheel",tb,J,L),(n.indexOf("touch")>=0&&nU||n.indexOf("pointer")>=0)&&(n8(i,nj[0],tg,J,L),n8(ta,nj[2],tm),n8(ta,nj[3],tm),N&&n8(i,"click",tc,!0,!0),B&&n8(i,"click",tM),D&&n8(ta,"gesturestart",tv),R&&n8(ta,"gestureend",ty),C&&n8(i,nq+"enter",tw),E&&n8(i,nq+"leave",tk),S&&n8(i,nq+"move",tT)),Z.isEnabled=!0,Z.isDragging=Z.isGesturing=Z.isPressed=V=W=!1,Z._vx.reset(),Z._vy.reset(),tr=tt(),tn=te(),t&&t.type&&tg(t),F&&F(Z)),Z},Z.disable=function(){Z.isEnabled&&(n$.filter(function(t){return t!==Z&&n3(t.target)}).length||n6(ts?ta:i,"scroll",n7),Z.isPressed&&(Z._vx.reset(),Z._vy.reset(),n6(P?i:ta,nj[1],t_,!0)),n6(ts?ta:i,"scroll",tx,L),n6(i,"wheel",tb,L),n6(i,nj[0],tg,L),n6(ta,nj[2],tm),n6(ta,nj[3],tm),n6(i,"click",tc,!0),n6(i,"click",tM),n6(ta,"gesturestart",tv),n6(ta,"gestureend",ty),n6(i,nq+"enter",tw),n6(i,nq+"leave",tk),n6(i,nq+"move",tT),Z.isEnabled=Z.isPressed=Z.isDragging=!1,I&&I(Z))},Z.kill=Z.revert=function(){Z.disable();var t=n$.indexOf(Z);t>=0&&n$.splice(t,1),nV===Z&&(nV=0)},n$.push(Z),P&&n3(i)&&(nV=Z),Z.enable(h)},t=[{key:"velocityX",get:function(){return this._vx.getVelocity()}},{key:"velocityY",get:function(){return this._vy.getVelocity()}}],function(t,e){for(var r=0;r-1);return r["_"+e+"Clamp"]=n,n?t.substr(6,t.length-7):t},i3=function(t,e){return e&&(!so(t)||"clamp("!==t.substr(0,6))?"clamp("+t+")":t},i8=function(){return iC=1},i6=function(){return iC=0},i4=function(t){return t},i9=function(t){return Math.round(1e5*t)/1e5||0},i7=function(){return"u">typeof window},st=function(){return id||i7()&&(id=window.gsap)&&id.registerPlugin&&id},se=function(t){return!!~ix.indexOf(t)},sr=function(t){return("Height"===t?iH:ig["inner"+t])||iv["client"+t]||iy["client"+t]},sn=function(t){return n5(t,"getBoundingClientRect")||(se(t)?function(){return ac.width=ig.innerWidth,ac.height=iH,ac}:function(){return sS(t)})},si=function(t,e,r){var n=r.d,i=r.d2,s=r.a;return(s=n5(t,"getBoundingClientRect"))?function(){return s()[n]}:function(){return(e?sr(i):t["client"+i])||0}},ss=function(t,e){var r=e.s,n=e.d2,i=e.d,s=e.a;return Math.max(0,(s=n5(t,r="scroll"+n))?s()-sn(t)()[i]:se(t)?(iv[r]||iy[r])-sr(n):t[r]-t["offset"+n])},sa=function(t,e){for(var r=0;r0){for(t-=i,s=0;s=t)return r[s];return r[s-1]}for(s=r.length,t+=i;s--;)if(r[s]<=t)return r[s];return r[0]}:function(r,n,i){void 0===i&&(i=.001);var s=e(r);return!n||Math.abs(s-r)r&&(n*=e/100),t=t.substr(0,r-1)),t=n+(t in sL?sL[t]*e:~t.indexOf("%")?parseFloat(t)*e/100:parseFloat(t)||0)}return t},sX=function(t,e,r,n,i,s,a,o){var u=i.startColor,l=i.endColor,c=i.fontSize,f=i.indent,h=i.fontWeight,p=im.createElement("div"),d=se(r)||"fixed"===n5(r,"pinType"),_=-1!==t.indexOf("scroller"),g=d?iy:"IFRAME"===r.tagName?r.contentDocument.body:r,m=-1!==t.indexOf("start"),v=m?u:l,y="border-color:"+v+";font-size:"+c+";color:"+v+";font-weight:"+h+";pointer-events:none;white-space:nowrap;font-family:sans-serif,Arial;z-index:1000;padding:4px 8px;border-width:0;border-style:solid;";return y+="position:"+((_||o)&&d?"fixed;":"absolute;"),(_||o||!d)&&(y+=(n===ir?s_:sg)+":"+(s+parseFloat(f))+"px;"),a&&(y+="box-sizing:border-box;text-align:left;width:"+a.offsetWidth+"px;"),p._isStart=m,p.setAttribute("class","gsap-marker-"+t+(e?" marker-"+e:"")),p.style.cssText=y,p.innerText=e||0===e?t+"-"+e:t,g.children[0]?g.insertBefore(p,g.children[0]):g.appendChild(p),p._offset=p["offset"+n.op.d2],sU(p,0,n,m),p},sU=function(t,e,r,n){var i={display:"block"},s=r[n?"os2":"p2"],a=r[n?"p2":"os2"];t._isFlipped=n,i[r.a+"Percent"]=n?-100:0,i[r.a]=n?"1px":0,i["border"+s+sk]=1,i["border"+a+sk]=0,i[r.p]=e+"px",id.set(t,i)},sq=[],sH={},sW=function(){return iJ()-i1>34&&(iG||(iG=requestAnimationFrame(ae)))},sV=function(){iI&&iI.isPressed&&!(iI.startX>iy.clientWidth)||(nK.cache++,iI?iG||(iG=requestAnimationFrame(ae)):ae(),i1||sK("scrollStart"),i1=iJ())},sj=function(){iL=ig.innerWidth,iY=ig.innerHeight},sG=function(t){nK.cache++,(!0===t||!iO&&!iF&&!im.fullscreenElement&&!im.webkitFullscreenElement&&(!iB||iL!==ig.innerWidth||Math.abs(ig.innerHeight-iY)>.25*ig.innerHeight))&&ib.restart(!0)},sQ={},sZ=[],s$=function t(){return sF(am,"scrollEnd",t)||s9(!0)},sK=function(t){return sQ[t]&&sQ[t].map(function(t){return t()})||sZ},sJ=[],s0=function(t){for(var e=0;ee,n=t._startClamp&&t.start>=e;(r||n)&&t.setPositions(n?e-1:t.start,r?Math.max(n?e:t.start+1,e):t.end,!0)}),s4(!1),iV=0,r.forEach(function(t){return t&&t.render&&t.render(-1)}),nK.forEach(function(t){su(t)&&(t.smooth&&requestAnimationFrame(function(){return t.target.style.scrollBehavior="smooth"}),t.rec&&t(t.rec))}),s5(iU,1),ib.pause(),s3++,iQ=2,ae(2),sq.forEach(function(t){return su(t.vars.onRefresh)&&t.vars.onRefresh(t)}),iQ=am.isRefreshing=!1,sK("refresh")},s7=0,at=1,ae=function(t){if(2===t||!iQ&&!iW){am.isUpdating=!0,i$&&i$.update(0);var e=sq.length,r=iJ(),n=r-i0>=50,i=e&&sq[0].scroll();if(at=s7>i?-1:1,iQ||(s7=i),n&&(i1&&!iC&&r-i1>200&&(i1=0,sK("scrollEnd")),ik=i0,i0=r),at<0){for(iS=e;iS-- >0;)sq[iS]&&sq[iS].update(0,n);at=1}else for(iS=0;iS20),r-=r-x}if(p&&(o[p]=t||-.001,t<0&&(t=0)),s){var w=t+r,k=s._isStart;d="scroll"+n.d2,sU(s,w,n,k&&w>20||!k&&(c?Math.max(iy[d],iv[d]):s.parentNode[d])<=w+1),c&&(u=sS(a),c&&(s.style[n.op.p]=u[n.op.p]-n.op.m-s._offset+"px"))}return h&&g&&(d=sS(g),h.seek(f),_=sS(g),h._caScrollDist=d[n.p]-_[n.p],t=t/h._caScrollDist*f),h&&h.seek(m),h?t:Math.round(t)},ah=/(webkit|moz|length|cssText|inset)/i,ap=function(t,e,r,n){if(t.parentNode!==e){var i,s,a=t.style;if(e===iy){for(i in t._stOrig=a.cssText,s=sO(t))+i||ah.test(i)||!s[i]||"string"!=typeof a[i]||"0"===i||(a[i]=s[i]);a.top=r,a.left=n}else a.cssText=t._stOrig;id.core.getCache(t).uncache=1,e.appendChild(t)}},ad=function(t,e,r){var n=e,i=n;return function(e){var s=Math.round(t());return s!==n&&s!==i&&Math.abs(s-n)>3&&Math.abs(s-i)>3&&(e=s,r&&r()),i=n,n=Math.round(e)}},a_=function(t,e,r){var n={};n[e.p]="+="+r,id.set(t,n)},ag=function(t,e){var r=ia(t,e),n="_scroll"+e.p2,i=function e(i,s,a,o,u){var l=e.tween,c=s.onComplete,f={};a=a||r();var h=ad(r,a,function(){l.kill(),e.tween=0});return u=o&&u||0,o=o||i-a,l&&l.kill(),s[n]=i,s.inherit=!1,s.modifiers=f,f[n]=function(){return h(a+o*l.ratio+u*l.ratio*l.ratio)},s.onUpdate=function(){nK.cache++,e.tween&&ae()},s.onComplete=function(){e.tween=0,c&&c.call(l)},l=e.tween=id.to(t,s)};return t[n]=r,r.wheelHandler=function(){return i.tween&&i.tween.kill()&&(i.tween=0)},sz(t,"wheel",r.wheelHandler),am.isTouch&&sz(t,"touchmove",r.wheelHandler),i},am=function(){function t(e,r){i_||t.register(id)||console.warn("Please gsap.registerPlugin(ScrollTrigger)"),iX(this),this.init(e,r)}return t.prototype.init=function(e,r){if(this.progress=this.start=0,this.vars&&this.kill(!0,!0),!i2){this.update=this.refresh=this.kill=i4;return}var n,i,s,a,o,u,l,c,f,h,p,d,_,g,m,v,y,x,b,T,w,k,M,O,C,E,S,A,P,D,R,z,F,I,B,Y,L,N,X,U,q,H=e=sE(so(e)||sl(e)||e.nodeType?{trigger:e}:e,sY),W=H.onUpdate,V=H.toggleClass,j=H.id,G=H.onToggle,Q=H.onRefresh,Z=H.scrub,$=H.trigger,K=H.pin,J=H.pinSpacing,tt=H.invalidateOnRefresh,te=H.anticipatePin,tr=H.onScrubComplete,tn=H.onSnapComplete,ti=H.once,ts=H.snap,ta=H.pinReparent,to=H.pinSpacer,tu=H.containerAnimation,tl=H.fastScrollEnd,tc=H.preventOverlaps,tf=e.horizontal||e.containerAnimation&&!1!==e.horizontal?ie:ir,th=!Z&&0!==Z,tp=ii(e.scroller||ig),td=id.core.getCache(tp),t_=se(tp),tg=("pinType"in e?e.pinType:n5(tp,"pinType")||t_&&"fixed")==="fixed",tm=[e.onEnter,e.onLeave,e.onEnterBack,e.onLeaveBack],tv=th&&e.toggleActions.split(" "),ty="markers"in e?e.markers:sY.markers,tx=t_?0:parseFloat(sO(tp)["border"+tf.p2+sk])||0,tb=this,tT=e.onRefreshInit&&function(){return e.onRefreshInit(tb)},tw=si(tp,t_,tf),tk=!t_||~nJ.indexOf(tp)?sn(tp):function(){return ac},tM=0,tO=0,tC=0,tE=ia(tp,tf);if(tb._startClamp=tb._endClamp=!1,tb._dir=tf,te*=45,tb.scroller=tp,tb.scroll=tu?tu.time.bind(tu):tE,u=tE(),tb.vars=e,r=r||e.animation,"refreshPriority"in e&&(iR=1,-9999===e.refreshPriority&&(i$=tb)),td.tweenScroll=td.tweenScroll||{top:ag(tp,ir),left:ag(tp,ie)},tb.tweenTo=s=td.tweenScroll[tf.p],tb.scrubDuration=function(t){(B=sl(t)&&t)?I?I.duration(t):I=id.to(r,{ease:"expo",totalProgress:"+=0",inherit:!1,duration:B,paused:!0,onComplete:function(){return tr&&tr(tb)}}):(I&&I.progress(1).kill(),I=0)},r&&(r.vars.lazy=!1,r._initted&&!tb.isReverted||!1!==r.vars.immediateRender&&!1!==e.immediateRender&&r.duration()&&r.render(0,!0,!0),tb.animation=r.pause(),r.scrollTrigger=tb,tb.scrubDuration(Z),z=0,j||(j=r.vars.id)),ts&&((!sc(ts)||ts.push)&&(ts={snapTo:ts}),"scrollBehavior"in iy.style&&id.set(t_?[iy,iv]:tp,{scrollBehavior:"auto"}),nK.forEach(function(t){return su(t)&&t.target===(t_?im.scrollingElement||iv:tp)&&(t.smooth=!1)}),o=su(ts.snapTo)?ts.snapTo:"labels"===ts.snapTo?(n=r,function(t){return id.utils.snap(sP(n),t)}):"labelsDirectional"===ts.snapTo?(i=r,function(t,e){return sD(sP(i))(t,e.direction)}):!1!==ts.directional?function(t,e){return sD(ts.snapTo)(t,iJ()-tO<500?0:e.direction)}:id.utils.snap(ts.snapTo),Y=sc(Y=ts.duration||{min:.1,max:2})?iw(Y.min,Y.max):iw(Y,Y),L=id.delayedCall(ts.delay||B/2||.1,function(){var t=tE(),e=iJ()-tO<500,n=s.tween;if((e||10>Math.abs(tb.getVelocity()))&&!n&&!iC&&tM!==t){var i,a,u=(t-c)/v,l=r&&!th?r.totalProgress():u,h=e?0:(l-F)/(iJ()-ik)*1e3||0,p=id.utils.clamp(-u,1-u,sp(h/2)*h/.185),d=u+(!1===ts.inertia?0:p),_=ts,g=_.onStart,m=_.onInterrupt,y=_.onComplete;if(sl(i=o(d,tb))||(i=d),a=Math.max(0,Math.round(c+i*v)),t<=f&&t>=c&&a!==t){if(n&&!n._initted&&n.data<=sp(a-t))return;!1===ts.inertia&&(p=i-u),s(a,{duration:Y(sp(.185*Math.max(sp(d-l),sp(i-l))/h/.05||0)),ease:ts.ease||"power3",data:sp(a-t),onInterrupt:function(){return L.restart(!0)&&m&&sh(tb,m)},onComplete:function(){tb.update(),tM=tE(),r&&!th&&(I?I.resetTo("totalProgress",i,r._tTime/r._tDur):r.progress(i)),z=F=r&&!th?r.totalProgress():tb.progress,tn&&tn(tb),y&&sh(tb,y)}},t,p*v,a-t-p*v),g&&sh(tb,g,s.tween)}}else tb.isActive&&tM!==t&&L.restart(!0)}).pause()),j&&(sH[j]=tb),(q=($=tb.trigger=ii($||!0!==K&&K))&&$._gsap&&$._gsap.stRevert)&&(q=q(tb)),K=!0===K?$:ii(K),so(V)&&(V={targets:$,className:V}),K&&(!1===J||J===sw||(J=(!!J||!K.parentNode||!K.parentNode.style||"flex"!==sO(K.parentNode).display)&&sT),tb.pin=K,(a=id.core.getCache(K)).spacer?y=a.pinState:(to&&((to=ii(to))&&!to.nodeType&&(to=to.current||to.nativeElement),a.spacerIsNative=!!to,to&&(a.spacerState=au(to))),a.spacer=T=to||im.createElement("div"),T.classList.add("pin-spacer"),j&&T.classList.add("pin-spacer-"+j),a.pinState=y=au(K)),!1!==e.force3D&&id.set(K,{force3D:!0}),tb.spacer=T=a.spacer,E=(R=sO(K))[J+tf.os2],k=id.getProperty(K),M=id.quickSetter(K,tf.a,"px"),as(K,T,R),b=au(K)),ty){g=sc(ty)?sE(ty,sB):sB,d=sX("scroller-start",j,tp,tf,g,0),_=sX("scroller-end",j,tp,tf,g,0,d),w=d["offset"+tf.op.d2];var tS=ii(n5(tp,"content")||tp);h=this.markerStart=sX("start",j,tS,tf,g,w,0,tu),p=this.markerEnd=sX("end",j,tS,tf,g,w,0,tu),tu&&(U=id.quickSetter([h,p],tf.a,"px")),tg||nJ.length&&!0===n5(tp,"fixedMarkers")||(sC(t_?iy:tp),id.set([d,_],{force3D:!0}),A=id.quickSetter(d,tf.a,"px"),D=id.quickSetter(_,tf.a,"px"))}if(tu){var tA=tu.vars.onUpdate,tP=tu.vars.onUpdateParams;tu.eventCallback("onUpdate",function(){tb.update(0,0,1),tA&&tA.apply(tu,tP||[])})}if(tb.previous=function(){return sq[sq.indexOf(tb)-1]},tb.next=function(){return sq[sq.indexOf(tb)+1]},tb.revert=function(t,e){if(!e)return tb.kill(!0);var n=!1!==t||!tb.enabled,i=iO;n!==tb.isReverted&&(n&&(N=Math.max(tE(),tb.scroll.rec||0),tC=tb.progress,X=r&&r.progress()),h&&[h,p,d,_].forEach(function(t){return t.style.display=n?"none":"block"}),n&&(iO=tb,tb.update(n)),!K||ta&&tb.isActive||(n?ai(K,T,y):as(K,T,sO(K),S)),n||tb.update(n),iO=i,tb.isReverted=n)},tb.refresh=function(n,i,a,o){if(!iO&&tb.enabled||i){if(K&&n&&i1)return void sz(t,"scrollEnd",s$);!iQ&&tT&&tT(tb),iO=tb,s.tween&&!a&&(s.tween.kill(),s.tween=0),I&&I.pause(),tt&&r&&(r.revert({kill:!1}).invalidate(),r.getChildren?r.getChildren(!0,!0,!1).forEach(function(t){return t.vars.immediateRender&&t.render(0,!0,!0)}):r.vars.immediateRender&&r.render(0,!0,!0)),tb.isReverted||tb.revert(!0,!0),tb._subPinOffset=!1;var g,w,M,E,A,D,R,z,F,B,Y,U,q,H=tw(),W=tk(),V=tu?tu.duration():ss(tp,tf),j=v<=.01||!v,G=0,Z=o||0,te=sc(a)?a.end:e.end,tr=e.endTrigger||$,tn=sc(a)?a.start:e.start||(0!==e.start&&$?K?"0 0":"0 100%":0),ti=tb.pinnedContainer=e.pinnedContainer&&ii(e.pinnedContainer,tb),ts=$&&Math.max(0,sq.indexOf(tb))||0,to=ts;for(ty&&sc(a)&&(U=id.getProperty(d,tf.p),q=id.getProperty(_,tf.p));to-- >0;)(D=sq[to]).end||D.refresh(0,1)||(iO=tb),(R=D.pin)&&(R===$||R===K||R===ti)&&!D.isReverted&&(B||(B=[]),B.unshift(D),D.revert(!0,!0)),D!==sq[to]&&(ts--,to--);for(su(tn)&&(tn=tn(tb)),c=af(tn=i5(tn,"start",tb),$,H,tf,tE(),h,d,tb,W,tx,tg,V,tu,tb._startClamp&&"_startClamp")||(K?-.001:0),su(te)&&(te=te(tb)),so(te)&&!te.indexOf("+=")&&(~te.indexOf(" ")?te=(so(tn)?tn.split(" ")[0]:"")+te:(G=sN(te.substr(2),H),te=so(tn)?tn:(tu?id.utils.mapRange(0,tu.duration(),tu.scrollTrigger.start,tu.scrollTrigger.end,c):c)+G,tr=$)),te=i5(te,"end",tb),f=Math.max(c,af(te||(tr?"100% 0":V),tr,H,tf,tE()+G,p,_,tb,W,tx,tg,V,tu,tb._endClamp&&"_endClamp"))||-.001,G=0,to=ts;to--;)(R=(D=sq[to]||{}).pin)&&D.start-D._pinPush<=c&&!tu&&D.end>0&&(g=D.end-(tb._startClamp?Math.max(0,D.start):D.start),(R===$&&D.start-D._pinPush=ss(tp,tf)))g=sO(K),E=tf===ir,M=tE(),O=parseFloat(k(tf.a))+Z,!V&&f>1&&(Y={style:Y=(t_?im.scrollingElement||iv:tp).style,value:Y["overflow"+tf.a.toUpperCase()]},t_&&"scroll"!==sO(iy)["overflow"+tf.a.toUpperCase()]&&(Y.style["overflow"+tf.a.toUpperCase()]="scroll")),as(K,T,g),b=au(K),w=sS(K,!0),z=tg&&ia(tp,E?ie:ir)(),J?((S=[J+tf.os2,v+Z+"px"]).t=T,(to=J===sT?sA(K,tf)+v+Z:0)&&(S.push(tf.d,to+"px"),"auto"!==T.style.flexBasis&&(T.style.flexBasis=to+"px")),ao(S),ti&&sq.forEach(function(t){t.pin===ti&&!1!==t.vars.pinSpacing&&(t._subPinOffset=!0)}),tg&&tE(N)):(to=sA(K,tf))&&"auto"!==T.style.flexBasis&&(T.style.flexBasis=to+"px"),tg&&((A={top:w.top+(E?M-c:z)+"px",left:w.left+(E?z:M-c)+"px",boxSizing:"border-box",position:"fixed"})[sm]=A["max"+sk]=Math.ceil(w.width)+"px",A[sv]=A["max"+sM]=Math.ceil(w.height)+"px",A[sw]=A[sw+"Top"]=A[sw+sy]=A[sw+sb]=A[sw+sx]="0",A[sT]=g[sT],A[sT+"Top"]=g[sT+"Top"],A[sT+sy]=g[sT+sy],A[sT+sb]=g[sT+sb],A[sT+sx]=g[sT+sx],x=al(y,A,ta),iQ&&tE(0)),r?(F=r._initted,iz(1),r.render(r.duration(),!0,!0),C=k(tf.a)-O+v+Z,P=Math.abs(v-C)>1,tg&&P&&x.splice(x.length-2,2),r.render(0,!0,!0),F||r.invalidate(!0),r.parent||r.totalTime(r.totalTime()),iz(0)):C=v,Y&&(Y.value?Y.style["overflow"+tf.a.toUpperCase()]=Y.value:Y.style.removeProperty("overflow-"+tf.a));else if($&&tE()&&!tu)for(w=$.parentNode;w&&w!==iy;)w._pinOffset&&(c-=w._pinOffset,f-=w._pinOffset),w=w.parentNode;B&&B.forEach(function(t){return t.revert(!1,!0)}),tb.start=c,tb.end=f,u=l=iQ?N:tE(),tu||iQ||(u0?sq.slice(0,e).reverse():sq.slice(e+1);return(so(t)?r.filter(function(e){return e.vars.preventOverlaps===t}):r).filter(function(t){return tb.direction>0?t.end<=c:t.start>=f})},tb.update=function(t,e,n){if(!tu||n||t){var i,a,o,h,p,_,g,m=!0===iQ?N:tb.scroll(),y=t?0:(m-c)/v,w=y<0?0:y>1?1:y||0,k=tb.progress;if(e&&(l=u,u=tu?tE():m,ts&&(F=z,z=r&&!th?r.totalProgress():w)),te&&K&&!iO&&!iK&&i1&&(!w&&cm+(m-l)/(iJ()-ik)*te&&(w=.9999)),w!==k&&tb.enabled){if(h=(p=(i=tb.isActive=!!w&&w<1)!=(!!k&&k<1))||!!w!=!!k,tb.direction=w>k?1:-1,tb.progress=w,h&&!iO&&(a=w&&!k?0:1===w?1:1===k?2:3,th&&(o=!p&&"none"!==tv[a+1]&&tv[a+1]||tv[a],g=r&&("complete"===o||"reset"===o||o in r))),tc&&(p||g)&&(g||Z||!r)&&(su(tc)?tc(tb):tb.getTrailing(tc).forEach(function(t){return t.endAnimation()})),!th&&(!I||iO||iK?r&&r.totalProgress(w,!!(iO&&(tO||t))):(I._dp._time-I._start!==I._time&&I.render(I._dp._time-I._start),I.resetTo?I.resetTo("totalProgress",w,r._tTime/r._tDur):(I.vars.totalProgress=w,I.invalidate().restart()))),K)if(t&&J&&(T.style[J+tf.os2]=E),tg){if(h){if(_=!t&&w>k&&f+1>m&&m+1>=ss(tp,tf),ta)if(!t&&(i||_)){var S=sS(K,!0),R=m-c;ap(K,iy,S.top+(tf===ir?R:0)+"px",S.left+(tf===ir?0:R)+"px")}else ap(K,T);ao(i||_?x:b),P&&w<1&&i||M(O+(1!==w||_?0:C))}}else M(i9(O+C*w));!ts||s.tween||iO||iK||L.restart(!0),V&&(p||ti&&w&&(w<1||!ij))&&iT(V.targets).forEach(function(t){return t.classList[i||ti?"add":"remove"](V.className)}),!W||th||t||W(tb),h&&!iO?(th&&(g&&("complete"===o?r.pause().totalProgress(1):"reset"===o?r.restart(!0).pause():"restart"===o?r.restart(!0):r[o]()),W&&W(tb)),(p||!ij)&&(G&&p&&sh(tb,G),tm[a]&&sh(tb,tm[a]),ti&&(1===w?tb.kill(!1,1):tm[a]=0),!p&&tm[a=1===w?1:3]&&sh(tb,tm[a])),tl&&!i&&Math.abs(tb.getVelocity())>(sl(tl)?tl:2500)&&(sf(tb.callbackAnimation),I?I.progress(1):sf(r,"reverse"===o?1:!w,1))):th&&W&&!iO&&W(tb)}if(D){var B=tu?m/tu.duration()*(tu._caScrollDist||0):m;A(B+ +!!d._isFlipped),D(B)}U&&U(-m/tu.duration()*(tu._caScrollDist||0))}},tb.enable=function(e,r){tb.enabled||(tb.enabled=!0,sz(tp,"resize",sG),t_||sz(tp,"scroll",sV),tT&&sz(t,"refreshInit",tT),!1!==e&&(tb.progress=tC=0,u=l=tM=tE()),!1!==r&&tb.refresh())},tb.getTween=function(t){return t&&s?s.tween:I},tb.setPositions=function(t,e,r,n){if(tu){var i=tu.scrollTrigger,s=tu.duration(),a=i.end-i.start;t=i.start+a*t/s,e=i.start+a*e/s}tb.refresh(!1,!1,{start:i3(t,r&&!!tb._startClamp),end:i3(e,r&&!!tb._endClamp)},n),tb.update()},tb.adjustPinSpacing=function(t){if(S&&t){var e=S.indexOf(tf.d)+1;S[e]=parseFloat(S[e])+t+"px",S[1]=parseFloat(S[1])+t+"px",ao(S)}},tb.disable=function(e,r){if(!1!==e&&tb.revert(!0,!0),tb.enabled&&(tb.enabled=tb.isActive=!1,r||I&&I.pause(),N=0,a&&(a.uncache=1),tT&&sF(t,"refreshInit",tT),L&&(L.pause(),s.tween&&s.tween.kill()&&(s.tween=0)),!t_)){for(var n=sq.length;n--;)if(sq[n].scroller===tp&&sq[n]!==tb)return;sF(tp,"resize",sG),t_||sF(tp,"scroll",sV)}},tb.kill=function(t,n){tb.disable(t,n),I&&!n&&I.kill(),j&&delete sH[j];var i=sq.indexOf(tb);i>=0&&sq.splice(i,1),i===iS&&at>0&&iS--,i=0,sq.forEach(function(t){return t.scroller===tb.scroller&&(i=1)}),i||iQ||(tb.scroll.rec=0),r&&(r.scrollTrigger=null,t&&r.revert({kill:!1}),n||r.kill()),h&&[h,p,d,_].forEach(function(t){return t.parentNode&&t.parentNode.removeChild(t)}),i$===tb&&(i$=0),K&&(a&&(a.uncache=1),i=0,sq.forEach(function(t){return t.pin===K&&i++}),i||(a.spacer=0)),e.onKill&&e.onKill(tb)},sq.push(tb),tb.enable(!1,!1),q&&q(tb),r&&r.add&&!v){var tD=tb.update;tb.update=function(){tb.update=tD,nK.cache++,c||f||tb.refresh()},id.delayedCall(.01,tb.update),v=.01,c=f=0}else tb.refresh();K&&s8()},t.register=function(e){return i_||(id=e||st(),i7()&&window.document&&t.enable(),i_=i2),i_},t.defaults=function(t){if(t)for(var e in t)sY[e]=t[e];return sY},t.disable=function(t,e){i2=0,sq.forEach(function(r){return r[e?"kill":"disable"](t)}),sF(ig,"wheel",sV),sF(im,"scroll",sV),clearInterval(iM),sF(im,"touchcancel",i4),sF(iy,"touchstart",i4),sR(sF,im,"pointerdown,touchstart,mousedown",i8),sR(sF,im,"pointerup,touchend,mouseup",i6),ib.kill(),sa(sF);for(var r=0;r0&&n.left+i0&&n.top+i=0&&sJ.splice(e,5),sJ.push(t,t.style.cssText,t.getBBox&&t.getAttribute("transform"),id.core.getCache(t),iX())}}):sJ},am.revert=function(t,e){return s2(!t,e)},am.create=function(t,e){return new am(t,e)},am.refresh=function(t){return t?sG(!0):(i_||am.register())&&s9(!0)},am.update=function(t){return++nK.cache&&ae(2*(!0===t))},am.clearScrollMemory=s5,am.maxScroll=function(t,e){return ss(t,e?ie:ir)},am.getScrollFunc=function(t,e){return ia(ii(t),e?ie:ir)},am.getById=function(t){return sH[t]},am.getAll=function(){return sq.filter(function(t){return"ScrollSmoother"!==t.vars.id})},am.isScrolling=function(){return!!i1},am.snapDirectional=sD,am.addEventListener=function(t,e){var r=sQ[t]||(sQ[t]=[]);~r.indexOf(e)||r.push(e)},am.removeEventListener=function(t,e){var r=sQ[t],n=r&&r.indexOf(e);n>=0&&r.splice(n,1)},am.batch=function(t,e){var r,n=[],i={},s=e.interval||.016,a=e.batchMax||1e9,o=function(t,e){var r=[],n=[],i=id.delayedCall(s,function(){e(r,n),r=[],n=[]}).pause();return function(t){r.length||i.restart(!0),r.push(t.trigger),n.push(t),a<=r.length&&i.progress(1)}};for(r in e)i[r]="on"===r.substr(0,2)&&su(e[r])&&"onRefreshInit"!==r?o(r,e[r]):e[r];return su(a)&&(a=a(),sz(am,"refresh",function(){return a=e.batchMax()})),iT(t).forEach(function(t){var e={};for(r in i)e[r]=i[r];e.trigger=t,n.push(am.create(e))}),n};var av,ay=function(t,e,r,n){return e>n?t(n):e<0&&t(0),r>n?(n-e)/(r-e):r<0?e/(e-r):1},ax=function t(e,r){!0===r?e.style.removeProperty("touch-action"):e.style.touchAction=!0===r?"auto":r?"pan-"+r+(ip.isTouch?" pinch-zoom":""):"none",e===iv&&t(iy,r)},ab={auto:1,scroll:1},aT=function(t){var e,r=t.event,n=t.target,i=t.axis,s=(r.changedTouches?r.changedTouches[0]:r).target,a=s._gsap||id.core.getCache(s),o=iJ();if(!a._isScrollT||o-a._isScrollT>2e3){for(;s&&s!==iy&&(s.scrollHeight<=s.clientHeight&&s.scrollWidth<=s.clientWidth||!(ab[(e=sO(s)).overflowY]||ab[e.overflowX]));)s=s.parentNode;a._isScroll=s&&s!==n&&!se(s)&&(ab[(e=sO(s)).overflowY]||ab[e.overflowX]),a._isScrollT=o}(a._isScroll||"x"===i)&&(r.stopPropagation(),r._gsapAllow=!0)},aw=function(t,e,r,n){return ip.create({target:t,capture:!0,debounce:!1,lockAxis:!0,type:e,onWheel:n=n&&aT,onPress:n,onDrag:n,onScroll:n,onEnable:function(){return r&&sz(im,ip.eventTypes[0],aM,!1,!0)},onDisable:function(){return sF(im,ip.eventTypes[0],aM,!0)}})},ak=/(input|label|select|textarea)/i,aM=function(t){var e=ak.test(t.target.tagName);(e||av)&&(t._gsapAllow=!0,av=e)},aO=function(t){sc(t)||(t={}),t.preventDefault=t.isNormalizer=t.allowClicks=!0,t.type||(t.type="wheel,touch"),t.debounce=!!t.debounce,t.id=t.id||"normalizer";var e,r,n,i,s,a,o,u,l=t,c=l.normalizeScrollX,f=l.momentum,h=l.allowNestedScroll,p=l.onRelease,d=ii(t.target)||iv,_=id.core.globals().ScrollSmoother,g=_&&_.get(),m=iN&&(t.content&&ii(t.content)||g&&!1!==t.content&&!g.smooth()&&g.content()),v=ia(d,ir),y=ia(d,ie),x=1,b=(ip.isTouch&&ig.visualViewport?ig.visualViewport.scale*ig.visualViewport.width:ig.outerWidth)/ig.innerWidth,T=0,w=su(f)?function(){return f(e)}:function(){return f||2.8},k=aw(d,t.type,!0,h),M=function(){return i=!1},O=i4,C=i4,E=function(){r=ss(d,ir),C=iw(+!!iN,r),c&&(O=iw(0,ss(d,ie))),n=s3},S=function(){m._gsap.y=i9(parseFloat(m._gsap.y)+v.offset)+"px",m.style.transform="matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, "+parseFloat(m._gsap.y)+", 0, 1)",v.offset=v.cacheID=0},A=function(){if(i){requestAnimationFrame(M);var t=i9(e.deltaY/2),r=C(v.v-t);if(m&&r!==v.v+v.offset){v.offset=r-v.v;var n=i9((parseFloat(m&&m._gsap.y)||0)-v.offset);m.style.transform="matrix3d(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, "+n+", 0, 1)",m._gsap.y=n+"px",v.cacheID=nK.cache,ae()}return!0}v.offset&&S(),i=!0},P=function(){E(),s.isActive()&&s.vars.scrollY>r&&(v()>r?s.progress(1)&&v(r):s.resetTo("scrollY",r))};return m&&id.set(m,{y:"+=0"}),t.ignoreCheck=function(t){return iN&&"touchmove"===t.type&&A(t)||x>1.05&&"touchstart"!==t.type||e.isGesturing||t.touches&&t.touches.length>1},t.onPress=function(){i=!1;var t=x;x=i9((ig.visualViewport&&ig.visualViewport.scale||1)/b),s.pause(),t!==x&&ax(d,x>1.01||!c&&"x"),a=y(),o=v(),E(),n=s3},t.onRelease=t.onGestureStart=function(t,e){if(v.offset&&S(),e){nK.cache++;var n,i,a=w();c&&(i=(n=y())+-(.05*a*t.velocityX)/.227,a*=ay(y,n,i,ss(d,ie)),s.vars.scrollX=O(i)),i=(n=v())+-(.05*a*t.velocityY)/.227,a*=ay(v,n,i,ss(d,ir)),s.vars.scrollY=C(i),s.invalidate().duration(a).play(.01),(iN&&s.vars.scrollY>=r||n>=r-1)&&id.to({},{onUpdate:P,duration:a})}else u.restart(!0);p&&p(t)},t.onWheel=function(){s._ts&&s.pause(),iJ()-T>1e3&&(n=0,T=iJ())},t.onChange=function(t,e,r,i,s){if(s3!==n&&E(),e&&c&&y(O(i[2]===e?a+(t.startX-t.x):y()+e-i[1])),r){v.offset&&S();var u=s[2]===r,l=u?o+t.startY-t.y:v()+r-s[1],f=C(l);u&&l!==f&&(o+=f-l),v(f)}(r||e)&&ae()},t.onEnable=function(){ax(d,!c&&"x"),am.addEventListener("refresh",P),sz(ig,"resize",P),v.smooth&&(v.target.style.scrollBehavior="auto",v.smooth=y.smooth=!1),k.enable()},t.onDisable=function(){ax(d,!0),sF(ig,"resize",P),am.removeEventListener("refresh",P),k.kill()},t.lockAxis=!1!==t.lockAxis,(e=new ip(t)).iOS=iN,iN&&!v()&&v(1),iN&&id.ticker.add(i4),u=e._dc,s=id.to(e,{ease:"power4",paused:!0,inherit:!1,scrollX:c?"+=0.1":"+=0",scrollY:"+=0.1",modifiers:{scrollY:ad(v,v(),function(){return s.pause()})},onUpdate:ae,onComplete:u.vars.onComplete}),e};am.sort=function(t){if(su(t))return sq.sort(t);var e=ig.pageYOffset||0;return am.getAll().forEach(function(t){return t._sortY=t.trigger?e+t.trigger.getBoundingClientRect().top:t.start+ig.innerHeight}),sq.sort(t||function(t,e){return -1e6*(t.vars.refreshPriority||0)+(t.vars.containerAnimation?1e6:t._sortY)-((e.vars.containerAnimation?1e6:e._sortY)+-1e6*(e.vars.refreshPriority||0))})},am.observe=function(t){return new ip(t)},am.normalizeScroll=function(t){if(void 0===t)return iI;if(!0===t&&iI)return iI.enable();if(!1===t){iI&&iI.kill(),iI=t;return}var e=t instanceof ip?t:aO(t);return iI&&iI.target===e.target&&iI.kill(),se(e.target)&&(iI=e),e},am.core={_getVelocityProp:io,_inputObserver:aw,_scrollers:nK,_proxies:nJ,bridge:{ss:function(){i1||sK("scrollStart"),i1=iJ()},ref:function(){return iO}}},st()&&id.registerPlugin(am),t.s(["ScrollTrigger",0,am],83495)}]); \ No newline at end of file diff --git a/build/_next/static/chunks/06n0m6ck5r8gy.js b/build/_next/static/chunks/06n0m6ck5r8gy.js new file mode 100644 index 0000000..a71123e --- /dev/null +++ b/build/_next/static/chunks/06n0m6ck5r8gy.js @@ -0,0 +1 @@ +(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,94909,(t,e,i)=>{"use strict";Object.defineProperty(i,"__esModule",{value:!0});var s={default:function(){return c},getImageProps:function(){return a}};for(var o in s)Object.defineProperty(i,o,{enumerable:!0,get:s[o]});let r=t.r(55682),n=t.r(8927),l=t.r(5500),h=r._(t.r(1948));function a(t){let{props:e}=(0,n.getImgProps)(t,{defaultLoader:h.default,imgConf:{deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qualities:[75],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!0}});for(let[t,i]of Object.entries(e))void 0===i&&delete e[t];return{props:e}}let c=l.Image},57688,(t,e,i)=>{e.exports=t.r(94909)},92599,t=>{"use strict";var e="1.3.23";function i(t,e,i){return Math.max(t,Math.min(e,i))}var s=class{isRunning=!1;value=0;from=0;to=0;currentTime=0;lerp;duration;easing;onUpdate;advance(t){if(!this.isRunning)return;let e=!1;if(this.duration&&this.easing){this.currentTime+=t;let s=i(0,this.currentTime/this.duration,1),o=(e=s>=1)?1:this.easing(s);this.value=this.from+(this.to-this.from)*o}else if(this.lerp){var s,o,r,n;this.value=(s=this.value,o=this.to,r=60*this.lerp,(1-(n=1-Math.exp(-r*t)))*s+n*o),Math.round(this.value)===Math.round(this.to)&&(this.value=this.to,e=!0)}else this.value=this.to,e=!0;e&&this.stop(),this.onUpdate?.(this.value,e)}stop(){this.isRunning=!1}fromTo(t,e,{lerp:i,duration:s,easing:o,onStart:r,onUpdate:n}){this.from=this.value=t,this.to=e,this.lerp=i,this.duration=s,this.easing=o,this.currentTime=0,this.isRunning=!0,r?.(),this.onUpdate=n}},o=class{width=0;height=0;scrollHeight=0;scrollWidth=0;debouncedResize;wrapperResizeObserver;contentResizeObserver;constructor(t,e,{autoResize:i=!0,debounce:s=250}={}){this.wrapper=t,this.content=e,i&&(this.debouncedResize=function(t,e){let i;return function(...s){clearTimeout(i),i=setTimeout(()=>{i=void 0,t.apply(this,s)},e)}}(this.resize,s),this.wrapper instanceof Window?window.addEventListener("resize",this.debouncedResize):(this.wrapperResizeObserver=new ResizeObserver(this.debouncedResize),this.wrapperResizeObserver.observe(this.wrapper)),this.contentResizeObserver=new ResizeObserver(this.debouncedResize),this.contentResizeObserver.observe(this.content)),this.resize()}destroy(){this.wrapperResizeObserver?.disconnect(),this.contentResizeObserver?.disconnect(),this.wrapper===window&&this.debouncedResize&&window.removeEventListener("resize",this.debouncedResize)}resize=()=>{this.onWrapperResize(),this.onContentResize()};onWrapperResize=()=>{this.wrapper instanceof Window?(this.width=window.innerWidth,this.height=window.innerHeight):(this.width=this.wrapper.clientWidth,this.height=this.wrapper.clientHeight)};onContentResize=()=>{this.wrapper instanceof Window?(this.scrollHeight=this.content.scrollHeight,this.scrollWidth=this.content.scrollWidth):(this.scrollHeight=this.wrapper.scrollHeight,this.scrollWidth=this.wrapper.scrollWidth)};get limit(){return{x:this.scrollWidth-this.width,y:this.scrollHeight-this.height}}},r=class{events={};emit(t,...e){let i=this.events[t]||[];for(let t=0,s=i.length;t{this.events[t]=this.events[t]?.filter(t=>e!==t)}}off(t,e){this.events[t]=this.events[t]?.filter(t=>e!==t)}destroy(){this.events={}}};let n=100/6,l={passive:!1};function h(t,e){return 1===t?n:2===t?e:1}var a=class{touchStart={x:0,y:0};lastDelta={x:0,y:0};window={width:0,height:0};emitter=new r;constructor(t,e={wheelMultiplier:1,touchMultiplier:1}){this.element=t,this.options=e,window.addEventListener("resize",this.onWindowResize),this.onWindowResize(),this.element.addEventListener("wheel",this.onWheel,l),this.element.addEventListener("touchstart",this.onTouchStart,l),this.element.addEventListener("touchmove",this.onTouchMove,l),this.element.addEventListener("touchend",this.onTouchEnd,l)}on(t,e){return this.emitter.on(t,e)}destroy(){this.emitter.destroy(),window.removeEventListener("resize",this.onWindowResize),this.element.removeEventListener("wheel",this.onWheel,l),this.element.removeEventListener("touchstart",this.onTouchStart,l),this.element.removeEventListener("touchmove",this.onTouchMove,l),this.element.removeEventListener("touchend",this.onTouchEnd,l)}onTouchStart=t=>{let{clientX:e,clientY:i}=t.targetTouches?t.targetTouches[0]:t;this.touchStart.x=e,this.touchStart.y=i,this.lastDelta={x:0,y:0},this.emitter.emit("scroll",{deltaX:0,deltaY:0,event:t})};onTouchMove=t=>{let{clientX:e,clientY:i}=t.targetTouches?t.targetTouches[0]:t,s=-(e-this.touchStart.x)*this.options.touchMultiplier,o=-(i-this.touchStart.y)*this.options.touchMultiplier;this.touchStart.x=e,this.touchStart.y=i,this.lastDelta={x:s,y:o},this.emitter.emit("scroll",{deltaX:s,deltaY:o,event:t})};onTouchEnd=t=>{this.emitter.emit("scroll",{deltaX:this.lastDelta.x,deltaY:this.lastDelta.y,event:t})};onWheel=t=>{let{deltaX:e,deltaY:i,deltaMode:s}=t,o=h(s,this.window.width),r=h(s,this.window.height);e*=o,i*=r,e*=this.options.wheelMultiplier,i*=this.options.wheelMultiplier,this.emitter.emit("scroll",{deltaX:e,deltaY:i,event:t})};onWindowResize=()=>{this.window={width:window.innerWidth,height:window.innerHeight}}};let c=t=>Math.min(1,1.001-2**(-10*t));var p=class{_isScrolling=!1;_isStopped=!1;_isLocked=!1;_preventNextNativeScrollEvent=!1;_resetVelocityTimeout=null;_rafId=null;isTouching;time=0;userData={};lastVelocity=0;velocity=0;direction=0;options;targetScroll;animatedScroll;animate=new s;emitter=new r;dimensions;virtualScroll;constructor({wrapper:t=window,content:i=document.documentElement,eventsTarget:s=t,smoothWheel:r=!0,syncTouch:n=!1,syncTouchLerp:l=.075,touchInertiaExponent:h=1.7,duration:p,easing:d,lerp:u=.1,infinite:m=!1,orientation:v="vertical",gestureOrientation:f="horizontal"===v?"both":"vertical",touchMultiplier:g=1,wheelMultiplier:w=1,autoResize:S=!0,prevent:y,virtualScroll:E,overscroll:b=!0,autoRaf:T=!1,anchors:z=!1,autoToggle:L=!1,allowNestedScroll:N=!1,__experimental__naiveDimensions:R=!1,naiveDimensions:O=R,stopInertiaOnNavigate:_=!1}={}){window.lenisVersion=e,window.lenis||(window.lenis={}),window.lenis.version=e,"horizontal"===v&&(window.lenis.horizontal=!0),!0===n&&(window.lenis.touch=!0),t&&t!==document.documentElement||(t=window),"number"==typeof p&&"function"!=typeof d?d=c:"function"==typeof d&&"number"!=typeof p&&(p=1),this.options={wrapper:t,content:i,eventsTarget:s,smoothWheel:r,syncTouch:n,syncTouchLerp:l,touchInertiaExponent:h,duration:p,easing:d,lerp:u,infinite:m,gestureOrientation:f,orientation:v,touchMultiplier:g,wheelMultiplier:w,autoResize:S,prevent:y,virtualScroll:E,overscroll:b,autoRaf:T,anchors:z,autoToggle:L,allowNestedScroll:N,naiveDimensions:O,stopInertiaOnNavigate:_},this.dimensions=new o(t,i,{autoResize:S}),this.updateClassName(),this.targetScroll=this.animatedScroll=this.actualScroll,this.options.wrapper.addEventListener("scroll",this.onNativeScroll),this.options.wrapper.addEventListener("scrollend",this.onScrollEnd,{capture:!0}),(this.options.anchors||this.options.stopInertiaOnNavigate)&&this.options.wrapper.addEventListener("click",this.onClick),this.options.wrapper.addEventListener("pointerdown",this.onPointerDown),this.virtualScroll=new a(s,{touchMultiplier:g,wheelMultiplier:w}),this.virtualScroll.on("scroll",this.onVirtualScroll),this.options.autoToggle&&(this.checkOverflow(),this.rootElement.addEventListener("transitionend",this.onTransitionEnd)),this.options.autoRaf&&(this._rafId=requestAnimationFrame(this.raf))}destroy(){this.emitter.destroy(),this.options.wrapper.removeEventListener("scroll",this.onNativeScroll),this.options.wrapper.removeEventListener("scrollend",this.onScrollEnd,{capture:!0}),this.options.wrapper.removeEventListener("pointerdown",this.onPointerDown),(this.options.anchors||this.options.stopInertiaOnNavigate)&&this.options.wrapper.removeEventListener("click",this.onClick),this.virtualScroll.destroy(),this.dimensions.destroy(),this.cleanUpClassName(),this._rafId&&cancelAnimationFrame(this._rafId)}on(t,e){return this.emitter.on(t,e)}off(t,e){return this.emitter.off(t,e)}onScrollEnd=t=>{t instanceof CustomEvent||"smooth"!==this.isScrolling&&!1!==this.isScrolling||t.stopPropagation()};dispatchScrollendEvent=()=>{this.options.wrapper.dispatchEvent(new CustomEvent("scrollend",{bubbles:this.options.wrapper===window,detail:{lenisScrollEnd:!0}}))};get overflow(){let t=this.isHorizontal?"overflow-x":"overflow-y";return getComputedStyle(this.rootElement)[t]}checkOverflow(){["hidden","clip"].includes(this.overflow)?this.internalStop():this.internalStart()}onTransitionEnd=t=>{t.propertyName?.includes("overflow")&&t.target===this.rootElement&&this.checkOverflow()};setScroll(t){this.isHorizontal?this.options.wrapper.scrollTo({left:t,behavior:"instant"}):this.options.wrapper.scrollTo({top:t,behavior:"instant"})}onClick=t=>{let e=t.composedPath().filter(t=>t instanceof HTMLAnchorElement&&t.href).map(t=>new URL(t.href)),i=new URL(window.location.href);if(this.options.anchors){let t=e.find(t=>i.host===t.host&&i.pathname===t.pathname&&t.hash);if(t){let e="object"==typeof this.options.anchors&&this.options.anchors?this.options.anchors:void 0,i=`#${t.hash.split("#")[1]}`;this.scrollTo(i,e);return}}if(this.options.stopInertiaOnNavigate&&e.some(t=>i.host===t.host&&i.pathname!==t.pathname))return void this.reset()};onPointerDown=t=>{1===t.button&&this.reset()};onVirtualScroll=t=>{if("function"==typeof this.options.virtualScroll&&!1===this.options.virtualScroll(t))return;let{deltaX:e,deltaY:i,event:s}=t;if(this.emitter.emit("virtual-scroll",{deltaX:e,deltaY:i,event:s}),s.ctrlKey||s.lenisStopPropagation)return;let o=s.type.includes("touch"),r=s.type.includes("wheel");this.isTouching="touchstart"===s.type||"touchmove"===s.type;let n=0===e&&0===i;if(this.options.syncTouch&&o&&"touchstart"===s.type&&n&&!this.isStopped&&!this.isLocked)return void this.reset();let l="vertical"===this.options.gestureOrientation&&0===i||"horizontal"===this.options.gestureOrientation&&0===e;if(n||l)return;let h=s.composedPath();h=h.slice(0,h.indexOf(this.rootElement));let a=this.options.prevent,c=Math.abs(e)>=Math.abs(i)?"horizontal":"vertical";if(h.find(t=>t instanceof HTMLElement&&("function"==typeof a&&a?.(t)||t.hasAttribute?.("data-lenis-prevent")||"vertical"===c&&t.hasAttribute?.("data-lenis-prevent-vertical")||"horizontal"===c&&t.hasAttribute?.("data-lenis-prevent-horizontal")||o&&t.hasAttribute?.("data-lenis-prevent-touch")||r&&t.hasAttribute?.("data-lenis-prevent-wheel")||this.options.allowNestedScroll&&this.hasNestedScroll(t,{deltaX:e,deltaY:i}))))return;if(this.isStopped||this.isLocked){s.cancelable&&s.preventDefault();return}if(!(this.options.syncTouch&&o||this.options.smoothWheel&&r)){this.isScrolling="native",this.animate.stop(),s.lenisStopPropagation=!0;return}let p=i;"both"===this.options.gestureOrientation?p=Math.abs(i)>Math.abs(e)?i:e:"horizontal"===this.options.gestureOrientation&&(p=e),(!this.options.overscroll||this.options.infinite||this.options.wrapper!==window&&this.limit>0&&(this.animatedScroll>0&&this.animatedScroll0||this.animatedScroll===this.limit&&i<0))&&(s.lenisStopPropagation=!0),s.cancelable&&s.preventDefault();let d=o&&this.options.syncTouch,u=o&&"touchend"===s.type;u&&(p=Math.sign(p)*Math.abs(this.velocity)**this.options.touchInertiaExponent),this.scrollTo(this.targetScroll+p,{programmatic:!1,...d?{lerp:u?this.options.syncTouchLerp:1}:{lerp:this.options.lerp,duration:this.options.duration,easing:this.options.easing}})};resize(){this.dimensions.resize(),this.animatedScroll=this.targetScroll=this.actualScroll,this.emit()}emit(){this.emitter.emit("scroll",this)}onNativeScroll=()=>{if(null!==this._resetVelocityTimeout&&(clearTimeout(this._resetVelocityTimeout),this._resetVelocityTimeout=null),this._preventNextNativeScrollEvent){this._preventNextNativeScrollEvent=!1;return}if(!1===this.isScrolling||"native"===this.isScrolling){let t=this.animatedScroll;this.animatedScroll=this.targetScroll=this.actualScroll,this.lastVelocity=this.velocity,this.velocity=this.animatedScroll-t,this.direction=Math.sign(this.animatedScroll-t),this.isStopped||(this.isScrolling="native"),this.emit(),0!==this.velocity&&(this._resetVelocityTimeout=setTimeout(()=>{this.lastVelocity=this.velocity,this.velocity=0,this.isScrolling=!1,this.emit()},400))}};reset(){this.isLocked=!1,this.isScrolling=!1,this.animatedScroll=this.targetScroll=this.actualScroll,this.lastVelocity=this.velocity=0,this.animate.stop()}start(){if(this.isStopped){if(this.options.autoToggle)return void this.rootElement.style.removeProperty("overflow");this.internalStart()}}internalStart(){this.isStopped&&(this.reset(),this.isStopped=!1,this.emit())}stop(){if(!this.isStopped){if(this.options.autoToggle)return void this.rootElement.style.setProperty("overflow","clip");this.internalStop()}}internalStop(){this.isStopped||(this.reset(),this.isStopped=!0,this.emit())}raf=t=>{let e=t-(this.time||t);this.time=t,this.animate.advance(.001*e),this.options.autoRaf&&(this._rafId=requestAnimationFrame(this.raf))};scrollTo(t,{offset:e=0,immediate:s=!1,lock:o=!1,programmatic:r=!0,lerp:n=r?this.options.lerp:void 0,duration:l=r?this.options.duration:void 0,easing:h=r?this.options.easing:void 0,onStart:a,onComplete:p,force:d=!1,userData:u}={}){if((this.isStopped||this.isLocked)&&!d)return;let m=t,v=e;if("string"==typeof m&&["top","left","start","#"].includes(m))m=0;else if("string"==typeof m&&["bottom","right","end"].includes(m))m=this.limit;else{let t=null;if("string"==typeof m?(t=document.querySelector(m))||("#top"===m?m=0:console.warn("Lenis: Target not found",m)):m instanceof HTMLElement&&m?.nodeType&&(t=m),t){if(this.options.wrapper!==window){let t=this.rootElement.getBoundingClientRect();v-=this.isHorizontal?t.left:t.top}let e=t.getBoundingClientRect(),i=getComputedStyle(t),s=this.isHorizontal?Number.parseFloat(i.scrollMarginLeft):Number.parseFloat(i.scrollMarginTop),o=getComputedStyle(this.rootElement),r=this.isHorizontal?Number.parseFloat(o.scrollPaddingLeft):Number.parseFloat(o.scrollPaddingTop);m=(this.isHorizontal?e.left:e.top)+this.animatedScroll-(Number.isNaN(s)?0:s)-(Number.isNaN(r)?0:r)}}if("number"==typeof m){if(m+=v,this.options.infinite){if(r){this.targetScroll=this.animatedScroll=this.scroll;let t=m-this.animatedScroll;t>this.limit/2?m-=this.limit:t<-this.limit/2&&(m+=this.limit)}}else m=i(0,m,this.limit);if(m===this.targetScroll){a?.(this),p?.(this);return}if(this.userData=u??{},s){this.animatedScroll=this.targetScroll=m,this.setScroll(this.scroll),this.reset(),this.preventNextNativeScrollEvent(),this.emit(),p?.(this),this.userData={},requestAnimationFrame(()=>{this.dispatchScrollendEvent()});return}r||(this.targetScroll=m),"number"==typeof l&&"function"!=typeof h?h=c:"function"==typeof h&&"number"!=typeof l&&(l=1),this.animate.fromTo(this.animatedScroll,m,{duration:l,easing:h,lerp:n,onStart:()=>{o&&(this.isLocked=!0),this.isScrolling="smooth",a?.(this)},onUpdate:(t,e)=>{this.isScrolling="smooth",this.lastVelocity=this.velocity,this.velocity=t-this.animatedScroll,this.direction=Math.sign(this.velocity),this.animatedScroll=t,this.setScroll(this.scroll),r&&(this.targetScroll=t),e||this.emit(),e&&(this.reset(),this.emit(),p?.(this),this.userData={},requestAnimationFrame(()=>{this.dispatchScrollendEvent()}),this.preventNextNativeScrollEvent())}})}}preventNextNativeScrollEvent(){this._preventNextNativeScrollEvent=!0,requestAnimationFrame(()=>{this._preventNextNativeScrollEvent=!1})}hasNestedScroll(t,{deltaX:e,deltaY:i}){let s,o,r,n,l,h,a,c,p,d,u,m,v,f,g,w,S=Date.now();t._lenis||(t._lenis={});let y=t._lenis;if(S-(y.time??0)>2e3){y.time=Date.now();let e=window.getComputedStyle(t);if(y.computedStyle=e,s=["auto","overlay","scroll"].includes(e.overflowX),o=["auto","overlay","scroll"].includes(e.overflowY),l=["auto"].includes(e.overscrollBehaviorX),h=["auto"].includes(e.overscrollBehaviorY),y.hasOverflowX=s,y.hasOverflowY=o,!(s||o))return!1;a=t.scrollWidth,c=t.scrollHeight,p=t.clientWidth,d=t.clientHeight,r=a>p,n=c>d,y.isScrollableX=r,y.isScrollableY=n,y.scrollWidth=a,y.scrollHeight=c,y.clientWidth=p,y.clientHeight=d,y.hasOverscrollBehaviorX=l,y.hasOverscrollBehaviorY=h}else r=y.isScrollableX,n=y.isScrollableY,s=y.hasOverflowX,o=y.hasOverflowY,a=y.scrollWidth,c=y.scrollHeight,p=y.clientWidth,d=y.clientHeight,l=y.hasOverscrollBehaviorX,h=y.hasOverscrollBehaviorY;if(!(s&&r||o&&n))return!1;let E=Math.abs(e)>=Math.abs(i)?"horizontal":"vertical";if("horizontal"===E)u=Math.round(t.scrollLeft),m=a-p,v=e,f=s,g=r,w=l;else{if("vertical"!==E)return!1;u=Math.round(t.scrollTop),m=c-d,v=i,f=o,g=n,w=h}return!w&&(u>=m||u<=0)||(v>0?u0)&&f&&g}get rootElement(){return this.options.wrapper===window?document.documentElement:this.options.wrapper}get limit(){return this.options.naiveDimensions?this.isHorizontal?this.rootElement.scrollWidth-this.rootElement.clientWidth:this.rootElement.scrollHeight-this.rootElement.clientHeight:this.dimensions.limit[this.isHorizontal?"x":"y"]}get isHorizontal(){return"horizontal"===this.options.orientation}get actualScroll(){let t=this.options.wrapper;return this.isHorizontal?t.scrollX??t.scrollLeft:t.scrollY??t.scrollTop}get scroll(){var t;return this.options.infinite?(this.animatedScroll%(t=this.limit)+t)%t:this.animatedScroll}get progress(){return 0===this.limit?1:this.scroll/this.limit}get isScrolling(){return this._isScrolling}set isScrolling(t){this._isScrolling!==t&&(this._isScrolling=t,this.updateClassName())}get isStopped(){return this._isStopped}set isStopped(t){this._isStopped!==t&&(this._isStopped=t,this.updateClassName())}get isLocked(){return this._isLocked}set isLocked(t){this._isLocked!==t&&(this._isLocked=t,this.updateClassName())}get isSmooth(){return"smooth"===this.isScrolling}get className(){let t="lenis";return this.options.autoToggle&&(t+=" lenis-autoToggle"),this.isStopped&&(t+=" lenis-stopped"),this.isLocked&&(t+=" lenis-locked"),this.isScrolling&&(t+=" lenis-scrolling"),"smooth"===this.isScrolling&&(t+=" lenis-smooth"),t}updateClassName(){this.cleanUpClassName(),this.className.split(" ").forEach(t=>{this.rootElement.classList.add(t)})}cleanUpClassName(){for(let t of Array.from(this.rootElement.classList))("lenis"===t||t.startsWith("lenis-"))&&this.rootElement.classList.remove(t)}};t.s(["default",0,p])}]); \ No newline at end of file diff --git a/build/_next/static/chunks/074ch-b_0x~v-.js b/build/_next/static/chunks/074ch-b_0x~v-.js new file mode 100644 index 0000000..c5ff7fc --- /dev/null +++ b/build/_next/static/chunks/074ch-b_0x~v-.js @@ -0,0 +1,702 @@ +(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,18566,(e,t,i)=>{t.exports=e.r(76562)},82637,e=>{"use strict";var t=e.i(43476),i=e.i(71645);let n=(0,i.createContext)(null);e.s(["HeaderUIProvider",0,function({children:e}){let[l,a]=(0,i.useState)(!1),[o,r]=(0,i.useState)(!1),s=(0,i.useCallback)(()=>{a(e=>!e),r(!1)},[]),d=(0,i.useCallback)(()=>{r(e=>!e),a(!1)},[]),c=(0,i.useCallback)(()=>{a(!1),r(!1)},[]);return(0,t.jsx)(n.Provider,{value:{isMenuOpen:l,isSidebarOpen:o,toggleMenu:s,toggleSidebar:d,closeAll:c},children:e})},"useHeaderUI",0,function(){let e=(0,i.useContext)(n);if(!e)throw Error("useHeaderUI must be used inside ");return e}])},3374,e=>{"use strict";var t=e.i(43476),i=e.i(71645),n=e.i(22016),l=e.i(57688),a=e.i(18566),o=e.i(82637);let r={"/":"home","/how-it-works":"how-it-works","/miletruth":"miletruth","/solutions":"solutions","/doormile-wings":"doormile-wings","/empowerment":"entarpreneurship","/express":"express","/about-us":"about","/blog":"blogs"},s={home:["home"],"how-it-works":["how-it-works","how-its-works"],miletruth:["miletruth"],solutions:["solutions"],"doormile-wings":["doormile-wings"],entarpreneurship:["entarpreneurship"],blogs:["blogs"],company:["blogs","how-it-works","about"]};e.s(["default",0,function(){let e=(0,a.usePathname)(),{isMenuOpen:d,isSidebarOpen:c,toggleMenu:m,toggleSidebar:h,closeAll:p}=(0,o.useHeaderUI)(),u=r[e]??"",g=e=>(s[e]??[]).includes(u)?" active":"",f=(t,i,n,l=!1)=>{if(l&&_(),e!==i)return;t.preventDefault();let a=`${i}#${n}`;`${window.location.pathname}${window.location.hash}`!==a&&window.history.pushState(null,"",a),requestAnimationFrame(()=>{let e;(e=document.getElementById(n))?e.scrollIntoView({behavior:"smooth",block:"start"}):window.scrollTo({top:0,behavior:"smooth"})})},[w,x]=(0,i.useState)(!1),[b,v]=(0,i.useState)(!1),[y,j]=(0,i.useState)(!1),[k,N]=(0,i.useState)(!1),_=()=>{N(!1),p()};(0,i.useEffect)(()=>{let e=requestAnimationFrame(()=>{x(!0)});return()=>cancelAnimationFrame(e)},[]),(0,i.useEffect)(()=>{let e=null,t=()=>{null===e&&(e=requestAnimationFrame(()=>{v(window.scrollY>50),e=null}))};return t(),window.addEventListener("scroll",t),()=>{window.removeEventListener("scroll",t),null!==e&&cancelAnimationFrame(e)}},[]);let C=["elementor-element","elementor-element-466de1b","e-con-full","sticky-container-on","e-flex","cut-corner-no","e-con","e-parent","header-hide-until-scroll",w?"header-visible-scrolled":"",b?"dm-header-scrolled":""].filter(Boolean).join(" ");return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsxs)("header",{id:"masthead",itemScope:!0,itemType:"https://schema.org/WPHeader",children:[(0,t.jsx)("p",{className:"main-title bhf-hidden",itemProp:"headline",children:(0,t.jsx)(n.default,{href:"/",title:"Doormile",rel:"home",children:"Doormile"})}),(0,t.jsx)("div",{"data-elementor-type":"wp-post","data-elementor-id":"5180",className:"elementor elementor-5180",children:(0,t.jsxs)("div",{className:C,"data-id":"466de1b","data-element_type":"container","data-settings":'{"position":"absolute"}',style:"/"!==e||w?void 0:{opacity:0,visibility:"hidden"},children:[(0,t.jsx)("div",{className:"elementor-element elementor-element-e052838 e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"e052838","data-element_type":"container",children:(0,t.jsxs)("div",{className:"elementor-element elementor-element-d681ece e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"d681ece","data-element_type":"container",children:[(0,t.jsxs)("div",{className:"elementor-element elementor-element-472172e e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"472172e","data-element_type":"container",children:[(0,t.jsx)("div",{className:"elementor-element elementor-element-2f31137 elementor-hidden-laptop elementor-hidden-tablet_extra elementor-hidden-tablet elementor-hidden-mobile_extra elementor-hidden-mobile elementor-widget elementor-widget-logico_slide_sidebar","data-id":"2f31137","data-element_type":"widget","data-widget_type":"logico_slide_sidebar.default",children:(0,t.jsxs)("div",{className:"elementor-widget-container",children:[(0,t.jsx)("div",{className:"logico-slide-sidebar-widget",children:(0,t.jsx)("div",{className:"dropdown-trigger","data-id":"2f31137",onClick:h,children:(0,t.jsx)("span",{className:"dropdown-trigger-icon"})})}),(0,t.jsxs)("div",{style:{zIndex:1e5},className:`slide-sidebar-wrapper slide-sidebar-position-left${c?" active":""}`,id:"side-panel-2f31137",children:[(0,t.jsx)("div",{className:"slide-sidebar-close",onClick:p}),(0,t.jsxs)("div",{className:"slide-sidebar",children:[(0,t.jsx)("div",{className:"slide-sidebar-header",children:(0,t.jsx)("figure",{className:"wp-block-image size-full is-resized",children:(0,t.jsx)(l.default,{width:305,height:58,src:"/images/doormile-logo.png",alt:"Doormile logo",className:"wp-image-5851",style:{width:"210px",height:"auto"},sizes:"(max-width: 305px) 100vw, 305px"})})}),(0,t.jsx)("div",{className:"slide-sidebar-content",tabIndex:0,role:"region","aria-label":"Menu content",children:(0,t.jsx)("div",{id:"block-37",className:"widget widget_block",children:(0,t.jsx)("div",{className:"widget-wrapper",children:(0,t.jsxs)("div",{className:"dm-block-group is-layout-constrained dm-block-group-is-layout-constrained",children:[(0,t.jsx)("div",{className:"wp-block-title",children:(0,t.jsx)("h6",{className:"wp-block-heading has-text-font-font-family",style:{fontSize:"18px",fontStyle:"normal",fontWeight:700,letterSpacing:"0px",textTransform:"none"},children:"Address"})}),(0,t.jsx)("h6",{className:"wp-block-heading has-text-font-font-family",style:{fontSize:"14px",fontStyle:"normal",fontWeight:700,letterSpacing:"0px",textTransform:"none"},children:"Hyderabad"}),(0,t.jsxs)("p",{children:["5th Floor, Vision Ultima,",(0,t.jsx)("br",{}),"Street No.3, Jayabheri Enclave,",(0,t.jsx)("br",{}),"Gachibowli, Hyderabad,",(0,t.jsx)("br",{}),"Telangana 500032."]}),(0,t.jsx)("div",{style:{height:"12px"},"aria-hidden":"true",className:"wp-block-spacer"}),(0,t.jsx)("h6",{className:"wp-block-heading has-text-font-font-family",style:{fontSize:"14px",fontStyle:"normal",fontWeight:700,letterSpacing:"0px",textTransform:"none"},children:"Coimbatore"}),(0,t.jsxs)("p",{children:["Mayflower Valencia,",(0,t.jsx)("br",{}),"Near Nava India Bus Stop,",(0,t.jsx)("br",{}),"Avinashi Road,",(0,t.jsx)("br",{}),"Udayampalayam,",(0,t.jsx)("br",{}),"Tamil Nadu 641037."]}),(0,t.jsx)("div",{style:{height:"12px"},"aria-hidden":"true",className:"wp-block-spacer"}),(0,t.jsx)("h6",{className:"wp-block-heading has-text-font-font-family",style:{fontSize:"14px",fontStyle:"normal",fontWeight:700,letterSpacing:"0px",textTransform:"none"},children:"Bengaluru"}),(0,t.jsxs)("p",{children:["C612, 6th Floor,",(0,t.jsx)("br",{}),"Trifecta Starlight,",(0,t.jsx)("br",{}),"ITPL Road,",(0,t.jsx)("br",{}),"Garudacharapalya,",(0,t.jsx)("br",{}),"Mahadevapura,",(0,t.jsx)("br",{}),"Bangalore 560048,",(0,t.jsx)("br",{}),"Karnataka, India."]}),(0,t.jsx)("div",{style:{height:"3px"},"aria-hidden":"true",className:"wp-block-spacer"}),(0,t.jsx)("div",{className:"wp-block-title",children:(0,t.jsx)("h6",{className:"wp-block-heading has-text-font-font-family",style:{fontSize:"18px",fontStyle:"normal",fontWeight:700,letterSpacing:"0px",textTransform:"none"},children:"Contact Us"})}),(0,t.jsx)("p",{children:"Tel : +91 86886 97941"}),(0,t.jsx)("div",{style:{height:"3px"},"aria-hidden":"true",className:"wp-block-spacer"}),(0,t.jsx)("div",{className:"wp-block-title",children:(0,t.jsx)("h6",{className:"wp-block-heading has-text-font-font-family",style:{fontSize:"18px",fontStyle:"normal",fontWeight:700,letterSpacing:"0px",textTransform:"none"},children:"Email"})}),(0,t.jsx)("p",{children:(0,t.jsx)("a",{href:"mailto:care@doormile.com","data-wplink-edit":"true",children:"care@doormile.com"})}),(0,t.jsx)("div",{style:{height:"3px"},"aria-hidden":"true",className:"wp-block-spacer"}),(0,t.jsxs)("ul",{className:"wp-block-social-links has-icon-color is-style-logos-only has-background is-layout-flex wp-block-social-links-is-layout-flex",style:{backgroundColor:"#1f1f1f"},children:[(0,t.jsx)("li",{style:{color:"#ffffff"},className:"wp-social-link wp-social-link-facebook has-white-color wp-block-social-link",children:(0,t.jsxs)("a",{rel:"noopener nofollow",target:"_blank",href:"https://www.facebook.com/",className:"wp-block-social-link-anchor",children:[(0,t.jsx)("svg",{width:"24",height:"24",viewBox:"0 0 24 24",version:"1.1",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",children:(0,t.jsx)("path",{d:"M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z"})}),(0,t.jsx)("span",{className:"wp-block-social-link-label screen-reader-text",children:"Facebook"})]})}),(0,t.jsx)("li",{style:{color:"#ffffff"},className:"wp-social-link wp-social-link-x has-white-color wp-block-social-link",children:(0,t.jsxs)("a",{rel:"noopener nofollow",target:"_blank",href:"https://x.com/",className:"wp-block-social-link-anchor",children:[(0,t.jsx)("svg",{width:"24",height:"24",viewBox:"0 0 24 24",version:"1.1",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",children:(0,t.jsx)("path",{d:"M13.982 10.622 20.54 3h-1.554l-5.693 6.618L8.745 3H3.5l6.876 10.007L3.5 21h1.554l6.012-6.989L15.868 21h5.245l-7.131-10.378Zm-2.128 2.474-.697-.997-5.543-7.93H8l4.474 6.4.697.996 5.815 8.318h-2.387l-4.745-6.787Z"})}),(0,t.jsx)("span",{className:"wp-block-social-link-label screen-reader-text",children:"X"})]})}),(0,t.jsx)("li",{style:{color:"#ffffff"},className:"wp-social-link wp-social-link-linkedin has-white-color wp-block-social-link",children:(0,t.jsxs)("a",{rel:"noopener nofollow",target:"_blank",href:"https://www.linkedin.com/",className:"wp-block-social-link-anchor",children:[(0,t.jsx)("svg",{width:"24",height:"24",viewBox:"0 0 24 24",version:"1.1",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",children:(0,t.jsx)("path",{d:"M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z"})}),(0,t.jsx)("span",{className:"wp-block-social-link-label screen-reader-text",children:"LinkedIn"})]})}),(0,t.jsx)("li",{style:{color:"#ffffff"},className:"wp-social-link wp-social-link-youtube has-white-color wp-block-social-link",children:(0,t.jsxs)("a",{rel:"noopener nofollow",target:"_blank",href:"https://www.youtube.com/",className:"wp-block-social-link-anchor",children:[(0,t.jsx)("svg",{width:"24",height:"24",viewBox:"0 0 24 24",version:"1.1",xmlns:"http://www.w3.org/2000/svg","aria-hidden":"true",focusable:"false",children:(0,t.jsx)("path",{d:"M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z"})}),(0,t.jsx)("span",{className:"wp-block-social-link-label screen-reader-text",children:"YouTube"})]})})]})]})})})}),(0,t.jsx)("div",{className:"slide-sidebar-cta",children:(0,t.jsx)("div",{className:"wp-block-buttons is-layout-flex wp-block-buttons-is-layout-flex",children:(0,t.jsx)("div",{className:"wp-block-button is-style-simple is-style-theme",children:(0,t.jsx)(n.default,{href:"/contact",className:"wp-block-button__link wp-element-button",style:{borderRadius:"10px"},children:"Get in touch"})})})})]})]})]})}),(0,t.jsx)("div",{className:"elementor-element elementor-element-846e53d elementor-widget elementor-widget-site-logo","data-id":"846e53d","data-element_type":"widget","data-widget_type":"site-logo.default",children:(0,t.jsx)("div",{className:"elementor-widget-container",children:(0,t.jsx)("div",{className:"hfe-site-logo",children:(0,t.jsx)(n.default,{"data-elementor-open-lightbox":"",className:"elementor-clickable",href:"/",children:(0,t.jsx)("div",{className:"hfe-site-logo-set",children:(0,t.jsxs)("div",{className:"hfe-site-logo-container",children:[(0,t.jsx)(l.default,{width:400,height:76,className:"hfe-site-logo-img logo-desktop elementor-animation-",src:"/images/doormile-white.png",alt:"doormile-logo",priority:!0}),(0,t.jsx)(l.default,{width:400,height:76,className:"hfe-site-logo-img logo-mobile elementor-animation-",src:"/images/doormile-black.png",alt:"doormile-logo",priority:!0})]})})})})})})]}),(0,t.jsx)("div",{className:"elementor-element elementor-element-e44ee7e e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"e44ee7e","data-element_type":"container",children:(0,t.jsx)("div",{className:"elementor-element elementor-element-0b7bf6f logico-breakpoint-laptop elementor-widget__width-auto elementor-widget elementor-widget-logico_navigation_menu","data-id":"0b7bf6f","data-element_type":"widget","data-widget_type":"logico_navigation_menu.default",children:(0,t.jsxs)("div",{className:"elementor-widget-container",children:[(0,t.jsx)("div",{className:"header-menu-container",children:(0,t.jsx)("nav",{children:(0,t.jsxs)("ul",{id:"menu-main-menu",className:"main-menu",children:[(0,t.jsx)("li",{id:"menu-item-10508",className:`menu-item menu-item-type-custom menu-item-object-custom menu-item-10508${g("home")}`,children:(0,t.jsx)(n.default,{href:"/#home",onClick:e=>f(e,"/","home"),children:"Home"})}),(0,t.jsx)("li",{id:"menu-item-10509",className:`menu-item menu-item-type-custom menu-item-object-custom menu-item-10509${g("doormile-wings")}`,children:(0,t.jsx)(n.default,{href:"/doormile-wings",prefetch:!0,children:"Wings"})}),(0,t.jsx)("li",{id:"menu-item-10510",className:`menu-item menu-item-type-custom menu-item-object-custom menu-item-10510${g("miletruth")}`,children:(0,t.jsx)(n.default,{href:"/miletruth#miletruth",onClick:e=>f(e,"/miletruth","miletruth"),children:"MileTruth™ AI"})}),(0,t.jsx)("li",{id:"menu-item-10511",className:`menu-item menu-item-type-custom menu-item-object-custom menu-item-10511${g("solutions")}`,children:(0,t.jsx)(n.default,{href:"/solutions",prefetch:!0,children:"Solutions"})}),(0,t.jsx)("li",{id:"menu-item-10513",className:`menu-item menu-item-type-custom menu-item-object-custom menu-item-10513${g("entarpreneurship")}`,children:(0,t.jsx)(n.default,{href:"/empowerment",prefetch:!0,children:"Entrepreneurship"})}),(0,t.jsxs)("li",{id:"menu-item-10535",className:`menu-item menu-item-type-custom menu-item-has-children menu-item-10535${g("company")}`,onMouseEnter:()=>j(!0),onMouseLeave:()=>j(!1),onKeyDown:e=>{"Escape"===e.key&&(j(!1),e.currentTarget.querySelector(":scope > a")?.focus())},onBlur:e=>{e.currentTarget.contains(e.relatedTarget)||j(!1)},children:[(0,t.jsx)("a",{href:"#","aria-haspopup":"true","aria-expanded":y,onFocus:()=>j(!0),onClick:e=>{e.preventDefault(),j(e=>!e)},children:"Company"}),(0,t.jsxs)("ul",{className:"dm-solutions-dropdown",children:[(0,t.jsx)("li",{className:"about"===u?"dm-child-active":"",children:(0,t.jsx)(n.default,{href:"/about-us#about",onClick:e=>{j(!1),f(e,"/about-us","about")},children:"About"})}),(0,t.jsx)("li",{className:"blogs"===u?"dm-child-active":"",children:(0,t.jsx)(n.default,{href:"/blog#blogs",onClick:e=>{j(!1),f(e,"/blog","blogs")},children:"Blogs"})}),(0,t.jsx)("li",{className:"how-it-works"===u?"dm-child-active":"",children:(0,t.jsx)(n.default,{href:"/how-it-works#how-it-works",onClick:e=>{j(!1),f(e,"/how-it-works","how-it-works")},children:"How It Works"})})]})]})]})})}),(0,t.jsx)("div",{className:"menu-trigger","data-id":"0b7bf6f",onClick:()=>{N(!1),m()},children:(0,t.jsx)("span",{className:"menu-trigger-icon",children:(0,t.jsxs)("span",{className:"hamburger",children:[(0,t.jsx)("span",{}),(0,t.jsx)("span",{}),(0,t.jsx)("span",{})]})})}),(0,t.jsxs)("div",{style:{zIndex:1e5},className:`mobile-header-menu-container${d?" active":""}`,id:"mobile-header-0b7bf6f",children:[(0,t.jsx)("div",{className:"mobile-header-row",children:(0,t.jsxs)("div",{className:"header-icons-container",children:[(0,t.jsx)("div",{className:"header-icon login-logout",children:(0,t.jsx)("a",{href:"#",title:"Login/Register",className:"link-login"})}),(0,t.jsx)("div",{className:"header-icon menu-close",onClick:_,children:(0,t.jsx)("span",{className:"menu-close-icon"})})]})}),(0,t.jsx)("nav",{children:(0,t.jsxs)("ul",{id:"menu-main-menu-1",className:"main-menu",children:[(0,t.jsx)("li",{className:`menu-item menu-item-type-custom menu-item-object-custom menu-item-10508${g("home")}`,children:(0,t.jsx)(n.default,{href:"/#home",onClick:e=>f(e,"/","home",!0),children:"Home"})}),(0,t.jsx)("li",{className:`menu-item menu-item-type-custom menu-item-object-custom menu-item-10509${g("doormile-wings")}`,children:(0,t.jsx)(n.default,{href:"/doormile-wings",prefetch:!0,onClick:_,children:"Wings"})}),(0,t.jsx)("li",{className:`menu-item menu-item-type-custom menu-item-object-custom menu-item-10510${g("miletruth")}`,children:(0,t.jsx)(n.default,{href:"/miletruth#miletruth",onClick:e=>f(e,"/miletruth","miletruth",!0),children:"MileTruth™ AI"})}),(0,t.jsx)("li",{className:`menu-item menu-item-type-custom menu-item-object-custom menu-item-10511${g("solutions")}`,children:(0,t.jsx)(n.default,{href:"/solutions",prefetch:!0,onClick:_,children:"Solutions"})}),(0,t.jsx)("li",{className:`menu-item menu-item-type-custom menu-item-object-custom menu-item-10513${g("entarpreneurship")}`,children:(0,t.jsx)(n.default,{href:"/empowerment",prefetch:!0,onClick:_,children:"Entrepreneurship"})}),(0,t.jsxs)("li",{className:`menu-item menu-item-type-custom menu-item-10535 dm-mobile-solutions${g("company")}${k?" dm-accordion-open":""}`,children:[(0,t.jsxs)("div",{className:"dm-mobile-solutions-row",children:[(0,t.jsx)("a",{href:"#",onClick:e=>{e.preventDefault(),N(e=>!e)},children:"Company"}),(0,t.jsx)("button",{type:"button",className:"dm-mobile-solutions-toggle","aria-label":k?"Close Company menu":"Open Company menu","aria-haspopup":"true","aria-expanded":k,onClick:()=>N(e=>!e),children:(0,t.jsx)("span",{className:"dm-accordion-chevron","aria-hidden":"true"})})]}),(0,t.jsxs)("ul",{className:"dm-mobile-solutions-panel",children:[(0,t.jsx)("li",{className:"about"===u?"dm-child-active":"",children:(0,t.jsx)(n.default,{href:"/about-us#about",onClick:e=>f(e,"/about-us","about",!0),children:"About"})}),(0,t.jsx)("li",{className:"blogs"===u?"dm-child-active":"",children:(0,t.jsx)(n.default,{href:"/blog#blogs",onClick:e=>f(e,"/blog","blogs",!0),children:"Blogs"})}),(0,t.jsx)("li",{className:"how-it-works"===u?"dm-child-active":"",children:(0,t.jsx)(n.default,{href:"/how-it-works#how-it-works",onClick:e=>f(e,"/how-it-works","how-it-works",!0),children:"How It Works"})})]})]})]})}),(0,t.jsxs)("div",{className:"header-mobile-contacts",children:[(0,t.jsxs)("div",{className:"contact-item contact-item-phone",children:[(0,t.jsx)("span",{className:"contact-item-label",children:"Phone"}),(0,t.jsx)("div",{className:"contact-item-value",children:(0,t.jsx)("p",{children:"Tel : +91 86886 97941"})})]}),(0,t.jsxs)("div",{className:"contact-item contact-item-email",children:[(0,t.jsx)("span",{className:"contact-item-label",children:"Email"}),(0,t.jsx)("div",{className:"contact-item-value",children:(0,t.jsx)("p",{children:(0,t.jsx)("a",{href:"mailto:care@doormile.com","data-wplink-edit":"true",children:"care@doormile.com"})})})]})]}),(0,t.jsx)("div",{className:"header-mobile-socials",children:(0,t.jsxs)("ul",{className:"mobile-menu-socials wrapper-socials",children:[(0,t.jsx)("li",{children:(0,t.jsx)("a",{href:"https://www.facebook.com/",target:"_blank","aria-label":"Facebook",rel:"noreferrer",children:(0,t.jsx)("svg",{"aria-hidden":"true",width:"18",height:"18",viewBox:"0 0 320 512",xmlns:"http://www.w3.org/2000/svg",fill:"currentColor",children:(0,t.jsx)("path",{d:"M279.14 288l14.22-92.66h-88.91v-60.13c0-25.35 12.42-50.06 52.24-50.06h40.42V6.26S260.43 0 225.36 0c-73.22 0-121.08 44.38-121.08 124.72v70.62H22.89V288h81.39v224h100.17V288z"})})})}),(0,t.jsx)("li",{children:(0,t.jsx)("a",{href:"https://x.com/",target:"_blank","aria-label":"X (Twitter)",rel:"noreferrer",children:(0,t.jsx)("svg",{"aria-hidden":"true",width:"18",height:"18",viewBox:"0 0 512 512",xmlns:"http://www.w3.org/2000/svg",fill:"currentColor",children:(0,t.jsx)("path",{d:"M389.2 48h70.6L305.6 224.2 487 464H345L233.7 318.6 106.5 464H35.8L200.7 275.5 26.8 48H172.4L272.9 180.9 389.2 48zM364.4 421.8h39.1L151.1 88h-42L364.4 421.8z"})})})}),(0,t.jsx)("li",{children:(0,t.jsx)("a",{href:"https://www.linkedin.com/",target:"_blank","aria-label":"LinkedIn",rel:"noreferrer",children:(0,t.jsx)("svg",{"aria-hidden":"true",width:"18",height:"18",viewBox:"0 0 448 512",xmlns:"http://www.w3.org/2000/svg",fill:"currentColor",children:(0,t.jsx)("path",{d:"M100.28 448H7.4V148.9h92.88zM53.79 108.1C24.09 108.1 0 83.5 0 53.8a53.79 53.79 0 0 1 107.58 0c0 29.7-24.1 54.3-53.79 54.3zM447.9 448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29 0-55.69 37.7-55.69 76.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5 42.69-48.3 87.88-48.3 94 0 111.28 61.9 111.28 142.3V448z"})})})}),(0,t.jsx)("li",{children:(0,t.jsx)("a",{href:"https://www.youtube.com/",target:"_blank","aria-label":"YouTube",rel:"noreferrer",children:(0,t.jsx)("svg",{"aria-hidden":"true",width:"18",height:"18",viewBox:"0 0 576 512",xmlns:"http://www.w3.org/2000/svg",fill:"currentColor",children:(0,t.jsx)("path",{d:"M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z"})})})})]})}),(0,t.jsx)("div",{className:"header-mobile-button",children:(0,t.jsx)(n.default,{className:"logico-alter-button",href:"/contact",children:"Get in Touch"})})]})]})})})]})}),(0,t.jsx)("div",{className:"elementor-element elementor-element-f961133 e-con-full elementor-hidden-laptop elementor-hidden-tablet_extra elementor-hidden-tablet elementor-hidden-mobile_extra elementor-hidden-mobile e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"f961133","data-element_type":"container",children:(0,t.jsx)("div",{className:"elementor-element elementor-element-cabdb09 elementor-widget elementor-widget-logico_header_button","data-id":"cabdb09","data-element_type":"widget","data-widget_type":"logico_header_button.default",children:(0,t.jsx)("div",{className:"elementor-widget-container",children:(0,t.jsx)("div",{className:"header-button-container",children:(0,t.jsx)(n.default,{href:"/contact",className:"header-button header-button-animation-fade",children:"Contact Us"})})})})})]})})]}),(0,t.jsx)("style",{suppressHydrationWarning:!0,dangerouslySetInnerHTML:{__html:` + /* ── Off-canvas menu: full-height flex column ── + Header (logo) at top, scrollable content in the middle, and the + "Get in touch" CTA pinned at the bottom — so the panel stays + usable however much content (e.g. multiple office addresses) it + holds. Scoped to #side-panel-2f31137; no other sidebar is touched. + Width, colors, the slide-in animation, and open/close behaviour + (driven by the .active class on the wrapper) are all unchanged. */ + #side-panel-2f31137 .slide-sidebar { + display: flex !important; + flex-direction: column !important; + height: 100% !important; + padding: 0 !important; /* the three sections own their padding */ + overflow: hidden !important; /* scrolling lives on the content area */ + } + /* Fit the *visible* viewport. The panel height is calc(100vh - 20px), + but on mobile 100vh is the larger, URL-bar-inclusive height, which + pushed the bottom of the scroll list + the CTA below the fold and + made scrolling appear broken. dvh tracks the actually-visible area; + vh is kept as a fallback for older browsers. */ + #side-panel-2f31137.slide-sidebar-wrapper { + height: calc(100vh - 20px); + height: calc(100dvh - 20px) !important; + } + #side-panel-2f31137 .slide-sidebar-header { + flex: 0 0 auto; + padding: 52px 36px 18px; /* top clears the floating close button */ + text-align: center; /* centre the logo */ + } + #side-panel-2f31137 .slide-sidebar-header figure { + margin: 0; + text-align: center; + } + #side-panel-2f31137 .slide-sidebar-header img { + display: inline-block; /* centred by the header's text-align */ + } + #side-panel-2f31137 .slide-sidebar-content { + flex: 1 1 auto; + min-height: 0; /* let the flex child shrink so it can scroll */ + overflow-y: auto; + overflow-x: hidden; + -webkit-overflow-scrolling: touch; /* momentum scroll on iOS */ + overscroll-behavior: contain; /* don't chain scroll to the page */ + padding: 18px 60px 8px; /* top gap below the logo header */ + } + #side-panel-2f31137 .slide-sidebar-content:focus-visible { + outline: none; /* container is scroll-focusable, not a control */ + } + #side-panel-2f31137 .slide-sidebar-cta { + flex: 0 0 auto; + padding: 16px 60px 36px; + } + /* Compact, readable address blocks (tighter line + lead-in than the + default 1.75em body spacing). */ + #side-panel-2f31137 .slide-sidebar-content p { + line-height: 1.5; + margin-top: 4px; + } + /* Larger social icons — the logos-only block style renders them at 18px. */ + #side-panel-2f31137 .wp-block-social-links.is-style-logos-only .wp-block-social-link a svg { + width: 26px !important; + height: 26px !important; + } + + #masthead .elementor-element.elementor-element-466de1b { + position: absolute !important; + top: 5px !important; + left: 0 !important; + right: 0 !important; + width: auto !important; + transition: background-color 0.25s ease, box-shadow 0.25s ease, padding 0.25s ease !important; + z-index: 10000 !important; + } + + /* .e-con's --padding-* falls through two competing stylesheets and lands at 10px locally + (vs 0 in production). Zero out the pill wrappers so the navbar matches prod height (~122px). */ + #masthead .elementor-element.elementor-element-e052838, + #masthead .elementor-element.elementor-element-d681ece { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + + @media (min-width: 1025px) { + #masthead { + position: relative; + z-index: 10000; + } + + /* Production pins the wrapper via Elementor sticky-effects JS (not shipped here). + Force position:fixed once scrolled past 50px so the header stays in viewport. */ + #masthead .elementor-element.elementor-element-466de1b.dm-header-scrolled { + position: fixed !important; + background: rgba(26, 26, 26, 0.92) !important; + -webkit-backdrop-filter: blur(14px) !important; + backdrop-filter: blur(14px) !important; + box-shadow: 0 10px 30px rgba(0, 0, 0, 0.22) !important; + top: 0 !important; + } + + #masthead .elementor-element.elementor-element-466de1b.dm-header-scrolled .elementor-element.elementor-element-e052838 { + background: transparent !important; + } + } + + /* ── Desktop navbar layout (3-section balanced grid) ── + The earlier Mac-M1 fix used justify-content:space-between, which + on wide screens flung the logo and nav to opposite edges and + left a large asymmetric gap between them. Replace it with a + responsive three-column grid so the nav stays optically centred + with equal space on both sides, the logo group sits left and the + Contact button right — proportional at every desktop width. + + The logo group (472172e) and nav (e44ee7e) are nested inside + e052838 › d681ece, while the Contact button (f961133) is their + uncle. Those two wrappers carry no visual styling on desktop + (their background/padding live only in the <1024px mobile block), + so display:contents flattens them and promotes all three logical + sections to be direct items of one header grid. The grid only + applies >=1025px, leaving the mobile pill layout untouched. */ + @media (min-width: 1025px) { + #masthead .elementor-element.elementor-element-466de1b { + display: grid !important; + grid-template-columns: 1fr auto 1fr !important; + align-items: center !important; + column-gap: clamp(16px, 2vw, 32px) !important; + /* Equal left/right safe areas pull the logo and Contact + button inward off the viewport edges. Because the inset + is symmetric, the 1fr side columns shrink equally and the + centred nav does not shift. */ + padding-inline: clamp(24px, 3vw, 48px) !important; + /* Consistent top/bottom breathing room inside the bar; with + align-items:center every section stays vertically centred. */ + padding-block: clamp(8px, 1vw, 16px) !important; + } + + #masthead .elementor-element.elementor-element-e052838, + #masthead .elementor-element.elementor-element-d681ece { + display: contents !important; + } + + /* navbar-left: menu/grid icon + logo */ + #masthead .elementor-element.elementor-element-472172e { + justify-self: start !important; + display: flex !important; + align-items: center !important; + gap: clamp(16px, 1.5vw, 28px) !important; + flex: 0 0 auto !important; + } + + /* Logo never shrinks — keeps a clean edge against the nav. */ + #masthead .elementor-element.elementor-element-846e53d { + flex-shrink: 0 !important; + } + + /* navbar-center: navigation menu, optically centred. */ + #masthead .elementor-element.elementor-element-e44ee7e { + justify-self: center !important; + display: flex !important; + align-items: center !important; + } + + /* navbar-right: Contact button, aligned to the right edge. */ + #masthead .elementor-element.elementor-element-f961133 { + justify-self: end !important; + } + } + + #masthead .header-menu-container .main-menu > li.active > a:before { + background-color: #ffffff !important; + opacity: 1 !important; + } + + #masthead .header-menu-container .main-menu > li.active > a { + color: #ffffff !important; + } + + #masthead .header-menu-container .main-menu > li > a:focus, + #masthead .header-menu-container .main-menu > li > a:focus-visible { + outline: none !important; + box-shadow: none !important; + } + + /* Responsive logo adjustment on mobile/tablet */ + @media (max-width: 1024px) { + #masthead .elementor-element.elementor-element-466de1b { + top: 18px !important; + } + #masthead .elementor-element.elementor-element-846e53d .hfe-site-logo .hfe-site-logo-container img { + width: 150px !important; + height: auto !important; + margin-left: 20px !important; + } + #masthead .header-menu-container { + display: none !important; + } + #masthead .menu-trigger { + display: block !important; + } + + /* Sticky header on scroll for mobile/tablet too — the desktop + rule lived only in the min-width:1025px block, so on phones the + absolutely-positioned navbar scrolled away with the page. Pin it + to the top once scrolled past 50px, matching desktop behaviour. */ + #masthead .elementor-element.elementor-element-466de1b.dm-header-scrolled { + position: fixed !important; + top: 18px !important; + left: 0 !important; + right: 0 !important; + } + + #masthead .elementor-element.elementor-element-e052838 { + margin-left: 0px !important; + margin-right: 0px !important; + border-radius: 16px !important; + } + } + + @media (max-width: 480px) { + #masthead .elementor-element.elementor-element-846e53d .hfe-site-logo .hfe-site-logo-container img { + width: 150px !important; + margin-left: 8px !important; + } + } + + /* The theme reveals the mobile slide-in menu via Elementor's + body[data-elementor-device-mode="mobile"] rules, which are set by + Elementor's frontend JS — that JS isn't shipped in this Next port, + so the panel stayed display:none and the hamburger opened nothing. + Restore it with the same 1024px breakpoint the nav already switches + at. The panel sits off-screen (right:-320px) until .active slides + it in, matching production behaviour. */ + @media (max-width: 1024px) { + #masthead .elementor-widget-logico_navigation_menu .mobile-header-menu-container { + display: block !important; + } + } + + /* The bundled 'fontello' subset is missing the search (\\e85c) and + close (\\e845) glyphs, so those two icons render as empty tofu + boxes. Replace them with inline SVGs via CSS masks so they paint + in the current text colour (matching the working cart/user icons) + and respond to hover. */ + #masthead .header-icon.search-link .search-trigger-icon::before, + #masthead .header-icon.menu-close .menu-close-icon::before { + content: "" !important; + display: block; + width: 1em; + height: 1em; + background-color: currentColor; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: contain; + mask-size: contain; + } + #masthead .header-icon.search-link .search-trigger-icon::before { + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cline x1='16.5' y1='16.5' x2='21' y2='21'/%3E%3C/svg%3E"); + mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cline x1='16.5' y1='16.5' x2='21' y2='21'/%3E%3C/svg%3E"); + } + #masthead .header-icon.menu-close .menu-close-icon::before { + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round'%3E%3Cline x1='5' y1='5' x2='19' y2='19'/%3E%3Cline x1='19' y1='5' x2='5' y2='19'/%3E%3C/svg%3E"); + mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round'%3E%3Cline x1='5' y1='5' x2='19' y2='19'/%3E%3Cline x1='19' y1='5' x2='5' y2='19'/%3E%3C/svg%3E"); + } + + /* ── Company dropdown (desktop) / accordion (mobile) ── + Company (Blogs + How It Works) is a non-navigating parent — + its trigger is a plain anchor with no href target, only a + dropdown toggle. Class names below (.dm-solutions-dropdown, + .dm-mobile-solutions*) are unchanged from when this same + component/markup belonged to Solutions, reusing site.css's dead + .menu-item-has-children chevron (fontello glyph, already + coloured white for this exact header widget) instead of + inventing a new arrow. Desktop opens on hover/focus; mobile is a + height-collapsing accordion controlled by the chevron button. */ + @media (min-width: 1025px) { + #masthead .header-menu-container nav { + display: flex; + align-items: center; + } + + #masthead .header-menu-container .main-menu { + display: inline-flex !important; + align-items: center; + gap: 16px !important; + margin: 0 !important; + line-height: 1; + } + + #masthead .header-menu-container .main-menu > li { + display: flex; + align-items: center; + margin-right: 0 !important; + } + + #masthead .header-menu-container .main-menu > li > a { + display: inline-flex !important; + align-items: center; + justify-content: center; + padding-top: 0 !important; + padding-bottom: 0 !important; + min-height: 48px; + line-height: 1.2 !important; + } + + #masthead .header-menu-container .main-menu > li.menu-item-has-children { + position: relative; + } + + #masthead .header-menu-container .main-menu > li.menu-item-has-children:after { + content: ""; + position: absolute; + top: 100%; + left: 50%; + width: 100%; + min-width: 360px; + height: 24px; + transform: translateX(-50%); + pointer-events: auto; + } + + #masthead .header-menu-container .main-menu > li.menu-item-has-children .dm-solutions-dropdown { + position: absolute; + top: 100%; + left: 50%; + transform: translate(-50%, 34px); + width: 240px; + min-width: 240px; + margin: 0; + padding: 12px; + list-style: none; + background: linear-gradient(180deg, rgba(31, 31, 31, 0.98) 0%, rgba(18, 18, 18, 0.98) 100%); + -webkit-backdrop-filter: blur(20px); + backdrop-filter: blur(20px); + box-shadow: 0 24px 60px rgba(0, 0, 0, 0.38), inset 0 1px 0 rgba(255, 255, 255, 0.08); + border: 1px solid rgba(255, 255, 255, 0.09); + border-radius: 18px; + opacity: 0; + visibility: hidden; + pointer-events: none; + transition: opacity 0.25s ease, transform 0.25s ease, visibility 0.25s; + z-index: 20; + } + + /* .main-menu li:not(:last-of-type) (site.css) is a descendant + selector that also matches these nested
  • s, pushing every + row but the last 12px to the right. Cancel it here. */ + #masthead .header-menu-container .main-menu > li.menu-item-has-children .dm-solutions-dropdown li { + margin-right: 0 !important; + } + + #masthead .header-menu-container .main-menu > li.menu-item-has-children .dm-solutions-dropdown li + li { + margin-top: 10px; + } + + #masthead .header-menu-container .main-menu > li.menu-item-has-children .dm-solutions-dropdown li > a { + display: flex; + align-items: center; + justify-content: flex-start; + gap: 10px; + height: 48px; + padding: 0 16px; + border-radius: 10px; + /* Hardcoded rather than var(--logico-dark-text-color): that + variable is only overridden to white inside a few unrelated + scoped contexts (e.g. #side-panel-2f31137) and otherwise + falls back to the sitewide light-theme value (#111111), + which would be invisible on this dark glass panel. */ + color: rgba(255, 255, 255, 0.85); + font-family: var(--font-manrope), "Manrope", sans-serif; + font-size: 15px; + font-weight: 600; + line-height: 1.25; + letter-spacing: normal; + white-space: nowrap; + text-decoration: none; + transition: background-color 0.25s ease, color 0.25s ease, padding-left 0.25s ease; + } + + #masthead .header-menu-container .main-menu > li.menu-item-has-children .dm-solutions-dropdown li > a:before { + content: ""; + width: 11px; + height: 11px; + margin-left: -16px; + flex: 0 0 11px; + background-color: #c01227; + opacity: 0; + transform: translateX(-10px); + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 12 12 4'/%3E%3Cpath d='M5 4h7v7'/%3E%3C/svg%3E"); + mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 12 12 4'/%3E%3Cpath d='M5 4h7v7'/%3E%3C/svg%3E"); + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: contain; + mask-size: contain; + transition: opacity 0.25s ease-in-out, transform 0.25s ease-in-out, background-color 0.25s ease-in-out; + } + + #masthead .header-menu-container .main-menu > li.menu-item-has-children .dm-solutions-dropdown li > a:hover, + #masthead .header-menu-container .main-menu > li.menu-item-has-children .dm-solutions-dropdown li > a:focus-visible { + background-color: rgba(255, 255, 255, 0.08); + color: #ffffff; + padding-left: 22px; + } + + #masthead .header-menu-container .main-menu > li.menu-item-has-children .dm-solutions-dropdown li > a:hover:before, + #masthead .header-menu-container .main-menu > li.menu-item-has-children .dm-solutions-dropdown li > a:focus-visible:before { + opacity: 1; + transform: translateX(0); + background-color: #c01227; + } + + #masthead .header-menu-container .main-menu > li.menu-item-has-children .dm-solutions-dropdown li.dm-child-active > a { + color: #ffffff; + font-weight: 700; + } + + #masthead .header-menu-container .main-menu > li.menu-item-has-children > a[aria-expanded="true"] ~ .dm-solutions-dropdown { + opacity: 1; + visibility: visible; + pointer-events: auto; + transform: translate(-50%, 24px); + } + + #masthead .header-menu-container .main-menu > li.menu-item-has-children > a[aria-expanded="true"]:after { + transform: rotate(180deg); + } + + /* Outlines are globally suppressed for .main-menu>li>a above; + restore a visible focus ring scoped only to this trigger. */ + #masthead .header-menu-container .main-menu > li.menu-item-has-children > a:focus-visible { + outline: 2px solid var(--logico-dark-text-color, #ffffff); + outline-offset: 6px; + border-radius: 4px; + } + } + + #masthead .mobile-header-menu-container .dm-mobile-solutions-row { + display: flex !important; + align-items: center; + justify-content: space-between; + } + + #masthead .mobile-header-menu-container .dm-mobile-solutions-row > a { + display: block; + flex: 1 1 auto; + padding: 0.75em 0; + color: var(--logico-default-text-color); + text-decoration: none; + } + + #masthead .mobile-header-menu-container .dm-mobile-solutions-toggle { + display: inline-flex; + align-items: center; + justify-content: center; + width: 44px; + height: 44px; + margin: 0; + padding: 0; + flex: 0 0 44px; + border: 0; + background: transparent; + color: var(--logico-default-text-color); + cursor: pointer; + } + + #masthead .mobile-header-menu-container .dm-mobile-solutions-toggle:focus-visible { + outline: 2px solid currentColor; + outline-offset: 2px; + border-radius: 4px; + } + + #masthead .mobile-header-menu-container .dm-accordion-chevron { + display: inline-block; + width: 0.7em; + height: 0.7em; + flex: 0 0 auto; + background-color: currentColor; + -webkit-mask-repeat: no-repeat; + mask-repeat: no-repeat; + -webkit-mask-position: center; + mask-position: center; + -webkit-mask-size: contain; + mask-size: contain; + -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E"); + mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E"); + transition: transform 0.3s ease; + } + + #masthead .mobile-header-menu-container .dm-mobile-solutions.dm-accordion-open .dm-accordion-chevron { + transform: rotate(180deg); + } + + #masthead .mobile-header-menu-container .dm-mobile-solutions-panel { + max-height: 0; + overflow: hidden; + list-style: none; + margin: 0; + padding: 0; + padding-left: 18px; + transition: max-height 0.3s ease; + } + + #masthead .mobile-header-menu-container .dm-mobile-solutions.dm-accordion-open .dm-mobile-solutions-panel { + max-height: 160px; + } + + #masthead .mobile-header-menu-container .dm-mobile-solutions-panel > li { + font-size: 0.9em; + } + + /* .mobile-header-menu-container ul.main-menu>li>a (site.css) only + matches direct children of .main-menu, so these nested links + fall through to the sitewide generic underlined-anchor default. + Restore the plain sibling-item look explicitly. */ + #masthead .mobile-header-menu-container .dm-mobile-solutions-panel > li > a { + display: block; + padding: 0.35em 0; + color: var(--logico-default-text-color); + text-decoration: none; + } + + /* A vendor li:before rule (checkmark bullet, likely intended for a + feature-list style elsewhere) leaks through here since the reset + at .mobile-header-menu-container ul.main-menu>li:before only + matches direct children of .main-menu, not this nested li. + Suppress it on both the
  • and — these child rows aren't + top-level nav items and shouldn't carry any bullet/indicator. */ + #masthead .mobile-header-menu-container .dm-mobile-solutions-panel > li:before, + #masthead .mobile-header-menu-container .dm-mobile-solutions-panel > li > a:before { + content: none !important; + display: none !important; + } + + #masthead .mobile-header-menu-container .dm-mobile-solutions-panel > li.dm-child-active > a { + color: var(--logico-light-text-color); + text-decoration: underline; + } + `}})]})}])},58234,e=>{"use strict";var t=e.i(43476),i=e.i(71645),n=e.i(22016),l=e.i(57688),a=e.i(47167);class o{constructor(e=0,t="Network Error"){this.status=e,this.text=t}}let r={origin:"https://api.emailjs.com",blockHeadless:!1,storageProvider:(()=>{if("u">typeof localStorage)return{get:e=>Promise.resolve(localStorage.getItem(e)),set:(e,t)=>Promise.resolve(localStorage.setItem(e,t)),remove:e=>Promise.resolve(localStorage.removeItem(e))}})()},s=e=>e?"string"==typeof e?{publicKey:e}:"[object Object]"===e.toString()?e:{}:{},d=async(e,t,i={})=>{let n=await fetch(r.origin+e,{method:"POST",headers:i,body:t}),l=await n.text(),a=new o(n.status,l);if(n.ok)return a;throw a},c=(e,t,i)=>{if(!e||"string"!=typeof e)throw"The public key is required. Visit https://dashboard.emailjs.com/admin/account";if(!t||"string"!=typeof t)throw"The service ID is required. Visit https://dashboard.emailjs.com/admin";if(!i||"string"!=typeof i)throw"The template ID is required. Visit https://dashboard.emailjs.com/admin/templates"},m=e=>e.webdriver||!e.languages||0===e.languages.length,h=()=>new o(451,"Unavailable For Headless Browser"),p=(e,t)=>{let i;if(!e.list?.length||!e.watchVariable)return!1;var n=e.list,l=e.watchVariable;if(!Array.isArray(n))throw"The BlockList list has to be an array";if("string"!=typeof l)throw"The BlockList watchVariable has to be a string";let a=(i=e.watchVariable,t instanceof FormData?t.get(i):t[i]);return"string"==typeof a&&e.list.includes(a)},u=()=>new o(403,"Forbidden"),g=async(e,t,i)=>{let n=Number(await i.get(e)||0);return t-Date.now()+n},f=async(e,t,i)=>{if(!t.throttle||!i)return!1;var n=t.throttle,l=t.id;if("number"!=typeof n||n<0)throw"The LimitRate throttle has to be a positive number";if(l&&"string"!=typeof l)throw"The LimitRate ID has to be a non-empty string";let a=t.id||e;return await g(a,t.throttle,i)>0||(await i.set(a,Date.now().toString()),!1)},w=()=>new o(429,"Too Many Requests"),x=async(e,t,i,n)=>{let l=s(n),a=l.publicKey||r.publicKey,o=l.blockHeadless||r.blockHeadless,g=l.storageProvider||r.storageProvider,x={...r.blockList,...l.blockList},b={...r.limitRate,...l.limitRate};if(o&&m(navigator))return Promise.reject(h());c(a,e,t);if(i&&"[object Object]"!==i.toString())throw"The template params have to be the object. Visit https://www.emailjs.com/docs/sdk/send/";return i&&p(x,i)?Promise.reject(u()):await f(location.pathname,b,g)?Promise.reject(w()):d("/api/v1.0/email/send",JSON.stringify({lib_version:"4.4.1",user_id:a,service_id:e,template_id:t,template_params:i}),{"Content-type":"application/json"})};async function b(e){let t=a.default.env.NEXT_PUBLIC_EMAILJS_SERVICE_ID,i=a.default.env.NEXT_PUBLIC_EMAILJS_TEMPLATE_ID,n=a.default.env.NEXT_PUBLIC_EMAILJS_PUBLIC_KEY;if(!t||!i||!n)return console.warn("EmailJS credentials are not configured. Falling back to mock success."),await new Promise(e=>setTimeout(e,800)),{success:!0,mock:!0};try{return await x(t,i,{name:e.fullName,email:e.email,subject:e.subject,message:e.message},n),{success:!0}}catch(e){throw console.error("EmailJS sending failed:",e),e}}var v=e.i(2018);e.s(["default",0,function(){let e={"--grid-column-gap":"52px","--grid-row-gap":"18px",columnGap:"52px",rowGap:"18px"},[a,o]=(0,i.useState)(!1),[r,s]=(0,i.useState)({fullName:"",email:"",subject:"",message:""}),[d,c]=(0,i.useState)("idle");(0,i.useEffect)(()=>{let e=()=>{window.scrollY>300?o(!0):o(!1)};return window.addEventListener("scroll",e),()=>window.removeEventListener("scroll",e)},[]);let m=e=>{let{name:t,value:i}=e.target;s(e=>({...e,[t]:i})),("success"===d||"error"===d)&&c("idle")},h=async e=>{e.preventDefault(),c("submitting");try{(await b(r)).success?(c("success"),s({fullName:"",email:"",subject:"",message:""})):(console.error("Failed to submit contact form"),c("error"))}catch(e){console.error("Error submitting contact form:",e),c("error")}};return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("style",{dangerouslySetInnerHTML:{__html:` + .logico-form-field.dm-field-filled .logico-label-wrapper>label { + font-size: 14px; + top: -14px; + color: var(--logico-dark-text-color); + } + .logico-form-field.dm-field-filled .logico-label-placeholder .logico-label-placeholder-text:before { + right: 100%; + left: initial; + } + .logico-form-field.dm-field-filled .logico-label-placeholder .logico-label-placeholder-text:after { + left: 100%; + right: initial; + } + `}}),(0,t.jsx)("footer",{"data-rocket-location-hash":"1eeca93394c4fc14089e9d12a2a92e22",itemScope:!0,itemType:"https://schema.org/WPFooter",id:"colophon",role:"contentinfo",children:(0,t.jsx)("div",{className:"footer-width-fixer",children:(0,t.jsx)("div",{"data-elementor-type":"wp-post","data-elementor-id":"6585",className:"elementor elementor-6585",children:(0,t.jsx)("div",{className:"elementor-element elementor-element-3cd920c e-con-full e-flex cut-corner-no sticky-container-off e-con e-parent","data-id":"3cd920c","data-element_type":"container","data-e-type":"container",children:(0,t.jsx)("div",{className:"elementor-element elementor-element-b29b8fc e-flex e-con-boxed cut-corner-no sticky-container-off e-con e-child","data-id":"b29b8fc","data-element_type":"container","data-e-type":"container","data-settings":'{"background_background":"classic"}',children:(0,t.jsxs)("div",{className:"e-con-inner",children:[(0,t.jsxs)("div",{className:"elementor-element elementor-element-ef6fa6d e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"ef6fa6d","data-element_type":"container","data-e-type":"container",children:[(0,t.jsxs)("div",{className:"elementor-element elementor-element-9990148 e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"9990148","data-element_type":"container","data-e-type":"container",children:[(0,t.jsx)("div",{className:"elementor-element elementor-element-8899bdf elementor-absolute elementor-widget elementor-widget-image","data-id":"8899bdf","data-element_type":"widget","data-e-type":"widget","data-settings":'{"_position":"absolute"}',"data-widget_type":"image.default",children:(0,t.jsx)("div",{className:"elementor-widget-container",children:(0,t.jsx)(l.default,{width:965,height:474,src:"/images/bg-map.png",className:"attachment-full size-full wp-image-1148",alt:""})})}),(0,t.jsx)("div",{className:"elementor-element elementor-element-a0e7516 elementor-widget elementor-widget-logico_heading","data-id":"a0e7516","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_heading.default",children:(0,t.jsx)("div",{className:"elementor-widget-container",children:(0,t.jsx)("div",{className:"logico-title",children:"/ get in touch /"})})}),(0,t.jsx)("div",{className:"elementor-element elementor-element-687d944 elementor-widget elementor-widget-logico_heading","data-id":"687d944","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_heading.default",children:(0,t.jsx)("div",{className:"elementor-widget-container",children:(0,t.jsx)(v.ScrollReveal,{delay:.1,duration:.8,yOffset:25,children:(0,t.jsx)("h3",{className:"logico-title",style:{color:"white"},children:"We are always ready to help you and answer your questions"})})})}),(0,t.jsx)("div",{className:"elementor-element elementor-element-670d1b2 elementor-widget elementor-widget-text-editor","data-id":"670d1b2","data-element_type":"widget","data-e-type":"widget","data-widget_type":"text-editor.default",children:(0,t.jsx)("div",{className:"elementor-widget-container",children:(0,t.jsx)("p",{children:"Connecting businesses with fast, secure, smart deliveries."})})}),(0,t.jsx)("div",{className:"elementor-element elementor-element-2631b42 e-flex e-con-boxed cut-corner-no sticky-container-off e-con e-child","data-id":"2631b42","data-element_type":"container","data-e-type":"container",children:(0,t.jsxs)("div",{className:"e-con-inner",children:[(0,t.jsxs)("div",{className:"elementor-element elementor-element-df89993 e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"df89993","data-element_type":"container","data-e-type":"container",children:[(0,t.jsx)("div",{className:"elementor-element elementor-element-69b6892 elementor-widget elementor-widget-logico_heading","data-id":"69b6892","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_heading.default",children:(0,t.jsx)("div",{className:"elementor-widget-container",children:(0,t.jsxs)("div",{className:"logico-title dm-foot-label",children:[(0,t.jsx)("svg",{className:"dm-foot-ic",width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:(0,t.jsx)("path",{d:"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72c.13.96.36 1.9.7 2.81a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45c.91.34 1.85.57 2.81.7A2 2 0 0 1 22 16.92z"})}),(0,t.jsx)("span",{children:"Contect"})]})})}),(0,t.jsx)("div",{className:"elementor-element elementor-element-87be926 elementor-widget elementor-widget-text-editor","data-id":"87be926","data-element_type":"widget","data-e-type":"widget","data-widget_type":"text-editor.default",children:(0,t.jsx)("div",{className:"elementor-widget-container",children:(0,t.jsx)("p",{children:"Tel : +91 86886 97941"})})})]}),(0,t.jsxs)("div",{className:"elementor-element elementor-element-f5d8e63 e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"f5d8e63","data-element_type":"container","data-e-type":"container",children:[(0,t.jsx)("div",{className:"elementor-element elementor-element-774e540 elementor-widget elementor-widget-logico_heading","data-id":"774e540","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_heading.default",children:(0,t.jsx)("div",{className:"elementor-widget-container",children:(0,t.jsxs)("div",{className:"logico-title dm-foot-label",children:[(0,t.jsxs)("svg",{className:"dm-foot-ic",width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,t.jsx)("path",{d:"M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"}),(0,t.jsx)("circle",{cx:"12",cy:"10",r:"3"})]}),(0,t.jsx)("span",{children:"Address"})]})})}),(0,t.jsx)("div",{className:"elementor-element elementor-element-9c1cf03 elementor-widget elementor-widget-text-editor","data-id":"9c1cf03","data-element_type":"widget","data-e-type":"widget","data-widget_type":"text-editor.default",children:(0,t.jsx)("div",{className:"elementor-widget-container",children:(0,t.jsx)("p",{children:"5th Floor, Vision Ultima, Street No.3, Jayabheri Enclave, Gachibowli, Hyderabad, Telangana 500032."})})})]})]})}),(0,t.jsx)("div",{className:"elementor-element elementor-element-645be8d e-flex e-con-boxed cut-corner-no sticky-container-off e-con e-child","data-id":"645be8d","data-element_type":"container","data-e-type":"container",children:(0,t.jsxs)("div",{className:"e-con-inner",children:[(0,t.jsxs)("div",{className:"elementor-element elementor-element-a96d151 e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"a96d151","data-element_type":"container","data-e-type":"container",children:[(0,t.jsx)("div",{className:"elementor-element elementor-element-37e647f elementor-widget elementor-widget-logico_heading","data-id":"37e647f","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_heading.default",children:(0,t.jsx)("div",{className:"elementor-widget-container",children:(0,t.jsxs)("div",{className:"logico-title dm-foot-label",children:[(0,t.jsxs)("svg",{className:"dm-foot-ic",width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,t.jsx)("rect",{x:"2",y:"4",width:"20",height:"16",rx:"2"}),(0,t.jsx)("path",{d:"m22 7-10 5L2 7"})]}),(0,t.jsx)("span",{children:"Email"})]})})}),(0,t.jsx)("div",{className:"elementor-element elementor-element-ba67644 elementor-widget elementor-widget-text-editor","data-id":"ba67644","data-element_type":"widget","data-e-type":"widget","data-widget_type":"text-editor.default",children:(0,t.jsx)("div",{className:"elementor-widget-container",children:(0,t.jsx)("p",{children:(0,t.jsx)("a",{href:"mailto:care@doormile.com",children:"care@doormile.com"})})})})]}),(0,t.jsxs)("div",{className:"elementor-element elementor-element-9ba4b82 e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"9ba4b82","data-element_type":"container","data-e-type":"container",children:[(0,t.jsx)("div",{className:"elementor-element elementor-element-e9a5d79 elementor-widget elementor-widget-logico_heading","data-id":"e9a5d79","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_heading.default",children:(0,t.jsx)("div",{className:"elementor-widget-container",children:(0,t.jsxs)("div",{className:"logico-title dm-foot-label",children:[(0,t.jsxs)("svg",{className:"dm-foot-ic",width:"15",height:"15",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round","aria-hidden":"true",children:[(0,t.jsx)("circle",{cx:"18",cy:"5",r:"3"}),(0,t.jsx)("circle",{cx:"6",cy:"12",r:"3"}),(0,t.jsx)("circle",{cx:"18",cy:"19",r:"3"}),(0,t.jsx)("line",{x1:"8.59",y1:"13.51",x2:"15.42",y2:"17.49"}),(0,t.jsx)("line",{x1:"15.41",y1:"6.51",x2:"8.59",y2:"10.49"})]}),(0,t.jsx)("span",{children:"Social"})]})})}),(0,t.jsx)("div",{className:"elementor-element elementor-element-a6bccba elementor-shape-square elementor-grid-0 elementor-widget elementor-widget-social-icons","data-id":"a6bccba","data-element_type":"widget","data-e-type":"widget","data-widget_type":"social-icons.default",children:(0,t.jsx)("div",{className:"elementor-widget-container",children:(0,t.jsxs)("div",{className:"elementor-social-icons-wrapper elementor-grid",role:"list",style:e,children:[(0,t.jsx)("span",{className:"elementor-grid-item",role:"listitem",style:{padding:"0 15px"},children:(0,t.jsxs)("a",{className:"elementor-icon elementor-social-icon elementor-social-icon-linkedin-in elementor-repeater-item-38e1bcc",href:"https://www.linkedin.com",target:"_blank",rel:"noopener noreferrer",children:[(0,t.jsx)("span",{className:"elementor-screen-only",children:"LinkedIn"}),(0,t.jsx)("svg",{"aria-hidden":"true",className:"e-font-icon-svg e-fab-linkedin-in",viewBox:"0 0 448 512",xmlns:"http://www.w3.org/2000/svg",children:(0,t.jsx)("path",{d:"M100.28 448H7.4V148.9h92.88zM53.79 108.1C24.09 108.1 0 83.5 0 53.8a53.79 53.79 0 0 1 107.58 0c0 29.7-24.1 54.3-53.79 54.3zM447.9 448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29 0-55.69 37.7-55.69 76.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5 42.69-48.3 87.88-48.3 94 0 111.28 61.9 111.28 142.3V448z"})})]})}),(0,t.jsx)("span",{className:"elementor-grid-item",role:"listitem",style:{padding:"0 15px"},children:(0,t.jsxs)("a",{className:"elementor-icon elementor-social-icon elementor-social-icon-youtube elementor-repeater-item-b0d5e1f",href:"https://www.youtube.com",target:"_blank",rel:"noopener noreferrer",children:[(0,t.jsx)("span",{className:"elementor-screen-only",children:"YouTube"}),(0,t.jsx)("svg",{"aria-hidden":"true",className:"e-font-icon-svg e-fab-youtube",viewBox:"0 0 576 512",xmlns:"http://www.w3.org/2000/svg",children:(0,t.jsx)("path",{d:"M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z"})})]})})]})})})]})]})})]}),(0,t.jsxs)("div",{className:"elementor-element elementor-element-a5c503d e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"a5c503d","data-element_type":"container","data-e-type":"container","data-settings":'{"background_background":"classic"}',children:[(0,t.jsx)("div",{className:"elementor-element elementor-element-535776a elementor-widget elementor-widget-logico_heading","data-id":"535776a","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_heading.default",children:(0,t.jsx)("div",{className:"elementor-widget-container",children:(0,t.jsx)("div",{className:"logico-title",children:"Get in Touch"})})}),(0,t.jsx)("div",{className:"elementor-element elementor-element-0e6fedf elementor-widget elementor-widget-logico_wpforms","data-id":"0e6fedf","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_wpforms.default",children:(0,t.jsx)("div",{className:"elementor-widget-container",children:(0,t.jsx)("div",{className:"logico-wpforms-widget",children:(0,t.jsx)("div",{className:"wpforms-container wpforms-render-modern",id:"wpforms-369",children:(0,t.jsxs)("form",{id:"wpforms-form-369",className:"wpforms-validate wpforms-form",onSubmit:h,children:[(0,t.jsxs)("div",{className:"wpforms-field-container",children:[(0,t.jsxs)("div",{className:`wpforms-field-wrapper logico-form-field${r.fullName?" dm-field-filled":""}`,children:[(0,t.jsxs)("div",{className:"logico-label-wrapper",style:{marginBottom:"12px"},children:[(0,t.jsx)("div",{className:"logico-label-placeholder",children:(0,t.jsx)("div",{className:"logico-label-placeholder-text",children:"Full name"})}),(0,t.jsx)("label",{className:"wpforms-field-label",htmlFor:"footer-field-name",children:"Full name"})]}),(0,t.jsx)("input",{type:"text",id:"footer-field-name",className:"wpforms-field-large",name:"fullName",value:r.fullName,onChange:m,required:!0})]}),(0,t.jsxs)("div",{className:`wpforms-field-wrapper logico-form-field${r.email?" dm-field-filled":""}`,children:[(0,t.jsxs)("div",{className:"logico-label-wrapper",style:{marginBottom:"12px"},children:[(0,t.jsx)("div",{className:"logico-label-placeholder",children:(0,t.jsx)("div",{className:"logico-label-placeholder-text",children:"Email"})}),(0,t.jsx)("label",{className:"wpforms-field-label",htmlFor:"footer-field-email",children:"Email"})]}),(0,t.jsx)("input",{type:"email",id:"footer-field-email",className:"wpforms-field-large",name:"email",value:r.email,onChange:m,required:!0})]}),(0,t.jsxs)("div",{className:`wpforms-field-wrapper logico-form-field${r.subject?" dm-field-filled":""}`,children:[(0,t.jsxs)("div",{className:"logico-label-wrapper",style:{marginBottom:"12px"},children:[(0,t.jsx)("div",{className:"logico-label-placeholder",children:(0,t.jsx)("div",{className:"logico-label-placeholder-text",children:"Subject"})}),(0,t.jsx)("label",{className:"wpforms-field-label",htmlFor:"footer-field-subject",children:"Subject"})]}),(0,t.jsx)("input",{type:"text",id:"footer-field-subject",className:"wpforms-field-large",name:"subject",value:r.subject,onChange:m,required:!0})]}),(0,t.jsxs)("div",{className:`wpforms-field-wrapper logico-form-field${r.message?" dm-field-filled":""}`,children:[(0,t.jsxs)("div",{className:"logico-label-wrapper",style:{marginBottom:"12px"},children:[(0,t.jsx)("div",{className:"logico-label-placeholder",children:(0,t.jsx)("div",{className:"logico-label-placeholder-text",children:"Message"})}),(0,t.jsx)("label",{className:"wpforms-field-label",htmlFor:"footer-field-message",children:"Message"})]}),(0,t.jsx)("textarea",{id:"footer-field-message",className:"wpforms-field-large",name:"message",value:r.message,onChange:m,required:!0})]})]}),(0,t.jsxs)("div",{className:"wpforms-submit-container",children:[(0,t.jsx)("button",{type:"submit",id:"wpforms-submit-369",className:"logico-alter-button wpforms-submit",disabled:"submitting"===d,children:"submitting"===d?"Sending...":"Send a message"}),"success"===d&&(0,t.jsx)("div",{style:{color:"#4caf50",marginTop:"10px",fontSize:"14px"},children:"Message sent successfully."}),"error"===d&&(0,t.jsx)("div",{style:{color:"#f44336",marginTop:"10px",fontSize:"14px"},children:"Failed to send message. Please try again."})]})]})})})})})]})]}),(0,t.jsx)("div",{className:"elementor-element elementor-element-e183a77 e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"e183a77","data-element_type":"container","data-e-type":"container",children:(0,t.jsx)("div",{className:"elementor-element elementor-element-5219697 e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"5219697","data-element_type":"container","data-e-type":"container",children:(0,t.jsx)("div",{className:"elementor-element elementor-element-e6af8aa elementor-widget__width-initial elementor-widget elementor-widget-logico_heading","data-id":"e6af8aa","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_heading.default",children:(0,t.jsx)("div",{className:"elementor-widget-container",children:(0,t.jsx)(v.ScrollReveal,{delay:.1,duration:.8,yOffset:25,children:(0,t.jsxs)("h2",{className:"logico-title",children:["Delivered ",(0,t.jsx)("span",{style:{color:"#c01227"},children:"on time"})," with no hassle."]})})})})})}),(0,t.jsx)("div",{className:"elementor-element elementor-element-ba22941 e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"ba22941","data-element_type":"container","data-e-type":"container",children:(0,t.jsx)("div",{className:"elementor-element elementor-element-54629ca elementor-widget-divider--view-line elementor-widget elementor-widget-divider","data-id":"54629ca","data-element_type":"widget","data-e-type":"widget","data-widget_type":"divider.default",children:(0,t.jsx)("div",{className:"elementor-widget-container",children:(0,t.jsx)("div",{className:"elementor-divider",children:(0,t.jsx)("span",{className:"elementor-divider-separator"})})})})}),(0,t.jsxs)("div",{className:"elementor-element elementor-element-3f1ba7a e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"3f1ba7a","data-element_type":"container","data-e-type":"container",children:[(0,t.jsxs)("div",{className:"elementor-element elementor-element-64e2e81 e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"64e2e81","data-element_type":"container","data-e-type":"container",children:[(0,t.jsx)("div",{className:"elementor-element elementor-element-b5c897d elementor-widget elementor-widget-image","data-id":"b5c897d","data-element_type":"widget","data-e-type":"widget","data-widget_type":"image.default",children:(0,t.jsx)("div",{className:"elementor-widget-container",children:(0,t.jsx)(n.default,{href:"/",children:(0,t.jsx)(l.default,{width:300,height:57,src:"/images/logo-slogan.png",style:{width:"280px",height:"auto"},className:"attachment-full size-full wp-image-5851",alt:"Doormile Tagline"})})})}),(0,t.jsx)("div",{className:"elementor-element elementor-element-e4e6486 elementor-shape-square elementor-grid-0 elementor-widget elementor-widget-social-icons","data-id":"e4e6486","data-element_type":"widget","data-e-type":"widget","data-widget_type":"social-icons.default",children:(0,t.jsx)("div",{className:"elementor-widget-container",children:(0,t.jsxs)("div",{className:"elementor-social-icons-wrapper elementor-grid",role:"list",style:e,children:[(0,t.jsx)("span",{className:"elementor-grid-item",role:"listitem",style:{padding:"0 15px"},children:(0,t.jsxs)("a",{className:"elementor-icon elementor-social-icon elementor-social-icon-linkedin-in",href:"https://www.linkedin.com",target:"_blank",rel:"noopener noreferrer",children:[(0,t.jsx)("span",{className:"elementor-screen-only",children:"LinkedIn"}),(0,t.jsx)("svg",{"aria-hidden":"true",className:"e-font-icon-svg e-fab-linkedin-in",viewBox:"0 0 448 512",xmlns:"http://www.w3.org/2000/svg",children:(0,t.jsx)("path",{d:"M100.28 448H7.4V148.9h92.88zM53.79 108.1C24.09 108.1 0 83.5 0 53.8a53.79 53.79 0 0 1 107.58 0c0 29.7-24.1 54.3-53.79 54.3zM447.9 448h-92.68V302.4c0-34.7-.7-79.2-48.29-79.2-48.29 0-55.69 37.7-55.69 76.7V448h-92.78V148.9h89.08v40.8h1.3c12.4-23.5 42.69-48.3 87.88-48.3 94 0 111.28 61.9 111.28 142.3V448z"})})]})}),(0,t.jsx)("span",{className:"elementor-grid-item",role:"listitem",style:{padding:"0 15px"},children:(0,t.jsxs)("a",{className:"elementor-icon elementor-social-icon elementor-social-icon-youtube",href:"https://www.youtube.com",target:"_blank",rel:"noopener noreferrer",children:[(0,t.jsx)("span",{className:"elementor-screen-only",children:"YouTube"}),(0,t.jsx)("svg",{"aria-hidden":"true",className:"e-font-icon-svg e-fab-youtube",viewBox:"0 0 576 512",xmlns:"http://www.w3.org/2000/svg",children:(0,t.jsx)("path",{d:"M549.655 124.083c-6.281-23.65-24.787-42.276-48.284-48.597C458.781 64 288 64 288 64S117.22 64 74.629 75.486c-23.497 6.322-42.003 24.947-48.284 48.597-11.412 42.867-11.412 132.305-11.412 132.305s0 89.438 11.412 132.305c6.281 23.65 24.787 41.5 48.284 47.821C117.22 448 288 448 288 448s170.78 0 213.371-11.486c23.497-6.321 42.003-24.171 48.284-47.821 11.412-42.867 11.412-132.305 11.412-132.305s0-89.438-11.412-132.305zm-317.51 213.508V175.185l142.739 81.205-142.739 81.201z"})})]})})]})})})]}),(0,t.jsxs)("div",{className:"elementor-element elementor-element-5b73dd3 e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"5b73dd3","data-element_type":"container","data-e-type":"container",children:[(0,t.jsx)("div",{className:"elementor-element elementor-element-10ead4d elementor-widget elementor-widget-logico_heading","data-id":"10ead4d","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_heading.default",children:(0,t.jsx)("div",{className:"elementor-widget-container",children:(0,t.jsx)("div",{className:"logico-title",children:"Solutions"})})}),(0,t.jsx)("div",{className:"elementor-element elementor-element-b2507df elementor-widget elementor-widget-logico_custom_navigation_menu","data-id":"b2507df","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_custom_navigation_menu.default",children:(0,t.jsx)("div",{className:"elementor-widget-container",children:(0,t.jsxs)("ul",{className:"logico-custom-menu-widget",children:[(0,t.jsx)("li",{children:(0,t.jsx)(n.default,{href:"/miletruth",children:"MileTruth™"})}),(0,t.jsx)("li",{children:(0,t.jsx)(n.default,{href:"/how-it-works",children:"How It Works"})}),(0,t.jsx)("li",{children:(0,t.jsx)(n.default,{href:"/solutions",children:"Use Cases"})}),(0,t.jsx)("li",{children:(0,t.jsx)(n.default,{href:"/contact",children:"Request Demo"})})]})})})]}),(0,t.jsxs)("div",{className:"elementor-element elementor-element-451f15c e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"451f15c","data-element_type":"container","data-e-type":"container",children:[(0,t.jsx)("div",{className:"elementor-element elementor-element-0ec06ff elementor-widget elementor-widget-logico_heading","data-id":"0ec06ff","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_heading.default",children:(0,t.jsx)("div",{className:"elementor-widget-container",children:(0,t.jsx)("div",{className:"logico-title",children:"Services"})})}),(0,t.jsx)("div",{className:"elementor-element elementor-element-a219b7d elementor-widget elementor-widget-logico_custom_navigation_menu","data-id":"a219b7d","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_custom_navigation_menu.default",children:(0,t.jsx)("div",{className:"elementor-widget-container",children:(0,t.jsxs)("ul",{className:"logico-custom-menu-widget",children:[(0,t.jsx)("li",{children:(0,t.jsx)(n.default,{href:"/doormile-wings",children:"Doormile Wings"})}),(0,t.jsx)("li",{children:(0,t.jsx)(n.default,{href:"/about-us",children:"About Us"})}),(0,t.jsx)("li",{children:(0,t.jsx)(n.default,{href:"/about-us#women-entrepreneurship",children:"Women entrepreneurship"})}),(0,t.jsx)("li",{children:(0,t.jsx)(n.default,{href:"/blog",children:"Blog"})}),(0,t.jsx)("li",{children:(0,t.jsx)(n.default,{href:"/contact",children:"Contact"})})]})})})]}),(0,t.jsxs)("div",{className:"elementor-element elementor-element-44a1f5d e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"44a1f5d","data-element_type":"container","data-e-type":"container",children:[(0,t.jsx)("div",{className:"elementor-element elementor-element-0edc8fd elementor-widget elementor-widget-logico_heading","data-id":"0edc8fd","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_heading.default",children:(0,t.jsx)("div",{className:"elementor-widget-container",children:(0,t.jsx)("div",{className:"logico-title",children:"Legal"})})}),(0,t.jsx)("div",{className:"elementor-element elementor-element-189484a elementor-widget elementor-widget-logico_custom_navigation_menu","data-id":"189484a","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_custom_navigation_menu.default",children:(0,t.jsx)("div",{className:"elementor-widget-container",children:(0,t.jsxs)("ul",{className:"logico-custom-menu-widget",children:[(0,t.jsx)("li",{children:(0,t.jsx)(n.default,{href:"/privacy-policy",children:"Privacy Policy"})}),(0,t.jsx)("li",{children:(0,t.jsx)(n.default,{href:"/terms-of-service",children:"Terms Service"})}),(0,t.jsx)("li",{children:(0,t.jsx)(n.default,{href:"/cookie-policy",children:"Cookie Policy"})})]})})})]})]})]})})})})})}),(0,t.jsx)("div",{className:`footer-scroll-top ${a?"active":""}`,onClick:()=>{window.scrollTo({top:0,behavior:"smooth"})},style:{cursor:"pointer"}}),(0,t.jsx)("style",{dangerouslySetInnerHTML:{__html:` + .elementor-6585 .elementor-element.elementor-element-e6af8aa .logico-title, + .elementor-6585 .elementor-element.elementor-element-3f1ba7a .logico-title, + .elementor-6585 .elementor-element.elementor-element-3f1ba7a .logico-custom-menu-widget { + font-family: var(--font-manrope), system-ui, -apple-system, "Segoe UI", sans-serif; + } + /* Prevent footer custom navigation menu items from wrapping on hover, + which causes layout shifts, height changes, and cursor flickering loops. */ + .elementor-6585 .logico-custom-menu-widget li a { + white-space: nowrap !important; + } + /* The divider widget is a flex child that should grow via Elementor's + --container-widget-flex-grow variable, but the base rule wiring that + variable to flex-grow lives in elementor-frontend.css (not loaded). */ + .elementor-6585 .elementor-element.elementor-element-54629ca { + flex-grow: 1; + width: 100%; + } + .elementor-6585 .elementor-element.elementor-element-54629ca .elementor-divider-separator { + display: block; + border-top: var(--divider-border-width, 1px) var(--divider-border-style, solid) var(--divider-color, #CBCBCB); + } + + /* Production renders footer social icons at ~25px; ours default to 50px because the + base Elementor icon-size rule (font-size + SVG width:1em) is in elementor-frontend.css + which isn't loaded. Match prod for both upper (a6bccba) and lower (e4e6486) groups. */ + .elementor-6585 .elementor-element.elementor-element-a6bccba .elementor-social-icon, + .elementor-6585 .elementor-element.elementor-element-e4e6486 .elementor-social-icon { + font-size: 16px; + } + .elementor-6585 .elementor-element.elementor-element-a6bccba .elementor-social-icon svg, + .elementor-6585 .elementor-element.elementor-element-e4e6486 .elementor-social-icon svg { + width: 25px; + height: 25px; + } + + /* Compact footer link columns on phones (<=480px). The kit only sets + column --width at min-width:481px, so below that all four blocks + fall back to 100% and stack into one very tall column. Put the + logo+social full-width on top, then lay the three link groups out + in a 2-up grid (matching the tablet 47% intent) so the footer is + roughly half as tall. */ + /* Inline icon beside each contact label (Call Center / Our Location / + Email / Social network). */ + .elementor-6585 .dm-foot-label { + display: inline-flex !important; + align-items: center; + gap: 8px; + } + .elementor-6585 .dm-foot-label .dm-foot-ic { + flex: 0 0 auto; + color: #C01227; + } + + /* ── Compact mobile contact footer (<=600px) ── + On phones the upper contact section stacked into one very tall + column with 50px margins between every block. Tighten the heading, + collapse those stack margins, and pair Email + Social side-by-side + (both are short) so the footer is far shorter without losing the + full-width address readability. */ + @media (max-width: 600px) { + /* Trim the band's oversized top/bottom padding on phones. */ + .elementor-6585 .elementor-element.elementor-element-b29b8fc > .e-con-inner { + padding-top: 40px !important; + padding-bottom: 40px !important; + } + .elementor-6585 .elementor-element.elementor-element-687d944 .logico-title { + font-size: clamp(24px, 6.6vw, 32px) !important; + line-height: 1.2 !important; + } + .elementor-6585 .dm-foot-label .dm-foot-ic { width: 14px; height: 14px; } + /* The Call Center / Our Location group carries a 10px side padding + the Email / Social group doesn't, leaving its labels indented + 10px out of line with everything else — zero it so all four + contact blocks share the same left edge as the heading. */ + .elementor-6585 .elementor-element.elementor-element-2631b42 { + padding-left: 0 !important; + padding-right: 0 !important; + } + /* All four contact blocks stack in one left-aligned column with a + consistent gap (Social network sits below Email). */ + .elementor-6585 .elementor-element.elementor-element-2631b42, + .elementor-6585 .elementor-element.elementor-element-f5d8e63, + .elementor-6585 .elementor-element.elementor-element-645be8d, + .elementor-6585 .elementor-element.elementor-element-9ba4b82 { + margin-top: 22px !important; + } + .elementor-6585 .elementor-element.elementor-element-645be8d > .e-con-inner { + flex-direction: column !important; + gap: 0 !important; + align-items: stretch !important; + } + .elementor-6585 .elementor-element.elementor-element-a96d151, + .elementor-6585 .elementor-element.elementor-element-9ba4b82 { + width: 100% !important; + } + } + + @media (max-width: 480px) { + .elementor-6585 .elementor-element.elementor-element-3f1ba7a { + display: flex !important; + flex-direction: row !important; + flex-wrap: wrap !important; + gap: 36px 16px !important; + } + .elementor-6585 .elementor-element.elementor-element-64e2e81 { + flex: 0 0 100% !important; + width: 100% !important; + } + .elementor-6585 .elementor-element.elementor-element-5b73dd3, + .elementor-6585 .elementor-element.elementor-element-451f15c, + .elementor-6585 .elementor-element.elementor-element-44a1f5d { + flex: 1 1 calc(50% - 8px) !important; + width: calc(50% - 8px) !important; + min-width: 0 !important; + } + /* Allow long links (e.g. "Women entrepreneurship") to wrap inside + the narrow columns instead of overflowing. */ + .elementor-6585 .logico-custom-menu-widget li a { + white-space: normal !important; + } + /* Trim the large social-icons top gap so the brand block stays tight. */ + .elementor-6585 .elementor-element.elementor-element-e4e6486 > .elementor-widget-container { + margin-top: 24px !important; + } + } + `}})]})}],58234)},67989,e=>{"use strict";var t=e.i(71645),i=e.i(18566);let n="wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page",l={"/":`home-page ${n} page-id-61 elementor-page-61 is-home-page`,"/how-it-works":"wp-singular page-template-default page page-id-59 wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-page elementor-page-59","/miletruth":`${n} page-id-59 elementor-page-59`,"/solutions":`${n} page-id-59 elementor-page-59`,"/about-us":`home ${n} page-id-59 elementor-page-59`,"/empowerment":`home ${n} page-id-59 elementor-page-59`,"/blog":`${n} page-id-59 elementor-page-59`,"/contact":`${n} page-id-59 elementor-page-59`};e.s(["default",0,function(){let e=(0,i.usePathname)();return(0,t.useEffect)(()=>{document.body.className=l[e]??n},[e]),null}],67989)},92260,e=>{"use strict";var t=e.i(43476),i=e.i(82637);e.s(["default",0,function(){let{isMenuOpen:e,isSidebarOpen:n,closeAll:l}=(0,i.useHeaderUI)();return(0,t.jsx)("div",{className:`body-overlay${e||n?" active":""}`,onClick:l})}])},48064,e=>{"use strict";var t=e.i(43476),i=e.i(71645),n=e.i(18566),l=e.i(89970),a=e.i(83495);e.s(["default",0,function({children:e}){let o=(0,n.usePathname)(),r=()=>{a.ScrollTrigger.getAll().forEach(e=>{e.vars&&"block-deco"===e.vars.id&&e.kill()});let e=window.innerHeight||document.documentElement.clientHeight;document.querySelectorAll(".block-decoration").forEach(t=>{a.ScrollTrigger.create({id:"block-deco",trigger:t,start:"top 92%",onEnter:()=>{setTimeout(()=>{t.classList.add("animated")},150)},onEnterBack:()=>{setTimeout(()=>{t.classList.add("animated")},150)},onLeave:()=>{t.classList.remove("animated")},onLeaveBack:()=>{t.classList.remove("animated")}});let i=t.getBoundingClientRect();i.top0&&t.classList.add("animated")})};return(0,i.useEffect)(()=>{let e;l.default.registerPlugin(a.ScrollTrigger),l.default.defaults({ease:"power3.out",duration:.8}),a.ScrollTrigger.config({ignoreMobileResize:!0}),r();let t=()=>{r(),a.ScrollTrigger.refresh(!0)};window.addEventListener("load",t);let i=()=>{clearTimeout(e),e=setTimeout(()=>{r(),a.ScrollTrigger.refresh(!0)},200)};return window.addEventListener("resize",i),()=>{clearTimeout(e),window.removeEventListener("load",t),window.removeEventListener("resize",i),a.ScrollTrigger.getAll().forEach(e=>e.kill())}},[]),(0,i.useEffect)(()=>{let e=()=>{r(),a.ScrollTrigger.refresh(!0)};e();let t=[setTimeout(e,100),setTimeout(e,400),setTimeout(e,800),setTimeout(e,1500)];return()=>{t.forEach(clearTimeout)}},[o]),(0,t.jsx)(t.Fragment,{children:e})}])},26290,e=>{"use strict";var t=e.i(71645),i=e.i(18566),n=e.i(89970),l=e.i(83495),a=e.i(92599);let o=["/how-it-works"];e.s(["default",0,function(){let e=(0,i.usePathname)();return(0,t.useEffect)(()=>{let t,i=o.some(t=>e===t||e.startsWith(`${t}/`)),r=window.matchMedia("(prefers-reduced-motion: reduce)").matches,s=window.matchMedia("(hover: hover) and (pointer: fine)").matches;if(i||r||!s){if(window.location.hash){let e=()=>{try{let e=document.querySelector(window.location.hash);e&&e.scrollIntoView()}catch(e){console.warn(e)}};e(),t=setTimeout(e,100)}else window.scrollTo(0,0);return()=>{t&&clearTimeout(t)}}n.default.registerPlugin(l.ScrollTrigger);let d="/miletruth"===e||e.startsWith("/miletruth/"),c=new a.default(d?{lerp:.13,wheelMultiplier:1.3,touchMultiplier:1.6,orientation:"vertical",gestureOrientation:"vertical",smoothWheel:!0}:{duration:1.05,easing:e=>Math.min(1,1.001-Math.pow(2,-10*e)),orientation:"vertical",gestureOrientation:"vertical",smoothWheel:!0});if(window.location.hash){let e=()=>{try{let e=document.querySelector(window.location.hash);e&&c.scrollTo(e,{immediate:!0})}catch(e){console.warn(e)}};e(),t=setTimeout(e,100)}else c.scrollTo(0,{immediate:!0}),window.scrollTo(0,0);c.on("scroll",l.ScrollTrigger.update);let m=e=>c.raf(1e3*e);return n.default.ticker.add(m),n.default.ticker.lagSmoothing(0),l.ScrollTrigger.refresh(),()=>{t&&clearTimeout(t),n.default.ticker.remove(m),c.destroy()}},[e]),null}])},8971,e=>{"use strict";var t=e.i(43476),i=e.i(71645),n=e.i(57688),l=e.i(18566);function a(e){return`${e.pathname}${e.search}`}e.s(["default",0,function(){let e=(0,l.usePathname)(),[o,r]=(0,i.useState)("hidden"),s=(0,i.useRef)("hidden"),d=(0,i.useRef)(0),c=(0,i.useRef)(null),m=(0,i.useRef)(null),h=(0,i.useRef)(null),p=(0,i.useRef)(null),u=e=>{s.current=e,r(e)},g=e=>{e.current&&(clearTimeout(e.current),e.current=null)},f=()=>{if(c.current=null,g(p),"hidden"===s.current||"hiding"===s.current)return;let e=Math.max(0,420-(performance.now()-d.current));g(h),h.current=setTimeout(()=>{u("hiding"),h.current=setTimeout(()=>u("hidden"),360)},e)};return((0,i.useEffect)(()=>{m.current=`${e}${window.location.search}`,f()},[e]),(0,i.useEffect)(()=>{let e=(e,t=!1)=>{(t||e!==a(new URL(window.location.href)))&&(c.current!==e||"visible"!==s.current)&&(c.current=e,g(h),g(p),d.current=performance.now(),u("visible"),p.current=setTimeout(()=>{f()},800))},t=t=>{if(t.defaultPrevented||0!==t.button||t.metaKey||t.ctrlKey||t.shiftKey||t.altKey)return;let i=t.target?.closest("a[href]");if(!i||!(i instanceof HTMLAnchorElement))return;let n=(e=>{let t=e.getAttribute("href");if(!t||t.startsWith("#")||e.target&&"_self"!==e.target||e.hasAttribute("download")||/^(mailto:|tel:|sms:|javascript:)/i.test(t))return null;let i=new URL(t,window.location.href);if(i.origin!==window.location.origin)return null;let n=new URL(window.location.href);return i.pathname===n.pathname&&i.search===n.search?null:a(i)})(i);n&&e(n)},i=window.history.pushState,n=window.history.replaceState,l=t=>{t!==a(new URL(window.location.href))&&window.setTimeout(()=>{e(t,!0)},0)};window.history.pushState=function(...e){let t=e[2];if("string"==typeof t||t instanceof URL){let e=new URL(t,window.location.href);e.origin===window.location.origin&&l(a(e))}return i.apply(this,e)},window.history.replaceState=function(...e){let t=e[2];if("string"==typeof t||t instanceof URL){let e=new URL(t,window.location.href);e.origin===window.location.origin&&l(a(e))}return n.apply(this,e)};let o=()=>{let t=a(new URL(window.location.href));t!==m.current&&e(t,!0)};return document.addEventListener("click",t,!0),window.addEventListener("popstate",o),()=>{document.removeEventListener("click",t,!0),window.removeEventListener("popstate",o),window.history.pushState=i,window.history.replaceState=n,g(h),g(p)}},[]),"hidden"===o)?null:(0,t.jsxs)("div",{className:`dm-loader${"hiding"===o?" is-hiding":""}`,role:"status","aria-live":"polite","aria-label":"Loading",onTransitionEnd:e=>{"opacity"===e.propertyName&&"hiding"===o&&(r("hidden"),s.current="hidden")},children:[(0,t.jsx)("div",{className:"dm-loader__pulse",children:(0,t.jsx)(n.default,{src:"/images/preloader.png",alt:"Doormile",width:325,height:239,priority:!0,className:"dm-loader__logo"})}),(0,t.jsx)("style",{children:` + .dm-loader { + position: fixed; + inset: 0; + z-index: 100000; + display: grid; + place-items: center; + background: #000; + opacity: 1; + transition: opacity 0.32s ease; + will-change: opacity; + } + .dm-loader.is-hiding { opacity: 0; pointer-events: none; } + .dm-loader__pulse { animation: dmLoaderPulse 1.5s linear infinite; display: grid; place-items: center; } + .dm-loader__logo { display: block; margin: 0 auto; width: clamp(120px, 32vw, 180px); height: auto; } + @keyframes dmLoaderPulse { + 50% { transform: scale(0.85); } + 100% { transform: scale(1); } + } + @media (prefers-reduced-motion: reduce) { + .dm-loader__pulse { animation: none; } + } + `})]})}])}]); \ No newline at end of file diff --git a/build/_next/static/chunks/07eq5is00w7sy.js b/build/_next/static/chunks/07eq5is00w7sy.js new file mode 100644 index 0000000..9415780 --- /dev/null +++ b/build/_next/static/chunks/07eq5is00w7sy.js @@ -0,0 +1,812 @@ +(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,5074,e=>{"use strict";var t=e.i(43476),a=e.i(71645);let n=[[[.04,.2],[.1,.12],[.18,.1],[.24,.13],[.29,.12],[.3,.18],[.27,.22],[.26,.28],[.22,.3],[.2,.38],[.17,.44],[.15,.4],[.16,.32],[.12,.3],[.09,.26],[.06,.24]],[[.21,.5],[.27,.48],[.31,.52],[.31,.6],[.29,.66],[.27,.74],[.24,.82],[.22,.8],[.22,.7],[.205,.62],[.2,.55]],[[.45,.16],[.5,.13],[.55,.15],[.57,.19],[.55,.24],[.5,.27],[.47,.25],[.455,.2]],[[.46,.34],[.53,.32],[.58,.36],[.585,.44],[.56,.52],[.53,.6],[.5,.66],[.47,.62],[.46,.52],[.45,.44],[.45,.38]],[[.56,.14],[.64,.1],[.74,.1],[.84,.14],[.9,.2],[.92,.26],[.86,.3],[.8,.3],[.74,.34],[.7,.34],[.66,.3],[.6,.3],[.575,.24],[.565,.18]],[[.81,.66],[.87,.64],[.92,.68],[.92,.74],[.86,.77],[.81,.74],[.8,.7]]],i=[[.115,.3],[.265,.255],[.285,.66],[.475,.185],[.605,.345],[.655,.4],[.745,.5],[.815,.275],[.865,.715]],r=[[0,1],[1,3],[3,4],[4,5],[5,6],[6,7],[7,8],[1,2],[3,7],[0,7]];e.s(["default",0,function({accent:e="#ef4444"}){let o=(0,a.useRef)(null);return(0,a.useEffect)(()=>{let[t,a,d]=function(e){let t=/^#?([0-9a-f]{6})$/i.exec(e.trim());if(!t)return[239,68,68];let a=parseInt(t[1],16);return[a>>16&255,a>>8&255,255&a]}(e),s=e=>`rgba(${t},${a},${d},${e})`,l=`rgb(${t},${a},${d})`,p=o.current,c=p?.parentElement;if(!p||!c)return;let m=p.getContext("2d");if(!m)return;let h=window.matchMedia?.("(prefers-reduced-motion: reduce)").matches,g=0,x=0,v=[],f=0,_=0,b=()=>{let e=c.getBoundingClientRect();g=Math.max(1,e.width),x=Math.max(1,e.height);let t=Math.min(window.devicePixelRatio||1,2);p.width=Math.round(g*t),p.height=Math.round(x*t),p.style.width=g+"px",p.style.height=x+"px",m.setTransform(t,0,0,t,0,0),(()=>{v=[];let e=Math.max(11,Math.min(17,g/70));for(let t=e/2;tt!=l>t&&e<(s-o)*(t-d)/(l-d)+o&&(n=!n)}return n}(e,i,r)){v.push({x:t,y:a});break}}})()},u=(e,t)=>({x:(e.x+t.x)/2,y:(e.y+t.y)/2-.28*Math.hypot(t.x-e.x,t.y-e.y)}),w=(e,t,a,n)=>{let i=1-n;return{x:i*i*e.x+2*i*n*t.x+n*n*a.x,y:i*i*e.y+2*i*n*t.y+n*n*a.y}},y=e=>{for(let e of(m.clearRect(0,0,g,x),m.fillStyle="rgba(120,122,130,0.55)",v))m.beginPath(),m.arc(e.x,e.y,1.15,0,2*Math.PI),m.fill();let t=i.map(([e,t])=>({x:e*g,y:t*x}));for(let[e,a]of(m.save(),m.setLineDash([4,7]),m.lineWidth=1,m.strokeStyle=s(.13),r)){let n=u(t[e],t[a]);m.beginPath(),m.moveTo(t[e].x,t[e].y),m.quadraticCurveTo(n.x,n.y,t[a].x,t[a].y),m.stroke()}m.restore(),m.save();for(let a=0;a{_||(_=e),y((e-_)/1e3),f=requestAnimationFrame(k)};b(),h?y(0):f=requestAnimationFrame(k);let j=new ResizeObserver(()=>{b(),h&&y(0)});return j.observe(c),()=>{cancelAnimationFrame(f),j.disconnect()}},[e]),(0,t.jsx)("canvas",{ref:o,className:"ind__map","aria-hidden":"true"})}])},14224,e=>{"use strict";var t=e.i(43476),a=e.i(71645),n=e.i(89970),i=e.i(83495),r=e.i(5074);n.default.registerPlugin(i.ScrollTrigger);let o=[{icon:(0,t.jsx)("svg",{className:"evnd-icon",viewBox:"0 0 24 24",fill:"none",stroke:"#f59e0b",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,t.jsx)("polygon",{points:"13 2 3 14 12 14 11 22 21 10 12 10 13 2"})}),title:"Battery-Aware Routing",desc:"Battery level, health, and degradation are first-class inputs to route optimization — not afterthoughts."},{icon:(0,t.jsx)("svg",{className:"evnd-icon",viewBox:"0 0 24 24",fill:"none",stroke:"#94a3b8",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,t.jsx)("path",{d:"M18 10h-1.28A6 6 0 0 0 12 5V3M12 5V3M6 10h1.28A6 6 0 0 0 12 5M12 18v2M12 18v2M8 10v6a4 4 0 0 0 8 0v-6"})}),title:"Charging Integration",desc:"Seamlessly integrate charging stops without compromising delivery windows or SLA commitments."},{icon:(0,t.jsx)("svg",{className:"evnd-icon",viewBox:"0 0 24 24",fill:"none",stroke:"#ef4444",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,t.jsx)("path",{d:"m8 3 4 8 5-5 5 15H2L8 3z"})}),title:"Energy-Optimized Paths",desc:"Factor in elevation, speed limits, payload weight, and live weather for maximum range efficiency."},{icon:(0,t.jsx)("svg",{className:"evnd-icon",viewBox:"0 0 24 24",fill:"none",stroke:"#ef4444",strokeWidth:"2",strokeLinecap:"round",strokeLinejoin:"round",children:(0,t.jsx)("path",{d:"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"})}),title:"Predictable Operations",desc:"EVs become predictable assets, not operational risks. Full visibility from depot to doorstep."}],d=[{value:"100%",label:"ELECTRIC FLEET"},{value:"-40%",label:"COST / MILE"}],s=[{value:99.9,decimals:1,suffix:"%",label:"SLA Compliance"},{value:42,suffix:"%",label:"Distance Saved"},{value:37,suffix:"%",label:"Fewer Vehicles"},{value:45,suffix:"ms",label:"Dispatch Latency"}];function l({value:e,decimals:n=0,suffix:i="",duration:r=1700,className:o}){let[d,s]=(0,a.useState)(0),p=(0,a.useRef)(null),c=(0,a.useRef)(!1);return(0,a.useEffect)(()=>{let t=p.current;if(!t)return;if(window.matchMedia?.("(prefers-reduced-motion: reduce)").matches)return void requestAnimationFrame(()=>s(e));let a=new IntersectionObserver(t=>{for(let n of t)if(n.isIntersecting&&!c.current){c.current=!0;let t=performance.now(),n=e=>1-Math.pow(1-e,3),i=a=>{let o=Math.min(1,(a-t)/r);s(e*n(o)),o<1?requestAnimationFrame(i):s(e)};requestAnimationFrame(i),a.disconnect()}},{threshold:.2});return a.observe(t),()=>a.disconnect()},[e,r]),(0,t.jsxs)("b",{ref:p,className:o,children:[d.toFixed(n),i]})}function p({accent:e}){return(0,t.jsx)("div",{className:"evnd__map","aria-hidden":"true",children:(0,t.jsx)(r.default,{accent:e})})}function c({metrics:e,features:a,heading:n,theme:i}){let r=i?{"--ca":i.accent,"--ca2":i.accent2,"--cg":i.glow}:void 0;return(0,t.jsxs)("div",{className:"evnd__dash",style:r,children:[n&&(0,t.jsxs)("div",{className:"evnd__dash-head",children:[(0,t.jsxs)("span",{className:"evnd__dash-live",children:[(0,t.jsx)("span",{className:"evnd__dash-livedot"}),n]}),(0,t.jsx)("span",{className:"evnd__dash-sys",children:"AI ENGINE"})]}),(0,t.jsx)("div",{className:"evnd__dash-kpis",children:e.map(e=>(0,t.jsxs)("div",{className:"evnd__kpi",children:[(0,t.jsx)(l,{value:e.value,decimals:e.decimals,suffix:e.suffix,className:"evnd__kpi-val"}),(0,t.jsx)("span",{className:"evnd__kpi-label",children:e.label})]},e.label))}),(0,t.jsx)("div",{className:"evnd__dash-feats",children:a.map(e=>(0,t.jsxs)("div",{className:"evnd__dfeat",children:[(0,t.jsx)("span",{className:"evnd__dfeat-ico","aria-hidden":"true",children:e.icon}),(0,t.jsxs)("div",{className:"evnd__dfeat-body",children:[(0,t.jsx)("span",{className:"evnd__dfeat-title",children:e.title}),(0,t.jsx)("p",{className:"evnd__dfeat-desc",children:e.desc})]})]},e.title))})]})}e.s(["default",0,function({bannerImage:e="/images/bg-header-5.webp",cardNumber:r="",cardTitle:m="EV Logistics",cardSubtitle:h="Cleaner miles, lower costs",eyebrow:g="/ EV-Native Design /",titleLead:x="BUILT FOR ELECTRIC. ",titleAccent:v="NOT ADAPTED.",features:f=o,image:_="/images/premium-ev-van.webp",imageAlt:b="DoorMile electric delivery van",badges:u=d,stats:w=s,gapTop:y=!1,gapBottom:k=!1,ariaLabel:j,mediaSlot:N,metrics:z,cardsHeading:T,cardsTheme:I}){let M=(0,a.useRef)(null),P=!!z&&z.length>0,E=P&&I?{"--ca":I.accent,"--ca2":I.accent2,"--cg":I.glow}:void 0;(0,a.useEffect)(()=>{let e=M.current;if(!e)return;let t=i.ScrollTrigger.create({trigger:e,start:"top bottom",end:"bottom top",scrub:!0,onUpdate:()=>{if(window.innerWidth>=1021){let t=window.scrollY,a=e.getBoundingClientRect().top+t;n.default.set(e,{backgroundPosition:`center ${.3*(t-a)}px`})}else n.default.set(e,{backgroundPosition:""})}});return()=>t?.kill()},[]);let S="elementor-element elementor-element-bbc6760 e-con-full e-flex cut-corner-no sticky-container-off e-con e-parent"+(P?" evnd-workflow-shell":"")+(y?" evnd-gap-top":"")+(k?" evnd-gap-bottom":"");return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("style",{dangerouslySetInnerHTML:{__html:` + /* ============================================================ + EV-Native Design — redesigned section + bg #080808 \xb7 red #ef4444 \xb7 Manrope + ============================================================ */ + + .evnd, .evnd * { font-family: "Manrope", Sans-serif !important; } + + /* External gap helpers — keep stacked workflow sections on one rhythm + (Desktop 40 \xb7 Tablet 32 \xb7 Mobile 24). Single-sided per boundary. */ + .evnd-gap-top { margin-top: 40px !important; } + .evnd-gap-bottom { margin-bottom: 40px !important; } + + .evnd { + position: relative; + isolation: isolate; + overflow: hidden; + background: #080808; + /* flat top so it connects seamlessly to the banner above; rounded + bottom only, and no top margin so there is no white gap */ + border-radius: 0 0 clamp(16px, 2vw, 28px) clamp(16px, 2vw, 28px); + margin: 0 0 clamp(28px, 5vw, 64px); + padding: 64px 48px clamp(48px, 6vw, 80px); + } + /* ---- Tighten the space below the KPI bar (WF1/WF2 only) ---- + The base section reserves a tall padding-bottom (up to 80px) plus a + margin-bottom (up to 64px) that renders as a #0d0d0d band inside the + rounded container — together ~144px of empty space after the KPI bar. + The workflows end at the bar, so trim both: the bar now sits close to + the section's bottom edge, and the outer .evnd-gap-bottom (40px) still + provides clean separation to the next section. Scoped to .evnd--cards + (specificity beats the base + responsive .evnd rules at every + breakpoint) so the homepage EV section keeps its original spacing. */ + .evnd.evnd--cards { + padding-bottom: clamp(28px, 3vw, 40px); + margin-bottom: clamp(8px, 1vw, 14px); + } + /* ---- Tighten the banner → black-section transition (≥768px) ---- + From 768px up the floating title card overlaps with a FIXED budget + (margin-top:-298px into the banner, -70px into this section). The + workflow cards carry longer subtitles than the homepage card, so they + run taller than that budget and the overflow shows as a dark #0d0d0d + spacer between the hero image and this black section. Pull the section + up under the banner to swallow that strip — the card (z-index 2) stays + on top, so the overlapping card design is preserved. The flat top tucks + cleanly behind the banner. Not applied ≤767px, where the card sits + inline (no overlap) and no spacer exists — so mobile is unchanged. */ + @media (min-width: 768px) { + .evnd { margin-top: -60px; } + } + /* ---- Floating card sizing: content-driven, not container-driven ---- + The exported Elementor card reserves a lot of vertical space that the + short title + subtitle don't fill: the red text block (3b61435) carried + 64px/73px top/bottom padding and the empty white footer strip (5aea22e) + a 70px min-height. Trim both so the card height tracks the text, while + keeping the two-tone red/white design, the 25px corner radius, and the + typography untouched. These rules live in the (body) inline

    404

    This page could not be found.

    \ No newline at end of file diff --git a/build/_not-found.txt b/build/_not-found.txt new file mode 100644 index 0000000..1fd59ca --- /dev/null +++ b/build/_not-found.txt @@ -0,0 +1,27 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +c:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +d:"$Sreact.suspense" +10:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +12:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +14:I[68027,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"P":null,"c":["","_not-found"],"q":"","i":false,"f":[[["",{"children":["/_not-found",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:1:props:children:2:props:children:1:props:children:1:props:children:props:children:1:props:notFound:0:1:props:style","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$0:f:0:1:0:props:children:1:props:children:1:props:children:2:props:children:1:props:children:1:props:children:props:children:1:props:notFound:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:1:props:children:2:props:children:1:props:children:1:props:children:props:children:1:props:notFound:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:f:0:1:0:props:children:1:props:children:1:props:children:2:props:children:1:props:children:1:props:children:props:children:1:props:notFound:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],null,["$","$Lc",null,{"children":["$","$d",null,{"name":"Next.MetadataOutlet","children":"$@e"}]}]]}],{},null,false,null]},null,false,"$@f"]},null,false,null],["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L10",null,{"children":"$L11"}],["$","div",null,{"hidden":true,"children":["$","$L12",null,{"children":["$","$d",null,{"name":"Next.Metadata","children":"$L13"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$14",["$L15"]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"kmSVPuUqY3Rhw5xy4D2nn"} +16:[] +f:"$W16" +15:["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}] +11:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] +17:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +e:null +13:[["$","title","0",{"children":"Doormile — Delivering Trust. Beyond Boundaries"}],["$","meta","1",{"name":"description","content":"Doormile powers last-mile logistics with MileTruth™ AI, providing connected miles, SLA protection, and carrier management."}],["$","meta","2",{"name":"robots","content":"index, follow"}],["$","link","3",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","4",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","5",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","6",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L17","7",{}]] diff --git a/build/_not-found/__next._full.txt b/build/_not-found/__next._full.txt new file mode 100644 index 0000000..1fd59ca --- /dev/null +++ b/build/_not-found/__next._full.txt @@ -0,0 +1,27 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +c:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +d:"$Sreact.suspense" +10:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +12:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +14:I[68027,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"P":null,"c":["","_not-found"],"q":"","i":false,"f":[[["",{"children":["/_not-found",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:1:props:children:2:props:children:1:props:children:1:props:children:props:children:1:props:notFound:0:1:props:style","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$0:f:0:1:0:props:children:1:props:children:1:props:children:2:props:children:1:props:children:1:props:children:props:children:1:props:notFound:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:f:0:1:0:props:children:1:props:children:1:props:children:2:props:children:1:props:children:1:props:children:props:children:1:props:notFound:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:f:0:1:0:props:children:1:props:children:1:props:children:2:props:children:1:props:children:1:props:children:props:children:1:props:notFound:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],null,["$","$Lc",null,{"children":["$","$d",null,{"name":"Next.MetadataOutlet","children":"$@e"}]}]]}],{},null,false,null]},null,false,"$@f"]},null,false,null],["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L10",null,{"children":"$L11"}],["$","div",null,{"hidden":true,"children":["$","$L12",null,{"children":["$","$d",null,{"name":"Next.Metadata","children":"$L13"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$14",["$L15"]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"kmSVPuUqY3Rhw5xy4D2nn"} +16:[] +f:"$W16" +15:["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}] +11:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] +17:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +e:null +13:[["$","title","0",{"children":"Doormile — Delivering Trust. Beyond Boundaries"}],["$","meta","1",{"name":"description","content":"Doormile powers last-mile logistics with MileTruth™ AI, providing connected miles, SLA protection, and carrier management."}],["$","meta","2",{"name":"robots","content":"index, follow"}],["$","link","3",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","4",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","5",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","6",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L17","7",{}]] diff --git a/build/_not-found/__next._head.txt b/build/_not-found/__next._head.txt new file mode 100644 index 0000000..c09c4ed --- /dev/null +++ b/build/_not-found/__next._head.txt @@ -0,0 +1,6 @@ +1:"$Sreact.fragment" +2:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +3:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +4:"$Sreact.suspense" +5:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +0:{"rsc":["$","$1","h",{"children":[["$","meta",null,{"name":"robots","content":"noindex"}],["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"Doormile — Delivering Trust. Beyond Boundaries"}],["$","meta","1",{"name":"description","content":"Doormile powers last-mile logistics with MileTruth™ AI, providing connected miles, SLA protection, and carrier management."}],["$","meta","2",{"name":"robots","content":"index, follow"}],["$","link","3",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","4",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","5",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","6",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L5","7",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/_not-found/__next._index.txt b/build/_not-found/__next._index.txt new file mode 100644 index 0000000..d0b3355 --- /dev/null +++ b/build/_not-found/__next._index.txt @@ -0,0 +1,15 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","template":["$","$La",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/_not-found/__next._not-found.__PAGE__.txt b/build/_not-found/__next._not-found.__PAGE__.txt new file mode 100644 index 0000000..3aad019 --- /dev/null +++ b/build/_not-found/__next._not-found.__PAGE__.txt @@ -0,0 +1,5 @@ +1:"$Sreact.fragment" +2:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +3:"$Sreact.suspense" +0:{"rsc":["$","$1","c",{"children":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],null,["$","$L2",null,{"children":["$","$3",null,{"name":"Next.MetadataOutlet","children":"$@4"}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} +4:null diff --git a/build/_not-found/__next._not-found.txt b/build/_not-found/__next._not-found.txt new file mode 100644 index 0000000..e0935ae --- /dev/null +++ b/build/_not-found/__next._not-found.txt @@ -0,0 +1,5 @@ +1:"$Sreact.fragment" +2:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:[] +0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/_not-found/__next._tree.txt b/build/_not-found/__next._tree.txt new file mode 100644 index 0000000..9976e64 --- /dev/null +++ b/build/_not-found/__next._tree.txt @@ -0,0 +1,4 @@ +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"tree":{"name":"","param":null,"prefetchHints":16,"slots":{"children":{"name":"/_not-found","param":null,"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}}}},"staleTime":300,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/about-us.html b/build/about-us.html new file mode 100644 index 0000000..51184c6 --- /dev/null +++ b/build/about-us.html @@ -0,0 +1,2042 @@ +About Us – Doormile

    Doormile

    Doormile logo
    Address
    Hyderabad

    5th Floor, Vision Ultima,
    Street No.3, Jayabheri Enclave,
    Gachibowli, Hyderabad,
    Telangana 500032.

    Coimbatore

    Mayflower Valencia,
    Near Nava India Bus Stop,
    Avinashi Road,
    Udayampalayam,
    Tamil Nadu 641037.

    Bengaluru

    C612, 6th Floor,
    Trifecta Starlight,
    ITPL Road,
    Garudacharapalya,
    Mahadevapura,
    Bangalore 560048,
    Karnataka, India.

    Contact Us

    Tel : +91 86886 97941

    Email

    care@doormile.com

    The Operators Building
    Doormile

    / Doormile Approach /


    The Doormile Way

    Smarter, Faster, Connected Logistics

    We connect first mile and last mile into one seamless system, reducing delays and improving efficiency. With real-time tracking and digital workflows,
    every delivery is faster, reliable, and fully transparent.

    Seamless logistics powered by real-time tracking, digital processes, and reliable delivery execution.

    End-to-End Protection

    End-to-end visibility ensures every shipment stays secure and on schedule.

    Proactive delay prevention

    Real-time monitoring helps prevent delays before they impact deliveries.

    Single owner, single promise

    One unified system manages the entire delivery process seamlessly.

    Dynamic AI-driven adjustments

    AI-powered routing adapts instantly to improve speed and efficiency.

    / Built for Electric Vehicles /
    Logistics Built for EV Vehicles
    EV Logistics

    Operational Visibility

    Real-time tracking and centralized control provide complete visibility across every shipment, vehicle, and delivery milestone.

    Intelligent Routing

    AI-powered route optimization reduces travel time, improves delivery accuracy, and maximizes fleet utilization.

    EV-First Logistics

    Purpose-built workflows for electric fleets improve battery efficiency, charging management, and sustainable operations.

    Scalable Network

    Flexible logistics infrastructure supports growth across cities, regions, and high-volume delivery operations without disruption.

    / DoorMile wins/

    WHERE DOORMILE WINS

    A side-by-side technical capabilities comparison showing how operational fleet ownership and dynamic AI planning disrupt basic aggregators.

    CapabilityDoormileAggregatorsLocal CouriersSoftware Platforms
    Owned fleet control✓ YesNoYesNo
    Dynamic routing & dispatch✓ AdvancedBasicNoAdvanced
    EV-aware planning✓ YesNoNoNo
    Documentation & proof trail✓ YesPartialNoYes
    Real-time tracking✓ YesYesNoYes
    Verified handling✓ YesPartialNoNo
    Hyperlocal learning✓ YesNoNoNo
    SLA accountability✓ HighLowMediumLow
    VISION / 2030

    The Intelligence Grid Behind Every Urban Mile

    From Hyderabad EV pilot to nationwide AI logistics intelligence by 2030

    ROADMAP TO 2030
    100% COMPLETE →
    2026
    Pilot Phase
    Pilot

    Launch operations in Hyderabad with dedicated EV hubs and MileTruth AI v1.0.

    100+ orders/day
    1 city
    10+ women partners
    2027
    Multi-City
    Scale

    Expand to Bengaluru and Chennai, securing key B2B enterprise traction.

    500+ orders/day
    3 cities
    50+ EVs
    2028
    Platform
    Expansion

    Scale to 5+ cities. Strengthen regional operations.

    5000+ orders/day
    5+ cities
    100+ women partners
    2030
    Vision State
    AI Pulse Layer

    Nationwide AI logistics grid reaching 15+ cities, empowering female micro-entrepreneurs.

    50,000+ orders/day
    Rs50+ cities
    2,000+ women partners
    /Team /

    Meet crew

    Ratan Kumar
    Ratan Kumar
    COO & Operational Specialist
    Aravinth
    Aravinth
    CFO & Finance Specialist
    Fazul Ilahi
    Fazul Ilahi
    CTO & Technology Specialist
    Suriya Kumar
    Suriya Kumar
    Engineering Head & AI Specialist

    Ready to Start
    Your Journey?

    Join our Women Entrepreneurship program and become part of
    India's fastest-growing logistics network.

    \ No newline at end of file diff --git a/build/about-us.txt b/build/about-us.txt new file mode 100644 index 0000000..79e2396 --- /dev/null +++ b/build/about-us.txt @@ -0,0 +1,173 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +19:I[68027,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/chunks/0v290txaarww5.css","style"] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +:HL["/images/about-bg.webp","image"] +0:{"P":null,"c":["","about-us"],"q":"","i":false,"f":[[["",{"children":["about-us",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","div",null,{"id":"about","className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":["$","div",null,{"data-elementor-type":"wp-page","data-elementor-id":"86","className":"elementor elementor-86 elementor-59","children":[[["$","link",null,{"rel":"preload","as":"image","href":"/images/about-bg.webp"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":"\n .about-us-hero-content {\n width: 100% !important;\n text-align: center !important;\n color: #fff !important;\n padding: 0 15px !important;\n z-index: 2;\n display: flex !important;\n flex-direction: column !important;\n justify-content: center !important;\n align-items: center !important;\n height: 100% !important;\n }\n\n .about-us-hero-title {\n margin: 0 !important;\n font-family: \"Manrope\", Sans-serif !important;\n font-size: clamp(34px, 5.5vw, 68px) !important;\n font-weight: 850 !important;\n line-height: 1.1 !important;\n text-transform: uppercase !important;\n letter-spacing: -1.5px !important;\n color: #ffffff !important;\n text-align: center !important;\n }\n "}}],"$Lc"],"$Ld","$Le","$Lf","$L10","$L11","$L12"]}]}]}]}],["$L13","$L14","$L15"],"$L16"]}],{},null,false,null]},null,false,"$@17"]},null,false,null],"$L18",false]],"m":"$undefined","G":["$19",["$L1a"]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"kmSVPuUqY3Rhw5xy4D2nn"} +1b:I[24911,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0dt55bg8oa_k~.js","/_next/static/chunks/0nzz4x75f.ixz.js"],"default"] +1c:I[61867,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0dt55bg8oa_k~.js","/_next/static/chunks/0nzz4x75f.ixz.js"],"default"] +1d:I[47580,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0dt55bg8oa_k~.js","/_next/static/chunks/0nzz4x75f.ixz.js"],"default"] +1e:I[2012,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0dt55bg8oa_k~.js","/_next/static/chunks/0nzz4x75f.ixz.js"],"default"] +21:I[22016,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0dt55bg8oa_k~.js","/_next/static/chunks/0nzz4x75f.ixz.js"],""] +22:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +23:"$Sreact.suspense" +26:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +28:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +c:["$","div",null,{"className":"custom-standard-hero-container","children":["$","div",null,{"style":{"backgroundImage":"url('/images/about-bg.webp')","--hero-overlay":"linear-gradient(to bottom, rgba(0, 0, 0, 0.85) 0%, rgba(0, 0, 0, 0.92) 60%, rgba(0, 0, 0, 0.98) 100%)"},"className":"custom-standard-hero-card","children":["$","div",null,{"className":"about-us-hero-content","children":["$","h3",null,{"className":"about-us-hero-title","children":["The Operators Building ",["$","br",null,{}]," ",["$","span",null,{"style":{"color":"#C01227"},"children":"Doormile"}]]}]}]}]}] +d:["$","$L1b",null,{}] +e:["$","$L1c",null,{}] +f:["$","$L1d",null,{}] +10:["$","$L1e",null,{}] +1f:T102e, + /* Box this section to the same inset width the sibling sections use. + The container's "display: var(--display)" resolves to the invalid + fallback (inline) here, so max-width was being ignored and the section + spanned edge-to-edge (heading clipped at the viewport edge). Force the + flex display back on and pin the inner to the shared 1480px inset. */ + .elementor-86 .elementor-element-c2c601a { + display: flex; + } + .elementor-86 .elementor-element-c2c601a > .e-con-inner { + display: flex; + flex-direction: column; + max-width: 1480px; + width: 100%; + margin-left: auto; + margin-right: auto; + padding-left: clamp(20px, 4vw, 50px) !important; + padding-right: clamp(20px, 4vw, 50px) !important; + box-sizing: border-box; + } + + /* Breathing room above and below the "Meet our the best crew" heading. */ + .elementor-86 .elementor-element-c46350e > .elementor-widget-container { + margin-top: 40px; + margin-bottom: 56px; + } + + /* Team photos: grayscale by default, full colour on hover (matches design) */ + .team-listing-wrapper.team-grid-listing .team-item .post-media img { + filter: grayscale(100%); + transition: filter 0.45s ease; + } + .team-listing-wrapper.team-grid-listing .team-item:hover .post-media img { + filter: grayscale(0%); + } + + /* Grid: four columns that wrap, with tightened row/column gaps. */ + .team-listing-wrapper.team-grid-listing { + display: flex; + flex-wrap: wrap; + margin: 0 -16px -40px; + } + .team-listing-wrapper.team-grid-listing .team-item-wrapper { + width: 25%; + padding: 0 16px; + margin-bottom: 40px; + box-sizing: border-box; + } + @media (max-width: 1024px) { + .team-listing-wrapper.team-grid-listing .team-item-wrapper { width: 50%; } + } + @media (max-width: 767px) { + .elementor-86 .elementor-element-c2c601a > .e-con-inner { + padding-left: 0 !important; + padding-right: 0 !important; + padding-top: 32px !important; + padding-bottom: 32px !important; + } + .elementor-86 .elementor-element-c46350e > .elementor-widget-container { + margin-top: 24px !important; + margin-bottom: 24px !important; + } + .team-listing-wrapper.team-grid-listing { + margin: 0 0 -28px; + } + .team-listing-wrapper.team-grid-listing .team-item-wrapper { + width: 100%; + padding: 0; + margin-bottom: 28px; + } + } + @media (max-width: 480px) { + .team-listing-wrapper.team-grid-listing { + margin: 0 0 -28px; + } + .team-listing-wrapper.team-grid-listing .team-item-wrapper { + width: 100%; + padding: 0; + margin-bottom: 28px; + } + } + + /* Card: photo on top, name/position at the bottom (down to image). */ + .team-listing-wrapper.team-grid-listing .team-item { + display: flex; + flex-direction: column; + align-items: flex-start; + gap: 16px; + width: 100%; + } + /* Compact portrait photo. Extra .team-item in the selector raises the + specificity so it beats the cached vendor rule (width: 45.65%). */ + .team-listing-wrapper.team-grid-listing .team-item .team-item-media { + width: 100%; + margin: 0; + } + .team-listing-wrapper.team-grid-listing .team-item .post-media { + height: 0; + padding-top: 120%; + border-radius: 16px; + overflow: hidden; + } + .team-listing-wrapper.team-grid-listing .team-item .post-media img { + position: absolute; + inset: 0; + width: 100%; + height: 100%; + object-fit: cover; + } + .team-listing-wrapper.team-grid-listing .team-item .team-item-content { + width: 100%; + margin: 0; + } + .team-listing-wrapper.team-grid-listing .team-item .post-title .team-member-name { + color: inherit; + text-decoration: none; + } + 11:[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$1f"}}],"$L20"] +12:[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"\n @media (max-width: 768px) {\n .we-container {\n margin-top: 40px !important;\n margin-bottom: 40px !important;\n padding: 0 10px !important;\n }\n .we-cta {\n padding: 48px 20px !important;\n border-radius: 22px !important;\n }\n .we-cta-title {\n font-size: clamp(28px, 6vw, 38px) !important;\n line-height: 1.25 !important;\n margin-bottom: 16px !important;\n }\n .we-cta-sub {\n font-size: 15px !important;\n line-height: 1.5 !important;\n margin-bottom: 24px !important;\n }\n }\n "}}],["$","div",null,{"className":"we-container","children":["$","div",null,{"className":"we-cta reveal","children":["$","div",null,{"className":"we-cta-inner","children":[["$","h2",null,{"className":"we-cta-title","children":["Ready to Start",["$","br",null,{}],["$","em",null,{"children":"Your Journey?"}]]}],["$","p",null,{"className":"we-cta-sub","children":["Join our Women Entrepreneurship program and become part of ",["$","br",null,{}],"India's fastest-growing logistics network."]}],["$","div",null,{"className":"we-cta-btns","children":["$","$L21",null,{"href":"/contact","className":"btn-we-primary","style":{"textDecoration":"none"},"children":["Apply Now",["$","svg",null,{"width":"20","height":"20","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","style":{"marginLeft":"8px","display":"inline-block","verticalAlign":"middle"},"children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]}]]}]}]}]] +13:["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0v290txaarww5.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}] +14:["$","script","script-0",{"src":"/_next/static/chunks/0dt55bg8oa_k~.js","async":true,"nonce":"$undefined"}] +15:["$","script","script-1",{"src":"/_next/static/chunks/0nzz4x75f.ixz.js","async":true,"nonce":"$undefined"}] +16:["$","$L22",null,{"children":["$","$23",null,{"name":"Next.MetadataOutlet","children":"$@24"}]}] +25:[] +17:"$W25" +18:["$","$1","h",{"children":[null,["$","$L26",null,{"children":"$L27"}],["$","div",null,{"hidden":true,"children":["$","$L28",null,{"children":["$","$23",null,{"name":"Next.Metadata","children":"$L29"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}] +1a:["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}] +2a:I[5500,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0dt55bg8oa_k~.js","/_next/static/chunks/0nzz4x75f.ixz.js"],"Image"] +20:["$","div",null,{"className":"elementor-element elementor-element-c2c601a e-flex e-con-boxed cut-corner-no sticky-container-off e-con e-parent","data-id":"c2c601a","data-element_type":"container","data-e-type":"container","children":["$","div",null,{"className":"e-con-inner","children":["$","div",null,{"className":"elementor-element elementor-element-3306a27 e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"3306a27","data-element_type":"container","data-e-type":"container","children":[["$","div",null,{"className":"elementor-element elementor-element-7afb238 elementor-widget elementor-widget-logico_heading","data-id":"7afb238","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_heading.default","children":["$","div",null,{"className":"elementor-widget-container","children":["$","div",null,{"className":"logico-title","children":"/Team /"}]}]}],["$","div",null,{"style":{"alignSelf":"flex-start","width":"100%"},"className":"elementor-element elementor-element-c46350e elementor-widget__width-initial elementor-widget elementor-widget-logico_heading","data-id":"c46350e","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_heading.default","children":["$","div",null,{"className":"elementor-widget-container","children":["$","h3",null,{"className":"logico-title","style":{"textAlign":"left"},"children":"Meet crew"}]}]}],["$","div",null,{"className":"elementor-element elementor-element-ac909e5 elementor-widget elementor-widget-logico_team_listing","data-id":"ac909e5","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_team_listing.default","children":["$","div",null,{"className":"elementor-widget-container","children":["$","div",null,{"className":"logico-team-listing-widget","children":["$","div",null,{"className":"archive-listing","children":["$","div",null,{"className":"archive-listing-wrapper team-listing-wrapper team-grid-listing columns-4","children":[["$","div","0",{"className":"team-item-wrapper post-2866 team type-team status-publish has-post-thumbnail hentry","children":["$","div",null,{"className":"team-item","children":[["$","div",null,{"className":"team-item-media","children":["$","div",null,{"className":"post-media","children":["$","$L2a",null,{"src":"/images/Investor.webp","alt":"Ratan Kumar","width":300,"height":360,"style":{"objectFit":"cover","width":"100%","height":"100%"}}]}]}],["$","div",null,{"className":"team-item-content","children":[["$","div",null,{"className":"post-title","children":["$","span",null,{"className":"team-member-name","children":"Ratan Kumar"}]}],["$","div",null,{"className":"team-item-position","dangerouslySetInnerHTML":{"__html":"COO & Operational Specialist"}}],["$","div",null,{"className":"team-item-socials","children":["$","ul",null,{"className":"team-socials wrapper-socials","children":["$","li",null,{"children":["$","a",null,{"href":"https://www.linkedin.com/","target":"_blank","rel":"noreferrer","className":"fab fa-linkedin-in"}]}]}]}]]}]]}]}],["$","div","1",{"className":"team-item-wrapper post-2866 team type-team status-publish has-post-thumbnail hentry","children":["$","div",null,{"className":"team-item","children":[["$","div",null,{"className":"team-item-media","children":["$","div",null,{"className":"post-media","children":["$","$L2a",null,{"src":"/images/Aravinth.webp","alt":"Aravinth","width":300,"height":360,"style":{"objectFit":"cover","width":"100%","height":"100%"}}]}]}],["$","div",null,{"className":"team-item-content","children":[["$","div",null,{"className":"post-title","children":["$","span",null,{"className":"team-member-name","children":"Aravinth"}]}],["$","div",null,{"className":"team-item-position","dangerouslySetInnerHTML":{"__html":"CFO & Finance Specialist"}}],["$","div",null,{"className":"team-item-socials","children":["$","ul",null,{"className":"team-socials wrapper-socials","children":["$","li",null,{"children":["$","a",null,{"href":"https://www.linkedin.com/","target":"_blank","rel":"noreferrer","className":"fab fa-linkedin-in"}]}]}]}]]}]]}]}],["$","div","2",{"className":"team-item-wrapper post-2866 team type-team status-publish has-post-thumbnail hentry","children":["$","div",null,{"className":"team-item","children":[["$","div",null,{"className":"team-item-media","children":["$","div",null,{"className":"post-media","children":"$L2b"}]}],"$L2c"]}]}],"$L2d"]}]}]}]}]}]]}]}]}] +2b:["$","$L2a",null,{"src":"/images/Fazul.webp","alt":"Fazul Ilahi","width":300,"height":360,"style":{"objectFit":"cover","width":"100%","height":"100%"}}] +2c:["$","div",null,{"className":"team-item-content","children":[["$","div",null,{"className":"post-title","children":["$","span",null,{"className":"team-member-name","children":"Fazul Ilahi"}]}],["$","div",null,{"className":"team-item-position","dangerouslySetInnerHTML":{"__html":"CTO & Technology Specialist"}}],["$","div",null,{"className":"team-item-socials","children":["$","ul",null,{"className":"team-socials wrapper-socials","children":["$","li",null,{"children":["$","a",null,{"href":"https://www.linkedin.com/","target":"_blank","rel":"noreferrer","className":"fab fa-linkedin-in"}]}]}]}]]}] +2d:["$","div","3",{"className":"team-item-wrapper post-2866 team type-team status-publish has-post-thumbnail hentry","children":["$","div",null,{"className":"team-item","children":[["$","div",null,{"className":"team-item-media","children":["$","div",null,{"className":"post-media","children":["$","$L2a",null,{"src":"/images/Suriya.webp","alt":"Suriya Kumar","width":300,"height":360,"style":{"objectFit":"cover","width":"100%","height":"100%"}}]}]}],["$","div",null,{"className":"team-item-content","children":[["$","div",null,{"className":"post-title","children":["$","span",null,{"className":"team-member-name","children":"Suriya Kumar"}]}],["$","div",null,{"className":"team-item-position","dangerouslySetInnerHTML":{"__html":"Engineering Head & AI Specialist"}}],["$","div",null,{"className":"team-item-socials","children":["$","ul",null,{"className":"team-socials wrapper-socials","children":["$","li",null,{"children":["$","a",null,{"href":"https://www.linkedin.com/","target":"_blank","rel":"noreferrer","className":"fab fa-linkedin-in"}]}]}]}]]}]]}]}] +27:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] +2e:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +24:null +29:[["$","title","0",{"children":"About Us – Doormile"}],["$","meta","1",{"name":"description","content":"Meet the best crew and operators behind Doormile. Explore our roadmap, competitive edge, and operational excellence in EV and last-mile logistics."}],["$","meta","2",{"name":"robots","content":"index, follow"}],["$","link","3",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","4",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","5",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","6",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L2e","7",{}]] diff --git a/build/about-us/__next._full.txt b/build/about-us/__next._full.txt new file mode 100644 index 0000000..79e2396 --- /dev/null +++ b/build/about-us/__next._full.txt @@ -0,0 +1,173 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +19:I[68027,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/chunks/0v290txaarww5.css","style"] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +:HL["/images/about-bg.webp","image"] +0:{"P":null,"c":["","about-us"],"q":"","i":false,"f":[[["",{"children":["about-us",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","div",null,{"id":"about","className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":["$","div",null,{"data-elementor-type":"wp-page","data-elementor-id":"86","className":"elementor elementor-86 elementor-59","children":[[["$","link",null,{"rel":"preload","as":"image","href":"/images/about-bg.webp"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":"\n .about-us-hero-content {\n width: 100% !important;\n text-align: center !important;\n color: #fff !important;\n padding: 0 15px !important;\n z-index: 2;\n display: flex !important;\n flex-direction: column !important;\n justify-content: center !important;\n align-items: center !important;\n height: 100% !important;\n }\n\n .about-us-hero-title {\n margin: 0 !important;\n font-family: \"Manrope\", Sans-serif !important;\n font-size: clamp(34px, 5.5vw, 68px) !important;\n font-weight: 850 !important;\n line-height: 1.1 !important;\n text-transform: uppercase !important;\n letter-spacing: -1.5px !important;\n color: #ffffff !important;\n text-align: center !important;\n }\n "}}],"$Lc"],"$Ld","$Le","$Lf","$L10","$L11","$L12"]}]}]}]}],["$L13","$L14","$L15"],"$L16"]}],{},null,false,null]},null,false,"$@17"]},null,false,null],"$L18",false]],"m":"$undefined","G":["$19",["$L1a"]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"kmSVPuUqY3Rhw5xy4D2nn"} +1b:I[24911,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0dt55bg8oa_k~.js","/_next/static/chunks/0nzz4x75f.ixz.js"],"default"] +1c:I[61867,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0dt55bg8oa_k~.js","/_next/static/chunks/0nzz4x75f.ixz.js"],"default"] +1d:I[47580,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0dt55bg8oa_k~.js","/_next/static/chunks/0nzz4x75f.ixz.js"],"default"] +1e:I[2012,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0dt55bg8oa_k~.js","/_next/static/chunks/0nzz4x75f.ixz.js"],"default"] +21:I[22016,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0dt55bg8oa_k~.js","/_next/static/chunks/0nzz4x75f.ixz.js"],""] +22:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +23:"$Sreact.suspense" +26:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +28:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +c:["$","div",null,{"className":"custom-standard-hero-container","children":["$","div",null,{"style":{"backgroundImage":"url('/images/about-bg.webp')","--hero-overlay":"linear-gradient(to bottom, rgba(0, 0, 0, 0.85) 0%, rgba(0, 0, 0, 0.92) 60%, rgba(0, 0, 0, 0.98) 100%)"},"className":"custom-standard-hero-card","children":["$","div",null,{"className":"about-us-hero-content","children":["$","h3",null,{"className":"about-us-hero-title","children":["The Operators Building ",["$","br",null,{}]," ",["$","span",null,{"style":{"color":"#C01227"},"children":"Doormile"}]]}]}]}]}] +d:["$","$L1b",null,{}] +e:["$","$L1c",null,{}] +f:["$","$L1d",null,{}] +10:["$","$L1e",null,{}] +1f:T102e, + /* Box this section to the same inset width the sibling sections use. + The container's "display: var(--display)" resolves to the invalid + fallback (inline) here, so max-width was being ignored and the section + spanned edge-to-edge (heading clipped at the viewport edge). Force the + flex display back on and pin the inner to the shared 1480px inset. */ + .elementor-86 .elementor-element-c2c601a { + display: flex; + } + .elementor-86 .elementor-element-c2c601a > .e-con-inner { + display: flex; + flex-direction: column; + max-width: 1480px; + width: 100%; + margin-left: auto; + margin-right: auto; + padding-left: clamp(20px, 4vw, 50px) !important; + padding-right: clamp(20px, 4vw, 50px) !important; + box-sizing: border-box; + } + + /* Breathing room above and below the "Meet our the best crew" heading. */ + .elementor-86 .elementor-element-c46350e > .elementor-widget-container { + margin-top: 40px; + margin-bottom: 56px; + } + + /* Team photos: grayscale by default, full colour on hover (matches design) */ + .team-listing-wrapper.team-grid-listing .team-item .post-media img { + filter: grayscale(100%); + transition: filter 0.45s ease; + } + .team-listing-wrapper.team-grid-listing .team-item:hover .post-media img { + filter: grayscale(0%); + } + + /* Grid: four columns that wrap, with tightened row/column gaps. */ + .team-listing-wrapper.team-grid-listing { + display: flex; + flex-wrap: wrap; + margin: 0 -16px -40px; + } + .team-listing-wrapper.team-grid-listing .team-item-wrapper { + width: 25%; + padding: 0 16px; + margin-bottom: 40px; + box-sizing: border-box; + } + @media (max-width: 1024px) { + .team-listing-wrapper.team-grid-listing .team-item-wrapper { width: 50%; } + } + @media (max-width: 767px) { + .elementor-86 .elementor-element-c2c601a > .e-con-inner { + padding-left: 0 !important; + padding-right: 0 !important; + padding-top: 32px !important; + padding-bottom: 32px !important; + } + .elementor-86 .elementor-element-c46350e > .elementor-widget-container { + margin-top: 24px !important; + margin-bottom: 24px !important; + } + .team-listing-wrapper.team-grid-listing { + margin: 0 0 -28px; + } + .team-listing-wrapper.team-grid-listing .team-item-wrapper { + width: 100%; + padding: 0; + margin-bottom: 28px; + } + } + @media (max-width: 480px) { + .team-listing-wrapper.team-grid-listing { + margin: 0 0 -28px; + } + .team-listing-wrapper.team-grid-listing .team-item-wrapper { + width: 100%; + padding: 0; + margin-bottom: 28px; + } + } + + /* Card: photo on top, name/position at the bottom (down to image). */ + .team-listing-wrapper.team-grid-listing .team-item { + display: flex; + flex-direction: column; + align-items: flex-start; + gap: 16px; + width: 100%; + } + /* Compact portrait photo. Extra .team-item in the selector raises the + specificity so it beats the cached vendor rule (width: 45.65%). */ + .team-listing-wrapper.team-grid-listing .team-item .team-item-media { + width: 100%; + margin: 0; + } + .team-listing-wrapper.team-grid-listing .team-item .post-media { + height: 0; + padding-top: 120%; + border-radius: 16px; + overflow: hidden; + } + .team-listing-wrapper.team-grid-listing .team-item .post-media img { + position: absolute; + inset: 0; + width: 100%; + height: 100%; + object-fit: cover; + } + .team-listing-wrapper.team-grid-listing .team-item .team-item-content { + width: 100%; + margin: 0; + } + .team-listing-wrapper.team-grid-listing .team-item .post-title .team-member-name { + color: inherit; + text-decoration: none; + } + 11:[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$1f"}}],"$L20"] +12:[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"\n @media (max-width: 768px) {\n .we-container {\n margin-top: 40px !important;\n margin-bottom: 40px !important;\n padding: 0 10px !important;\n }\n .we-cta {\n padding: 48px 20px !important;\n border-radius: 22px !important;\n }\n .we-cta-title {\n font-size: clamp(28px, 6vw, 38px) !important;\n line-height: 1.25 !important;\n margin-bottom: 16px !important;\n }\n .we-cta-sub {\n font-size: 15px !important;\n line-height: 1.5 !important;\n margin-bottom: 24px !important;\n }\n }\n "}}],["$","div",null,{"className":"we-container","children":["$","div",null,{"className":"we-cta reveal","children":["$","div",null,{"className":"we-cta-inner","children":[["$","h2",null,{"className":"we-cta-title","children":["Ready to Start",["$","br",null,{}],["$","em",null,{"children":"Your Journey?"}]]}],["$","p",null,{"className":"we-cta-sub","children":["Join our Women Entrepreneurship program and become part of ",["$","br",null,{}],"India's fastest-growing logistics network."]}],["$","div",null,{"className":"we-cta-btns","children":["$","$L21",null,{"href":"/contact","className":"btn-we-primary","style":{"textDecoration":"none"},"children":["Apply Now",["$","svg",null,{"width":"20","height":"20","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","style":{"marginLeft":"8px","display":"inline-block","verticalAlign":"middle"},"children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]}]]}]}]}]] +13:["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0v290txaarww5.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}] +14:["$","script","script-0",{"src":"/_next/static/chunks/0dt55bg8oa_k~.js","async":true,"nonce":"$undefined"}] +15:["$","script","script-1",{"src":"/_next/static/chunks/0nzz4x75f.ixz.js","async":true,"nonce":"$undefined"}] +16:["$","$L22",null,{"children":["$","$23",null,{"name":"Next.MetadataOutlet","children":"$@24"}]}] +25:[] +17:"$W25" +18:["$","$1","h",{"children":[null,["$","$L26",null,{"children":"$L27"}],["$","div",null,{"hidden":true,"children":["$","$L28",null,{"children":["$","$23",null,{"name":"Next.Metadata","children":"$L29"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}] +1a:["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}] +2a:I[5500,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0dt55bg8oa_k~.js","/_next/static/chunks/0nzz4x75f.ixz.js"],"Image"] +20:["$","div",null,{"className":"elementor-element elementor-element-c2c601a e-flex e-con-boxed cut-corner-no sticky-container-off e-con e-parent","data-id":"c2c601a","data-element_type":"container","data-e-type":"container","children":["$","div",null,{"className":"e-con-inner","children":["$","div",null,{"className":"elementor-element elementor-element-3306a27 e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"3306a27","data-element_type":"container","data-e-type":"container","children":[["$","div",null,{"className":"elementor-element elementor-element-7afb238 elementor-widget elementor-widget-logico_heading","data-id":"7afb238","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_heading.default","children":["$","div",null,{"className":"elementor-widget-container","children":["$","div",null,{"className":"logico-title","children":"/Team /"}]}]}],["$","div",null,{"style":{"alignSelf":"flex-start","width":"100%"},"className":"elementor-element elementor-element-c46350e elementor-widget__width-initial elementor-widget elementor-widget-logico_heading","data-id":"c46350e","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_heading.default","children":["$","div",null,{"className":"elementor-widget-container","children":["$","h3",null,{"className":"logico-title","style":{"textAlign":"left"},"children":"Meet crew"}]}]}],["$","div",null,{"className":"elementor-element elementor-element-ac909e5 elementor-widget elementor-widget-logico_team_listing","data-id":"ac909e5","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_team_listing.default","children":["$","div",null,{"className":"elementor-widget-container","children":["$","div",null,{"className":"logico-team-listing-widget","children":["$","div",null,{"className":"archive-listing","children":["$","div",null,{"className":"archive-listing-wrapper team-listing-wrapper team-grid-listing columns-4","children":[["$","div","0",{"className":"team-item-wrapper post-2866 team type-team status-publish has-post-thumbnail hentry","children":["$","div",null,{"className":"team-item","children":[["$","div",null,{"className":"team-item-media","children":["$","div",null,{"className":"post-media","children":["$","$L2a",null,{"src":"/images/Investor.webp","alt":"Ratan Kumar","width":300,"height":360,"style":{"objectFit":"cover","width":"100%","height":"100%"}}]}]}],["$","div",null,{"className":"team-item-content","children":[["$","div",null,{"className":"post-title","children":["$","span",null,{"className":"team-member-name","children":"Ratan Kumar"}]}],["$","div",null,{"className":"team-item-position","dangerouslySetInnerHTML":{"__html":"COO & Operational Specialist"}}],["$","div",null,{"className":"team-item-socials","children":["$","ul",null,{"className":"team-socials wrapper-socials","children":["$","li",null,{"children":["$","a",null,{"href":"https://www.linkedin.com/","target":"_blank","rel":"noreferrer","className":"fab fa-linkedin-in"}]}]}]}]]}]]}]}],["$","div","1",{"className":"team-item-wrapper post-2866 team type-team status-publish has-post-thumbnail hentry","children":["$","div",null,{"className":"team-item","children":[["$","div",null,{"className":"team-item-media","children":["$","div",null,{"className":"post-media","children":["$","$L2a",null,{"src":"/images/Aravinth.webp","alt":"Aravinth","width":300,"height":360,"style":{"objectFit":"cover","width":"100%","height":"100%"}}]}]}],["$","div",null,{"className":"team-item-content","children":[["$","div",null,{"className":"post-title","children":["$","span",null,{"className":"team-member-name","children":"Aravinth"}]}],["$","div",null,{"className":"team-item-position","dangerouslySetInnerHTML":{"__html":"CFO & Finance Specialist"}}],["$","div",null,{"className":"team-item-socials","children":["$","ul",null,{"className":"team-socials wrapper-socials","children":["$","li",null,{"children":["$","a",null,{"href":"https://www.linkedin.com/","target":"_blank","rel":"noreferrer","className":"fab fa-linkedin-in"}]}]}]}]]}]]}]}],["$","div","2",{"className":"team-item-wrapper post-2866 team type-team status-publish has-post-thumbnail hentry","children":["$","div",null,{"className":"team-item","children":[["$","div",null,{"className":"team-item-media","children":["$","div",null,{"className":"post-media","children":"$L2b"}]}],"$L2c"]}]}],"$L2d"]}]}]}]}]}]]}]}]}] +2b:["$","$L2a",null,{"src":"/images/Fazul.webp","alt":"Fazul Ilahi","width":300,"height":360,"style":{"objectFit":"cover","width":"100%","height":"100%"}}] +2c:["$","div",null,{"className":"team-item-content","children":[["$","div",null,{"className":"post-title","children":["$","span",null,{"className":"team-member-name","children":"Fazul Ilahi"}]}],["$","div",null,{"className":"team-item-position","dangerouslySetInnerHTML":{"__html":"CTO & Technology Specialist"}}],["$","div",null,{"className":"team-item-socials","children":["$","ul",null,{"className":"team-socials wrapper-socials","children":["$","li",null,{"children":["$","a",null,{"href":"https://www.linkedin.com/","target":"_blank","rel":"noreferrer","className":"fab fa-linkedin-in"}]}]}]}]]}] +2d:["$","div","3",{"className":"team-item-wrapper post-2866 team type-team status-publish has-post-thumbnail hentry","children":["$","div",null,{"className":"team-item","children":[["$","div",null,{"className":"team-item-media","children":["$","div",null,{"className":"post-media","children":["$","$L2a",null,{"src":"/images/Suriya.webp","alt":"Suriya Kumar","width":300,"height":360,"style":{"objectFit":"cover","width":"100%","height":"100%"}}]}]}],["$","div",null,{"className":"team-item-content","children":[["$","div",null,{"className":"post-title","children":["$","span",null,{"className":"team-member-name","children":"Suriya Kumar"}]}],["$","div",null,{"className":"team-item-position","dangerouslySetInnerHTML":{"__html":"Engineering Head & AI Specialist"}}],["$","div",null,{"className":"team-item-socials","children":["$","ul",null,{"className":"team-socials wrapper-socials","children":["$","li",null,{"children":["$","a",null,{"href":"https://www.linkedin.com/","target":"_blank","rel":"noreferrer","className":"fab fa-linkedin-in"}]}]}]}]]}]]}]}] +27:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] +2e:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +24:null +29:[["$","title","0",{"children":"About Us – Doormile"}],["$","meta","1",{"name":"description","content":"Meet the best crew and operators behind Doormile. Explore our roadmap, competitive edge, and operational excellence in EV and last-mile logistics."}],["$","meta","2",{"name":"robots","content":"index, follow"}],["$","link","3",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","4",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","5",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","6",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L2e","7",{}]] diff --git a/build/about-us/__next._head.txt b/build/about-us/__next._head.txt new file mode 100644 index 0000000..c9bd61f --- /dev/null +++ b/build/about-us/__next._head.txt @@ -0,0 +1,6 @@ +1:"$Sreact.fragment" +2:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +3:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +4:"$Sreact.suspense" +5:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +0:{"rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"About Us – Doormile"}],["$","meta","1",{"name":"description","content":"Meet the best crew and operators behind Doormile. Explore our roadmap, competitive edge, and operational excellence in EV and last-mile logistics."}],["$","meta","2",{"name":"robots","content":"index, follow"}],["$","link","3",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","4",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","5",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","6",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L5","7",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/about-us/__next._index.txt b/build/about-us/__next._index.txt new file mode 100644 index 0000000..d0b3355 --- /dev/null +++ b/build/about-us/__next._index.txt @@ -0,0 +1,15 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","template":["$","$La",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/about-us/__next._tree.txt b/build/about-us/__next._tree.txt new file mode 100644 index 0000000..cd3fa9a --- /dev/null +++ b/build/about-us/__next._tree.txt @@ -0,0 +1,11 @@ +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/chunks/0v290txaarww5.css","style"] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +:HL["/images/about-bg.webp","image"] +0:{"tree":{"name":"","param":null,"prefetchHints":16,"slots":{"children":{"name":"about-us","param":null,"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}}}},"staleTime":300,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/about-us/__next.about-us.__PAGE__.txt b/build/about-us/__next.about-us.__PAGE__.txt new file mode 100644 index 0000000..d482fba --- /dev/null +++ b/build/about-us/__next.about-us.__PAGE__.txt @@ -0,0 +1,139 @@ +1:"$Sreact.fragment" +2:I[24911,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0dt55bg8oa_k~.js","/_next/static/chunks/0nzz4x75f.ixz.js"],"default"] +3:I[61867,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0dt55bg8oa_k~.js","/_next/static/chunks/0nzz4x75f.ixz.js"],"default"] +4:I[47580,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0dt55bg8oa_k~.js","/_next/static/chunks/0nzz4x75f.ixz.js"],"default"] +5:I[2012,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0dt55bg8oa_k~.js","/_next/static/chunks/0nzz4x75f.ixz.js"],"default"] +d:I[5500,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0dt55bg8oa_k~.js","/_next/static/chunks/0nzz4x75f.ixz.js"],"Image"] +11:I[22016,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0dt55bg8oa_k~.js","/_next/static/chunks/0nzz4x75f.ixz.js"],""] +12:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +13:"$Sreact.suspense" +:HL["/images/about-bg.webp","image"] +:HL["/_next/static/chunks/0v290txaarww5.css","style"] +6:T102e, + /* Box this section to the same inset width the sibling sections use. + The container's "display: var(--display)" resolves to the invalid + fallback (inline) here, so max-width was being ignored and the section + spanned edge-to-edge (heading clipped at the viewport edge). Force the + flex display back on and pin the inner to the shared 1480px inset. */ + .elementor-86 .elementor-element-c2c601a { + display: flex; + } + .elementor-86 .elementor-element-c2c601a > .e-con-inner { + display: flex; + flex-direction: column; + max-width: 1480px; + width: 100%; + margin-left: auto; + margin-right: auto; + padding-left: clamp(20px, 4vw, 50px) !important; + padding-right: clamp(20px, 4vw, 50px) !important; + box-sizing: border-box; + } + + /* Breathing room above and below the "Meet our the best crew" heading. */ + .elementor-86 .elementor-element-c46350e > .elementor-widget-container { + margin-top: 40px; + margin-bottom: 56px; + } + + /* Team photos: grayscale by default, full colour on hover (matches design) */ + .team-listing-wrapper.team-grid-listing .team-item .post-media img { + filter: grayscale(100%); + transition: filter 0.45s ease; + } + .team-listing-wrapper.team-grid-listing .team-item:hover .post-media img { + filter: grayscale(0%); + } + + /* Grid: four columns that wrap, with tightened row/column gaps. */ + .team-listing-wrapper.team-grid-listing { + display: flex; + flex-wrap: wrap; + margin: 0 -16px -40px; + } + .team-listing-wrapper.team-grid-listing .team-item-wrapper { + width: 25%; + padding: 0 16px; + margin-bottom: 40px; + box-sizing: border-box; + } + @media (max-width: 1024px) { + .team-listing-wrapper.team-grid-listing .team-item-wrapper { width: 50%; } + } + @media (max-width: 767px) { + .elementor-86 .elementor-element-c2c601a > .e-con-inner { + padding-left: 0 !important; + padding-right: 0 !important; + padding-top: 32px !important; + padding-bottom: 32px !important; + } + .elementor-86 .elementor-element-c46350e > .elementor-widget-container { + margin-top: 24px !important; + margin-bottom: 24px !important; + } + .team-listing-wrapper.team-grid-listing { + margin: 0 0 -28px; + } + .team-listing-wrapper.team-grid-listing .team-item-wrapper { + width: 100%; + padding: 0; + margin-bottom: 28px; + } + } + @media (max-width: 480px) { + .team-listing-wrapper.team-grid-listing { + margin: 0 0 -28px; + } + .team-listing-wrapper.team-grid-listing .team-item-wrapper { + width: 100%; + padding: 0; + margin-bottom: 28px; + } + } + + /* Card: photo on top, name/position at the bottom (down to image). */ + .team-listing-wrapper.team-grid-listing .team-item { + display: flex; + flex-direction: column; + align-items: flex-start; + gap: 16px; + width: 100%; + } + /* Compact portrait photo. Extra .team-item in the selector raises the + specificity so it beats the cached vendor rule (width: 45.65%). */ + .team-listing-wrapper.team-grid-listing .team-item .team-item-media { + width: 100%; + margin: 0; + } + .team-listing-wrapper.team-grid-listing .team-item .post-media { + height: 0; + padding-top: 120%; + border-radius: 16px; + overflow: hidden; + } + .team-listing-wrapper.team-grid-listing .team-item .post-media img { + position: absolute; + inset: 0; + width: 100%; + height: 100%; + object-fit: cover; + } + .team-listing-wrapper.team-grid-listing .team-item .team-item-content { + width: 100%; + margin: 0; + } + .team-listing-wrapper.team-grid-listing .team-item .post-title .team-member-name { + color: inherit; + text-decoration: none; + } + 0:{"rsc":["$","$1","c",{"children":[["$","div",null,{"id":"about","className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":["$","div",null,{"data-elementor-type":"wp-page","data-elementor-id":"86","className":"elementor elementor-86 elementor-59","children":[[["$","link",null,{"rel":"preload","as":"image","href":"/images/about-bg.webp"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":"\n .about-us-hero-content {\n width: 100% !important;\n text-align: center !important;\n color: #fff !important;\n padding: 0 15px !important;\n z-index: 2;\n display: flex !important;\n flex-direction: column !important;\n justify-content: center !important;\n align-items: center !important;\n height: 100% !important;\n }\n\n .about-us-hero-title {\n margin: 0 !important;\n font-family: \"Manrope\", Sans-serif !important;\n font-size: clamp(34px, 5.5vw, 68px) !important;\n font-weight: 850 !important;\n line-height: 1.1 !important;\n text-transform: uppercase !important;\n letter-spacing: -1.5px !important;\n color: #ffffff !important;\n text-align: center !important;\n }\n "}}],["$","div",null,{"className":"custom-standard-hero-container","children":["$","div",null,{"style":{"backgroundImage":"url('/images/about-bg.webp')","--hero-overlay":"linear-gradient(to bottom, rgba(0, 0, 0, 0.85) 0%, rgba(0, 0, 0, 0.92) 60%, rgba(0, 0, 0, 0.98) 100%)"},"className":"custom-standard-hero-card","children":["$","div",null,{"className":"about-us-hero-content","children":["$","h3",null,{"className":"about-us-hero-title","children":["The Operators Building ",["$","br",null,{}]," ",["$","span",null,{"style":{"color":"#C01227"},"children":"Doormile"}]]}]}]}]}]],["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{}],["$","$L5",null,{}],[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$6"}}],"$L7"],"$L8"]}]}]}]}],["$L9","$La","$Lb"],"$Lc"]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} +7:["$","div",null,{"className":"elementor-element elementor-element-c2c601a e-flex e-con-boxed cut-corner-no sticky-container-off e-con e-parent","data-id":"c2c601a","data-element_type":"container","data-e-type":"container","children":["$","div",null,{"className":"e-con-inner","children":["$","div",null,{"className":"elementor-element elementor-element-3306a27 e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"3306a27","data-element_type":"container","data-e-type":"container","children":[["$","div",null,{"className":"elementor-element elementor-element-7afb238 elementor-widget elementor-widget-logico_heading","data-id":"7afb238","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_heading.default","children":["$","div",null,{"className":"elementor-widget-container","children":["$","div",null,{"className":"logico-title","children":"/Team /"}]}]}],["$","div",null,{"style":{"alignSelf":"flex-start","width":"100%"},"className":"elementor-element elementor-element-c46350e elementor-widget__width-initial elementor-widget elementor-widget-logico_heading","data-id":"c46350e","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_heading.default","children":["$","div",null,{"className":"elementor-widget-container","children":["$","h3",null,{"className":"logico-title","style":{"textAlign":"left"},"children":"Meet crew"}]}]}],["$","div",null,{"className":"elementor-element elementor-element-ac909e5 elementor-widget elementor-widget-logico_team_listing","data-id":"ac909e5","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_team_listing.default","children":["$","div",null,{"className":"elementor-widget-container","children":["$","div",null,{"className":"logico-team-listing-widget","children":["$","div",null,{"className":"archive-listing","children":["$","div",null,{"className":"archive-listing-wrapper team-listing-wrapper team-grid-listing columns-4","children":[["$","div","0",{"className":"team-item-wrapper post-2866 team type-team status-publish has-post-thumbnail hentry","children":["$","div",null,{"className":"team-item","children":[["$","div",null,{"className":"team-item-media","children":["$","div",null,{"className":"post-media","children":["$","$Ld",null,{"src":"/images/Investor.webp","alt":"Ratan Kumar","width":300,"height":360,"style":{"objectFit":"cover","width":"100%","height":"100%"}}]}]}],["$","div",null,{"className":"team-item-content","children":[["$","div",null,{"className":"post-title","children":["$","span",null,{"className":"team-member-name","children":"Ratan Kumar"}]}],["$","div",null,{"className":"team-item-position","dangerouslySetInnerHTML":{"__html":"COO & Operational Specialist"}}],["$","div",null,{"className":"team-item-socials","children":["$","ul",null,{"className":"team-socials wrapper-socials","children":["$","li",null,{"children":["$","a",null,{"href":"https://www.linkedin.com/","target":"_blank","rel":"noreferrer","className":"fab fa-linkedin-in"}]}]}]}]]}]]}]}],["$","div","1",{"className":"team-item-wrapper post-2866 team type-team status-publish has-post-thumbnail hentry","children":["$","div",null,{"className":"team-item","children":[["$","div",null,{"className":"team-item-media","children":["$","div",null,{"className":"post-media","children":["$","$Ld",null,{"src":"/images/Aravinth.webp","alt":"Aravinth","width":300,"height":360,"style":{"objectFit":"cover","width":"100%","height":"100%"}}]}]}],["$","div",null,{"className":"team-item-content","children":[["$","div",null,{"className":"post-title","children":["$","span",null,{"className":"team-member-name","children":"Aravinth"}]}],["$","div",null,{"className":"team-item-position","dangerouslySetInnerHTML":{"__html":"CFO & Finance Specialist"}}],["$","div",null,{"className":"team-item-socials","children":["$","ul",null,{"className":"team-socials wrapper-socials","children":["$","li",null,{"children":["$","a",null,{"href":"https://www.linkedin.com/","target":"_blank","rel":"noreferrer","className":"fab fa-linkedin-in"}]}]}]}]]}]]}]}],["$","div","2",{"className":"team-item-wrapper post-2866 team type-team status-publish has-post-thumbnail hentry","children":["$","div",null,{"className":"team-item","children":[["$","div",null,{"className":"team-item-media","children":["$","div",null,{"className":"post-media","children":"$Le"}]}],"$Lf"]}]}],"$L10"]}]}]}]}]}]]}]}]}] +8:[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"\n @media (max-width: 768px) {\n .we-container {\n margin-top: 40px !important;\n margin-bottom: 40px !important;\n padding: 0 10px !important;\n }\n .we-cta {\n padding: 48px 20px !important;\n border-radius: 22px !important;\n }\n .we-cta-title {\n font-size: clamp(28px, 6vw, 38px) !important;\n line-height: 1.25 !important;\n margin-bottom: 16px !important;\n }\n .we-cta-sub {\n font-size: 15px !important;\n line-height: 1.5 !important;\n margin-bottom: 24px !important;\n }\n }\n "}}],["$","div",null,{"className":"we-container","children":["$","div",null,{"className":"we-cta reveal","children":["$","div",null,{"className":"we-cta-inner","children":[["$","h2",null,{"className":"we-cta-title","children":["Ready to Start",["$","br",null,{}],["$","em",null,{"children":"Your Journey?"}]]}],["$","p",null,{"className":"we-cta-sub","children":["Join our Women Entrepreneurship program and become part of ",["$","br",null,{}],"India's fastest-growing logistics network."]}],["$","div",null,{"className":"we-cta-btns","children":["$","$L11",null,{"href":"/contact","className":"btn-we-primary","style":{"textDecoration":"none"},"children":["Apply Now",["$","svg",null,{"width":"20","height":"20","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","style":{"marginLeft":"8px","display":"inline-block","verticalAlign":"middle"},"children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]}]]}]}]}]] +9:["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0v290txaarww5.css","precedence":"next"}] +a:["$","script","script-0",{"src":"/_next/static/chunks/0dt55bg8oa_k~.js","async":true}] +b:["$","script","script-1",{"src":"/_next/static/chunks/0nzz4x75f.ixz.js","async":true}] +c:["$","$L12",null,{"children":["$","$13",null,{"name":"Next.MetadataOutlet","children":"$@14"}]}] +e:["$","$Ld",null,{"src":"/images/Fazul.webp","alt":"Fazul Ilahi","width":300,"height":360,"style":{"objectFit":"cover","width":"100%","height":"100%"}}] +f:["$","div",null,{"className":"team-item-content","children":[["$","div",null,{"className":"post-title","children":["$","span",null,{"className":"team-member-name","children":"Fazul Ilahi"}]}],["$","div",null,{"className":"team-item-position","dangerouslySetInnerHTML":{"__html":"CTO & Technology Specialist"}}],["$","div",null,{"className":"team-item-socials","children":["$","ul",null,{"className":"team-socials wrapper-socials","children":["$","li",null,{"children":["$","a",null,{"href":"https://www.linkedin.com/","target":"_blank","rel":"noreferrer","className":"fab fa-linkedin-in"}]}]}]}]]}] +10:["$","div","3",{"className":"team-item-wrapper post-2866 team type-team status-publish has-post-thumbnail hentry","children":["$","div",null,{"className":"team-item","children":[["$","div",null,{"className":"team-item-media","children":["$","div",null,{"className":"post-media","children":["$","$Ld",null,{"src":"/images/Suriya.webp","alt":"Suriya Kumar","width":300,"height":360,"style":{"objectFit":"cover","width":"100%","height":"100%"}}]}]}],["$","div",null,{"className":"team-item-content","children":[["$","div",null,{"className":"post-title","children":["$","span",null,{"className":"team-member-name","children":"Suriya Kumar"}]}],["$","div",null,{"className":"team-item-position","dangerouslySetInnerHTML":{"__html":"Engineering Head & AI Specialist"}}],["$","div",null,{"className":"team-item-socials","children":["$","ul",null,{"className":"team-socials wrapper-socials","children":["$","li",null,{"children":["$","a",null,{"href":"https://www.linkedin.com/","target":"_blank","rel":"noreferrer","className":"fab fa-linkedin-in"}]}]}]}]]}]]}]}] +14:null diff --git a/build/about-us/__next.about-us.txt b/build/about-us/__next.about-us.txt new file mode 100644 index 0000000..e0935ae --- /dev/null +++ b/build/about-us/__next.about-us.txt @@ -0,0 +1,5 @@ +1:"$Sreact.fragment" +2:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:[] +0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/air-freight.html b/build/air-freight.html new file mode 100644 index 0000000..ab59448 --- /dev/null +++ b/build/air-freight.html @@ -0,0 +1 @@ +Doormile — Delivering Trust. Beyond Boundaries \ No newline at end of file diff --git a/build/air-freight.txt b/build/air-freight.txt new file mode 100644 index 0000000..45eed24 --- /dev/null +++ b/build/air-freight.txt @@ -0,0 +1,32 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +d:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +e:"$Sreact.suspense" +11:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +13:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +15:I[68027,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"P":null,"c":["","air-freight"],"q":"","i":false,"f":[[["",{"children":["air-freight",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":["$Lc",null,["$","$Ld",null,{"children":["$","$e",null,{"name":"Next.MetadataOutlet","children":"$@f"}]}]]}],{},null,false,null]},null,false,"$@10"]},null,false,null],["$","$1","h",{"children":[null,["$","$L11",null,{"children":"$L12"}],["$","div",null,{"hidden":true,"children":["$","$L13",null,{"children":["$","$e",null,{"name":"Next.Metadata","children":"$L14"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$15",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"kmSVPuUqY3Rhw5xy4D2nn"} +c:E{"digest":"NEXT_REDIRECT;replace;/doormile-wings;308;"} +16:[] +10:"$W16" +12:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] +17:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +f:null +14:[["$","title","0",{"children":"Doormile — Delivering Trust. Beyond Boundaries"}],["$","meta","1",{"name":"description","content":"Doormile powers last-mile logistics with MileTruth™ AI, providing connected miles, SLA protection, and carrier management."}],["$","meta","2",{"name":"robots","content":"noindex, follow"}],["$","link","3",{"rel":"canonical","href":"https://doormile.com/doormile-wings"}],["$","link","4",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","5",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","6",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","7",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L17","8",{}]] diff --git a/build/air-freight/__next._full.txt b/build/air-freight/__next._full.txt new file mode 100644 index 0000000..45eed24 --- /dev/null +++ b/build/air-freight/__next._full.txt @@ -0,0 +1,32 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +d:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +e:"$Sreact.suspense" +11:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +13:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +15:I[68027,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"P":null,"c":["","air-freight"],"q":"","i":false,"f":[[["",{"children":["air-freight",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":["$Lc",null,["$","$Ld",null,{"children":["$","$e",null,{"name":"Next.MetadataOutlet","children":"$@f"}]}]]}],{},null,false,null]},null,false,"$@10"]},null,false,null],["$","$1","h",{"children":[null,["$","$L11",null,{"children":"$L12"}],["$","div",null,{"hidden":true,"children":["$","$L13",null,{"children":["$","$e",null,{"name":"Next.Metadata","children":"$L14"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$15",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"kmSVPuUqY3Rhw5xy4D2nn"} +c:E{"digest":"NEXT_REDIRECT;replace;/doormile-wings;308;"} +16:[] +10:"$W16" +12:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] +17:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +f:null +14:[["$","title","0",{"children":"Doormile — Delivering Trust. Beyond Boundaries"}],["$","meta","1",{"name":"description","content":"Doormile powers last-mile logistics with MileTruth™ AI, providing connected miles, SLA protection, and carrier management."}],["$","meta","2",{"name":"robots","content":"noindex, follow"}],["$","link","3",{"rel":"canonical","href":"https://doormile.com/doormile-wings"}],["$","link","4",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","5",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","6",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","7",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L17","8",{}]] diff --git a/build/air-freight/__next._head.txt b/build/air-freight/__next._head.txt new file mode 100644 index 0000000..c63e142 --- /dev/null +++ b/build/air-freight/__next._head.txt @@ -0,0 +1,6 @@ +1:"$Sreact.fragment" +2:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +3:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +4:"$Sreact.suspense" +5:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +0:{"rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"Doormile — Delivering Trust. Beyond Boundaries"}],["$","meta","1",{"name":"description","content":"Doormile powers last-mile logistics with MileTruth™ AI, providing connected miles, SLA protection, and carrier management."}],["$","meta","2",{"name":"robots","content":"noindex, follow"}],["$","link","3",{"rel":"canonical","href":"https://doormile.com/doormile-wings"}],["$","link","4",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","5",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","6",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","7",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L5","8",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/air-freight/__next._index.txt b/build/air-freight/__next._index.txt new file mode 100644 index 0000000..d0b3355 --- /dev/null +++ b/build/air-freight/__next._index.txt @@ -0,0 +1,15 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","template":["$","$La",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/air-freight/__next._tree.txt b/build/air-freight/__next._tree.txt new file mode 100644 index 0000000..f115266 --- /dev/null +++ b/build/air-freight/__next._tree.txt @@ -0,0 +1,9 @@ +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"tree":{"name":"","param":null,"prefetchHints":16,"slots":{"children":{"name":"air-freight","param":null,"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}}}},"staleTime":300,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/air-freight/__next.air-freight.__PAGE__.txt b/build/air-freight/__next.air-freight.__PAGE__.txt new file mode 100644 index 0000000..299e14c --- /dev/null +++ b/build/air-freight/__next.air-freight.__PAGE__.txt @@ -0,0 +1,6 @@ +1:"$Sreact.fragment" +3:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +4:"$Sreact.suspense" +0:{"rsc":["$","$1","c",{"children":["$L2",null,["$","$L3",null,{"children":["$","$4",null,{"name":"Next.MetadataOutlet","children":"$@5"}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} +5:null +2:E{"digest":"NEXT_REDIRECT;replace;/doormile-wings;308;"} diff --git a/build/air-freight/__next.air-freight.txt b/build/air-freight/__next.air-freight.txt new file mode 100644 index 0000000..e0935ae --- /dev/null +++ b/build/air-freight/__next.air-freight.txt @@ -0,0 +1,5 @@ +1:"$Sreact.fragment" +2:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:[] +0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/blog.html b/build/blog.html new file mode 100644 index 0000000..1e67d0c --- /dev/null +++ b/build/blog.html @@ -0,0 +1,863 @@ +Blog – Doormile

    Doormile

    Doormile logo
    Address
    Hyderabad

    5th Floor, Vision Ultima,
    Street No.3, Jayabheri Enclave,
    Gachibowli, Hyderabad,
    Telangana 500032.

    Coimbatore

    Mayflower Valencia,
    Near Nava India Bus Stop,
    Avinashi Road,
    Udayampalayam,
    Tamil Nadu 641037.

    Bengaluru

    C612, 6th Floor,
    Trifecta Starlight,
    ITPL Road,
    Garudacharapalya,
    Mahadevapura,
    Bangalore 560048,
    Karnataka, India.

    Contact Us

    Tel : +91 86886 97941

    Email

    care@doormile.com

    Delivering Trust.
    Beyond Boundaries

    \ No newline at end of file diff --git a/build/blog.txt b/build/blog.txt new file mode 100644 index 0000000..ed53a74 --- /dev/null +++ b/build/blog.txt @@ -0,0 +1,207 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +11:I[68027,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +:HL["/images/home2-banner-1.webp","image"] +0:{"P":null,"c":["","blog"],"q":"","i":false,"f":[[["",{"children":["blog",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","div",null,{"id":"blogs","className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":["$","div",null,{"data-elementor-type":"wp-page","data-elementor-id":"104","className":"elementor elementor-104","children":[[["$","link",null,{"rel":"preload","as":"image","href":"/images/home2-banner-1.webp"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":"\n .blogs-hero-title {\n color: #ffffff !important;\n font-family: var(--font-manrope), sans-serif !important;\n font-size: clamp(34px, 5.5vw, 68px) !important;\n font-weight: 850 !important;\n line-height: 1.08 !important;\n text-transform: uppercase !important;\n letter-spacing: -1.5px !important;\n margin: 0 !important;\n }\n .blogs-hero-content {\n position: relative !important;\n width: 100% !important;\n height: 100% !important;\n display: flex !important;\n align-items: center !important;\n justify-content: center !important;\n flex-direction: column !important;\n max-width: 1000px !important;\n margin: 0 auto !important;\n padding: 0 15px !important;\n box-sizing: border-box !important;\n }\n "}}],"$Lc"],"$Ld"]}]}]}]}],null,"$Le"]}],{},null,false,null]},null,false,"$@f"]},null,false,null],"$L10",false]],"m":"$undefined","G":["$11",["$L12"]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"kmSVPuUqY3Rhw5xy4D2nn"} +15:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +16:"$Sreact.suspense" +19:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +1b:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +c:["$","div",null,{"className":"custom-standard-hero-container","children":["$","div",null,{"style":{"backgroundImage":"url(/images/home2-banner-1.webp)","backgroundPosition":"center center","backgroundRepeat":"no-repeat","backgroundSize":"cover"},"className":"custom-standard-hero-card","children":["$","div",null,{"className":"blogs-hero-content","children":["$","div",null,{"style":{"textAlign":"center","color":"#fff","zIndex":5},"children":["$","h1",null,{"className":"blogs-hero-title","children":["Delivering Trust.",["$","br",null,{}],["$","span",null,{"style":{"color":"#C01227"},"children":"Beyond Boundaries"}]]}]}]}]}]}] +13:T17ff, + .custom-blog-grid { + display: grid !important; + grid-template-columns: repeat(3, 1fr) !important; + gap: 40px !important; + width: 100% !important; + max-width: 1200px !important; + margin: 0 auto !important; + padding: 40px 20px !important; + } + + @media (max-width: 1024px) { + .custom-blog-grid { + grid-template-columns: repeat(2, 1fr) !important; + } + } + @media (max-width: 768px) { + .elementor-104 .elementor-element.elementor-element-c70681e { + margin-top: var(--space-section) !important; + margin-bottom: 16px !important; + } + .custom-blog-grid { + grid-template-columns: 1fr !important; + gap: 28px !important; + padding: 24px 20px !important; + } + } + + @media (max-width: 767px) { + .elementor-104 .elementor-element.elementor-element-c70681e { + --padding-left: 10px !important; + --padding-right: 10px !important; + padding-left: 10px !important; + padding-right: 10px !important; + } + .elementor-104 .elementor-element.elementor-element-3dec5cf { + --padding-left: 0px !important; + --padding-right: 0px !important; + padding-left: 0 !important; + padding-right: 0 !important; + } + .elementor-104 .elementor-element.elementor-element-aa12479, + .elementor-104 .elementor-element.elementor-element-aa12479 > .elementor-widget-container, + .elementor-104 .archive-listing, + .elementor-104 .custom-blog-grid { + width: 100% !important; + max-width: 100% !important; + } + .elementor-104 .custom-blog-grid { + padding-left: 0 !important; + padding-right: 0 !important; + } + } + + .custom-blog-card { + display: flex !important; + flex-direction: column !important; + justify-content: space-between !important; + height: 100% !important; + background: #ffffff !important; + border: 1px solid rgba(0, 0, 0, 0.08) !important; + border-radius: 28px !important; + padding: 28px !important; + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.03) !important; + transition: transform 0.4s cubic-bezier(0.2, 0.8, 0.2, 1), box-shadow 0.4s ease !important; + cursor: pointer !important; + } + + .custom-blog-card:hover { + transform: translateY(-8px) !important; + box-shadow: 0 20px 40px rgba(192, 18, 39, 0.12) !important; + border-color: rgba(192, 18, 39, 0.2) !important; + } + + .custom-blog-title { + font-size: 20px !important; + font-weight: 800 !important; + color: #1e293b !important; + line-height: 1.35 !important; + text-transform: none !important; + letter-spacing: -0.4px !important; + margin: 0 0 12px 0 !important; + display: -webkit-box !important; + -webkit-line-clamp: 2 !important; + -webkit-box-orient: vertical !important; + overflow: hidden !important; + transition: color 0.2s ease !important; + font-family: var(--font-manrope), sans-serif !important; + } + + .custom-blog-card:hover .custom-blog-title { + color: #c01227 !important; + } + + .custom-blog-excerpt { + font-size: 13.5px !important; + font-weight: 500 !important; + color: #64748b !important; + line-height: 1.6 !important; + margin: 0 0 18px 0 !important; + text-transform: none !important; + font-family: var(--font-manrope), sans-serif !important; + } + + /* Bottom block pinned to the card base. Keeps Read More + image at the + same vertical position across cards with different text lengths. */ + .custom-blog-bottom { + display: flex !important; + flex-direction: column !important; + margin-top: auto !important; + } + + .custom-blog-readmore { + display: inline-flex !important; + align-items: center !important; + align-self: flex-start !important; + gap: 6px !important; + font-size: 13px !important; + font-weight: 800 !important; + color: #c01227 !important; + text-transform: uppercase !important; + letter-spacing: 0.5px !important; + margin: 0 0 24px 0 !important; + font-family: var(--font-manrope), sans-serif !important; + } + + .custom-blog-readmore-arrow { + transition: transform 0.3s cubic-bezier(0.2, 0.8, 0.2, 1) !important; + } + + .custom-blog-card:hover .custom-blog-readmore-arrow { + transform: translateX(5px) !important; + } + + .custom-blog-img-container { + position: relative !important; + width: 100% !important; + aspect-ratio: 4 / 3 !important; + border-radius: 20px !important; + overflow: hidden !important; + box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.05) !important; + } + + .custom-blog-badge { + position: absolute !important; + top: 14px !important; + left: 14px !important; + z-index: 5 !important; + background: #c01227 !important; + color: #ffffff !important; + font-size: 9px !important; + font-weight: 800 !important; + text-transform: uppercase !important; + letter-spacing: 1.2px !important; + padding: 4px 10px !important; + border-radius: 6px !important; + box-shadow: 0 4px 10px rgba(192, 18, 39, 0.2) !important; + font-family: var(--font-manrope), sans-serif !important; + } + d:["$","div",null,{"className":"elementor-element elementor-element-c70681e e-flex e-con-boxed cut-corner-no sticky-container-off e-con e-parent","data-id":"c70681e","data-element_type":"container","data-e-type":"container","children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$13"}}],"$L14"]}] +e:["$","$L15",null,{"children":["$","$16",null,{"name":"Next.MetadataOutlet","children":"$@17"}]}] +18:[] +f:"$W18" +10:["$","$1","h",{"children":[null,["$","$L19",null,{"children":"$L1a"}],["$","div",null,{"hidden":true,"children":["$","$L1b",null,{"children":["$","$16",null,{"name":"Next.Metadata","children":"$L1c"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}] +12:["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}] +1d:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ScrollReveal"] +1e:I[22016,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],""] +1f:I[5500,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"Image"] +14:["$","div",null,{"className":"e-con-inner","children":["$","div",null,{"className":"elementor-element elementor-element-3dec5cf e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"3dec5cf","data-element_type":"container","data-e-type":"container","children":["$","div",null,{"className":"elementor-element elementor-element-aa12479 elementor-widget elementor-widget-logico_blog_listing","data-id":"aa12479","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_blog_listing.default","children":["$","div",null,{"className":"elementor-widget-container","children":["$","div",null,{"className":"archive-listing","children":["$","div",null,{"className":"custom-blog-grid","children":[["$","$L1d","how-ai-is-transforming-last-mile-ev-delivery",{"delay":0,"duration":0.8,"yOffset":35,"children":["$","$L1e",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"custom-blog-card","style":{"textDecoration":"none"},"children":[["$","div",null,{"className":"flex flex-col","children":[["$","h3",null,{"className":"custom-blog-title","children":"How Better Planning Improves Last-Mile EV Delivery"}],["$","p",null,{"className":"custom-blog-excerpt","children":"A practical look at how EV fleets can plan routes, manage charging, and keep delivery promises without adding unnecessary vehicles."}]]}],["$","div",null,{"className":"custom-blog-bottom","children":[["$","span",null,{"className":"custom-blog-readmore","children":["Read More",["$","svg",null,{"className":"custom-blog-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","div",null,{"className":"custom-blog-img-container","children":[["$","$L1f",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"style":{"objectFit":"cover"},"sizes":"(max-width: 768px) 100vw, 33vw"}],["$","span",null,{"className":"custom-blog-badge","children":"Technology"}]]}]]}]]}]}],["$","$L1d","42-less-distance-insights-from-our-hyderabad-hub",{"delay":0.08,"duration":0.8,"yOffset":35,"children":["$","$L1e",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"custom-blog-card","style":{"textDecoration":"none"},"children":[["$","div",null,{"className":"flex flex-col","children":[["$","h3",null,{"className":"custom-blog-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}],["$","p",null,{"className":"custom-blog-excerpt","children":"A practical look at how one Hyderabad hub reduced distance, used fewer vehicles, and protected delivery windows with better route planning."}]]}],["$","div",null,{"className":"custom-blog-bottom","children":[["$","span",null,{"className":"custom-blog-readmore","children":["Read More",["$","svg",null,{"className":"custom-blog-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","div",null,{"className":"custom-blog-img-container","children":[["$","$L1f",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"style":{"objectFit":"cover"},"sizes":"(max-width: 768px) 100vw, 33vw"}],["$","span",null,{"className":"custom-blog-badge","children":"Case Study"}]]}]]}]]}]}],["$","$L1d","miletruth-ai-10-stages-to-smarter-dispatch",{"delay":0.16,"duration":0.8,"yOffset":35,"children":["$","$L1e",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"custom-blog-card","style":{"textDecoration":"none"},"children":[["$","div",null,{"className":"flex flex-col","children":[["$","h3",null,{"className":"custom-blog-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","p",null,{"className":"custom-blog-excerpt","children":"From order intake to final route output, here is how a dispatch plan is checked before riders leave the hub."}]]}],"$L20"]}]}],"$L21","$L22","$L23","$L24","$L25","$L26"]}]}]}]}]}]}] +20:["$","div",null,{"className":"custom-blog-bottom","children":[["$","span",null,{"className":"custom-blog-readmore","children":["Read More",["$","svg",null,{"className":"custom-blog-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","div",null,{"className":"custom-blog-img-container","children":[["$","$L1f",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"style":{"objectFit":"cover"},"sizes":"(max-width: 768px) 100vw, 33vw"}],["$","span",null,{"className":"custom-blog-badge","children":"MileTruth"}]]}]]}] +21:["$","$L1d","the-ev-paradox-solving-range-anxiety-for-urban-fleets",{"delay":0,"duration":0.8,"yOffset":35,"children":["$","$L1e",null,{"href":"/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets","className":"custom-blog-card","style":{"textDecoration":"none"},"children":[["$","div",null,{"className":"flex flex-col","children":[["$","h3",null,{"className":"custom-blog-title","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}],["$","p",null,{"className":"custom-blog-excerpt","children":"Electric vehicles lower running costs, but battery range changes how routes must be planned before dispatch."}]]}],["$","div",null,{"className":"custom-blog-bottom","children":[["$","span",null,{"className":"custom-blog-readmore","children":["Read More",["$","svg",null,{"className":"custom-blog-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","div",null,{"className":"custom-blog-img-container","children":[["$","$L1f",null,{"src":"/images/ev-paradox.webp","alt":"The EV Paradox: Solving Range Anxiety for Urban Fleets","fill":true,"style":{"objectFit":"cover"},"sizes":"(max-width: 768px) 100vw, 33vw"}],["$","span",null,{"className":"custom-blog-badge","children":"EV Fleet"}]]}]]}]]}]}] +22:["$","$L1d","why-mathematical-precision-beats-heuristics-in-routing",{"delay":0.08,"duration":0.8,"yOffset":35,"children":["$","$L1e",null,{"href":"/blog/why-mathematical-precision-beats-heuristics-in-routing","className":"custom-blog-card","style":{"textDecoration":"none"},"children":[["$","div",null,{"className":"flex flex-col","children":[["$","h3",null,{"className":"custom-blog-title","children":"Why Mathematical Precision Beats Heuristics in Routing"}],["$","p",null,{"className":"custom-blog-excerpt","children":"Fixed routing rules are easy to start with, but they often miss better stop sequences as order volume grows."}]]}],["$","div",null,{"className":"custom-blog-bottom","children":[["$","span",null,{"className":"custom-blog-readmore","children":["Read More",["$","svg",null,{"className":"custom-blog-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","div",null,{"className":"custom-blog-img-container","children":[["$","$L1f",null,{"src":"/images/blog-post-pic-14.webp","alt":"Why Mathematical Precision Beats Heuristics in Routing","fill":true,"style":{"objectFit":"cover"},"sizes":"(max-width: 768px) 100vw, 33vw"}],["$","span",null,{"className":"custom-blog-badge","children":"Technology"}]]}]]}]]}]}] +23:["$","$L1d","fleet-reduction-without-compromising-delivery-volume",{"delay":0.16,"duration":0.8,"yOffset":35,"children":["$","$L1e",null,{"href":"/blog/fleet-reduction-without-compromising-delivery-volume","className":"custom-blog-card","style":{"textDecoration":"none"},"children":[["$","div",null,{"className":"flex flex-col","children":[["$","h3",null,{"className":"custom-blog-title","children":"Fleet Reduction Without Compromising Delivery Volume"}],["$","p",null,{"className":"custom-blog-excerpt","children":"Handling the same order volume with fewer vehicles starts by removing avoidable kilometres and overlapping routes."}]]}],["$","div",null,{"className":"custom-blog-bottom","children":[["$","span",null,{"className":"custom-blog-readmore","children":["Read More",["$","svg",null,{"className":"custom-blog-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","div",null,{"className":"custom-blog-img-container","children":[["$","$L1f",null,{"src":"/images/blog-post-pic-8.webp","alt":"Fleet Reduction Without Compromising Delivery Volume","fill":true,"style":{"objectFit":"cover"},"sizes":"(max-width: 768px) 100vw, 33vw"}],["$","span",null,{"className":"custom-blog-badge","children":"Fleet Management"}]]}]]}]]}]}] +24:["$","$L1d","building-a-greener-city-the-future-of-urban-logistics",{"delay":0,"duration":0.8,"yOffset":35,"children":["$","$L1e",null,{"href":"/blog/building-a-greener-city-the-future-of-urban-logistics","className":"custom-blog-card","style":{"textDecoration":"none"},"children":[["$","div",null,{"className":"flex flex-col","children":[["$","h3",null,{"className":"custom-blog-title","children":"Building a Greener City: The Future of Urban Logistics"}],["$","p",null,{"className":"custom-blog-excerpt","children":"Cities are asking for cleaner delivery. The practical challenge is planning EV routes that can meet customer windows without wasting charge."}]]}],["$","div",null,{"className":"custom-blog-bottom","children":[["$","span",null,{"className":"custom-blog-readmore","children":["Read More",["$","svg",null,{"className":"custom-blog-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","div",null,{"className":"custom-blog-img-container","children":[["$","$L1f",null,{"src":"/images/blog-post-pic-6.webp","alt":"Building a Greener City: The Future of Urban Logistics","fill":true,"style":{"objectFit":"cover"},"sizes":"(max-width: 768px) 100vw, 33vw"}],["$","span",null,{"className":"custom-blog-badge","children":"Sustainability"}]]}]]}]]}]}] +25:["$","$L1d","how-doormile-maintains-99-9-sla-compliance-at-scale",{"delay":0.08,"duration":0.8,"yOffset":35,"children":["$","$L1e",null,{"href":"/blog/how-doormile-maintains-99-9-sla-compliance-at-scale","className":"custom-blog-card","style":{"textDecoration":"none"},"children":[["$","div",null,{"className":"flex flex-col","children":[["$","h3",null,{"className":"custom-blog-title","children":"How Doormile Maintains 99.9% SLA Compliance at Scale"}],["$","p",null,{"className":"custom-blog-excerpt","children":"High SLA performance comes from checking ETAs before dispatch, reacting early to delays, and keeping customer commitments visible throughout the day."}]]}],["$","div",null,{"className":"custom-blog-bottom","children":[["$","span",null,{"className":"custom-blog-readmore","children":["Read More",["$","svg",null,{"className":"custom-blog-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","div",null,{"className":"custom-blog-img-container","children":[["$","$L1f",null,{"src":"/images/last-mile-approach.webp","alt":"How Doormile Maintains 99.9% SLA Compliance at Scale","fill":true,"style":{"objectFit":"cover"},"sizes":"(max-width: 768px) 100vw, 33vw"}],["$","span",null,{"className":"custom-blog-badge","children":"Operations"}]]}]]}]]}]}] +26:["$","$L1d","battery-simulation-the-secret-to-ev-route-pre-validation",{"delay":0.16,"duration":0.8,"yOffset":35,"children":["$","$L1e",null,{"href":"/blog/battery-simulation-the-secret-to-ev-route-pre-validation","className":"custom-blog-card","style":{"textDecoration":"none"},"children":[["$","div",null,{"className":"flex flex-col","children":[["$","h3",null,{"className":"custom-blog-title","children":"Battery Simulation: The Secret to EV Route Pre-Validation"}],["$","p",null,{"className":"custom-blog-excerpt","children":"Before a rider leaves the hub, every EV route should be checked against real charge capacity and the expected return plan."}]]}],["$","div",null,{"className":"custom-blog-bottom","children":[["$","span",null,{"className":"custom-blog-readmore","children":["Read More",["$","svg",null,{"className":"custom-blog-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","div",null,{"className":"custom-blog-img-container","children":[["$","$L1f",null,{"src":"/images/blog-post-pic-3.webp","alt":"Battery Simulation: The Secret to EV Route Pre-Validation","fill":true,"style":{"objectFit":"cover"},"sizes":"(max-width: 768px) 100vw, 33vw"}],["$","span",null,{"className":"custom-blog-badge","children":"EV Fleet"}]]}]]}]]}]}] +1a:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] +27:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +17:null +1c:[["$","title","0",{"children":"Blog – Doormile"}],["$","meta","1",{"name":"description","content":"Practical notes on delivery planning, EV fleet operations, route optimisation, charging, and last-mile performance from the Doormile team."}],["$","meta","2",{"name":"robots","content":"index, follow"}],["$","link","3",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","4",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","5",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","6",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L27","7",{}]] diff --git a/build/blog/42-less-distance-insights-from-our-hyderabad-hub.html b/build/blog/42-less-distance-insights-from-our-hyderabad-hub.html new file mode 100644 index 0000000..79447c9 --- /dev/null +++ b/build/blog/42-less-distance-insights-from-our-hyderabad-hub.html @@ -0,0 +1,1168 @@ +42% Less Distance: Insights from Our Hyderabad Hub – Doormile

    Doormile

    Doormile logo
    Address
    Hyderabad

    5th Floor, Vision Ultima,
    Street No.3, Jayabheri Enclave,
    Gachibowli, Hyderabad,
    Telangana 500032.

    Coimbatore

    Mayflower Valencia,
    Near Nava India Bus Stop,
    Avinashi Road,
    Udayampalayam,
    Tamil Nadu 641037.

    Bengaluru

    C612, 6th Floor,
    Trifecta Starlight,
    ITPL Road,
    Garudacharapalya,
    Mahadevapura,
    Bangalore 560048,
    Karnataka, India.

    Contact Us

    Tel : +91 86886 97941

    Email

    care@doormile.com

    Case Study

    42% Less Distance: Insights from Our Hyderabad Hub

    Doormile Team2 min read

    Numbers settle arguments. At our Hyderabad hub, the goal was simple: reduce avoidable distance without missing customer commitments. The result was a 42% reduction in total distance travelled.

    Hyderabad is not an easy city for delivery planning. Dense commercial areas, fast-growing suburbs, flyover work, narrow service lanes, apartment security checks, and sudden traffic build-up can all change the day.

    The baseline

    Before MileTruth, the hub planned routes in the usual way. Zones were drawn from experience, dispatchers sequenced stops manually, and riders adjusted on the road when something changed.

    That process worked, but it carried hidden costs. Two riders might cross the same area in the same hour. A vehicle might take a longer loop to avoid one late stop. A dispatcher might hold back an order because the best vehicle was not obvious in the moment.

    • Zone-based allocation that missed nearby cross-zone drops
    • Manual stop sequencing during busy dispatch windows
    • ETAs checked after routing instead of before dispatch
    • Traffic and delay handling that depended on phone calls from riders

    What changed

    The main change was treating the day's orders as one connected plan instead of separate zone lists. The route plan considered distance, rider capacity, delivery windows, traffic, and vehicle availability together.

    During peak traffic hours in Hyderabad, some vehicles were arriving 20 to 30 minutes later than planned. By adjusting routes based on live traffic and battery levels, we reduced missed delivery windows and improved on-time performance.

    Hyderabad delivery hub routing analysis
    Planning the day's deliveries together removed repeated cross-town travel.

    The results

    • 42% reduction in total distance travelled across the hub
    • 37% fewer vehicles required for the same delivery volume
    • No SLA misses during the measured deployment window
    • Lower fuel use and fewer unnecessary kilometres per parcel

    The improvement did not come from asking riders to work harder. It came from giving the team a better route plan before the vehicles left.

    Hyderabad Hub Operations

    Why this applies beyond one hub

    The Hyderabad result was not a one-city exception. Most hubs deal with the same issues: overlapping routes, conservative sequencing, traffic surprises, charging constraints, and last-minute order changes.

    A 42% cut in distance changes the cost of running the operation. It also gives dispatchers more breathing room when the day gets messy.

    \ No newline at end of file diff --git a/build/blog/42-less-distance-insights-from-our-hyderabad-hub.txt b/build/blog/42-less-distance-insights-from-our-hyderabad-hub.txt new file mode 100644 index 0000000..d8c37fe --- /dev/null +++ b/build/blog/42-less-distance-insights-from-our-hyderabad-hub.txt @@ -0,0 +1,547 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +d:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +e:"$Sreact.suspense" +11:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +13:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +15:I[68027,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"P":null,"c":["","blog","42-less-distance-insights-from-our-hyderabad-hub"],"q":"","i":false,"f":[[["",{"children":["blog",{"children":[["slug","42-less-distance-insights-from-our-hyderabad-hub","d",null],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":["$Lc",[["$","script","script-0",{"src":"/_next/static/chunks/0yvxf3ok9gcp_.js","async":true,"nonce":"$undefined"}]],["$","$Ld",null,{"children":["$","$e",null,{"name":"Next.MetadataOutlet","children":"$@f"}]}]]}],{},null,false,null]},null,false,"$@10"]},null,false,"$@10"]},null,false,null],["$","$1","h",{"children":[null,["$","$L11",null,{"children":"$L12"}],["$","div",null,{"hidden":true,"children":["$","$L13",null,{"children":["$","$e",null,{"name":"Next.Metadata","children":"$L14"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$15",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"kmSVPuUqY3Rhw5xy4D2nn"} +16:[] +10:"$W16" +:HL["/images/blog-post-pic-15.webp","image"] +17:T3d6f, + .dm-single-blog { + --dm-red: #c01227; + --dm-red-hover: #e31d32; + --dm-radius-card: 22px; + --dm-radius-img: 20px; + --dm-radius-badge: 8px; + --dm-shadow-card: 0 4px 24px rgba(15, 23, 42, 0.05); + --dm-border: 1px solid rgba(15, 23, 42, 0.09); + --dm-space-p: 24px; + --dm-space-h: 32px; + --dm-space-img: 32px; + --dm-space-quote: 40px; + --dm-sticky-top: 138px; + --dm-measure: min(1100px, 100%); + font-family: var(--font-manrope), sans-serif; + } + + /* Heading normalization. Beat the global theme's .elementor-kit-5 h1-h6 + (120/80/60px UPPERCASE) rules with !important on our own classes. */ + .dm-single-blog :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline, + specificity 0-1-1) so blog links keep our colors and never get underlined. */ + .dm-single-blog a { text-decoration: none !important; } + + /* Page banner: tall homepage-scale frame with only badge + title inside */ + /* Compound selector (specificity 20) + !important beats the global 800px + single-class height rules so the blog banner can use viewport heights. */ + .custom-standard-hero-card.dm-banner-card { + height: 90vh !important; + min-height: 85vh !important; + } + @media (max-width: 1024px) { + .custom-standard-hero-card.dm-banner-card { height: 80vh !important; min-height: 75vh !important; } + } + @media (max-width: 600px) { + .custom-standard-hero-card.dm-banner-card { height: 78vh !important; min-height: 72vh !important; } + } + + .dm-banner-inner { + position: relative; width: 100%; height: 100%; + display: flex; flex-direction: column; align-items: center; justify-content: center; + text-align: center; gap: clamp(22px, 2.6vw, 34px); + padding: clamp(48px, 8vh, 96px) clamp(20px, 5vw, 48px); + } + + .dm-banner-category { + display: inline-block; background: var(--dm-red); color: #fff; + font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.6px; + padding: 9px 18px; border-radius: 999px; box-shadow: 0 8px 22px rgba(192,18,39,0.45); + } + .dm-banner-title { + font-family: var(--font-manrope), sans-serif !important; + font-size: clamp(34px, 5vw, 60px) !important; font-weight: 850 !important; + line-height: 1.16 !important; letter-spacing: -1.2px !important; + color: #ffffff !important; margin: 0; max-width: 820px; + text-wrap: balance; text-shadow: 0 2px 30px rgba(0,0,0,0.38); + } + @media (max-width: 1024px) { .dm-banner-title { font-size: clamp(32px, 6vw, 48px) !important; max-width: 90%; } } + @media (max-width: 600px) { .dm-banner-title { font-size: clamp(28px, 8vw, 38px) !important; max-width: 90%; } } + + /* Content wrap begins immediately below the banner */ + /* Shared content container: the SAME max-width + horizontal padding is used + by BlogPostFooter (.dm-blog-footer-inner) so the article body, headings, + images, Prev/Next, Related Articles and the CTA banner all align to one + grid with identical left/right edges. Keep both in sync. */ + .dm-blog-wrap { + max-width: 1280px; margin: 0 auto; + /* 20px mobile padding floor → 40px on desktop; matches the footer container. */ + padding: clamp(14px, 2vw, 26px) clamp(20px, 4vw, 40px) 0; + } + @media (max-width: 767px) { + .dm-blog-wrap { + padding-left: 16px; + padding-right: 16px; + } + } + + /* ── Article meta bar (directly under the hero) ── */ + .dm-meta-bar { + display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 14px 24px; + padding: clamp(20px, 2.6vw, 30px) 0; margin-bottom: clamp(26px, 3vw, 44px); + border-bottom: 1px solid rgba(15,23,42,0.10); + } + .dm-meta-breadcrumb ol { + list-style: none; display: flex; flex-wrap: wrap; align-items: center; + gap: 8px; margin: 0; padding: 0; font-size: 13px; font-weight: 600; color: #64748b; + } + .dm-meta-breadcrumb a { color: #64748b !important; text-decoration: none; transition: color .2s ease; } + .dm-meta-breadcrumb a:hover { color: var(--dm-red) !important; } + .dm-meta-sep { color: #cbd5e1; } + .dm-meta-current { + color: #0f172a; font-weight: 700; + max-width: min(40ch, 46vw); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; + } + @media (max-width: 600px) { .dm-meta-current { max-width: 56vw; } } + .dm-meta-items { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 20px; } + .dm-meta-item { + display: inline-flex; align-items: center; gap: 7px; + font-size: 13.5px; font-weight: 600; color: #475569; + } + .dm-meta-item svg { color: var(--dm-red); flex: 0 0 auto; } + .dm-meta-author { color: #0f172a; font-weight: 700; } + @media (max-width: 600px) { .dm-meta-bar { gap: 12px; } } + .dm-blog-layout { + display: grid; grid-template-columns: minmax(0,1fr) 320px; + /* Tighter gap gives the reading column more room next to the 320px sidebar. */ + gap: clamp(28px, 3vw, 56px); align-items: start; + } + @media (max-width: 1024px) { + .dm-blog-layout { grid-template-columns: 1fr; gap: 48px; } + /* Single-column (tablet/mobile): cap the reading column and centre it so the + article never sits left-aligned with a large empty right gutter. */ + .dm-blog-main { max-width: 900px; margin-inline: auto; } + } + .dm-blog-main { min-width: 0; } + + /* ── Intro lead ── */ + .dm-blog-intro { + max-width: var(--dm-measure); + font-size: clamp(18px, 1.5vw, 20px); line-height: 1.65; font-weight: 500; + color: #475569; margin: 0 0 clamp(26px, 3vw, 38px); padding-left: 20px; + border-left: 3px solid var(--dm-red); + } + + /* ── Article body ── */ + .dm-article-body { max-width: var(--dm-measure); } + .dm-article-p { + font-size: 18px !important; line-height: 1.8 !important; color: #334155; font-weight: 450; + margin: 0 0 var(--dm-space-p); + } + .dm-article-h2 { + font-size: clamp(23px, 2vw, 30px) !important; font-weight: 800 !important; letter-spacing: -.3px !important; + color: #0f172a !important; line-height: 1.3 !important; margin: 48px 0 var(--dm-space-h); + text-wrap: balance; + } + /* Each article block is wrapped in its OWN ScrollReveal
    , so a bare + :first-child rule matched every heading (each is the only child of its + wrapper) and zeroed its top margin, collapsing the gap above every + section heading. Scope the reset to only the article body's first block. */ + .dm-article-body > :first-child :where(.dm-article-h2, .dm-article-h3), + .dm-article-body > .dm-article-h2:first-child, + .dm-article-body > .dm-article-h3:first-child { margin-top: 0; } + .dm-article-h3 { + font-size: clamp(19px, 1.5vw, 23px) !important; font-weight: 800 !important; letter-spacing: -.2px !important; + color: #1e293b !important; line-height: 1.34 !important; margin: 40px 0 18px; + text-wrap: balance; + } + @media (max-width: 600px) { + .dm-article-p { font-size: 16px !important; } + .dm-article-ul li, .dm-article-ol li { font-size: 15.5px; } + .dm-article-h2 { font-size: clamp(22px, 6vw, 28px) !important; margin-top: 38px; } + .dm-article-h3 { font-size: clamp(18px, 5vw, 22px) !important; } + } + + .dm-article-ul, .dm-article-ol { + /* Top margin (was 0) separates the list from the paragraph above it; + matching bottom margin keeps it clear of the next heading/paragraph. + Slightly larger than --dm-space-p so the list reads as its own block. */ + margin: clamp(26px, 2.4vw, 32px) 0 clamp(26px, 2.4vw, 32px); + padding-left: 2px; list-style: none; + display: flex; flex-direction: column; gap: 15px; + } + /* Prefixed with .dm-article-body so these beat the theme's global + ".logico-front-end ul li:before" fontello-glyph bullet (specificity 0,1,3), + which otherwise replaces our clean red dot with a misaligned checkmark glyph + and adds its own 1.7em indent. */ + .dm-article-body .dm-article-ul li, .dm-article-body .dm-article-ol li { + position: relative; padding-left: 34px; + font-size: 17px; line-height: 1.65; color: #334155; font-weight: 450; + } + .dm-article-body .dm-article-ul li::before { + content: ""; position: absolute; left: 7px; top: 10px; + width: 8px; height: 8px; border-radius: 50%; background: var(--dm-red); + /* kill any inherited fontello glyph from the global rule */ + font-size: 0; line-height: 0; + } + .dm-article-ol { counter-reset: dm-li; } + .dm-article-body .dm-article-ol li { counter-increment: dm-li; } + .dm-article-body .dm-article-ol li::before { + content: counter(dm-li); position: absolute; left: 0; top: 0; + width: 24px; height: 24px; border-radius: 7px; + background: rgba(192,18,39,0.10); color: var(--dm-red); + font-size: 12px; font-weight: 800; display: flex; align-items: center; justify-content: center; + } + + /* ── Quote ── */ + .dm-article-quote { + position: relative; margin: var(--dm-space-quote) 0; padding: 30px 32px 30px 64px; + background: linear-gradient(135deg, #fbf2f3 0%, #fdf7f8 100%); + border-left: 4px solid var(--dm-red); border-radius: 0 18px 18px 0; + box-shadow: 0 8px 28px rgba(192, 18, 39, 0.06); + } + .dm-article-quote::before { + content: "\201C"; position: absolute; left: 22px; top: 8px; + font-family: Georgia, "Times New Roman", serif; + font-size: 64px; line-height: 1; color: rgba(192, 18, 39, 0.28); font-weight: 700; + } + .dm-article-quote p { + font-size: clamp(19px, 2vw, 23px); line-height: 1.5; font-weight: 600; + font-style: italic; color: #1e293b; margin: 0; + } + .dm-article-quote cite { + display: block; margin-top: 16px; font-size: 13px; font-weight: 700; + font-style: normal; color: var(--dm-red); text-transform: uppercase; letter-spacing: .6px; + } + @media (max-width: 600px) { .dm-article-quote { padding: 26px 22px; } .dm-article-quote::before { display: none; } } + + /* ── Images ── */ + .dm-article-figure { margin: var(--dm-space-img) 0; } + .dm-article-figure-img { + position: relative; display: block; width: 100%; aspect-ratio: 16 / 9; + border-radius: var(--dm-radius-img); overflow: hidden; box-shadow: 0 14px 34px rgba(15,23,42,0.10); + } + .dm-article-figure figcaption { + margin-top: 14px; font-size: 13.5px; color: #94a3b8; font-weight: 500; + text-align: center; font-style: italic; + } + + /* ── Sidebar ── */ + .dm-blog-aside-wrap { position: relative; } + .dm-blog-sidebar { + display: flex; flex-direction: column; gap: 18px; + position: sticky; top: var(--dm-sticky-top); + } + @media (max-width: 1024px) { .dm-blog-sidebar { position: static; gap: 20px; } } + + .dm-blog-widget { + background: #fff; border: var(--dm-border); border-radius: var(--dm-radius-card); + padding: 20px; box-shadow: var(--dm-shadow-card); + } + .dm-blog-widget-title { + font-size: 13px !important; font-weight: 700 !important; text-transform: uppercase !important; + letter-spacing: .8px !important; line-height: 1.35 !important; color: #0f172a !important; + margin: 0 0 15px; padding: 0 0 12px; + border-bottom: 1px solid rgba(15,23,42,0.08); + overflow: visible; white-space: normal; word-break: normal; + } + + /* Search */ + .dm-sr-only { + position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; + overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; + } + .dm-blog-search { position: relative; } + .dm-blog-search-form { position: relative; } + .dm-blog-search-input { + width: 100%; height: 46px; border: 1.5px solid #e2e8f0; border-radius: 12px; + padding: 0 42px 0 15px; font-size: 14px; font-family: inherit; color: #0f172a; + background: #f8fafc; transition: border-color .2s ease, box-shadow .2s ease, background .2s ease; + } + .dm-blog-search-input::placeholder { color: #9c9c9c; } + .dm-blog-search-input:focus { + outline: none; border-color: var(--dm-red); background: #fff; + box-shadow: 0 0 0 3px rgba(192,18,39,0.11); + } + .dm-blog-search-icon { + position: absolute; right: 14px; top: 50%; transform: translateY(-50%); + color: #94a3b8; pointer-events: none; display: flex; + } + .dm-blog-search-results { + position: absolute; z-index: 20; top: calc(100% + 8px); left: 0; right: 0; + background: #fff; border: 1px solid rgba(15,23,42,0.10); border-radius: 14px; + box-shadow: 0 18px 42px rgba(15,23,42,0.14); overflow: hidden; + } + .dm-blog-search-results ul { list-style: none; margin: 0; padding: 6px; } + .dm-blog-search-result { + display: flex; flex-direction: column; gap: 3px; padding: 10px 12px; + border-radius: 10px; text-decoration: none; transition: background .15s ease; + } + .dm-blog-search-result:hover { background: #f8fafc; } + .dm-blog-search-result-cat { + font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .8px; color: var(--dm-red); + } + .dm-blog-search-result-title { font-size: 13.5px; font-weight: 600; color: #1e293b; line-height: 1.35; } + .dm-blog-search-empty { margin: 0; padding: 14px 12px; font-size: 13px; color: #64748b; } + + /* Recent posts */ + .dm-blog-recent { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 15px; } + .dm-blog-recent-item { display: flex; gap: 13px; align-items: center; text-decoration: none; } + .dm-blog-recent-thumb { + position: relative; flex: 0 0 62px; width: 62px; height: 62px; + border-radius: 13px; overflow: hidden; background: #f1f5f9; + } + .dm-blog-recent-meta { display: flex; flex-direction: column; gap: 4px; min-width: 0; } + .dm-blog-recent-title { + font-size: 13.5px; font-weight: 700; color: #1e293b; line-height: 1.35; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-blog-recent-item:hover .dm-blog-recent-title { color: var(--dm-red); } + .dm-blog-recent-date { font-size: 11.5px; font-weight: 600; color: #94a3b8; } + + /* Categories */ + .dm-blog-categories { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; } + .dm-blog-category-item { + display: flex; align-items: center; justify-content: space-between; gap: 10px; + padding: 11px 2px; text-decoration: none; font-size: 14px; font-weight: 600; color: #334155 !important; + border-bottom: 1px solid rgba(15,23,42,0.06); transition: color .2s ease, padding-left .2s ease; + } + .dm-blog-categories li:last-child .dm-blog-category-item { border-bottom: none; } + .dm-blog-category-item:hover { color: var(--dm-red); padding-left: 6px; } + .dm-blog-category-item > span:first-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } + .dm-blog-category-count { + flex: 0 0 auto; font-size: 11px; font-weight: 800; color: #94a3b8; background: #f1f5f9; + min-width: 24px; height: 22px; border-radius: 7px; display: inline-flex; + align-items: center; justify-content: center; padding: 0 7px; + } + + /* CTA card */ + .dm-blog-cta-card { background: #1f1f1f; border-color: #1f1f1f; } + .dm-blog-cta-title { font-size: 18px !important; font-weight: 800 !important; color: #fff !important; line-height: 1.32 !important; margin: 0 0 10px; letter-spacing: -.2px !important; } + .dm-blog-cta-text { font-size: 13.5px; line-height: 1.6; color: #c7c7c7; margin: 0 0 20px; font-weight: 450; } + .dm-blog-cta-btn { + display: inline-flex; align-items: center; gap: 8px; + background: var(--dm-red); color: #fff !important; font-size: 13.5px; font-weight: 700; + padding: 12px 22px; border-radius: 12px; text-decoration: none; + transition: background .2s ease, transform .2s ease; + } + .dm-blog-cta-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } +c:["$","div",null,{"className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"Article\",\"headline\":\"42% Less Distance: Insights from Our Hyderabad Hub\",\"description\":\"A practical look at how one Hyderabad hub reduced distance, used fewer vehicles, and protected delivery windows with better route planning.\",\"image\":[\"https://www.doormile.com/images/blog-post-pic-15.webp\"],\"datePublished\":\"2025-09-18T00:00:00.000Z\",\"dateModified\":\"2025-09-18T00:00:00.000Z\",\"author\":{\"@type\":\"Organization\",\"name\":\"Doormile Team\",\"url\":\"https://www.doormile.com\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Doormile\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://www.doormile.com/images/cropped-image-2.png\"}},\"mainEntityOfPage\":{\"@type\":\"WebPage\",\"@id\":\"https://www.doormile.com/blog/42-less-distance-insights-from-our-hyderabad-hub\"},\"articleSection\":\"Case Study\"}"}}],["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https://www.doormile.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https://www.doormile.com/blog\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"42% Less Distance: Insights from Our Hyderabad Hub\",\"item\":\"https://www.doormile.com/blog/42-less-distance-insights-from-our-hyderabad-hub\"}]}"}}],["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":[["$","article",null,{"className":"dm-single-blog","children":[["$","link",null,{"rel":"preload","as":"image","href":"/images/blog-post-pic-15.webp"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$17"}}],"$L18","$L19"]}],"$L1a"]}]}]]}] +1b:I[22016,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],""] +1c:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"ScrollReveal"] +18:["$","div",null,{"className":"custom-standard-hero-container","children":["$","div",null,{"className":"custom-standard-hero-card dm-banner-card","style":{"backgroundImage":"url(/images/blog-post-pic-15.webp)","--hero-overlay":"linear-gradient(180deg, rgba(0,0,0,0.38) 0%, rgba(0,0,0,0.46) 55%, rgba(0,0,0,0.60) 100%)"},"children":["$","div",null,{"className":"e-con-inner dm-banner-inner","children":[["$","span",null,{"className":"dm-banner-category","children":"Case Study"}],["$","h1",null,{"className":"dm-banner-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}]]}]}]}] +19:["$","div",null,{"className":"dm-blog-wrap","children":[["$","div",null,{"className":"dm-meta-bar","children":[["$","nav",null,{"className":"dm-meta-breadcrumb","aria-label":"Breadcrumb","children":["$","ol",null,{"children":[["$","li",null,{"children":["$","$L1b",null,{"href":"/","children":"Home"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"children":["$","$L1b",null,{"href":"/blog","children":"Blog"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"aria-current":"page","className":"dm-meta-current","children":"42% Less Distance: Insights from Our Hyderabad Hub"}]]}]}],["$","div",null,{"className":"dm-meta-items","children":[["$","span",null,{"className":"dm-meta-item dm-meta-author","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","path",null,{"d":"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"}],["$","circle",null,{"cx":"12","cy":"7","r":"4"}]]}],"Doormile Team"]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","rect",null,{"x":"3","y":"4","width":"18","height":"18","rx":"2"}],["$","line",null,{"x1":"16","y1":"2","x2":"16","y2":"6"}],["$","line",null,{"x1":"8","y1":"2","x2":"8","y2":"6"}],["$","line",null,{"x1":"3","y1":"10","x2":"21","y2":"10"}]]}],["$","time",null,{"dateTime":"2025-09-18","children":"Sep 18, 2025"}]]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","circle",null,{"cx":"12","cy":"12","r":"9"}],["$","polyline",null,{"points":"12 7 12 12 15 14"}]]}],2," min read"]}]]}]]}],["$","div",null,{"className":"dm-blog-layout","children":[["$","div",null,{"className":"dm-blog-main","children":[["$","p",null,{"className":"dm-blog-intro","children":"Numbers settle arguments. At our Hyderabad hub, the goal was simple: reduce avoidable distance without missing customer commitments. The result was a 42% reduction in total distance travelled."}],["$","div",null,{"className":"dm-article-body","children":[["$","$L1c","0",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"Hyderabad is not an easy city for delivery planning. Dense commercial areas, fast-growing suburbs, flyover work, narrow service lanes, apartment security checks, and sudden traffic build-up can all change the day."}]}],["$","$L1c","1",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"The baseline"}]}],["$","$L1c","2",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"Before MileTruth, the hub planned routes in the usual way. Zones were drawn from experience, dispatchers sequenced stops manually, and riders adjusted on the road when something changed."}]}],["$","$L1c","3",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"That process worked, but it carried hidden costs. Two riders might cross the same area in the same hour. A vehicle might take a longer loop to avoid one late stop. A dispatcher might hold back an order because the best vehicle was not obvious in the moment."}]}],["$","$L1c","4",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ul",null,{"className":"dm-article-ul","children":[["$","li","0",{"children":"Zone-based allocation that missed nearby cross-zone drops"}],["$","li","1",{"children":"Manual stop sequencing during busy dispatch windows"}],["$","li","2",{"children":"ETAs checked after routing instead of before dispatch"}],["$","li","3",{"children":"Traffic and delay handling that depended on phone calls from riders"}]]}]}],["$","$L1c","5",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h3",null,{"className":"dm-article-h3","children":"What changed"}]}],["$","$L1c","6",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"The main change was treating the day's orders as one connected plan instead of separate zone lists. The route plan considered distance, rider capacity, delivery windows, traffic, and vehicle availability together."}]}],"$L1d","$L1e","$L1f","$L20","$L21","$L22","$L23","$L24"]}]]}],"$L25"]}]]}] +26:T2021, + .dm-blog-footer { + font-family: var(--font-manrope), sans-serif; --dm-red: #c01227; --dm-red-hover: #e31d32; + /* The global theme applies 72px top/bottom section padding — strip it so the + inner container is the single source of vertical rhythm (no double gap). */ + padding: 0 !important; + } + /* Neutralize the global theme's 120/80/60px UPPERCASE heading rules */ + .dm-blog-footer :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline) */ + .dm-blog-footer a { text-decoration: none !important; } + /* Shared content container — mirrors SingleBlog's .dm-blog-wrap (same 1280px + max-width + 20→40px horizontal padding) so Prev/Next, Related and the CTA + align to the exact same left/right edges as the article body above. + Vertical rhythm: ~64px from the article end to the Prev/Next divider, then a + consistent ~64–72px section→section gap (no 120px+ voids). */ + .dm-blog-footer-inner { + max-width: 1280px; margin: 0 auto; + /* Compact vertical rhythm on an 8px system. Top padding sets the + article→Prev/Next gap (~24–32px); the inter-section gap sets the + Prev/Next→Related gap (~32–48px). No large arbitrary voids. */ + /* Minimal bottom padding — the global site footer already contributes its + own 20px top inset, so the CTA banner sits close to it without a void. */ + padding: clamp(24px, 3vw, 32px) clamp(20px, 4vw, 40px) clamp(8px, 1.5vw, 16px); + display: flex; flex-direction: column; gap: clamp(32px, 4vw, 48px); + } + @media (max-width: 767px) { + .dm-blog-footer-inner { + padding-left: 16px; + padding-right: 16px; + } + } + + /* Prev / Next */ + .dm-prevnext { + display: grid; grid-template-columns: 1fr 1fr; gap: 20px; + /* Halved from 40px: tight divider→cards spacing without crowding. */ + padding-top: clamp(16px, 2vw, 24px); border-top: 1px solid rgba(15,23,42,0.08); + } + @media (max-width: 640px) { .dm-prevnext { grid-template-columns: 1fr; } } + .dm-prevnext-placeholder { display: block; } + .dm-prevnext-card { + display: flex; gap: 16px; align-items: center; padding: 16px; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + text-decoration: none; transition: transform .3s ease, box-shadow .3s ease, border-color .3s ease; + } + .dm-prevnext-card:hover { + transform: translateY(-4px); border-color: rgba(192,18,39,0.2); + box-shadow: 0 16px 34px rgba(192,18,39,0.10); + } + .dm-prevnext-thumb { + position: relative; flex: 0 0 80px; width: 80px; height: 80px; + border-radius: 16px; overflow: hidden; background: #f1f5f9; + } + .dm-prevnext-text { display: flex; flex-direction: column; gap: 5px; min-width: 0; } + .dm-prevnext-next { text-align: right; } + .dm-prevnext-next .dm-prevnext-text { align-items: flex-end; } + .dm-prevnext-label { + display: inline-flex; align-items: center; gap: 6px; + font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: 1px; color: var(--dm-red); + } + .dm-prevnext-cat { font-size: 11px; font-weight: 700; color: #94a3b8; text-transform: uppercase; letter-spacing: .5px; } + .dm-prevnext-title { + font-size: 15.5px; font-weight: 700; color: #1e293b; line-height: 1.4; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-prevnext-card:hover .dm-prevnext-title { color: var(--dm-red); } + + /* Related */ + .dm-related-heading { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 850 !important; letter-spacing: -.4px !important; + line-height: 1.25 !important; color: #0f172a !important; margin: 0 0 24px; + } + .dm-related-grid { + display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; + } + @media (max-width: 1024px) { .dm-related-grid { grid-template-columns: repeat(2, 1fr); } } + @media (max-width: 700px) { .dm-related-grid { grid-template-columns: 1fr; gap: 24px; } } + + .dm-related-card { + display: flex; flex-direction: column; height: 100%; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + overflow: hidden; box-shadow: 0 4px 24px rgba(15,23,42,0.05); text-decoration: none; + transition: transform .4s cubic-bezier(0.2,0.8,0.2,1), box-shadow .4s ease, border-color .4s ease; + } + .dm-related-card:hover { + transform: translateY(-8px); box-shadow: 0 22px 44px rgba(192,18,39,0.13); + border-color: rgba(192,18,39,0.2); + } + .dm-related-img { + position: relative; width: 100%; aspect-ratio: 16 / 10; overflow: hidden; background: #f1f5f9; + } + .dm-related-img img { transition: transform .5s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-img img { transform: scale(1.05); } + .dm-related-badge { + position: absolute; top: 14px; left: 14px; z-index: 5; background: var(--dm-red); color: #fff; + font-size: 9px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.2px; + padding: 5px 11px; border-radius: 8px; box-shadow: 0 4px 12px rgba(192,18,39,0.25); + } + .dm-related-body { display: flex; flex-direction: column; flex: 1; padding: 22px; } + .dm-related-card-title { + font-size: 17px !important; font-weight: 800 !important; color: #1e293b !important; line-height: 1.4 !important; + letter-spacing: -.2px !important; margin: 0 0 10px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-related-card:hover .dm-related-card-title { color: var(--dm-red); } + .dm-related-card-excerpt { + font-size: 13.5px; font-weight: 500; color: #64748b; line-height: 1.6; margin: 0 0 18px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + } + .dm-related-readmore { + margin-top: auto; display: inline-flex; align-items: center; gap: 7px; + font-size: 12.5px; font-weight: 800; color: var(--dm-red); + text-transform: uppercase; letter-spacing: .6px; + } + .dm-related-readmore-arrow { transition: transform .3s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-readmore-arrow { transform: translateX(5px); } + + /* Contact CTA banner */ + .dm-blog-contact-cta { + display: flex; align-items: center; justify-content: space-between; gap: 32px; + flex-wrap: wrap; + background: linear-gradient(135deg, #1a1a1a 0%, #2d1417 100%); + border-radius: 30px; padding: clamp(32px, 4vw, 56px); + position: relative; overflow: hidden; + } + .dm-blog-contact-cta::after { + content: ""; position: absolute; right: -80px; top: -80px; width: 300px; height: 300px; + background: radial-gradient(circle, rgba(192,18,39,0.40), transparent 70%); + pointer-events: none; + } + .dm-blog-contact-cta-content { position: relative; z-index: 1; max-width: 640px; } + .dm-blog-contact-eyebrow { + display: inline-block; font-size: 12px; font-weight: 800; text-transform: uppercase; + letter-spacing: 1.4px; color: #ff8088; margin-bottom: 14px; + } + .dm-blog-contact-title { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 800 !important; line-height: 1.25 !important; + letter-spacing: -.3px !important; color: #ffffff !important; margin: 0 0 12px; text-wrap: balance; + } + .dm-blog-contact-sub { + font-size: 15.5px; line-height: 1.65; color: #e2e2e2; margin: 0; font-weight: 450; + } + .dm-blog-contact-btn { + position: relative; z-index: 1; flex-shrink: 0; + display: inline-flex; align-items: center; justify-content: center; gap: 10px; + background: var(--dm-red); color: #fff !important; font-size: 15px; font-weight: 700; + padding: 16px 32px; border-radius: 16px; text-decoration: none; + box-shadow: 0 10px 26px rgba(192,18,39,0.34); + transition: background .2s ease, transform .2s ease; + } + .dm-blog-contact-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } + @media (max-width: 720px) { + .dm-blog-contact-cta { flex-direction: column; align-items: flex-start; gap: 26px; } + .dm-blog-contact-btn { width: 100%; } + } +1a:["$","section",null,{"className":"dm-blog-footer","aria-label":"More articles","children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$26"}}],"$L27"]}] +28:I[5500,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"Image"] +29:I[23096,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"default"] +1d:["$","$L1c","7",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"During peak traffic hours in Hyderabad, some vehicles were arriving 20 to 30 minutes later than planned. By adjusting routes based on live traffic and battery levels, we reduced missed delivery windows and improved on-time performance."}]}] +1e:["$","$L1c","8",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","figure",null,{"className":"dm-article-figure","children":[["$","span",null,{"className":"dm-article-figure-img","children":["$","$L28",null,{"src":"/images/last-mile-approach.webp","alt":"Hyderabad delivery hub routing analysis","fill":true,"sizes":"(max-width: 768px) 100vw, 760px","style":{"objectFit":"cover"}}]}],["$","figcaption",null,{"children":"Planning the day's deliveries together removed repeated cross-town travel."}]]}]}] +1f:["$","$L1c","9",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"The results"}]}] +20:["$","$L1c","10",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ul",null,{"className":"dm-article-ul","children":[["$","li","0",{"children":"42% reduction in total distance travelled across the hub"}],["$","li","1",{"children":"37% fewer vehicles required for the same delivery volume"}],["$","li","2",{"children":"No SLA misses during the measured deployment window"}],["$","li","3",{"children":"Lower fuel use and fewer unnecessary kilometres per parcel"}]]}]}] +21:["$","$L1c","11",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","blockquote",null,{"className":"dm-article-quote","children":[["$","p",null,{"children":"The improvement did not come from asking riders to work harder. It came from giving the team a better route plan before the vehicles left."}],["$","cite",null,{"children":"Hyderabad Hub Operations"}]]}]}] +22:["$","$L1c","12",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h3",null,{"className":"dm-article-h3","children":"Why this applies beyond one hub"}]}] +23:["$","$L1c","13",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"The Hyderabad result was not a one-city exception. Most hubs deal with the same issues: overlapping routes, conservative sequencing, traffic surprises, charging constraints, and last-minute order changes."}]}] +24:["$","$L1c","14",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"A 42% cut in distance changes the cost of running the operation. It also gives dispatchers more breathing room when the day gets messy."}]}] +25:["$","div",null,{"className":"dm-blog-aside-wrap","children":["$","aside",null,{"className":"dm-blog-sidebar","aria-label":"Blog sidebar","children":[["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Search"}],["$","$L29",null,{}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Recent Posts"}],["$","ul",null,{"className":"dm-blog-recent","children":[["$","li","how-ai-is-transforming-last-mile-ev-delivery",{"children":["$","$L1b",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L28",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"How Better Planning Improves Last-Mile EV Delivery"}],["$","time",null,{"dateTime":"2025-10-02","className":"dm-blog-recent-date","children":"Oct 2, 2025"}]]}]]}]}],["$","li","miletruth-ai-10-stages-to-smarter-dispatch",{"children":["$","$L1b",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L28",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","time",null,{"dateTime":"2025-09-05","className":"dm-blog-recent-date","children":"Sep 5, 2025"}]]}]]}]}],["$","li","the-ev-paradox-solving-range-anxiety-for-urban-fleets",{"children":["$","$L1b",null,{"href":"/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L28",null,{"src":"/images/ev-paradox.webp","alt":"The EV Paradox: Solving Range Anxiety for Urban Fleets","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}],["$","time",null,{"dateTime":"2025-08-21","className":"dm-blog-recent-date","children":"Aug 21, 2025"}]]}]]}]}],["$","li","why-mathematical-precision-beats-heuristics-in-routing",{"children":["$","$L1b",null,{"href":"/blog/why-mathematical-precision-beats-heuristics-in-routing","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L28",null,{"src":"/images/blog-post-pic-14.webp","alt":"Why Mathematical Precision Beats Heuristics in Routing","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"Why Mathematical Precision Beats Heuristics in Routing"}],["$","time",null,{"dateTime":"2025-08-07","className":"dm-blog-recent-date","children":"Aug 7, 2025"}]]}]]}]}]]}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Categories"}],["$","ul",null,{"className":"dm-blog-categories","children":[["$","li","Case Study",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Case Study"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","EV Fleet",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"EV Fleet"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}],["$","li","Fleet Management",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Fleet Management"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","MileTruth",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"MileTruth"}],"$L2a"]}]}],"$L2b","$L2c","$L2d"]}]]}],"$L2e"]}]}] +27:["$","div",null,{"className":"dm-blog-footer-inner","children":[["$","nav",null,{"className":"dm-prevnext","aria-label":"Article navigation","children":[["$","$L1b",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-prevnext-card dm-prevnext-prev","children":[["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L28",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"sizes":"80px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-prevnext-text","children":[["$","span",null,{"className":"dm-prevnext-label","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"19","y1":"12","x2":"5","y2":"12"}],["$","polyline",null,{"points":"12 19 5 12 12 5"}]]}],"Previous"]}],["$","span",null,{"className":"dm-prevnext-cat","children":"Technology"}],["$","span",null,{"className":"dm-prevnext-title","children":"How Better Planning Improves Last-Mile EV Delivery"}]]}]]}],["$","$L1b",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-prevnext-card dm-prevnext-next","children":[["$","span",null,{"className":"dm-prevnext-text","children":[["$","span",null,{"className":"dm-prevnext-label","children":["Next",["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","span",null,{"className":"dm-prevnext-cat","children":"MileTruth"}],["$","span",null,{"className":"dm-prevnext-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}]]}],["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L28",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"sizes":"80px","style":{"objectFit":"cover"}}]}]]}]]}],["$","div",null,{"className":"dm-related","children":[["$","h2",null,{"className":"dm-related-heading","children":"Related Articles"}],["$","div",null,{"className":"dm-related-grid","children":[["$","$L1c","how-ai-is-transforming-last-mile-ev-delivery",{"delay":0,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L28",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Technology"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"How Better Planning Improves Last-Mile EV Delivery"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"A practical look at how EV fleets can plan routes, manage charging, and keep delivery promises without adding unnecessary vehicles."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}],["$","$L1c","miletruth-ai-10-stages-to-smarter-dispatch",{"delay":0.08,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L28",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"MileTruth"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}],"$L2f","$L30"]}]]}]}],"$L31"]}]]}],"$L32"]}] +2a:["$","span",null,{"className":"dm-blog-category-count","children":1}] +2b:["$","li","Operations",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Operations"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +2c:["$","li","Sustainability",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Sustainability"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +2d:["$","li","Technology",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Technology"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}] +2e:["$","section",null,{"className":"dm-blog-widget dm-blog-cta-card","children":[["$","h2",null,{"className":"dm-blog-cta-title","children":"Planning delivery routes?"}],["$","p",null,{"className":"dm-blog-cta-text","children":"Talk to us about reducing wasted distance, missed windows, and avoidable vehicle time."}],["$","$L1b",null,{"href":"/contact","className":"dm-blog-cta-btn","children":["Contact Us",["$","svg",null,{"width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] +2f:["$","p",null,{"className":"dm-related-card-excerpt","children":"From order intake to final route output, here is how a dispatch plan is checked before riders leave the hub."}] +30:["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}] +31:["$","$L1c","the-ev-paradox-solving-range-anxiety-for-urban-fleets",{"delay":0.16,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L28",null,{"src":"/images/ev-paradox.webp","alt":"The EV Paradox: Solving Range Anxiety for Urban Fleets","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"EV Fleet"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"Electric vehicles lower running costs, but battery range changes how routes must be planned before dispatch."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}] +32:["$","div",null,{"className":"dm-blog-contact-cta","children":[["$","div",null,{"className":"dm-blog-contact-cta-content","children":[["$","span",null,{"className":"dm-blog-contact-eyebrow","children":"Let's talk logistics"}],["$","h2",null,{"className":"dm-blog-contact-title","children":"Ready to move smarter with Doormile?"}],["$","p",null,{"className":"dm-blog-contact-sub","children":"Tell us about your fleet and routes — we'll show you where the distance, vehicles and emissions are hiding."}]]}],["$","$L1b",null,{"href":"/contact","className":"dm-blog-contact-btn","children":["Get in Touch",["$","svg",null,{"width":"20","height":"20","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] +12:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] +33:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +f:null +14:[["$","title","0",{"children":"42% Less Distance: Insights from Our Hyderabad Hub – Doormile"}],["$","meta","1",{"name":"description","content":"A practical look at how one Hyderabad hub reduced distance, used fewer vehicles, and protected delivery windows with better route planning."}],["$","meta","2",{"name":"author","content":"Doormile Team"}],["$","meta","3",{"name":"keywords","content":"Case Study,last-mile logistics,EV fleet,MileTruth,route optimisation"}],["$","meta","4",{"name":"robots","content":"index, follow"}],["$","link","5",{"rel":"canonical","href":"https://www.doormile.com/blog/42-less-distance-insights-from-our-hyderabad-hub"}],["$","meta","6",{"property":"og:title","content":"42% Less Distance: Insights from Our Hyderabad Hub"}],["$","meta","7",{"property":"og:description","content":"A practical look at how one Hyderabad hub reduced distance, used fewer vehicles, and protected delivery windows with better route planning."}],["$","meta","8",{"property":"og:url","content":"https://www.doormile.com/blog/42-less-distance-insights-from-our-hyderabad-hub"}],["$","meta","9",{"property":"og:site_name","content":"Doormile"}],["$","meta","10",{"property":"og:image","content":"https://www.doormile.com/images/blog-post-pic-15.webp"}],["$","meta","11",{"property":"og:image:alt","content":"42% Less Distance: Insights from Our Hyderabad Hub"}],["$","meta","12",{"property":"og:type","content":"article"}],["$","meta","13",{"property":"article:published_time","content":"2025-09-18T00:00:00.000Z"}],["$","meta","14",{"property":"article:author","content":"Doormile Team"}],["$","meta","15",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","16",{"name":"twitter:title","content":"42% Less Distance: Insights from Our Hyderabad Hub"}],["$","meta","17",{"name":"twitter:description","content":"A practical look at how one Hyderabad hub reduced distance, used fewer vehicles, and protected delivery windows with better route planning."}],["$","meta","18",{"name":"twitter:image","content":"https://www.doormile.com/images/blog-post-pic-15.webp"}],["$","link","19",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","20",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","21",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","22",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L33","23",{}]] diff --git a/build/blog/42-less-distance-insights-from-our-hyderabad-hub/__next._full.txt b/build/blog/42-less-distance-insights-from-our-hyderabad-hub/__next._full.txt new file mode 100644 index 0000000..d8c37fe --- /dev/null +++ b/build/blog/42-less-distance-insights-from-our-hyderabad-hub/__next._full.txt @@ -0,0 +1,547 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +d:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +e:"$Sreact.suspense" +11:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +13:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +15:I[68027,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"P":null,"c":["","blog","42-less-distance-insights-from-our-hyderabad-hub"],"q":"","i":false,"f":[[["",{"children":["blog",{"children":[["slug","42-less-distance-insights-from-our-hyderabad-hub","d",null],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":["$Lc",[["$","script","script-0",{"src":"/_next/static/chunks/0yvxf3ok9gcp_.js","async":true,"nonce":"$undefined"}]],["$","$Ld",null,{"children":["$","$e",null,{"name":"Next.MetadataOutlet","children":"$@f"}]}]]}],{},null,false,null]},null,false,"$@10"]},null,false,"$@10"]},null,false,null],["$","$1","h",{"children":[null,["$","$L11",null,{"children":"$L12"}],["$","div",null,{"hidden":true,"children":["$","$L13",null,{"children":["$","$e",null,{"name":"Next.Metadata","children":"$L14"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$15",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"kmSVPuUqY3Rhw5xy4D2nn"} +16:[] +10:"$W16" +:HL["/images/blog-post-pic-15.webp","image"] +17:T3d6f, + .dm-single-blog { + --dm-red: #c01227; + --dm-red-hover: #e31d32; + --dm-radius-card: 22px; + --dm-radius-img: 20px; + --dm-radius-badge: 8px; + --dm-shadow-card: 0 4px 24px rgba(15, 23, 42, 0.05); + --dm-border: 1px solid rgba(15, 23, 42, 0.09); + --dm-space-p: 24px; + --dm-space-h: 32px; + --dm-space-img: 32px; + --dm-space-quote: 40px; + --dm-sticky-top: 138px; + --dm-measure: min(1100px, 100%); + font-family: var(--font-manrope), sans-serif; + } + + /* Heading normalization. Beat the global theme's .elementor-kit-5 h1-h6 + (120/80/60px UPPERCASE) rules with !important on our own classes. */ + .dm-single-blog :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline, + specificity 0-1-1) so blog links keep our colors and never get underlined. */ + .dm-single-blog a { text-decoration: none !important; } + + /* Page banner: tall homepage-scale frame with only badge + title inside */ + /* Compound selector (specificity 20) + !important beats the global 800px + single-class height rules so the blog banner can use viewport heights. */ + .custom-standard-hero-card.dm-banner-card { + height: 90vh !important; + min-height: 85vh !important; + } + @media (max-width: 1024px) { + .custom-standard-hero-card.dm-banner-card { height: 80vh !important; min-height: 75vh !important; } + } + @media (max-width: 600px) { + .custom-standard-hero-card.dm-banner-card { height: 78vh !important; min-height: 72vh !important; } + } + + .dm-banner-inner { + position: relative; width: 100%; height: 100%; + display: flex; flex-direction: column; align-items: center; justify-content: center; + text-align: center; gap: clamp(22px, 2.6vw, 34px); + padding: clamp(48px, 8vh, 96px) clamp(20px, 5vw, 48px); + } + + .dm-banner-category { + display: inline-block; background: var(--dm-red); color: #fff; + font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.6px; + padding: 9px 18px; border-radius: 999px; box-shadow: 0 8px 22px rgba(192,18,39,0.45); + } + .dm-banner-title { + font-family: var(--font-manrope), sans-serif !important; + font-size: clamp(34px, 5vw, 60px) !important; font-weight: 850 !important; + line-height: 1.16 !important; letter-spacing: -1.2px !important; + color: #ffffff !important; margin: 0; max-width: 820px; + text-wrap: balance; text-shadow: 0 2px 30px rgba(0,0,0,0.38); + } + @media (max-width: 1024px) { .dm-banner-title { font-size: clamp(32px, 6vw, 48px) !important; max-width: 90%; } } + @media (max-width: 600px) { .dm-banner-title { font-size: clamp(28px, 8vw, 38px) !important; max-width: 90%; } } + + /* Content wrap begins immediately below the banner */ + /* Shared content container: the SAME max-width + horizontal padding is used + by BlogPostFooter (.dm-blog-footer-inner) so the article body, headings, + images, Prev/Next, Related Articles and the CTA banner all align to one + grid with identical left/right edges. Keep both in sync. */ + .dm-blog-wrap { + max-width: 1280px; margin: 0 auto; + /* 20px mobile padding floor → 40px on desktop; matches the footer container. */ + padding: clamp(14px, 2vw, 26px) clamp(20px, 4vw, 40px) 0; + } + @media (max-width: 767px) { + .dm-blog-wrap { + padding-left: 16px; + padding-right: 16px; + } + } + + /* ── Article meta bar (directly under the hero) ── */ + .dm-meta-bar { + display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 14px 24px; + padding: clamp(20px, 2.6vw, 30px) 0; margin-bottom: clamp(26px, 3vw, 44px); + border-bottom: 1px solid rgba(15,23,42,0.10); + } + .dm-meta-breadcrumb ol { + list-style: none; display: flex; flex-wrap: wrap; align-items: center; + gap: 8px; margin: 0; padding: 0; font-size: 13px; font-weight: 600; color: #64748b; + } + .dm-meta-breadcrumb a { color: #64748b !important; text-decoration: none; transition: color .2s ease; } + .dm-meta-breadcrumb a:hover { color: var(--dm-red) !important; } + .dm-meta-sep { color: #cbd5e1; } + .dm-meta-current { + color: #0f172a; font-weight: 700; + max-width: min(40ch, 46vw); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; + } + @media (max-width: 600px) { .dm-meta-current { max-width: 56vw; } } + .dm-meta-items { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 20px; } + .dm-meta-item { + display: inline-flex; align-items: center; gap: 7px; + font-size: 13.5px; font-weight: 600; color: #475569; + } + .dm-meta-item svg { color: var(--dm-red); flex: 0 0 auto; } + .dm-meta-author { color: #0f172a; font-weight: 700; } + @media (max-width: 600px) { .dm-meta-bar { gap: 12px; } } + .dm-blog-layout { + display: grid; grid-template-columns: minmax(0,1fr) 320px; + /* Tighter gap gives the reading column more room next to the 320px sidebar. */ + gap: clamp(28px, 3vw, 56px); align-items: start; + } + @media (max-width: 1024px) { + .dm-blog-layout { grid-template-columns: 1fr; gap: 48px; } + /* Single-column (tablet/mobile): cap the reading column and centre it so the + article never sits left-aligned with a large empty right gutter. */ + .dm-blog-main { max-width: 900px; margin-inline: auto; } + } + .dm-blog-main { min-width: 0; } + + /* ── Intro lead ── */ + .dm-blog-intro { + max-width: var(--dm-measure); + font-size: clamp(18px, 1.5vw, 20px); line-height: 1.65; font-weight: 500; + color: #475569; margin: 0 0 clamp(26px, 3vw, 38px); padding-left: 20px; + border-left: 3px solid var(--dm-red); + } + + /* ── Article body ── */ + .dm-article-body { max-width: var(--dm-measure); } + .dm-article-p { + font-size: 18px !important; line-height: 1.8 !important; color: #334155; font-weight: 450; + margin: 0 0 var(--dm-space-p); + } + .dm-article-h2 { + font-size: clamp(23px, 2vw, 30px) !important; font-weight: 800 !important; letter-spacing: -.3px !important; + color: #0f172a !important; line-height: 1.3 !important; margin: 48px 0 var(--dm-space-h); + text-wrap: balance; + } + /* Each article block is wrapped in its OWN ScrollReveal
    , so a bare + :first-child rule matched every heading (each is the only child of its + wrapper) and zeroed its top margin, collapsing the gap above every + section heading. Scope the reset to only the article body's first block. */ + .dm-article-body > :first-child :where(.dm-article-h2, .dm-article-h3), + .dm-article-body > .dm-article-h2:first-child, + .dm-article-body > .dm-article-h3:first-child { margin-top: 0; } + .dm-article-h3 { + font-size: clamp(19px, 1.5vw, 23px) !important; font-weight: 800 !important; letter-spacing: -.2px !important; + color: #1e293b !important; line-height: 1.34 !important; margin: 40px 0 18px; + text-wrap: balance; + } + @media (max-width: 600px) { + .dm-article-p { font-size: 16px !important; } + .dm-article-ul li, .dm-article-ol li { font-size: 15.5px; } + .dm-article-h2 { font-size: clamp(22px, 6vw, 28px) !important; margin-top: 38px; } + .dm-article-h3 { font-size: clamp(18px, 5vw, 22px) !important; } + } + + .dm-article-ul, .dm-article-ol { + /* Top margin (was 0) separates the list from the paragraph above it; + matching bottom margin keeps it clear of the next heading/paragraph. + Slightly larger than --dm-space-p so the list reads as its own block. */ + margin: clamp(26px, 2.4vw, 32px) 0 clamp(26px, 2.4vw, 32px); + padding-left: 2px; list-style: none; + display: flex; flex-direction: column; gap: 15px; + } + /* Prefixed with .dm-article-body so these beat the theme's global + ".logico-front-end ul li:before" fontello-glyph bullet (specificity 0,1,3), + which otherwise replaces our clean red dot with a misaligned checkmark glyph + and adds its own 1.7em indent. */ + .dm-article-body .dm-article-ul li, .dm-article-body .dm-article-ol li { + position: relative; padding-left: 34px; + font-size: 17px; line-height: 1.65; color: #334155; font-weight: 450; + } + .dm-article-body .dm-article-ul li::before { + content: ""; position: absolute; left: 7px; top: 10px; + width: 8px; height: 8px; border-radius: 50%; background: var(--dm-red); + /* kill any inherited fontello glyph from the global rule */ + font-size: 0; line-height: 0; + } + .dm-article-ol { counter-reset: dm-li; } + .dm-article-body .dm-article-ol li { counter-increment: dm-li; } + .dm-article-body .dm-article-ol li::before { + content: counter(dm-li); position: absolute; left: 0; top: 0; + width: 24px; height: 24px; border-radius: 7px; + background: rgba(192,18,39,0.10); color: var(--dm-red); + font-size: 12px; font-weight: 800; display: flex; align-items: center; justify-content: center; + } + + /* ── Quote ── */ + .dm-article-quote { + position: relative; margin: var(--dm-space-quote) 0; padding: 30px 32px 30px 64px; + background: linear-gradient(135deg, #fbf2f3 0%, #fdf7f8 100%); + border-left: 4px solid var(--dm-red); border-radius: 0 18px 18px 0; + box-shadow: 0 8px 28px rgba(192, 18, 39, 0.06); + } + .dm-article-quote::before { + content: "\201C"; position: absolute; left: 22px; top: 8px; + font-family: Georgia, "Times New Roman", serif; + font-size: 64px; line-height: 1; color: rgba(192, 18, 39, 0.28); font-weight: 700; + } + .dm-article-quote p { + font-size: clamp(19px, 2vw, 23px); line-height: 1.5; font-weight: 600; + font-style: italic; color: #1e293b; margin: 0; + } + .dm-article-quote cite { + display: block; margin-top: 16px; font-size: 13px; font-weight: 700; + font-style: normal; color: var(--dm-red); text-transform: uppercase; letter-spacing: .6px; + } + @media (max-width: 600px) { .dm-article-quote { padding: 26px 22px; } .dm-article-quote::before { display: none; } } + + /* ── Images ── */ + .dm-article-figure { margin: var(--dm-space-img) 0; } + .dm-article-figure-img { + position: relative; display: block; width: 100%; aspect-ratio: 16 / 9; + border-radius: var(--dm-radius-img); overflow: hidden; box-shadow: 0 14px 34px rgba(15,23,42,0.10); + } + .dm-article-figure figcaption { + margin-top: 14px; font-size: 13.5px; color: #94a3b8; font-weight: 500; + text-align: center; font-style: italic; + } + + /* ── Sidebar ── */ + .dm-blog-aside-wrap { position: relative; } + .dm-blog-sidebar { + display: flex; flex-direction: column; gap: 18px; + position: sticky; top: var(--dm-sticky-top); + } + @media (max-width: 1024px) { .dm-blog-sidebar { position: static; gap: 20px; } } + + .dm-blog-widget { + background: #fff; border: var(--dm-border); border-radius: var(--dm-radius-card); + padding: 20px; box-shadow: var(--dm-shadow-card); + } + .dm-blog-widget-title { + font-size: 13px !important; font-weight: 700 !important; text-transform: uppercase !important; + letter-spacing: .8px !important; line-height: 1.35 !important; color: #0f172a !important; + margin: 0 0 15px; padding: 0 0 12px; + border-bottom: 1px solid rgba(15,23,42,0.08); + overflow: visible; white-space: normal; word-break: normal; + } + + /* Search */ + .dm-sr-only { + position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; + overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; + } + .dm-blog-search { position: relative; } + .dm-blog-search-form { position: relative; } + .dm-blog-search-input { + width: 100%; height: 46px; border: 1.5px solid #e2e8f0; border-radius: 12px; + padding: 0 42px 0 15px; font-size: 14px; font-family: inherit; color: #0f172a; + background: #f8fafc; transition: border-color .2s ease, box-shadow .2s ease, background .2s ease; + } + .dm-blog-search-input::placeholder { color: #9c9c9c; } + .dm-blog-search-input:focus { + outline: none; border-color: var(--dm-red); background: #fff; + box-shadow: 0 0 0 3px rgba(192,18,39,0.11); + } + .dm-blog-search-icon { + position: absolute; right: 14px; top: 50%; transform: translateY(-50%); + color: #94a3b8; pointer-events: none; display: flex; + } + .dm-blog-search-results { + position: absolute; z-index: 20; top: calc(100% + 8px); left: 0; right: 0; + background: #fff; border: 1px solid rgba(15,23,42,0.10); border-radius: 14px; + box-shadow: 0 18px 42px rgba(15,23,42,0.14); overflow: hidden; + } + .dm-blog-search-results ul { list-style: none; margin: 0; padding: 6px; } + .dm-blog-search-result { + display: flex; flex-direction: column; gap: 3px; padding: 10px 12px; + border-radius: 10px; text-decoration: none; transition: background .15s ease; + } + .dm-blog-search-result:hover { background: #f8fafc; } + .dm-blog-search-result-cat { + font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .8px; color: var(--dm-red); + } + .dm-blog-search-result-title { font-size: 13.5px; font-weight: 600; color: #1e293b; line-height: 1.35; } + .dm-blog-search-empty { margin: 0; padding: 14px 12px; font-size: 13px; color: #64748b; } + + /* Recent posts */ + .dm-blog-recent { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 15px; } + .dm-blog-recent-item { display: flex; gap: 13px; align-items: center; text-decoration: none; } + .dm-blog-recent-thumb { + position: relative; flex: 0 0 62px; width: 62px; height: 62px; + border-radius: 13px; overflow: hidden; background: #f1f5f9; + } + .dm-blog-recent-meta { display: flex; flex-direction: column; gap: 4px; min-width: 0; } + .dm-blog-recent-title { + font-size: 13.5px; font-weight: 700; color: #1e293b; line-height: 1.35; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-blog-recent-item:hover .dm-blog-recent-title { color: var(--dm-red); } + .dm-blog-recent-date { font-size: 11.5px; font-weight: 600; color: #94a3b8; } + + /* Categories */ + .dm-blog-categories { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; } + .dm-blog-category-item { + display: flex; align-items: center; justify-content: space-between; gap: 10px; + padding: 11px 2px; text-decoration: none; font-size: 14px; font-weight: 600; color: #334155 !important; + border-bottom: 1px solid rgba(15,23,42,0.06); transition: color .2s ease, padding-left .2s ease; + } + .dm-blog-categories li:last-child .dm-blog-category-item { border-bottom: none; } + .dm-blog-category-item:hover { color: var(--dm-red); padding-left: 6px; } + .dm-blog-category-item > span:first-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } + .dm-blog-category-count { + flex: 0 0 auto; font-size: 11px; font-weight: 800; color: #94a3b8; background: #f1f5f9; + min-width: 24px; height: 22px; border-radius: 7px; display: inline-flex; + align-items: center; justify-content: center; padding: 0 7px; + } + + /* CTA card */ + .dm-blog-cta-card { background: #1f1f1f; border-color: #1f1f1f; } + .dm-blog-cta-title { font-size: 18px !important; font-weight: 800 !important; color: #fff !important; line-height: 1.32 !important; margin: 0 0 10px; letter-spacing: -.2px !important; } + .dm-blog-cta-text { font-size: 13.5px; line-height: 1.6; color: #c7c7c7; margin: 0 0 20px; font-weight: 450; } + .dm-blog-cta-btn { + display: inline-flex; align-items: center; gap: 8px; + background: var(--dm-red); color: #fff !important; font-size: 13.5px; font-weight: 700; + padding: 12px 22px; border-radius: 12px; text-decoration: none; + transition: background .2s ease, transform .2s ease; + } + .dm-blog-cta-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } +c:["$","div",null,{"className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"Article\",\"headline\":\"42% Less Distance: Insights from Our Hyderabad Hub\",\"description\":\"A practical look at how one Hyderabad hub reduced distance, used fewer vehicles, and protected delivery windows with better route planning.\",\"image\":[\"https://www.doormile.com/images/blog-post-pic-15.webp\"],\"datePublished\":\"2025-09-18T00:00:00.000Z\",\"dateModified\":\"2025-09-18T00:00:00.000Z\",\"author\":{\"@type\":\"Organization\",\"name\":\"Doormile Team\",\"url\":\"https://www.doormile.com\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Doormile\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://www.doormile.com/images/cropped-image-2.png\"}},\"mainEntityOfPage\":{\"@type\":\"WebPage\",\"@id\":\"https://www.doormile.com/blog/42-less-distance-insights-from-our-hyderabad-hub\"},\"articleSection\":\"Case Study\"}"}}],["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https://www.doormile.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https://www.doormile.com/blog\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"42% Less Distance: Insights from Our Hyderabad Hub\",\"item\":\"https://www.doormile.com/blog/42-less-distance-insights-from-our-hyderabad-hub\"}]}"}}],["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":[["$","article",null,{"className":"dm-single-blog","children":[["$","link",null,{"rel":"preload","as":"image","href":"/images/blog-post-pic-15.webp"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$17"}}],"$L18","$L19"]}],"$L1a"]}]}]]}] +1b:I[22016,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],""] +1c:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"ScrollReveal"] +18:["$","div",null,{"className":"custom-standard-hero-container","children":["$","div",null,{"className":"custom-standard-hero-card dm-banner-card","style":{"backgroundImage":"url(/images/blog-post-pic-15.webp)","--hero-overlay":"linear-gradient(180deg, rgba(0,0,0,0.38) 0%, rgba(0,0,0,0.46) 55%, rgba(0,0,0,0.60) 100%)"},"children":["$","div",null,{"className":"e-con-inner dm-banner-inner","children":[["$","span",null,{"className":"dm-banner-category","children":"Case Study"}],["$","h1",null,{"className":"dm-banner-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}]]}]}]}] +19:["$","div",null,{"className":"dm-blog-wrap","children":[["$","div",null,{"className":"dm-meta-bar","children":[["$","nav",null,{"className":"dm-meta-breadcrumb","aria-label":"Breadcrumb","children":["$","ol",null,{"children":[["$","li",null,{"children":["$","$L1b",null,{"href":"/","children":"Home"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"children":["$","$L1b",null,{"href":"/blog","children":"Blog"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"aria-current":"page","className":"dm-meta-current","children":"42% Less Distance: Insights from Our Hyderabad Hub"}]]}]}],["$","div",null,{"className":"dm-meta-items","children":[["$","span",null,{"className":"dm-meta-item dm-meta-author","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","path",null,{"d":"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"}],["$","circle",null,{"cx":"12","cy":"7","r":"4"}]]}],"Doormile Team"]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","rect",null,{"x":"3","y":"4","width":"18","height":"18","rx":"2"}],["$","line",null,{"x1":"16","y1":"2","x2":"16","y2":"6"}],["$","line",null,{"x1":"8","y1":"2","x2":"8","y2":"6"}],["$","line",null,{"x1":"3","y1":"10","x2":"21","y2":"10"}]]}],["$","time",null,{"dateTime":"2025-09-18","children":"Sep 18, 2025"}]]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","circle",null,{"cx":"12","cy":"12","r":"9"}],["$","polyline",null,{"points":"12 7 12 12 15 14"}]]}],2," min read"]}]]}]]}],["$","div",null,{"className":"dm-blog-layout","children":[["$","div",null,{"className":"dm-blog-main","children":[["$","p",null,{"className":"dm-blog-intro","children":"Numbers settle arguments. At our Hyderabad hub, the goal was simple: reduce avoidable distance without missing customer commitments. The result was a 42% reduction in total distance travelled."}],["$","div",null,{"className":"dm-article-body","children":[["$","$L1c","0",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"Hyderabad is not an easy city for delivery planning. Dense commercial areas, fast-growing suburbs, flyover work, narrow service lanes, apartment security checks, and sudden traffic build-up can all change the day."}]}],["$","$L1c","1",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"The baseline"}]}],["$","$L1c","2",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"Before MileTruth, the hub planned routes in the usual way. Zones were drawn from experience, dispatchers sequenced stops manually, and riders adjusted on the road when something changed."}]}],["$","$L1c","3",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"That process worked, but it carried hidden costs. Two riders might cross the same area in the same hour. A vehicle might take a longer loop to avoid one late stop. A dispatcher might hold back an order because the best vehicle was not obvious in the moment."}]}],["$","$L1c","4",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ul",null,{"className":"dm-article-ul","children":[["$","li","0",{"children":"Zone-based allocation that missed nearby cross-zone drops"}],["$","li","1",{"children":"Manual stop sequencing during busy dispatch windows"}],["$","li","2",{"children":"ETAs checked after routing instead of before dispatch"}],["$","li","3",{"children":"Traffic and delay handling that depended on phone calls from riders"}]]}]}],["$","$L1c","5",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h3",null,{"className":"dm-article-h3","children":"What changed"}]}],["$","$L1c","6",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"The main change was treating the day's orders as one connected plan instead of separate zone lists. The route plan considered distance, rider capacity, delivery windows, traffic, and vehicle availability together."}]}],"$L1d","$L1e","$L1f","$L20","$L21","$L22","$L23","$L24"]}]]}],"$L25"]}]]}] +26:T2021, + .dm-blog-footer { + font-family: var(--font-manrope), sans-serif; --dm-red: #c01227; --dm-red-hover: #e31d32; + /* The global theme applies 72px top/bottom section padding — strip it so the + inner container is the single source of vertical rhythm (no double gap). */ + padding: 0 !important; + } + /* Neutralize the global theme's 120/80/60px UPPERCASE heading rules */ + .dm-blog-footer :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline) */ + .dm-blog-footer a { text-decoration: none !important; } + /* Shared content container — mirrors SingleBlog's .dm-blog-wrap (same 1280px + max-width + 20→40px horizontal padding) so Prev/Next, Related and the CTA + align to the exact same left/right edges as the article body above. + Vertical rhythm: ~64px from the article end to the Prev/Next divider, then a + consistent ~64–72px section→section gap (no 120px+ voids). */ + .dm-blog-footer-inner { + max-width: 1280px; margin: 0 auto; + /* Compact vertical rhythm on an 8px system. Top padding sets the + article→Prev/Next gap (~24–32px); the inter-section gap sets the + Prev/Next→Related gap (~32–48px). No large arbitrary voids. */ + /* Minimal bottom padding — the global site footer already contributes its + own 20px top inset, so the CTA banner sits close to it without a void. */ + padding: clamp(24px, 3vw, 32px) clamp(20px, 4vw, 40px) clamp(8px, 1.5vw, 16px); + display: flex; flex-direction: column; gap: clamp(32px, 4vw, 48px); + } + @media (max-width: 767px) { + .dm-blog-footer-inner { + padding-left: 16px; + padding-right: 16px; + } + } + + /* Prev / Next */ + .dm-prevnext { + display: grid; grid-template-columns: 1fr 1fr; gap: 20px; + /* Halved from 40px: tight divider→cards spacing without crowding. */ + padding-top: clamp(16px, 2vw, 24px); border-top: 1px solid rgba(15,23,42,0.08); + } + @media (max-width: 640px) { .dm-prevnext { grid-template-columns: 1fr; } } + .dm-prevnext-placeholder { display: block; } + .dm-prevnext-card { + display: flex; gap: 16px; align-items: center; padding: 16px; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + text-decoration: none; transition: transform .3s ease, box-shadow .3s ease, border-color .3s ease; + } + .dm-prevnext-card:hover { + transform: translateY(-4px); border-color: rgba(192,18,39,0.2); + box-shadow: 0 16px 34px rgba(192,18,39,0.10); + } + .dm-prevnext-thumb { + position: relative; flex: 0 0 80px; width: 80px; height: 80px; + border-radius: 16px; overflow: hidden; background: #f1f5f9; + } + .dm-prevnext-text { display: flex; flex-direction: column; gap: 5px; min-width: 0; } + .dm-prevnext-next { text-align: right; } + .dm-prevnext-next .dm-prevnext-text { align-items: flex-end; } + .dm-prevnext-label { + display: inline-flex; align-items: center; gap: 6px; + font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: 1px; color: var(--dm-red); + } + .dm-prevnext-cat { font-size: 11px; font-weight: 700; color: #94a3b8; text-transform: uppercase; letter-spacing: .5px; } + .dm-prevnext-title { + font-size: 15.5px; font-weight: 700; color: #1e293b; line-height: 1.4; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-prevnext-card:hover .dm-prevnext-title { color: var(--dm-red); } + + /* Related */ + .dm-related-heading { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 850 !important; letter-spacing: -.4px !important; + line-height: 1.25 !important; color: #0f172a !important; margin: 0 0 24px; + } + .dm-related-grid { + display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; + } + @media (max-width: 1024px) { .dm-related-grid { grid-template-columns: repeat(2, 1fr); } } + @media (max-width: 700px) { .dm-related-grid { grid-template-columns: 1fr; gap: 24px; } } + + .dm-related-card { + display: flex; flex-direction: column; height: 100%; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + overflow: hidden; box-shadow: 0 4px 24px rgba(15,23,42,0.05); text-decoration: none; + transition: transform .4s cubic-bezier(0.2,0.8,0.2,1), box-shadow .4s ease, border-color .4s ease; + } + .dm-related-card:hover { + transform: translateY(-8px); box-shadow: 0 22px 44px rgba(192,18,39,0.13); + border-color: rgba(192,18,39,0.2); + } + .dm-related-img { + position: relative; width: 100%; aspect-ratio: 16 / 10; overflow: hidden; background: #f1f5f9; + } + .dm-related-img img { transition: transform .5s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-img img { transform: scale(1.05); } + .dm-related-badge { + position: absolute; top: 14px; left: 14px; z-index: 5; background: var(--dm-red); color: #fff; + font-size: 9px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.2px; + padding: 5px 11px; border-radius: 8px; box-shadow: 0 4px 12px rgba(192,18,39,0.25); + } + .dm-related-body { display: flex; flex-direction: column; flex: 1; padding: 22px; } + .dm-related-card-title { + font-size: 17px !important; font-weight: 800 !important; color: #1e293b !important; line-height: 1.4 !important; + letter-spacing: -.2px !important; margin: 0 0 10px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-related-card:hover .dm-related-card-title { color: var(--dm-red); } + .dm-related-card-excerpt { + font-size: 13.5px; font-weight: 500; color: #64748b; line-height: 1.6; margin: 0 0 18px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + } + .dm-related-readmore { + margin-top: auto; display: inline-flex; align-items: center; gap: 7px; + font-size: 12.5px; font-weight: 800; color: var(--dm-red); + text-transform: uppercase; letter-spacing: .6px; + } + .dm-related-readmore-arrow { transition: transform .3s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-readmore-arrow { transform: translateX(5px); } + + /* Contact CTA banner */ + .dm-blog-contact-cta { + display: flex; align-items: center; justify-content: space-between; gap: 32px; + flex-wrap: wrap; + background: linear-gradient(135deg, #1a1a1a 0%, #2d1417 100%); + border-radius: 30px; padding: clamp(32px, 4vw, 56px); + position: relative; overflow: hidden; + } + .dm-blog-contact-cta::after { + content: ""; position: absolute; right: -80px; top: -80px; width: 300px; height: 300px; + background: radial-gradient(circle, rgba(192,18,39,0.40), transparent 70%); + pointer-events: none; + } + .dm-blog-contact-cta-content { position: relative; z-index: 1; max-width: 640px; } + .dm-blog-contact-eyebrow { + display: inline-block; font-size: 12px; font-weight: 800; text-transform: uppercase; + letter-spacing: 1.4px; color: #ff8088; margin-bottom: 14px; + } + .dm-blog-contact-title { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 800 !important; line-height: 1.25 !important; + letter-spacing: -.3px !important; color: #ffffff !important; margin: 0 0 12px; text-wrap: balance; + } + .dm-blog-contact-sub { + font-size: 15.5px; line-height: 1.65; color: #e2e2e2; margin: 0; font-weight: 450; + } + .dm-blog-contact-btn { + position: relative; z-index: 1; flex-shrink: 0; + display: inline-flex; align-items: center; justify-content: center; gap: 10px; + background: var(--dm-red); color: #fff !important; font-size: 15px; font-weight: 700; + padding: 16px 32px; border-radius: 16px; text-decoration: none; + box-shadow: 0 10px 26px rgba(192,18,39,0.34); + transition: background .2s ease, transform .2s ease; + } + .dm-blog-contact-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } + @media (max-width: 720px) { + .dm-blog-contact-cta { flex-direction: column; align-items: flex-start; gap: 26px; } + .dm-blog-contact-btn { width: 100%; } + } +1a:["$","section",null,{"className":"dm-blog-footer","aria-label":"More articles","children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$26"}}],"$L27"]}] +28:I[5500,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"Image"] +29:I[23096,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"default"] +1d:["$","$L1c","7",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"During peak traffic hours in Hyderabad, some vehicles were arriving 20 to 30 minutes later than planned. By adjusting routes based on live traffic and battery levels, we reduced missed delivery windows and improved on-time performance."}]}] +1e:["$","$L1c","8",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","figure",null,{"className":"dm-article-figure","children":[["$","span",null,{"className":"dm-article-figure-img","children":["$","$L28",null,{"src":"/images/last-mile-approach.webp","alt":"Hyderabad delivery hub routing analysis","fill":true,"sizes":"(max-width: 768px) 100vw, 760px","style":{"objectFit":"cover"}}]}],["$","figcaption",null,{"children":"Planning the day's deliveries together removed repeated cross-town travel."}]]}]}] +1f:["$","$L1c","9",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"The results"}]}] +20:["$","$L1c","10",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ul",null,{"className":"dm-article-ul","children":[["$","li","0",{"children":"42% reduction in total distance travelled across the hub"}],["$","li","1",{"children":"37% fewer vehicles required for the same delivery volume"}],["$","li","2",{"children":"No SLA misses during the measured deployment window"}],["$","li","3",{"children":"Lower fuel use and fewer unnecessary kilometres per parcel"}]]}]}] +21:["$","$L1c","11",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","blockquote",null,{"className":"dm-article-quote","children":[["$","p",null,{"children":"The improvement did not come from asking riders to work harder. It came from giving the team a better route plan before the vehicles left."}],["$","cite",null,{"children":"Hyderabad Hub Operations"}]]}]}] +22:["$","$L1c","12",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h3",null,{"className":"dm-article-h3","children":"Why this applies beyond one hub"}]}] +23:["$","$L1c","13",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"The Hyderabad result was not a one-city exception. Most hubs deal with the same issues: overlapping routes, conservative sequencing, traffic surprises, charging constraints, and last-minute order changes."}]}] +24:["$","$L1c","14",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"A 42% cut in distance changes the cost of running the operation. It also gives dispatchers more breathing room when the day gets messy."}]}] +25:["$","div",null,{"className":"dm-blog-aside-wrap","children":["$","aside",null,{"className":"dm-blog-sidebar","aria-label":"Blog sidebar","children":[["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Search"}],["$","$L29",null,{}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Recent Posts"}],["$","ul",null,{"className":"dm-blog-recent","children":[["$","li","how-ai-is-transforming-last-mile-ev-delivery",{"children":["$","$L1b",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L28",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"How Better Planning Improves Last-Mile EV Delivery"}],["$","time",null,{"dateTime":"2025-10-02","className":"dm-blog-recent-date","children":"Oct 2, 2025"}]]}]]}]}],["$","li","miletruth-ai-10-stages-to-smarter-dispatch",{"children":["$","$L1b",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L28",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","time",null,{"dateTime":"2025-09-05","className":"dm-blog-recent-date","children":"Sep 5, 2025"}]]}]]}]}],["$","li","the-ev-paradox-solving-range-anxiety-for-urban-fleets",{"children":["$","$L1b",null,{"href":"/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L28",null,{"src":"/images/ev-paradox.webp","alt":"The EV Paradox: Solving Range Anxiety for Urban Fleets","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}],["$","time",null,{"dateTime":"2025-08-21","className":"dm-blog-recent-date","children":"Aug 21, 2025"}]]}]]}]}],["$","li","why-mathematical-precision-beats-heuristics-in-routing",{"children":["$","$L1b",null,{"href":"/blog/why-mathematical-precision-beats-heuristics-in-routing","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L28",null,{"src":"/images/blog-post-pic-14.webp","alt":"Why Mathematical Precision Beats Heuristics in Routing","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"Why Mathematical Precision Beats Heuristics in Routing"}],["$","time",null,{"dateTime":"2025-08-07","className":"dm-blog-recent-date","children":"Aug 7, 2025"}]]}]]}]}]]}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Categories"}],["$","ul",null,{"className":"dm-blog-categories","children":[["$","li","Case Study",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Case Study"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","EV Fleet",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"EV Fleet"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}],["$","li","Fleet Management",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Fleet Management"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","MileTruth",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"MileTruth"}],"$L2a"]}]}],"$L2b","$L2c","$L2d"]}]]}],"$L2e"]}]}] +27:["$","div",null,{"className":"dm-blog-footer-inner","children":[["$","nav",null,{"className":"dm-prevnext","aria-label":"Article navigation","children":[["$","$L1b",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-prevnext-card dm-prevnext-prev","children":[["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L28",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"sizes":"80px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-prevnext-text","children":[["$","span",null,{"className":"dm-prevnext-label","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"19","y1":"12","x2":"5","y2":"12"}],["$","polyline",null,{"points":"12 19 5 12 12 5"}]]}],"Previous"]}],["$","span",null,{"className":"dm-prevnext-cat","children":"Technology"}],["$","span",null,{"className":"dm-prevnext-title","children":"How Better Planning Improves Last-Mile EV Delivery"}]]}]]}],["$","$L1b",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-prevnext-card dm-prevnext-next","children":[["$","span",null,{"className":"dm-prevnext-text","children":[["$","span",null,{"className":"dm-prevnext-label","children":["Next",["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","span",null,{"className":"dm-prevnext-cat","children":"MileTruth"}],["$","span",null,{"className":"dm-prevnext-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}]]}],["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L28",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"sizes":"80px","style":{"objectFit":"cover"}}]}]]}]]}],["$","div",null,{"className":"dm-related","children":[["$","h2",null,{"className":"dm-related-heading","children":"Related Articles"}],["$","div",null,{"className":"dm-related-grid","children":[["$","$L1c","how-ai-is-transforming-last-mile-ev-delivery",{"delay":0,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L28",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Technology"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"How Better Planning Improves Last-Mile EV Delivery"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"A practical look at how EV fleets can plan routes, manage charging, and keep delivery promises without adding unnecessary vehicles."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}],["$","$L1c","miletruth-ai-10-stages-to-smarter-dispatch",{"delay":0.08,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L28",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"MileTruth"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}],"$L2f","$L30"]}]]}]}],"$L31"]}]]}],"$L32"]}] +2a:["$","span",null,{"className":"dm-blog-category-count","children":1}] +2b:["$","li","Operations",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Operations"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +2c:["$","li","Sustainability",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Sustainability"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +2d:["$","li","Technology",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Technology"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}] +2e:["$","section",null,{"className":"dm-blog-widget dm-blog-cta-card","children":[["$","h2",null,{"className":"dm-blog-cta-title","children":"Planning delivery routes?"}],["$","p",null,{"className":"dm-blog-cta-text","children":"Talk to us about reducing wasted distance, missed windows, and avoidable vehicle time."}],["$","$L1b",null,{"href":"/contact","className":"dm-blog-cta-btn","children":["Contact Us",["$","svg",null,{"width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] +2f:["$","p",null,{"className":"dm-related-card-excerpt","children":"From order intake to final route output, here is how a dispatch plan is checked before riders leave the hub."}] +30:["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}] +31:["$","$L1c","the-ev-paradox-solving-range-anxiety-for-urban-fleets",{"delay":0.16,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L28",null,{"src":"/images/ev-paradox.webp","alt":"The EV Paradox: Solving Range Anxiety for Urban Fleets","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"EV Fleet"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"Electric vehicles lower running costs, but battery range changes how routes must be planned before dispatch."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}] +32:["$","div",null,{"className":"dm-blog-contact-cta","children":[["$","div",null,{"className":"dm-blog-contact-cta-content","children":[["$","span",null,{"className":"dm-blog-contact-eyebrow","children":"Let's talk logistics"}],["$","h2",null,{"className":"dm-blog-contact-title","children":"Ready to move smarter with Doormile?"}],["$","p",null,{"className":"dm-blog-contact-sub","children":"Tell us about your fleet and routes — we'll show you where the distance, vehicles and emissions are hiding."}]]}],["$","$L1b",null,{"href":"/contact","className":"dm-blog-contact-btn","children":["Get in Touch",["$","svg",null,{"width":"20","height":"20","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] +12:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] +33:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +f:null +14:[["$","title","0",{"children":"42% Less Distance: Insights from Our Hyderabad Hub – Doormile"}],["$","meta","1",{"name":"description","content":"A practical look at how one Hyderabad hub reduced distance, used fewer vehicles, and protected delivery windows with better route planning."}],["$","meta","2",{"name":"author","content":"Doormile Team"}],["$","meta","3",{"name":"keywords","content":"Case Study,last-mile logistics,EV fleet,MileTruth,route optimisation"}],["$","meta","4",{"name":"robots","content":"index, follow"}],["$","link","5",{"rel":"canonical","href":"https://www.doormile.com/blog/42-less-distance-insights-from-our-hyderabad-hub"}],["$","meta","6",{"property":"og:title","content":"42% Less Distance: Insights from Our Hyderabad Hub"}],["$","meta","7",{"property":"og:description","content":"A practical look at how one Hyderabad hub reduced distance, used fewer vehicles, and protected delivery windows with better route planning."}],["$","meta","8",{"property":"og:url","content":"https://www.doormile.com/blog/42-less-distance-insights-from-our-hyderabad-hub"}],["$","meta","9",{"property":"og:site_name","content":"Doormile"}],["$","meta","10",{"property":"og:image","content":"https://www.doormile.com/images/blog-post-pic-15.webp"}],["$","meta","11",{"property":"og:image:alt","content":"42% Less Distance: Insights from Our Hyderabad Hub"}],["$","meta","12",{"property":"og:type","content":"article"}],["$","meta","13",{"property":"article:published_time","content":"2025-09-18T00:00:00.000Z"}],["$","meta","14",{"property":"article:author","content":"Doormile Team"}],["$","meta","15",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","16",{"name":"twitter:title","content":"42% Less Distance: Insights from Our Hyderabad Hub"}],["$","meta","17",{"name":"twitter:description","content":"A practical look at how one Hyderabad hub reduced distance, used fewer vehicles, and protected delivery windows with better route planning."}],["$","meta","18",{"name":"twitter:image","content":"https://www.doormile.com/images/blog-post-pic-15.webp"}],["$","link","19",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","20",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","21",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","22",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L33","23",{}]] diff --git a/build/blog/42-less-distance-insights-from-our-hyderabad-hub/__next._head.txt b/build/blog/42-less-distance-insights-from-our-hyderabad-hub/__next._head.txt new file mode 100644 index 0000000..28a70ee --- /dev/null +++ b/build/blog/42-less-distance-insights-from-our-hyderabad-hub/__next._head.txt @@ -0,0 +1,6 @@ +1:"$Sreact.fragment" +2:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +3:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +4:"$Sreact.suspense" +5:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +0:{"rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"42% Less Distance: Insights from Our Hyderabad Hub – Doormile"}],["$","meta","1",{"name":"description","content":"A practical look at how one Hyderabad hub reduced distance, used fewer vehicles, and protected delivery windows with better route planning."}],["$","meta","2",{"name":"author","content":"Doormile Team"}],["$","meta","3",{"name":"keywords","content":"Case Study,last-mile logistics,EV fleet,MileTruth,route optimisation"}],["$","meta","4",{"name":"robots","content":"index, follow"}],["$","link","5",{"rel":"canonical","href":"https://www.doormile.com/blog/42-less-distance-insights-from-our-hyderabad-hub"}],["$","meta","6",{"property":"og:title","content":"42% Less Distance: Insights from Our Hyderabad Hub"}],["$","meta","7",{"property":"og:description","content":"A practical look at how one Hyderabad hub reduced distance, used fewer vehicles, and protected delivery windows with better route planning."}],["$","meta","8",{"property":"og:url","content":"https://www.doormile.com/blog/42-less-distance-insights-from-our-hyderabad-hub"}],["$","meta","9",{"property":"og:site_name","content":"Doormile"}],["$","meta","10",{"property":"og:image","content":"https://www.doormile.com/images/blog-post-pic-15.webp"}],["$","meta","11",{"property":"og:image:alt","content":"42% Less Distance: Insights from Our Hyderabad Hub"}],["$","meta","12",{"property":"og:type","content":"article"}],["$","meta","13",{"property":"article:published_time","content":"2025-09-18T00:00:00.000Z"}],["$","meta","14",{"property":"article:author","content":"Doormile Team"}],["$","meta","15",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","16",{"name":"twitter:title","content":"42% Less Distance: Insights from Our Hyderabad Hub"}],["$","meta","17",{"name":"twitter:description","content":"A practical look at how one Hyderabad hub reduced distance, used fewer vehicles, and protected delivery windows with better route planning."}],["$","meta","18",{"name":"twitter:image","content":"https://www.doormile.com/images/blog-post-pic-15.webp"}],["$","link","19",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","20",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","21",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","22",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L5","23",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/blog/42-less-distance-insights-from-our-hyderabad-hub/__next._index.txt b/build/blog/42-less-distance-insights-from-our-hyderabad-hub/__next._index.txt new file mode 100644 index 0000000..d0b3355 --- /dev/null +++ b/build/blog/42-less-distance-insights-from-our-hyderabad-hub/__next._index.txt @@ -0,0 +1,15 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","template":["$","$La",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/blog/42-less-distance-insights-from-our-hyderabad-hub/__next._tree.txt b/build/blog/42-less-distance-insights-from-our-hyderabad-hub/__next._tree.txt new file mode 100644 index 0000000..298e353 --- /dev/null +++ b/build/blog/42-less-distance-insights-from-our-hyderabad-hub/__next._tree.txt @@ -0,0 +1,10 @@ +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +:HL["/images/blog-post-pic-15.webp","image"] +0:{"tree":{"name":"","param":null,"prefetchHints":16,"slots":{"children":{"name":"blog","param":null,"prefetchHints":0,"slots":{"children":{"name":"slug","param":{"type":"d","key":"42-less-distance-insights-from-our-hyderabad-hub","siblings":null},"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}}}}}},"staleTime":300,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/blog/42-less-distance-insights-from-our-hyderabad-hub/__next.blog.$d$slug.__PAGE__.txt b/build/blog/42-less-distance-insights-from-our-hyderabad-hub/__next.blog.$d$slug.__PAGE__.txt new file mode 100644 index 0000000..846d9a3 --- /dev/null +++ b/build/blog/42-less-distance-insights-from-our-hyderabad-hub/__next.blog.$d$slug.__PAGE__.txt @@ -0,0 +1,522 @@ +1:"$Sreact.fragment" +8:I[22016,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],""] +9:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"ScrollReveal"] +15:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +16:"$Sreact.suspense" +18:I[5500,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"Image"] +19:I[23096,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"default"] +:HL["/images/blog-post-pic-15.webp","image"] +2:T3d6f, + .dm-single-blog { + --dm-red: #c01227; + --dm-red-hover: #e31d32; + --dm-radius-card: 22px; + --dm-radius-img: 20px; + --dm-radius-badge: 8px; + --dm-shadow-card: 0 4px 24px rgba(15, 23, 42, 0.05); + --dm-border: 1px solid rgba(15, 23, 42, 0.09); + --dm-space-p: 24px; + --dm-space-h: 32px; + --dm-space-img: 32px; + --dm-space-quote: 40px; + --dm-sticky-top: 138px; + --dm-measure: min(1100px, 100%); + font-family: var(--font-manrope), sans-serif; + } + + /* Heading normalization. Beat the global theme's .elementor-kit-5 h1-h6 + (120/80/60px UPPERCASE) rules with !important on our own classes. */ + .dm-single-blog :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline, + specificity 0-1-1) so blog links keep our colors and never get underlined. */ + .dm-single-blog a { text-decoration: none !important; } + + /* Page banner: tall homepage-scale frame with only badge + title inside */ + /* Compound selector (specificity 20) + !important beats the global 800px + single-class height rules so the blog banner can use viewport heights. */ + .custom-standard-hero-card.dm-banner-card { + height: 90vh !important; + min-height: 85vh !important; + } + @media (max-width: 1024px) { + .custom-standard-hero-card.dm-banner-card { height: 80vh !important; min-height: 75vh !important; } + } + @media (max-width: 600px) { + .custom-standard-hero-card.dm-banner-card { height: 78vh !important; min-height: 72vh !important; } + } + + .dm-banner-inner { + position: relative; width: 100%; height: 100%; + display: flex; flex-direction: column; align-items: center; justify-content: center; + text-align: center; gap: clamp(22px, 2.6vw, 34px); + padding: clamp(48px, 8vh, 96px) clamp(20px, 5vw, 48px); + } + + .dm-banner-category { + display: inline-block; background: var(--dm-red); color: #fff; + font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.6px; + padding: 9px 18px; border-radius: 999px; box-shadow: 0 8px 22px rgba(192,18,39,0.45); + } + .dm-banner-title { + font-family: var(--font-manrope), sans-serif !important; + font-size: clamp(34px, 5vw, 60px) !important; font-weight: 850 !important; + line-height: 1.16 !important; letter-spacing: -1.2px !important; + color: #ffffff !important; margin: 0; max-width: 820px; + text-wrap: balance; text-shadow: 0 2px 30px rgba(0,0,0,0.38); + } + @media (max-width: 1024px) { .dm-banner-title { font-size: clamp(32px, 6vw, 48px) !important; max-width: 90%; } } + @media (max-width: 600px) { .dm-banner-title { font-size: clamp(28px, 8vw, 38px) !important; max-width: 90%; } } + + /* Content wrap begins immediately below the banner */ + /* Shared content container: the SAME max-width + horizontal padding is used + by BlogPostFooter (.dm-blog-footer-inner) so the article body, headings, + images, Prev/Next, Related Articles and the CTA banner all align to one + grid with identical left/right edges. Keep both in sync. */ + .dm-blog-wrap { + max-width: 1280px; margin: 0 auto; + /* 20px mobile padding floor → 40px on desktop; matches the footer container. */ + padding: clamp(14px, 2vw, 26px) clamp(20px, 4vw, 40px) 0; + } + @media (max-width: 767px) { + .dm-blog-wrap { + padding-left: 16px; + padding-right: 16px; + } + } + + /* ── Article meta bar (directly under the hero) ── */ + .dm-meta-bar { + display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 14px 24px; + padding: clamp(20px, 2.6vw, 30px) 0; margin-bottom: clamp(26px, 3vw, 44px); + border-bottom: 1px solid rgba(15,23,42,0.10); + } + .dm-meta-breadcrumb ol { + list-style: none; display: flex; flex-wrap: wrap; align-items: center; + gap: 8px; margin: 0; padding: 0; font-size: 13px; font-weight: 600; color: #64748b; + } + .dm-meta-breadcrumb a { color: #64748b !important; text-decoration: none; transition: color .2s ease; } + .dm-meta-breadcrumb a:hover { color: var(--dm-red) !important; } + .dm-meta-sep { color: #cbd5e1; } + .dm-meta-current { + color: #0f172a; font-weight: 700; + max-width: min(40ch, 46vw); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; + } + @media (max-width: 600px) { .dm-meta-current { max-width: 56vw; } } + .dm-meta-items { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 20px; } + .dm-meta-item { + display: inline-flex; align-items: center; gap: 7px; + font-size: 13.5px; font-weight: 600; color: #475569; + } + .dm-meta-item svg { color: var(--dm-red); flex: 0 0 auto; } + .dm-meta-author { color: #0f172a; font-weight: 700; } + @media (max-width: 600px) { .dm-meta-bar { gap: 12px; } } + .dm-blog-layout { + display: grid; grid-template-columns: minmax(0,1fr) 320px; + /* Tighter gap gives the reading column more room next to the 320px sidebar. */ + gap: clamp(28px, 3vw, 56px); align-items: start; + } + @media (max-width: 1024px) { + .dm-blog-layout { grid-template-columns: 1fr; gap: 48px; } + /* Single-column (tablet/mobile): cap the reading column and centre it so the + article never sits left-aligned with a large empty right gutter. */ + .dm-blog-main { max-width: 900px; margin-inline: auto; } + } + .dm-blog-main { min-width: 0; } + + /* ── Intro lead ── */ + .dm-blog-intro { + max-width: var(--dm-measure); + font-size: clamp(18px, 1.5vw, 20px); line-height: 1.65; font-weight: 500; + color: #475569; margin: 0 0 clamp(26px, 3vw, 38px); padding-left: 20px; + border-left: 3px solid var(--dm-red); + } + + /* ── Article body ── */ + .dm-article-body { max-width: var(--dm-measure); } + .dm-article-p { + font-size: 18px !important; line-height: 1.8 !important; color: #334155; font-weight: 450; + margin: 0 0 var(--dm-space-p); + } + .dm-article-h2 { + font-size: clamp(23px, 2vw, 30px) !important; font-weight: 800 !important; letter-spacing: -.3px !important; + color: #0f172a !important; line-height: 1.3 !important; margin: 48px 0 var(--dm-space-h); + text-wrap: balance; + } + /* Each article block is wrapped in its OWN ScrollReveal
    , so a bare + :first-child rule matched every heading (each is the only child of its + wrapper) and zeroed its top margin, collapsing the gap above every + section heading. Scope the reset to only the article body's first block. */ + .dm-article-body > :first-child :where(.dm-article-h2, .dm-article-h3), + .dm-article-body > .dm-article-h2:first-child, + .dm-article-body > .dm-article-h3:first-child { margin-top: 0; } + .dm-article-h3 { + font-size: clamp(19px, 1.5vw, 23px) !important; font-weight: 800 !important; letter-spacing: -.2px !important; + color: #1e293b !important; line-height: 1.34 !important; margin: 40px 0 18px; + text-wrap: balance; + } + @media (max-width: 600px) { + .dm-article-p { font-size: 16px !important; } + .dm-article-ul li, .dm-article-ol li { font-size: 15.5px; } + .dm-article-h2 { font-size: clamp(22px, 6vw, 28px) !important; margin-top: 38px; } + .dm-article-h3 { font-size: clamp(18px, 5vw, 22px) !important; } + } + + .dm-article-ul, .dm-article-ol { + /* Top margin (was 0) separates the list from the paragraph above it; + matching bottom margin keeps it clear of the next heading/paragraph. + Slightly larger than --dm-space-p so the list reads as its own block. */ + margin: clamp(26px, 2.4vw, 32px) 0 clamp(26px, 2.4vw, 32px); + padding-left: 2px; list-style: none; + display: flex; flex-direction: column; gap: 15px; + } + /* Prefixed with .dm-article-body so these beat the theme's global + ".logico-front-end ul li:before" fontello-glyph bullet (specificity 0,1,3), + which otherwise replaces our clean red dot with a misaligned checkmark glyph + and adds its own 1.7em indent. */ + .dm-article-body .dm-article-ul li, .dm-article-body .dm-article-ol li { + position: relative; padding-left: 34px; + font-size: 17px; line-height: 1.65; color: #334155; font-weight: 450; + } + .dm-article-body .dm-article-ul li::before { + content: ""; position: absolute; left: 7px; top: 10px; + width: 8px; height: 8px; border-radius: 50%; background: var(--dm-red); + /* kill any inherited fontello glyph from the global rule */ + font-size: 0; line-height: 0; + } + .dm-article-ol { counter-reset: dm-li; } + .dm-article-body .dm-article-ol li { counter-increment: dm-li; } + .dm-article-body .dm-article-ol li::before { + content: counter(dm-li); position: absolute; left: 0; top: 0; + width: 24px; height: 24px; border-radius: 7px; + background: rgba(192,18,39,0.10); color: var(--dm-red); + font-size: 12px; font-weight: 800; display: flex; align-items: center; justify-content: center; + } + + /* ── Quote ── */ + .dm-article-quote { + position: relative; margin: var(--dm-space-quote) 0; padding: 30px 32px 30px 64px; + background: linear-gradient(135deg, #fbf2f3 0%, #fdf7f8 100%); + border-left: 4px solid var(--dm-red); border-radius: 0 18px 18px 0; + box-shadow: 0 8px 28px rgba(192, 18, 39, 0.06); + } + .dm-article-quote::before { + content: "\201C"; position: absolute; left: 22px; top: 8px; + font-family: Georgia, "Times New Roman", serif; + font-size: 64px; line-height: 1; color: rgba(192, 18, 39, 0.28); font-weight: 700; + } + .dm-article-quote p { + font-size: clamp(19px, 2vw, 23px); line-height: 1.5; font-weight: 600; + font-style: italic; color: #1e293b; margin: 0; + } + .dm-article-quote cite { + display: block; margin-top: 16px; font-size: 13px; font-weight: 700; + font-style: normal; color: var(--dm-red); text-transform: uppercase; letter-spacing: .6px; + } + @media (max-width: 600px) { .dm-article-quote { padding: 26px 22px; } .dm-article-quote::before { display: none; } } + + /* ── Images ── */ + .dm-article-figure { margin: var(--dm-space-img) 0; } + .dm-article-figure-img { + position: relative; display: block; width: 100%; aspect-ratio: 16 / 9; + border-radius: var(--dm-radius-img); overflow: hidden; box-shadow: 0 14px 34px rgba(15,23,42,0.10); + } + .dm-article-figure figcaption { + margin-top: 14px; font-size: 13.5px; color: #94a3b8; font-weight: 500; + text-align: center; font-style: italic; + } + + /* ── Sidebar ── */ + .dm-blog-aside-wrap { position: relative; } + .dm-blog-sidebar { + display: flex; flex-direction: column; gap: 18px; + position: sticky; top: var(--dm-sticky-top); + } + @media (max-width: 1024px) { .dm-blog-sidebar { position: static; gap: 20px; } } + + .dm-blog-widget { + background: #fff; border: var(--dm-border); border-radius: var(--dm-radius-card); + padding: 20px; box-shadow: var(--dm-shadow-card); + } + .dm-blog-widget-title { + font-size: 13px !important; font-weight: 700 !important; text-transform: uppercase !important; + letter-spacing: .8px !important; line-height: 1.35 !important; color: #0f172a !important; + margin: 0 0 15px; padding: 0 0 12px; + border-bottom: 1px solid rgba(15,23,42,0.08); + overflow: visible; white-space: normal; word-break: normal; + } + + /* Search */ + .dm-sr-only { + position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; + overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; + } + .dm-blog-search { position: relative; } + .dm-blog-search-form { position: relative; } + .dm-blog-search-input { + width: 100%; height: 46px; border: 1.5px solid #e2e8f0; border-radius: 12px; + padding: 0 42px 0 15px; font-size: 14px; font-family: inherit; color: #0f172a; + background: #f8fafc; transition: border-color .2s ease, box-shadow .2s ease, background .2s ease; + } + .dm-blog-search-input::placeholder { color: #9c9c9c; } + .dm-blog-search-input:focus { + outline: none; border-color: var(--dm-red); background: #fff; + box-shadow: 0 0 0 3px rgba(192,18,39,0.11); + } + .dm-blog-search-icon { + position: absolute; right: 14px; top: 50%; transform: translateY(-50%); + color: #94a3b8; pointer-events: none; display: flex; + } + .dm-blog-search-results { + position: absolute; z-index: 20; top: calc(100% + 8px); left: 0; right: 0; + background: #fff; border: 1px solid rgba(15,23,42,0.10); border-radius: 14px; + box-shadow: 0 18px 42px rgba(15,23,42,0.14); overflow: hidden; + } + .dm-blog-search-results ul { list-style: none; margin: 0; padding: 6px; } + .dm-blog-search-result { + display: flex; flex-direction: column; gap: 3px; padding: 10px 12px; + border-radius: 10px; text-decoration: none; transition: background .15s ease; + } + .dm-blog-search-result:hover { background: #f8fafc; } + .dm-blog-search-result-cat { + font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .8px; color: var(--dm-red); + } + .dm-blog-search-result-title { font-size: 13.5px; font-weight: 600; color: #1e293b; line-height: 1.35; } + .dm-blog-search-empty { margin: 0; padding: 14px 12px; font-size: 13px; color: #64748b; } + + /* Recent posts */ + .dm-blog-recent { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 15px; } + .dm-blog-recent-item { display: flex; gap: 13px; align-items: center; text-decoration: none; } + .dm-blog-recent-thumb { + position: relative; flex: 0 0 62px; width: 62px; height: 62px; + border-radius: 13px; overflow: hidden; background: #f1f5f9; + } + .dm-blog-recent-meta { display: flex; flex-direction: column; gap: 4px; min-width: 0; } + .dm-blog-recent-title { + font-size: 13.5px; font-weight: 700; color: #1e293b; line-height: 1.35; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-blog-recent-item:hover .dm-blog-recent-title { color: var(--dm-red); } + .dm-blog-recent-date { font-size: 11.5px; font-weight: 600; color: #94a3b8; } + + /* Categories */ + .dm-blog-categories { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; } + .dm-blog-category-item { + display: flex; align-items: center; justify-content: space-between; gap: 10px; + padding: 11px 2px; text-decoration: none; font-size: 14px; font-weight: 600; color: #334155 !important; + border-bottom: 1px solid rgba(15,23,42,0.06); transition: color .2s ease, padding-left .2s ease; + } + .dm-blog-categories li:last-child .dm-blog-category-item { border-bottom: none; } + .dm-blog-category-item:hover { color: var(--dm-red); padding-left: 6px; } + .dm-blog-category-item > span:first-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } + .dm-blog-category-count { + flex: 0 0 auto; font-size: 11px; font-weight: 800; color: #94a3b8; background: #f1f5f9; + min-width: 24px; height: 22px; border-radius: 7px; display: inline-flex; + align-items: center; justify-content: center; padding: 0 7px; + } + + /* CTA card */ + .dm-blog-cta-card { background: #1f1f1f; border-color: #1f1f1f; } + .dm-blog-cta-title { font-size: 18px !important; font-weight: 800 !important; color: #fff !important; line-height: 1.32 !important; margin: 0 0 10px; letter-spacing: -.2px !important; } + .dm-blog-cta-text { font-size: 13.5px; line-height: 1.6; color: #c7c7c7; margin: 0 0 20px; font-weight: 450; } + .dm-blog-cta-btn { + display: inline-flex; align-items: center; gap: 8px; + background: var(--dm-red); color: #fff !important; font-size: 13.5px; font-weight: 700; + padding: 12px 22px; border-radius: 12px; text-decoration: none; + transition: background .2s ease, transform .2s ease; + } + .dm-blog-cta-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } +0:{"rsc":["$","$1","c",{"children":[["$","div",null,{"className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"Article\",\"headline\":\"42% Less Distance: Insights from Our Hyderabad Hub\",\"description\":\"A practical look at how one Hyderabad hub reduced distance, used fewer vehicles, and protected delivery windows with better route planning.\",\"image\":[\"https://www.doormile.com/images/blog-post-pic-15.webp\"],\"datePublished\":\"2025-09-18T00:00:00.000Z\",\"dateModified\":\"2025-09-18T00:00:00.000Z\",\"author\":{\"@type\":\"Organization\",\"name\":\"Doormile Team\",\"url\":\"https://www.doormile.com\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Doormile\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://www.doormile.com/images/cropped-image-2.png\"}},\"mainEntityOfPage\":{\"@type\":\"WebPage\",\"@id\":\"https://www.doormile.com/blog/42-less-distance-insights-from-our-hyderabad-hub\"},\"articleSection\":\"Case Study\"}"}}],["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https://www.doormile.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https://www.doormile.com/blog\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"42% Less Distance: Insights from Our Hyderabad Hub\",\"item\":\"https://www.doormile.com/blog/42-less-distance-insights-from-our-hyderabad-hub\"}]}"}}],["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":[["$","article",null,{"className":"dm-single-blog","children":[["$","link",null,{"rel":"preload","as":"image","href":"/images/blog-post-pic-15.webp"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$2"}}],"$L3","$L4"]}],"$L5"]}]}]]}],["$L6"],"$L7"]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} +3:["$","div",null,{"className":"custom-standard-hero-container","children":["$","div",null,{"className":"custom-standard-hero-card dm-banner-card","style":{"backgroundImage":"url(/images/blog-post-pic-15.webp)","--hero-overlay":"linear-gradient(180deg, rgba(0,0,0,0.38) 0%, rgba(0,0,0,0.46) 55%, rgba(0,0,0,0.60) 100%)"},"children":["$","div",null,{"className":"e-con-inner dm-banner-inner","children":[["$","span",null,{"className":"dm-banner-category","children":"Case Study"}],["$","h1",null,{"className":"dm-banner-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}]]}]}]}] +4:["$","div",null,{"className":"dm-blog-wrap","children":[["$","div",null,{"className":"dm-meta-bar","children":[["$","nav",null,{"className":"dm-meta-breadcrumb","aria-label":"Breadcrumb","children":["$","ol",null,{"children":[["$","li",null,{"children":["$","$L8",null,{"href":"/","children":"Home"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"children":["$","$L8",null,{"href":"/blog","children":"Blog"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"aria-current":"page","className":"dm-meta-current","children":"42% Less Distance: Insights from Our Hyderabad Hub"}]]}]}],["$","div",null,{"className":"dm-meta-items","children":[["$","span",null,{"className":"dm-meta-item dm-meta-author","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","path",null,{"d":"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"}],["$","circle",null,{"cx":"12","cy":"7","r":"4"}]]}],"Doormile Team"]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","rect",null,{"x":"3","y":"4","width":"18","height":"18","rx":"2"}],["$","line",null,{"x1":"16","y1":"2","x2":"16","y2":"6"}],["$","line",null,{"x1":"8","y1":"2","x2":"8","y2":"6"}],["$","line",null,{"x1":"3","y1":"10","x2":"21","y2":"10"}]]}],["$","time",null,{"dateTime":"2025-09-18","children":"Sep 18, 2025"}]]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","circle",null,{"cx":"12","cy":"12","r":"9"}],["$","polyline",null,{"points":"12 7 12 12 15 14"}]]}],2," min read"]}]]}]]}],["$","div",null,{"className":"dm-blog-layout","children":[["$","div",null,{"className":"dm-blog-main","children":[["$","p",null,{"className":"dm-blog-intro","children":"Numbers settle arguments. At our Hyderabad hub, the goal was simple: reduce avoidable distance without missing customer commitments. The result was a 42% reduction in total distance travelled."}],["$","div",null,{"className":"dm-article-body","children":[["$","$L9","0",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"Hyderabad is not an easy city for delivery planning. Dense commercial areas, fast-growing suburbs, flyover work, narrow service lanes, apartment security checks, and sudden traffic build-up can all change the day."}]}],["$","$L9","1",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"The baseline"}]}],["$","$L9","2",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"Before MileTruth, the hub planned routes in the usual way. Zones were drawn from experience, dispatchers sequenced stops manually, and riders adjusted on the road when something changed."}]}],["$","$L9","3",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"That process worked, but it carried hidden costs. Two riders might cross the same area in the same hour. A vehicle might take a longer loop to avoid one late stop. A dispatcher might hold back an order because the best vehicle was not obvious in the moment."}]}],["$","$L9","4",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ul",null,{"className":"dm-article-ul","children":[["$","li","0",{"children":"Zone-based allocation that missed nearby cross-zone drops"}],["$","li","1",{"children":"Manual stop sequencing during busy dispatch windows"}],["$","li","2",{"children":"ETAs checked after routing instead of before dispatch"}],["$","li","3",{"children":"Traffic and delay handling that depended on phone calls from riders"}]]}]}],["$","$L9","5",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h3",null,{"className":"dm-article-h3","children":"What changed"}]}],["$","$L9","6",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"The main change was treating the day's orders as one connected plan instead of separate zone lists. The route plan considered distance, rider capacity, delivery windows, traffic, and vehicle availability together."}]}],"$La","$Lb","$Lc","$Ld","$Le","$Lf","$L10","$L11"]}]]}],"$L12"]}]]}] +13:T2021, + .dm-blog-footer { + font-family: var(--font-manrope), sans-serif; --dm-red: #c01227; --dm-red-hover: #e31d32; + /* The global theme applies 72px top/bottom section padding — strip it so the + inner container is the single source of vertical rhythm (no double gap). */ + padding: 0 !important; + } + /* Neutralize the global theme's 120/80/60px UPPERCASE heading rules */ + .dm-blog-footer :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline) */ + .dm-blog-footer a { text-decoration: none !important; } + /* Shared content container — mirrors SingleBlog's .dm-blog-wrap (same 1280px + max-width + 20→40px horizontal padding) so Prev/Next, Related and the CTA + align to the exact same left/right edges as the article body above. + Vertical rhythm: ~64px from the article end to the Prev/Next divider, then a + consistent ~64–72px section→section gap (no 120px+ voids). */ + .dm-blog-footer-inner { + max-width: 1280px; margin: 0 auto; + /* Compact vertical rhythm on an 8px system. Top padding sets the + article→Prev/Next gap (~24–32px); the inter-section gap sets the + Prev/Next→Related gap (~32–48px). No large arbitrary voids. */ + /* Minimal bottom padding — the global site footer already contributes its + own 20px top inset, so the CTA banner sits close to it without a void. */ + padding: clamp(24px, 3vw, 32px) clamp(20px, 4vw, 40px) clamp(8px, 1.5vw, 16px); + display: flex; flex-direction: column; gap: clamp(32px, 4vw, 48px); + } + @media (max-width: 767px) { + .dm-blog-footer-inner { + padding-left: 16px; + padding-right: 16px; + } + } + + /* Prev / Next */ + .dm-prevnext { + display: grid; grid-template-columns: 1fr 1fr; gap: 20px; + /* Halved from 40px: tight divider→cards spacing without crowding. */ + padding-top: clamp(16px, 2vw, 24px); border-top: 1px solid rgba(15,23,42,0.08); + } + @media (max-width: 640px) { .dm-prevnext { grid-template-columns: 1fr; } } + .dm-prevnext-placeholder { display: block; } + .dm-prevnext-card { + display: flex; gap: 16px; align-items: center; padding: 16px; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + text-decoration: none; transition: transform .3s ease, box-shadow .3s ease, border-color .3s ease; + } + .dm-prevnext-card:hover { + transform: translateY(-4px); border-color: rgba(192,18,39,0.2); + box-shadow: 0 16px 34px rgba(192,18,39,0.10); + } + .dm-prevnext-thumb { + position: relative; flex: 0 0 80px; width: 80px; height: 80px; + border-radius: 16px; overflow: hidden; background: #f1f5f9; + } + .dm-prevnext-text { display: flex; flex-direction: column; gap: 5px; min-width: 0; } + .dm-prevnext-next { text-align: right; } + .dm-prevnext-next .dm-prevnext-text { align-items: flex-end; } + .dm-prevnext-label { + display: inline-flex; align-items: center; gap: 6px; + font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: 1px; color: var(--dm-red); + } + .dm-prevnext-cat { font-size: 11px; font-weight: 700; color: #94a3b8; text-transform: uppercase; letter-spacing: .5px; } + .dm-prevnext-title { + font-size: 15.5px; font-weight: 700; color: #1e293b; line-height: 1.4; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-prevnext-card:hover .dm-prevnext-title { color: var(--dm-red); } + + /* Related */ + .dm-related-heading { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 850 !important; letter-spacing: -.4px !important; + line-height: 1.25 !important; color: #0f172a !important; margin: 0 0 24px; + } + .dm-related-grid { + display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; + } + @media (max-width: 1024px) { .dm-related-grid { grid-template-columns: repeat(2, 1fr); } } + @media (max-width: 700px) { .dm-related-grid { grid-template-columns: 1fr; gap: 24px; } } + + .dm-related-card { + display: flex; flex-direction: column; height: 100%; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + overflow: hidden; box-shadow: 0 4px 24px rgba(15,23,42,0.05); text-decoration: none; + transition: transform .4s cubic-bezier(0.2,0.8,0.2,1), box-shadow .4s ease, border-color .4s ease; + } + .dm-related-card:hover { + transform: translateY(-8px); box-shadow: 0 22px 44px rgba(192,18,39,0.13); + border-color: rgba(192,18,39,0.2); + } + .dm-related-img { + position: relative; width: 100%; aspect-ratio: 16 / 10; overflow: hidden; background: #f1f5f9; + } + .dm-related-img img { transition: transform .5s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-img img { transform: scale(1.05); } + .dm-related-badge { + position: absolute; top: 14px; left: 14px; z-index: 5; background: var(--dm-red); color: #fff; + font-size: 9px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.2px; + padding: 5px 11px; border-radius: 8px; box-shadow: 0 4px 12px rgba(192,18,39,0.25); + } + .dm-related-body { display: flex; flex-direction: column; flex: 1; padding: 22px; } + .dm-related-card-title { + font-size: 17px !important; font-weight: 800 !important; color: #1e293b !important; line-height: 1.4 !important; + letter-spacing: -.2px !important; margin: 0 0 10px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-related-card:hover .dm-related-card-title { color: var(--dm-red); } + .dm-related-card-excerpt { + font-size: 13.5px; font-weight: 500; color: #64748b; line-height: 1.6; margin: 0 0 18px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + } + .dm-related-readmore { + margin-top: auto; display: inline-flex; align-items: center; gap: 7px; + font-size: 12.5px; font-weight: 800; color: var(--dm-red); + text-transform: uppercase; letter-spacing: .6px; + } + .dm-related-readmore-arrow { transition: transform .3s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-readmore-arrow { transform: translateX(5px); } + + /* Contact CTA banner */ + .dm-blog-contact-cta { + display: flex; align-items: center; justify-content: space-between; gap: 32px; + flex-wrap: wrap; + background: linear-gradient(135deg, #1a1a1a 0%, #2d1417 100%); + border-radius: 30px; padding: clamp(32px, 4vw, 56px); + position: relative; overflow: hidden; + } + .dm-blog-contact-cta::after { + content: ""; position: absolute; right: -80px; top: -80px; width: 300px; height: 300px; + background: radial-gradient(circle, rgba(192,18,39,0.40), transparent 70%); + pointer-events: none; + } + .dm-blog-contact-cta-content { position: relative; z-index: 1; max-width: 640px; } + .dm-blog-contact-eyebrow { + display: inline-block; font-size: 12px; font-weight: 800; text-transform: uppercase; + letter-spacing: 1.4px; color: #ff8088; margin-bottom: 14px; + } + .dm-blog-contact-title { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 800 !important; line-height: 1.25 !important; + letter-spacing: -.3px !important; color: #ffffff !important; margin: 0 0 12px; text-wrap: balance; + } + .dm-blog-contact-sub { + font-size: 15.5px; line-height: 1.65; color: #e2e2e2; margin: 0; font-weight: 450; + } + .dm-blog-contact-btn { + position: relative; z-index: 1; flex-shrink: 0; + display: inline-flex; align-items: center; justify-content: center; gap: 10px; + background: var(--dm-red); color: #fff !important; font-size: 15px; font-weight: 700; + padding: 16px 32px; border-radius: 16px; text-decoration: none; + box-shadow: 0 10px 26px rgba(192,18,39,0.34); + transition: background .2s ease, transform .2s ease; + } + .dm-blog-contact-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } + @media (max-width: 720px) { + .dm-blog-contact-cta { flex-direction: column; align-items: flex-start; gap: 26px; } + .dm-blog-contact-btn { width: 100%; } + } +5:["$","section",null,{"className":"dm-blog-footer","aria-label":"More articles","children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$13"}}],"$L14"]}] +6:["$","script","script-0",{"src":"/_next/static/chunks/0yvxf3ok9gcp_.js","async":true}] +7:["$","$L15",null,{"children":["$","$16",null,{"name":"Next.MetadataOutlet","children":"$@17"}]}] +a:["$","$L9","7",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"During peak traffic hours in Hyderabad, some vehicles were arriving 20 to 30 minutes later than planned. By adjusting routes based on live traffic and battery levels, we reduced missed delivery windows and improved on-time performance."}]}] +b:["$","$L9","8",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","figure",null,{"className":"dm-article-figure","children":[["$","span",null,{"className":"dm-article-figure-img","children":["$","$L18",null,{"src":"/images/last-mile-approach.webp","alt":"Hyderabad delivery hub routing analysis","fill":true,"sizes":"(max-width: 768px) 100vw, 760px","style":{"objectFit":"cover"}}]}],["$","figcaption",null,{"children":"Planning the day's deliveries together removed repeated cross-town travel."}]]}]}] +c:["$","$L9","9",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"The results"}]}] +d:["$","$L9","10",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ul",null,{"className":"dm-article-ul","children":[["$","li","0",{"children":"42% reduction in total distance travelled across the hub"}],["$","li","1",{"children":"37% fewer vehicles required for the same delivery volume"}],["$","li","2",{"children":"No SLA misses during the measured deployment window"}],["$","li","3",{"children":"Lower fuel use and fewer unnecessary kilometres per parcel"}]]}]}] +e:["$","$L9","11",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","blockquote",null,{"className":"dm-article-quote","children":[["$","p",null,{"children":"The improvement did not come from asking riders to work harder. It came from giving the team a better route plan before the vehicles left."}],["$","cite",null,{"children":"Hyderabad Hub Operations"}]]}]}] +f:["$","$L9","12",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h3",null,{"className":"dm-article-h3","children":"Why this applies beyond one hub"}]}] +10:["$","$L9","13",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"The Hyderabad result was not a one-city exception. Most hubs deal with the same issues: overlapping routes, conservative sequencing, traffic surprises, charging constraints, and last-minute order changes."}]}] +11:["$","$L9","14",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"A 42% cut in distance changes the cost of running the operation. It also gives dispatchers more breathing room when the day gets messy."}]}] +12:["$","div",null,{"className":"dm-blog-aside-wrap","children":["$","aside",null,{"className":"dm-blog-sidebar","aria-label":"Blog sidebar","children":[["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Search"}],["$","$L19",null,{}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Recent Posts"}],["$","ul",null,{"className":"dm-blog-recent","children":[["$","li","how-ai-is-transforming-last-mile-ev-delivery",{"children":["$","$L8",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L18",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"How Better Planning Improves Last-Mile EV Delivery"}],["$","time",null,{"dateTime":"2025-10-02","className":"dm-blog-recent-date","children":"Oct 2, 2025"}]]}]]}]}],["$","li","miletruth-ai-10-stages-to-smarter-dispatch",{"children":["$","$L8",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L18",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","time",null,{"dateTime":"2025-09-05","className":"dm-blog-recent-date","children":"Sep 5, 2025"}]]}]]}]}],["$","li","the-ev-paradox-solving-range-anxiety-for-urban-fleets",{"children":["$","$L8",null,{"href":"/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L18",null,{"src":"/images/ev-paradox.webp","alt":"The EV Paradox: Solving Range Anxiety for Urban Fleets","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}],["$","time",null,{"dateTime":"2025-08-21","className":"dm-blog-recent-date","children":"Aug 21, 2025"}]]}]]}]}],["$","li","why-mathematical-precision-beats-heuristics-in-routing",{"children":["$","$L8",null,{"href":"/blog/why-mathematical-precision-beats-heuristics-in-routing","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L18",null,{"src":"/images/blog-post-pic-14.webp","alt":"Why Mathematical Precision Beats Heuristics in Routing","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"Why Mathematical Precision Beats Heuristics in Routing"}],["$","time",null,{"dateTime":"2025-08-07","className":"dm-blog-recent-date","children":"Aug 7, 2025"}]]}]]}]}]]}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Categories"}],["$","ul",null,{"className":"dm-blog-categories","children":[["$","li","Case Study",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Case Study"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","EV Fleet",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"EV Fleet"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}],["$","li","Fleet Management",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Fleet Management"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","MileTruth",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"MileTruth"}],"$L1a"]}]}],"$L1b","$L1c","$L1d"]}]]}],"$L1e"]}]}] +14:["$","div",null,{"className":"dm-blog-footer-inner","children":[["$","nav",null,{"className":"dm-prevnext","aria-label":"Article navigation","children":[["$","$L8",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-prevnext-card dm-prevnext-prev","children":[["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L18",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"sizes":"80px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-prevnext-text","children":[["$","span",null,{"className":"dm-prevnext-label","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"19","y1":"12","x2":"5","y2":"12"}],["$","polyline",null,{"points":"12 19 5 12 12 5"}]]}],"Previous"]}],["$","span",null,{"className":"dm-prevnext-cat","children":"Technology"}],["$","span",null,{"className":"dm-prevnext-title","children":"How Better Planning Improves Last-Mile EV Delivery"}]]}]]}],["$","$L8",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-prevnext-card dm-prevnext-next","children":[["$","span",null,{"className":"dm-prevnext-text","children":[["$","span",null,{"className":"dm-prevnext-label","children":["Next",["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","span",null,{"className":"dm-prevnext-cat","children":"MileTruth"}],["$","span",null,{"className":"dm-prevnext-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}]]}],["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L18",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"sizes":"80px","style":{"objectFit":"cover"}}]}]]}]]}],["$","div",null,{"className":"dm-related","children":[["$","h2",null,{"className":"dm-related-heading","children":"Related Articles"}],["$","div",null,{"className":"dm-related-grid","children":[["$","$L9","how-ai-is-transforming-last-mile-ev-delivery",{"delay":0,"duration":0.7,"yOffset":30,"children":["$","$L8",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L18",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Technology"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"How Better Planning Improves Last-Mile EV Delivery"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"A practical look at how EV fleets can plan routes, manage charging, and keep delivery promises without adding unnecessary vehicles."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}],["$","$L9","miletruth-ai-10-stages-to-smarter-dispatch",{"delay":0.08,"duration":0.7,"yOffset":30,"children":["$","$L8",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L18",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"MileTruth"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}],"$L1f","$L20"]}]]}]}],"$L21"]}]]}],"$L22"]}] +17:null +1a:["$","span",null,{"className":"dm-blog-category-count","children":1}] +1b:["$","li","Operations",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Operations"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +1c:["$","li","Sustainability",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Sustainability"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +1d:["$","li","Technology",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Technology"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}] +1e:["$","section",null,{"className":"dm-blog-widget dm-blog-cta-card","children":[["$","h2",null,{"className":"dm-blog-cta-title","children":"Planning delivery routes?"}],["$","p",null,{"className":"dm-blog-cta-text","children":"Talk to us about reducing wasted distance, missed windows, and avoidable vehicle time."}],["$","$L8",null,{"href":"/contact","className":"dm-blog-cta-btn","children":["Contact Us",["$","svg",null,{"width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] +1f:["$","p",null,{"className":"dm-related-card-excerpt","children":"From order intake to final route output, here is how a dispatch plan is checked before riders leave the hub."}] +20:["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}] +21:["$","$L9","the-ev-paradox-solving-range-anxiety-for-urban-fleets",{"delay":0.16,"duration":0.7,"yOffset":30,"children":["$","$L8",null,{"href":"/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L18",null,{"src":"/images/ev-paradox.webp","alt":"The EV Paradox: Solving Range Anxiety for Urban Fleets","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"EV Fleet"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"Electric vehicles lower running costs, but battery range changes how routes must be planned before dispatch."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}] +22:["$","div",null,{"className":"dm-blog-contact-cta","children":[["$","div",null,{"className":"dm-blog-contact-cta-content","children":[["$","span",null,{"className":"dm-blog-contact-eyebrow","children":"Let's talk logistics"}],["$","h2",null,{"className":"dm-blog-contact-title","children":"Ready to move smarter with Doormile?"}],["$","p",null,{"className":"dm-blog-contact-sub","children":"Tell us about your fleet and routes — we'll show you where the distance, vehicles and emissions are hiding."}]]}],["$","$L8",null,{"href":"/contact","className":"dm-blog-contact-btn","children":["Get in Touch",["$","svg",null,{"width":"20","height":"20","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] diff --git a/build/blog/42-less-distance-insights-from-our-hyderabad-hub/__next.blog.$d$slug.txt b/build/blog/42-less-distance-insights-from-our-hyderabad-hub/__next.blog.$d$slug.txt new file mode 100644 index 0000000..e0935ae --- /dev/null +++ b/build/blog/42-less-distance-insights-from-our-hyderabad-hub/__next.blog.$d$slug.txt @@ -0,0 +1,5 @@ +1:"$Sreact.fragment" +2:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:[] +0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/blog/42-less-distance-insights-from-our-hyderabad-hub/__next.blog.txt b/build/blog/42-less-distance-insights-from-our-hyderabad-hub/__next.blog.txt new file mode 100644 index 0000000..e0935ae --- /dev/null +++ b/build/blog/42-less-distance-insights-from-our-hyderabad-hub/__next.blog.txt @@ -0,0 +1,5 @@ +1:"$Sreact.fragment" +2:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:[] +0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/blog/__next._full.txt b/build/blog/__next._full.txt new file mode 100644 index 0000000..ed53a74 --- /dev/null +++ b/build/blog/__next._full.txt @@ -0,0 +1,207 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +11:I[68027,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +:HL["/images/home2-banner-1.webp","image"] +0:{"P":null,"c":["","blog"],"q":"","i":false,"f":[[["",{"children":["blog",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","div",null,{"id":"blogs","className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":["$","div",null,{"data-elementor-type":"wp-page","data-elementor-id":"104","className":"elementor elementor-104","children":[[["$","link",null,{"rel":"preload","as":"image","href":"/images/home2-banner-1.webp"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":"\n .blogs-hero-title {\n color: #ffffff !important;\n font-family: var(--font-manrope), sans-serif !important;\n font-size: clamp(34px, 5.5vw, 68px) !important;\n font-weight: 850 !important;\n line-height: 1.08 !important;\n text-transform: uppercase !important;\n letter-spacing: -1.5px !important;\n margin: 0 !important;\n }\n .blogs-hero-content {\n position: relative !important;\n width: 100% !important;\n height: 100% !important;\n display: flex !important;\n align-items: center !important;\n justify-content: center !important;\n flex-direction: column !important;\n max-width: 1000px !important;\n margin: 0 auto !important;\n padding: 0 15px !important;\n box-sizing: border-box !important;\n }\n "}}],"$Lc"],"$Ld"]}]}]}]}],null,"$Le"]}],{},null,false,null]},null,false,"$@f"]},null,false,null],"$L10",false]],"m":"$undefined","G":["$11",["$L12"]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"kmSVPuUqY3Rhw5xy4D2nn"} +15:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +16:"$Sreact.suspense" +19:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +1b:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +c:["$","div",null,{"className":"custom-standard-hero-container","children":["$","div",null,{"style":{"backgroundImage":"url(/images/home2-banner-1.webp)","backgroundPosition":"center center","backgroundRepeat":"no-repeat","backgroundSize":"cover"},"className":"custom-standard-hero-card","children":["$","div",null,{"className":"blogs-hero-content","children":["$","div",null,{"style":{"textAlign":"center","color":"#fff","zIndex":5},"children":["$","h1",null,{"className":"blogs-hero-title","children":["Delivering Trust.",["$","br",null,{}],["$","span",null,{"style":{"color":"#C01227"},"children":"Beyond Boundaries"}]]}]}]}]}]}] +13:T17ff, + .custom-blog-grid { + display: grid !important; + grid-template-columns: repeat(3, 1fr) !important; + gap: 40px !important; + width: 100% !important; + max-width: 1200px !important; + margin: 0 auto !important; + padding: 40px 20px !important; + } + + @media (max-width: 1024px) { + .custom-blog-grid { + grid-template-columns: repeat(2, 1fr) !important; + } + } + @media (max-width: 768px) { + .elementor-104 .elementor-element.elementor-element-c70681e { + margin-top: var(--space-section) !important; + margin-bottom: 16px !important; + } + .custom-blog-grid { + grid-template-columns: 1fr !important; + gap: 28px !important; + padding: 24px 20px !important; + } + } + + @media (max-width: 767px) { + .elementor-104 .elementor-element.elementor-element-c70681e { + --padding-left: 10px !important; + --padding-right: 10px !important; + padding-left: 10px !important; + padding-right: 10px !important; + } + .elementor-104 .elementor-element.elementor-element-3dec5cf { + --padding-left: 0px !important; + --padding-right: 0px !important; + padding-left: 0 !important; + padding-right: 0 !important; + } + .elementor-104 .elementor-element.elementor-element-aa12479, + .elementor-104 .elementor-element.elementor-element-aa12479 > .elementor-widget-container, + .elementor-104 .archive-listing, + .elementor-104 .custom-blog-grid { + width: 100% !important; + max-width: 100% !important; + } + .elementor-104 .custom-blog-grid { + padding-left: 0 !important; + padding-right: 0 !important; + } + } + + .custom-blog-card { + display: flex !important; + flex-direction: column !important; + justify-content: space-between !important; + height: 100% !important; + background: #ffffff !important; + border: 1px solid rgba(0, 0, 0, 0.08) !important; + border-radius: 28px !important; + padding: 28px !important; + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.03) !important; + transition: transform 0.4s cubic-bezier(0.2, 0.8, 0.2, 1), box-shadow 0.4s ease !important; + cursor: pointer !important; + } + + .custom-blog-card:hover { + transform: translateY(-8px) !important; + box-shadow: 0 20px 40px rgba(192, 18, 39, 0.12) !important; + border-color: rgba(192, 18, 39, 0.2) !important; + } + + .custom-blog-title { + font-size: 20px !important; + font-weight: 800 !important; + color: #1e293b !important; + line-height: 1.35 !important; + text-transform: none !important; + letter-spacing: -0.4px !important; + margin: 0 0 12px 0 !important; + display: -webkit-box !important; + -webkit-line-clamp: 2 !important; + -webkit-box-orient: vertical !important; + overflow: hidden !important; + transition: color 0.2s ease !important; + font-family: var(--font-manrope), sans-serif !important; + } + + .custom-blog-card:hover .custom-blog-title { + color: #c01227 !important; + } + + .custom-blog-excerpt { + font-size: 13.5px !important; + font-weight: 500 !important; + color: #64748b !important; + line-height: 1.6 !important; + margin: 0 0 18px 0 !important; + text-transform: none !important; + font-family: var(--font-manrope), sans-serif !important; + } + + /* Bottom block pinned to the card base. Keeps Read More + image at the + same vertical position across cards with different text lengths. */ + .custom-blog-bottom { + display: flex !important; + flex-direction: column !important; + margin-top: auto !important; + } + + .custom-blog-readmore { + display: inline-flex !important; + align-items: center !important; + align-self: flex-start !important; + gap: 6px !important; + font-size: 13px !important; + font-weight: 800 !important; + color: #c01227 !important; + text-transform: uppercase !important; + letter-spacing: 0.5px !important; + margin: 0 0 24px 0 !important; + font-family: var(--font-manrope), sans-serif !important; + } + + .custom-blog-readmore-arrow { + transition: transform 0.3s cubic-bezier(0.2, 0.8, 0.2, 1) !important; + } + + .custom-blog-card:hover .custom-blog-readmore-arrow { + transform: translateX(5px) !important; + } + + .custom-blog-img-container { + position: relative !important; + width: 100% !important; + aspect-ratio: 4 / 3 !important; + border-radius: 20px !important; + overflow: hidden !important; + box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.05) !important; + } + + .custom-blog-badge { + position: absolute !important; + top: 14px !important; + left: 14px !important; + z-index: 5 !important; + background: #c01227 !important; + color: #ffffff !important; + font-size: 9px !important; + font-weight: 800 !important; + text-transform: uppercase !important; + letter-spacing: 1.2px !important; + padding: 4px 10px !important; + border-radius: 6px !important; + box-shadow: 0 4px 10px rgba(192, 18, 39, 0.2) !important; + font-family: var(--font-manrope), sans-serif !important; + } + d:["$","div",null,{"className":"elementor-element elementor-element-c70681e e-flex e-con-boxed cut-corner-no sticky-container-off e-con e-parent","data-id":"c70681e","data-element_type":"container","data-e-type":"container","children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$13"}}],"$L14"]}] +e:["$","$L15",null,{"children":["$","$16",null,{"name":"Next.MetadataOutlet","children":"$@17"}]}] +18:[] +f:"$W18" +10:["$","$1","h",{"children":[null,["$","$L19",null,{"children":"$L1a"}],["$","div",null,{"hidden":true,"children":["$","$L1b",null,{"children":["$","$16",null,{"name":"Next.Metadata","children":"$L1c"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}] +12:["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}] +1d:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ScrollReveal"] +1e:I[22016,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],""] +1f:I[5500,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"Image"] +14:["$","div",null,{"className":"e-con-inner","children":["$","div",null,{"className":"elementor-element elementor-element-3dec5cf e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"3dec5cf","data-element_type":"container","data-e-type":"container","children":["$","div",null,{"className":"elementor-element elementor-element-aa12479 elementor-widget elementor-widget-logico_blog_listing","data-id":"aa12479","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_blog_listing.default","children":["$","div",null,{"className":"elementor-widget-container","children":["$","div",null,{"className":"archive-listing","children":["$","div",null,{"className":"custom-blog-grid","children":[["$","$L1d","how-ai-is-transforming-last-mile-ev-delivery",{"delay":0,"duration":0.8,"yOffset":35,"children":["$","$L1e",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"custom-blog-card","style":{"textDecoration":"none"},"children":[["$","div",null,{"className":"flex flex-col","children":[["$","h3",null,{"className":"custom-blog-title","children":"How Better Planning Improves Last-Mile EV Delivery"}],["$","p",null,{"className":"custom-blog-excerpt","children":"A practical look at how EV fleets can plan routes, manage charging, and keep delivery promises without adding unnecessary vehicles."}]]}],["$","div",null,{"className":"custom-blog-bottom","children":[["$","span",null,{"className":"custom-blog-readmore","children":["Read More",["$","svg",null,{"className":"custom-blog-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","div",null,{"className":"custom-blog-img-container","children":[["$","$L1f",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"style":{"objectFit":"cover"},"sizes":"(max-width: 768px) 100vw, 33vw"}],["$","span",null,{"className":"custom-blog-badge","children":"Technology"}]]}]]}]]}]}],["$","$L1d","42-less-distance-insights-from-our-hyderabad-hub",{"delay":0.08,"duration":0.8,"yOffset":35,"children":["$","$L1e",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"custom-blog-card","style":{"textDecoration":"none"},"children":[["$","div",null,{"className":"flex flex-col","children":[["$","h3",null,{"className":"custom-blog-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}],["$","p",null,{"className":"custom-blog-excerpt","children":"A practical look at how one Hyderabad hub reduced distance, used fewer vehicles, and protected delivery windows with better route planning."}]]}],["$","div",null,{"className":"custom-blog-bottom","children":[["$","span",null,{"className":"custom-blog-readmore","children":["Read More",["$","svg",null,{"className":"custom-blog-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","div",null,{"className":"custom-blog-img-container","children":[["$","$L1f",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"style":{"objectFit":"cover"},"sizes":"(max-width: 768px) 100vw, 33vw"}],["$","span",null,{"className":"custom-blog-badge","children":"Case Study"}]]}]]}]]}]}],["$","$L1d","miletruth-ai-10-stages-to-smarter-dispatch",{"delay":0.16,"duration":0.8,"yOffset":35,"children":["$","$L1e",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"custom-blog-card","style":{"textDecoration":"none"},"children":[["$","div",null,{"className":"flex flex-col","children":[["$","h3",null,{"className":"custom-blog-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","p",null,{"className":"custom-blog-excerpt","children":"From order intake to final route output, here is how a dispatch plan is checked before riders leave the hub."}]]}],"$L20"]}]}],"$L21","$L22","$L23","$L24","$L25","$L26"]}]}]}]}]}]}] +20:["$","div",null,{"className":"custom-blog-bottom","children":[["$","span",null,{"className":"custom-blog-readmore","children":["Read More",["$","svg",null,{"className":"custom-blog-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","div",null,{"className":"custom-blog-img-container","children":[["$","$L1f",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"style":{"objectFit":"cover"},"sizes":"(max-width: 768px) 100vw, 33vw"}],["$","span",null,{"className":"custom-blog-badge","children":"MileTruth"}]]}]]}] +21:["$","$L1d","the-ev-paradox-solving-range-anxiety-for-urban-fleets",{"delay":0,"duration":0.8,"yOffset":35,"children":["$","$L1e",null,{"href":"/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets","className":"custom-blog-card","style":{"textDecoration":"none"},"children":[["$","div",null,{"className":"flex flex-col","children":[["$","h3",null,{"className":"custom-blog-title","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}],["$","p",null,{"className":"custom-blog-excerpt","children":"Electric vehicles lower running costs, but battery range changes how routes must be planned before dispatch."}]]}],["$","div",null,{"className":"custom-blog-bottom","children":[["$","span",null,{"className":"custom-blog-readmore","children":["Read More",["$","svg",null,{"className":"custom-blog-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","div",null,{"className":"custom-blog-img-container","children":[["$","$L1f",null,{"src":"/images/ev-paradox.webp","alt":"The EV Paradox: Solving Range Anxiety for Urban Fleets","fill":true,"style":{"objectFit":"cover"},"sizes":"(max-width: 768px) 100vw, 33vw"}],["$","span",null,{"className":"custom-blog-badge","children":"EV Fleet"}]]}]]}]]}]}] +22:["$","$L1d","why-mathematical-precision-beats-heuristics-in-routing",{"delay":0.08,"duration":0.8,"yOffset":35,"children":["$","$L1e",null,{"href":"/blog/why-mathematical-precision-beats-heuristics-in-routing","className":"custom-blog-card","style":{"textDecoration":"none"},"children":[["$","div",null,{"className":"flex flex-col","children":[["$","h3",null,{"className":"custom-blog-title","children":"Why Mathematical Precision Beats Heuristics in Routing"}],["$","p",null,{"className":"custom-blog-excerpt","children":"Fixed routing rules are easy to start with, but they often miss better stop sequences as order volume grows."}]]}],["$","div",null,{"className":"custom-blog-bottom","children":[["$","span",null,{"className":"custom-blog-readmore","children":["Read More",["$","svg",null,{"className":"custom-blog-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","div",null,{"className":"custom-blog-img-container","children":[["$","$L1f",null,{"src":"/images/blog-post-pic-14.webp","alt":"Why Mathematical Precision Beats Heuristics in Routing","fill":true,"style":{"objectFit":"cover"},"sizes":"(max-width: 768px) 100vw, 33vw"}],["$","span",null,{"className":"custom-blog-badge","children":"Technology"}]]}]]}]]}]}] +23:["$","$L1d","fleet-reduction-without-compromising-delivery-volume",{"delay":0.16,"duration":0.8,"yOffset":35,"children":["$","$L1e",null,{"href":"/blog/fleet-reduction-without-compromising-delivery-volume","className":"custom-blog-card","style":{"textDecoration":"none"},"children":[["$","div",null,{"className":"flex flex-col","children":[["$","h3",null,{"className":"custom-blog-title","children":"Fleet Reduction Without Compromising Delivery Volume"}],["$","p",null,{"className":"custom-blog-excerpt","children":"Handling the same order volume with fewer vehicles starts by removing avoidable kilometres and overlapping routes."}]]}],["$","div",null,{"className":"custom-blog-bottom","children":[["$","span",null,{"className":"custom-blog-readmore","children":["Read More",["$","svg",null,{"className":"custom-blog-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","div",null,{"className":"custom-blog-img-container","children":[["$","$L1f",null,{"src":"/images/blog-post-pic-8.webp","alt":"Fleet Reduction Without Compromising Delivery Volume","fill":true,"style":{"objectFit":"cover"},"sizes":"(max-width: 768px) 100vw, 33vw"}],["$","span",null,{"className":"custom-blog-badge","children":"Fleet Management"}]]}]]}]]}]}] +24:["$","$L1d","building-a-greener-city-the-future-of-urban-logistics",{"delay":0,"duration":0.8,"yOffset":35,"children":["$","$L1e",null,{"href":"/blog/building-a-greener-city-the-future-of-urban-logistics","className":"custom-blog-card","style":{"textDecoration":"none"},"children":[["$","div",null,{"className":"flex flex-col","children":[["$","h3",null,{"className":"custom-blog-title","children":"Building a Greener City: The Future of Urban Logistics"}],["$","p",null,{"className":"custom-blog-excerpt","children":"Cities are asking for cleaner delivery. The practical challenge is planning EV routes that can meet customer windows without wasting charge."}]]}],["$","div",null,{"className":"custom-blog-bottom","children":[["$","span",null,{"className":"custom-blog-readmore","children":["Read More",["$","svg",null,{"className":"custom-blog-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","div",null,{"className":"custom-blog-img-container","children":[["$","$L1f",null,{"src":"/images/blog-post-pic-6.webp","alt":"Building a Greener City: The Future of Urban Logistics","fill":true,"style":{"objectFit":"cover"},"sizes":"(max-width: 768px) 100vw, 33vw"}],["$","span",null,{"className":"custom-blog-badge","children":"Sustainability"}]]}]]}]]}]}] +25:["$","$L1d","how-doormile-maintains-99-9-sla-compliance-at-scale",{"delay":0.08,"duration":0.8,"yOffset":35,"children":["$","$L1e",null,{"href":"/blog/how-doormile-maintains-99-9-sla-compliance-at-scale","className":"custom-blog-card","style":{"textDecoration":"none"},"children":[["$","div",null,{"className":"flex flex-col","children":[["$","h3",null,{"className":"custom-blog-title","children":"How Doormile Maintains 99.9% SLA Compliance at Scale"}],["$","p",null,{"className":"custom-blog-excerpt","children":"High SLA performance comes from checking ETAs before dispatch, reacting early to delays, and keeping customer commitments visible throughout the day."}]]}],["$","div",null,{"className":"custom-blog-bottom","children":[["$","span",null,{"className":"custom-blog-readmore","children":["Read More",["$","svg",null,{"className":"custom-blog-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","div",null,{"className":"custom-blog-img-container","children":[["$","$L1f",null,{"src":"/images/last-mile-approach.webp","alt":"How Doormile Maintains 99.9% SLA Compliance at Scale","fill":true,"style":{"objectFit":"cover"},"sizes":"(max-width: 768px) 100vw, 33vw"}],["$","span",null,{"className":"custom-blog-badge","children":"Operations"}]]}]]}]]}]}] +26:["$","$L1d","battery-simulation-the-secret-to-ev-route-pre-validation",{"delay":0.16,"duration":0.8,"yOffset":35,"children":["$","$L1e",null,{"href":"/blog/battery-simulation-the-secret-to-ev-route-pre-validation","className":"custom-blog-card","style":{"textDecoration":"none"},"children":[["$","div",null,{"className":"flex flex-col","children":[["$","h3",null,{"className":"custom-blog-title","children":"Battery Simulation: The Secret to EV Route Pre-Validation"}],["$","p",null,{"className":"custom-blog-excerpt","children":"Before a rider leaves the hub, every EV route should be checked against real charge capacity and the expected return plan."}]]}],["$","div",null,{"className":"custom-blog-bottom","children":[["$","span",null,{"className":"custom-blog-readmore","children":["Read More",["$","svg",null,{"className":"custom-blog-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","div",null,{"className":"custom-blog-img-container","children":[["$","$L1f",null,{"src":"/images/blog-post-pic-3.webp","alt":"Battery Simulation: The Secret to EV Route Pre-Validation","fill":true,"style":{"objectFit":"cover"},"sizes":"(max-width: 768px) 100vw, 33vw"}],["$","span",null,{"className":"custom-blog-badge","children":"EV Fleet"}]]}]]}]]}]}] +1a:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] +27:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +17:null +1c:[["$","title","0",{"children":"Blog – Doormile"}],["$","meta","1",{"name":"description","content":"Practical notes on delivery planning, EV fleet operations, route optimisation, charging, and last-mile performance from the Doormile team."}],["$","meta","2",{"name":"robots","content":"index, follow"}],["$","link","3",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","4",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","5",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","6",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L27","7",{}]] diff --git a/build/blog/__next._head.txt b/build/blog/__next._head.txt new file mode 100644 index 0000000..7c5439b --- /dev/null +++ b/build/blog/__next._head.txt @@ -0,0 +1,6 @@ +1:"$Sreact.fragment" +2:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +3:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +4:"$Sreact.suspense" +5:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +0:{"rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"Blog – Doormile"}],["$","meta","1",{"name":"description","content":"Practical notes on delivery planning, EV fleet operations, route optimisation, charging, and last-mile performance from the Doormile team."}],["$","meta","2",{"name":"robots","content":"index, follow"}],["$","link","3",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","4",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","5",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","6",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L5","7",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/blog/__next._index.txt b/build/blog/__next._index.txt new file mode 100644 index 0000000..d0b3355 --- /dev/null +++ b/build/blog/__next._index.txt @@ -0,0 +1,15 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","template":["$","$La",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/blog/__next._tree.txt b/build/blog/__next._tree.txt new file mode 100644 index 0000000..8fbbdb8 --- /dev/null +++ b/build/blog/__next._tree.txt @@ -0,0 +1,10 @@ +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +:HL["/images/home2-banner-1.webp","image"] +0:{"tree":{"name":"","param":null,"prefetchHints":16,"slots":{"children":{"name":"blog","param":null,"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}}}},"staleTime":300,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/blog/__next.blog.__PAGE__.txt b/build/blog/__next.blog.__PAGE__.txt new file mode 100644 index 0000000..6a03a1e --- /dev/null +++ b/build/blog/__next.blog.__PAGE__.txt @@ -0,0 +1,177 @@ +1:"$Sreact.fragment" +5:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ScrollReveal"] +6:I[22016,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],""] +7:I[5500,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"Image"] +f:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +10:"$Sreact.suspense" +:HL["/images/home2-banner-1.webp","image"] +2:T17ff, + .custom-blog-grid { + display: grid !important; + grid-template-columns: repeat(3, 1fr) !important; + gap: 40px !important; + width: 100% !important; + max-width: 1200px !important; + margin: 0 auto !important; + padding: 40px 20px !important; + } + + @media (max-width: 1024px) { + .custom-blog-grid { + grid-template-columns: repeat(2, 1fr) !important; + } + } + @media (max-width: 768px) { + .elementor-104 .elementor-element.elementor-element-c70681e { + margin-top: var(--space-section) !important; + margin-bottom: 16px !important; + } + .custom-blog-grid { + grid-template-columns: 1fr !important; + gap: 28px !important; + padding: 24px 20px !important; + } + } + + @media (max-width: 767px) { + .elementor-104 .elementor-element.elementor-element-c70681e { + --padding-left: 10px !important; + --padding-right: 10px !important; + padding-left: 10px !important; + padding-right: 10px !important; + } + .elementor-104 .elementor-element.elementor-element-3dec5cf { + --padding-left: 0px !important; + --padding-right: 0px !important; + padding-left: 0 !important; + padding-right: 0 !important; + } + .elementor-104 .elementor-element.elementor-element-aa12479, + .elementor-104 .elementor-element.elementor-element-aa12479 > .elementor-widget-container, + .elementor-104 .archive-listing, + .elementor-104 .custom-blog-grid { + width: 100% !important; + max-width: 100% !important; + } + .elementor-104 .custom-blog-grid { + padding-left: 0 !important; + padding-right: 0 !important; + } + } + + .custom-blog-card { + display: flex !important; + flex-direction: column !important; + justify-content: space-between !important; + height: 100% !important; + background: #ffffff !important; + border: 1px solid rgba(0, 0, 0, 0.08) !important; + border-radius: 28px !important; + padding: 28px !important; + box-shadow: 0 4px 20px rgba(0, 0, 0, 0.03) !important; + transition: transform 0.4s cubic-bezier(0.2, 0.8, 0.2, 1), box-shadow 0.4s ease !important; + cursor: pointer !important; + } + + .custom-blog-card:hover { + transform: translateY(-8px) !important; + box-shadow: 0 20px 40px rgba(192, 18, 39, 0.12) !important; + border-color: rgba(192, 18, 39, 0.2) !important; + } + + .custom-blog-title { + font-size: 20px !important; + font-weight: 800 !important; + color: #1e293b !important; + line-height: 1.35 !important; + text-transform: none !important; + letter-spacing: -0.4px !important; + margin: 0 0 12px 0 !important; + display: -webkit-box !important; + -webkit-line-clamp: 2 !important; + -webkit-box-orient: vertical !important; + overflow: hidden !important; + transition: color 0.2s ease !important; + font-family: var(--font-manrope), sans-serif !important; + } + + .custom-blog-card:hover .custom-blog-title { + color: #c01227 !important; + } + + .custom-blog-excerpt { + font-size: 13.5px !important; + font-weight: 500 !important; + color: #64748b !important; + line-height: 1.6 !important; + margin: 0 0 18px 0 !important; + text-transform: none !important; + font-family: var(--font-manrope), sans-serif !important; + } + + /* Bottom block pinned to the card base. Keeps Read More + image at the + same vertical position across cards with different text lengths. */ + .custom-blog-bottom { + display: flex !important; + flex-direction: column !important; + margin-top: auto !important; + } + + .custom-blog-readmore { + display: inline-flex !important; + align-items: center !important; + align-self: flex-start !important; + gap: 6px !important; + font-size: 13px !important; + font-weight: 800 !important; + color: #c01227 !important; + text-transform: uppercase !important; + letter-spacing: 0.5px !important; + margin: 0 0 24px 0 !important; + font-family: var(--font-manrope), sans-serif !important; + } + + .custom-blog-readmore-arrow { + transition: transform 0.3s cubic-bezier(0.2, 0.8, 0.2, 1) !important; + } + + .custom-blog-card:hover .custom-blog-readmore-arrow { + transform: translateX(5px) !important; + } + + .custom-blog-img-container { + position: relative !important; + width: 100% !important; + aspect-ratio: 4 / 3 !important; + border-radius: 20px !important; + overflow: hidden !important; + box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.05) !important; + } + + .custom-blog-badge { + position: absolute !important; + top: 14px !important; + left: 14px !important; + z-index: 5 !important; + background: #c01227 !important; + color: #ffffff !important; + font-size: 9px !important; + font-weight: 800 !important; + text-transform: uppercase !important; + letter-spacing: 1.2px !important; + padding: 4px 10px !important; + border-radius: 6px !important; + box-shadow: 0 4px 10px rgba(192, 18, 39, 0.2) !important; + font-family: var(--font-manrope), sans-serif !important; + } + 0:{"rsc":["$","$1","c",{"children":[["$","div",null,{"id":"blogs","className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":["$","div",null,{"data-elementor-type":"wp-page","data-elementor-id":"104","className":"elementor elementor-104","children":[[["$","link",null,{"rel":"preload","as":"image","href":"/images/home2-banner-1.webp"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":"\n .blogs-hero-title {\n color: #ffffff !important;\n font-family: var(--font-manrope), sans-serif !important;\n font-size: clamp(34px, 5.5vw, 68px) !important;\n font-weight: 850 !important;\n line-height: 1.08 !important;\n text-transform: uppercase !important;\n letter-spacing: -1.5px !important;\n margin: 0 !important;\n }\n .blogs-hero-content {\n position: relative !important;\n width: 100% !important;\n height: 100% !important;\n display: flex !important;\n align-items: center !important;\n justify-content: center !important;\n flex-direction: column !important;\n max-width: 1000px !important;\n margin: 0 auto !important;\n padding: 0 15px !important;\n box-sizing: border-box !important;\n }\n "}}],["$","div",null,{"className":"custom-standard-hero-container","children":["$","div",null,{"style":{"backgroundImage":"url(/images/home2-banner-1.webp)","backgroundPosition":"center center","backgroundRepeat":"no-repeat","backgroundSize":"cover"},"className":"custom-standard-hero-card","children":["$","div",null,{"className":"blogs-hero-content","children":["$","div",null,{"style":{"textAlign":"center","color":"#fff","zIndex":5},"children":["$","h1",null,{"className":"blogs-hero-title","children":["Delivering Trust.",["$","br",null,{}],["$","span",null,{"style":{"color":"#C01227"},"children":"Beyond Boundaries"}]]}]}]}]}]}]],["$","div",null,{"className":"elementor-element elementor-element-c70681e e-flex e-con-boxed cut-corner-no sticky-container-off e-con e-parent","data-id":"c70681e","data-element_type":"container","data-e-type":"container","children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$2"}}],"$L3"]}]]}]}]}]}],null,"$L4"]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} +3:["$","div",null,{"className":"e-con-inner","children":["$","div",null,{"className":"elementor-element elementor-element-3dec5cf e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"3dec5cf","data-element_type":"container","data-e-type":"container","children":["$","div",null,{"className":"elementor-element elementor-element-aa12479 elementor-widget elementor-widget-logico_blog_listing","data-id":"aa12479","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_blog_listing.default","children":["$","div",null,{"className":"elementor-widget-container","children":["$","div",null,{"className":"archive-listing","children":["$","div",null,{"className":"custom-blog-grid","children":[["$","$L5","how-ai-is-transforming-last-mile-ev-delivery",{"delay":0,"duration":0.8,"yOffset":35,"children":["$","$L6",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"custom-blog-card","style":{"textDecoration":"none"},"children":[["$","div",null,{"className":"flex flex-col","children":[["$","h3",null,{"className":"custom-blog-title","children":"How Better Planning Improves Last-Mile EV Delivery"}],["$","p",null,{"className":"custom-blog-excerpt","children":"A practical look at how EV fleets can plan routes, manage charging, and keep delivery promises without adding unnecessary vehicles."}]]}],["$","div",null,{"className":"custom-blog-bottom","children":[["$","span",null,{"className":"custom-blog-readmore","children":["Read More",["$","svg",null,{"className":"custom-blog-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","div",null,{"className":"custom-blog-img-container","children":[["$","$L7",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"style":{"objectFit":"cover"},"sizes":"(max-width: 768px) 100vw, 33vw"}],["$","span",null,{"className":"custom-blog-badge","children":"Technology"}]]}]]}]]}]}],["$","$L5","42-less-distance-insights-from-our-hyderabad-hub",{"delay":0.08,"duration":0.8,"yOffset":35,"children":["$","$L6",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"custom-blog-card","style":{"textDecoration":"none"},"children":[["$","div",null,{"className":"flex flex-col","children":[["$","h3",null,{"className":"custom-blog-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}],["$","p",null,{"className":"custom-blog-excerpt","children":"A practical look at how one Hyderabad hub reduced distance, used fewer vehicles, and protected delivery windows with better route planning."}]]}],["$","div",null,{"className":"custom-blog-bottom","children":[["$","span",null,{"className":"custom-blog-readmore","children":["Read More",["$","svg",null,{"className":"custom-blog-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","div",null,{"className":"custom-blog-img-container","children":[["$","$L7",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"style":{"objectFit":"cover"},"sizes":"(max-width: 768px) 100vw, 33vw"}],["$","span",null,{"className":"custom-blog-badge","children":"Case Study"}]]}]]}]]}]}],["$","$L5","miletruth-ai-10-stages-to-smarter-dispatch",{"delay":0.16,"duration":0.8,"yOffset":35,"children":["$","$L6",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"custom-blog-card","style":{"textDecoration":"none"},"children":[["$","div",null,{"className":"flex flex-col","children":[["$","h3",null,{"className":"custom-blog-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","p",null,{"className":"custom-blog-excerpt","children":"From order intake to final route output, here is how a dispatch plan is checked before riders leave the hub."}]]}],"$L8"]}]}],"$L9","$La","$Lb","$Lc","$Ld","$Le"]}]}]}]}]}]}] +4:["$","$Lf",null,{"children":["$","$10",null,{"name":"Next.MetadataOutlet","children":"$@11"}]}] +8:["$","div",null,{"className":"custom-blog-bottom","children":[["$","span",null,{"className":"custom-blog-readmore","children":["Read More",["$","svg",null,{"className":"custom-blog-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","div",null,{"className":"custom-blog-img-container","children":[["$","$L7",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"style":{"objectFit":"cover"},"sizes":"(max-width: 768px) 100vw, 33vw"}],["$","span",null,{"className":"custom-blog-badge","children":"MileTruth"}]]}]]}] +9:["$","$L5","the-ev-paradox-solving-range-anxiety-for-urban-fleets",{"delay":0,"duration":0.8,"yOffset":35,"children":["$","$L6",null,{"href":"/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets","className":"custom-blog-card","style":{"textDecoration":"none"},"children":[["$","div",null,{"className":"flex flex-col","children":[["$","h3",null,{"className":"custom-blog-title","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}],["$","p",null,{"className":"custom-blog-excerpt","children":"Electric vehicles lower running costs, but battery range changes how routes must be planned before dispatch."}]]}],["$","div",null,{"className":"custom-blog-bottom","children":[["$","span",null,{"className":"custom-blog-readmore","children":["Read More",["$","svg",null,{"className":"custom-blog-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","div",null,{"className":"custom-blog-img-container","children":[["$","$L7",null,{"src":"/images/ev-paradox.webp","alt":"The EV Paradox: Solving Range Anxiety for Urban Fleets","fill":true,"style":{"objectFit":"cover"},"sizes":"(max-width: 768px) 100vw, 33vw"}],["$","span",null,{"className":"custom-blog-badge","children":"EV Fleet"}]]}]]}]]}]}] +a:["$","$L5","why-mathematical-precision-beats-heuristics-in-routing",{"delay":0.08,"duration":0.8,"yOffset":35,"children":["$","$L6",null,{"href":"/blog/why-mathematical-precision-beats-heuristics-in-routing","className":"custom-blog-card","style":{"textDecoration":"none"},"children":[["$","div",null,{"className":"flex flex-col","children":[["$","h3",null,{"className":"custom-blog-title","children":"Why Mathematical Precision Beats Heuristics in Routing"}],["$","p",null,{"className":"custom-blog-excerpt","children":"Fixed routing rules are easy to start with, but they often miss better stop sequences as order volume grows."}]]}],["$","div",null,{"className":"custom-blog-bottom","children":[["$","span",null,{"className":"custom-blog-readmore","children":["Read More",["$","svg",null,{"className":"custom-blog-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","div",null,{"className":"custom-blog-img-container","children":[["$","$L7",null,{"src":"/images/blog-post-pic-14.webp","alt":"Why Mathematical Precision Beats Heuristics in Routing","fill":true,"style":{"objectFit":"cover"},"sizes":"(max-width: 768px) 100vw, 33vw"}],["$","span",null,{"className":"custom-blog-badge","children":"Technology"}]]}]]}]]}]}] +b:["$","$L5","fleet-reduction-without-compromising-delivery-volume",{"delay":0.16,"duration":0.8,"yOffset":35,"children":["$","$L6",null,{"href":"/blog/fleet-reduction-without-compromising-delivery-volume","className":"custom-blog-card","style":{"textDecoration":"none"},"children":[["$","div",null,{"className":"flex flex-col","children":[["$","h3",null,{"className":"custom-blog-title","children":"Fleet Reduction Without Compromising Delivery Volume"}],["$","p",null,{"className":"custom-blog-excerpt","children":"Handling the same order volume with fewer vehicles starts by removing avoidable kilometres and overlapping routes."}]]}],["$","div",null,{"className":"custom-blog-bottom","children":[["$","span",null,{"className":"custom-blog-readmore","children":["Read More",["$","svg",null,{"className":"custom-blog-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","div",null,{"className":"custom-blog-img-container","children":[["$","$L7",null,{"src":"/images/blog-post-pic-8.webp","alt":"Fleet Reduction Without Compromising Delivery Volume","fill":true,"style":{"objectFit":"cover"},"sizes":"(max-width: 768px) 100vw, 33vw"}],["$","span",null,{"className":"custom-blog-badge","children":"Fleet Management"}]]}]]}]]}]}] +c:["$","$L5","building-a-greener-city-the-future-of-urban-logistics",{"delay":0,"duration":0.8,"yOffset":35,"children":["$","$L6",null,{"href":"/blog/building-a-greener-city-the-future-of-urban-logistics","className":"custom-blog-card","style":{"textDecoration":"none"},"children":[["$","div",null,{"className":"flex flex-col","children":[["$","h3",null,{"className":"custom-blog-title","children":"Building a Greener City: The Future of Urban Logistics"}],["$","p",null,{"className":"custom-blog-excerpt","children":"Cities are asking for cleaner delivery. The practical challenge is planning EV routes that can meet customer windows without wasting charge."}]]}],["$","div",null,{"className":"custom-blog-bottom","children":[["$","span",null,{"className":"custom-blog-readmore","children":["Read More",["$","svg",null,{"className":"custom-blog-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","div",null,{"className":"custom-blog-img-container","children":[["$","$L7",null,{"src":"/images/blog-post-pic-6.webp","alt":"Building a Greener City: The Future of Urban Logistics","fill":true,"style":{"objectFit":"cover"},"sizes":"(max-width: 768px) 100vw, 33vw"}],["$","span",null,{"className":"custom-blog-badge","children":"Sustainability"}]]}]]}]]}]}] +d:["$","$L5","how-doormile-maintains-99-9-sla-compliance-at-scale",{"delay":0.08,"duration":0.8,"yOffset":35,"children":["$","$L6",null,{"href":"/blog/how-doormile-maintains-99-9-sla-compliance-at-scale","className":"custom-blog-card","style":{"textDecoration":"none"},"children":[["$","div",null,{"className":"flex flex-col","children":[["$","h3",null,{"className":"custom-blog-title","children":"How Doormile Maintains 99.9% SLA Compliance at Scale"}],["$","p",null,{"className":"custom-blog-excerpt","children":"High SLA performance comes from checking ETAs before dispatch, reacting early to delays, and keeping customer commitments visible throughout the day."}]]}],["$","div",null,{"className":"custom-blog-bottom","children":[["$","span",null,{"className":"custom-blog-readmore","children":["Read More",["$","svg",null,{"className":"custom-blog-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","div",null,{"className":"custom-blog-img-container","children":[["$","$L7",null,{"src":"/images/last-mile-approach.webp","alt":"How Doormile Maintains 99.9% SLA Compliance at Scale","fill":true,"style":{"objectFit":"cover"},"sizes":"(max-width: 768px) 100vw, 33vw"}],["$","span",null,{"className":"custom-blog-badge","children":"Operations"}]]}]]}]]}]}] +e:["$","$L5","battery-simulation-the-secret-to-ev-route-pre-validation",{"delay":0.16,"duration":0.8,"yOffset":35,"children":["$","$L6",null,{"href":"/blog/battery-simulation-the-secret-to-ev-route-pre-validation","className":"custom-blog-card","style":{"textDecoration":"none"},"children":[["$","div",null,{"className":"flex flex-col","children":[["$","h3",null,{"className":"custom-blog-title","children":"Battery Simulation: The Secret to EV Route Pre-Validation"}],["$","p",null,{"className":"custom-blog-excerpt","children":"Before a rider leaves the hub, every EV route should be checked against real charge capacity and the expected return plan."}]]}],["$","div",null,{"className":"custom-blog-bottom","children":[["$","span",null,{"className":"custom-blog-readmore","children":["Read More",["$","svg",null,{"className":"custom-blog-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","div",null,{"className":"custom-blog-img-container","children":[["$","$L7",null,{"src":"/images/blog-post-pic-3.webp","alt":"Battery Simulation: The Secret to EV Route Pre-Validation","fill":true,"style":{"objectFit":"cover"},"sizes":"(max-width: 768px) 100vw, 33vw"}],["$","span",null,{"className":"custom-blog-badge","children":"EV Fleet"}]]}]]}]]}]}] +11:null diff --git a/build/blog/__next.blog.txt b/build/blog/__next.blog.txt new file mode 100644 index 0000000..e0935ae --- /dev/null +++ b/build/blog/__next.blog.txt @@ -0,0 +1,5 @@ +1:"$Sreact.fragment" +2:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:[] +0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/blog/battery-simulation-the-secret-to-ev-route-pre-validation.html b/build/blog/battery-simulation-the-secret-to-ev-route-pre-validation.html new file mode 100644 index 0000000..e9505df --- /dev/null +++ b/build/blog/battery-simulation-the-secret-to-ev-route-pre-validation.html @@ -0,0 +1,1168 @@ +Battery Simulation: The Secret to EV Route Pre-Validation – Doormile

    Doormile

    Doormile logo
    Address
    Hyderabad

    5th Floor, Vision Ultima,
    Street No.3, Jayabheri Enclave,
    Gachibowli, Hyderabad,
    Telangana 500032.

    Coimbatore

    Mayflower Valencia,
    Near Nava India Bus Stop,
    Avinashi Road,
    Udayampalayam,
    Tamil Nadu 641037.

    Bengaluru

    C612, 6th Floor,
    Trifecta Starlight,
    ITPL Road,
    Garudacharapalya,
    Mahadevapura,
    Bangalore 560048,
    Karnataka, India.

    Contact Us

    Tel : +91 86886 97941

    Email

    care@doormile.com

    EV Fleet

    Battery Simulation: The Secret to EV Route Pre-Validation

    Doormile Team2 min read

    A stranded EV is not just a late delivery. It means a vehicle is out of service, a customer is waiting, and the hub has to arrange recovery. Range checks need to happen before dispatch.

    In last-mile logistics, a missed SLA is rarely caused by one big failure. It usually comes from small delays adding up across a route. Battery Simulation: The Secret to EV Route Pre-Validation looks at how delivery teams can spot those delays early and plan around them before vehicles leave the hub.

    Why this matters for fleet teams

    Every extra kilometre costs money. It uses fuel or charge, adds rider time, wears down vehicles, and increases the chance of a late delivery. When routes are built from fixed zones or old habits, those costs repeat every day.

    • Fewer vehicles needed for the same number of drops
    • Lower cost per drop through better stop sequencing
    • ETAs that match traffic, distance, and delivery windows
    • Less fuel or charge used per completed order

    From orders to dispatch

    A good dispatch plan starts with the basics: order locations, promised delivery windows, rider capacity, vehicle range, and known traffic trouble spots. MileTruth™ checks those inputs before dispatch so the team is not fixing avoidable mistakes on the road.

    Battery Simulation: The Secret to EV Route Pre-Validation
    EV Fleet: route planning decisions made before dispatch.

    A route should be checked before the rider leaves, not explained after the customer calls.

    Doormile Operations

    Putting it into practice

    The best improvements usually start with simple measurements. Track distance per route, failed delivery windows, rider idle time, and orders moved between vehicles after dispatch. Those numbers show where the operation is leaking time.

    1. Benchmark today's distance, fleet size, and on-time rate.
    2. Include vehicle capacity, delivery windows, rider shifts, and battery charge.
    3. Check routes against traffic and customer commitments before dispatch.
    4. Compare the next dispatch cycle against the old plan.

    Better routing is not about pushing riders harder. It is about giving them a plan that already accounts for the real day ahead.

    \ No newline at end of file diff --git a/build/blog/battery-simulation-the-secret-to-ev-route-pre-validation.txt b/build/blog/battery-simulation-the-secret-to-ev-route-pre-validation.txt new file mode 100644 index 0000000..a5e3880 --- /dev/null +++ b/build/blog/battery-simulation-the-secret-to-ev-route-pre-validation.txt @@ -0,0 +1,544 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +d:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +e:"$Sreact.suspense" +11:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +13:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +15:I[68027,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"P":null,"c":["","blog","battery-simulation-the-secret-to-ev-route-pre-validation"],"q":"","i":false,"f":[[["",{"children":["blog",{"children":[["slug","battery-simulation-the-secret-to-ev-route-pre-validation","d",null],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":["$Lc",[["$","script","script-0",{"src":"/_next/static/chunks/0yvxf3ok9gcp_.js","async":true,"nonce":"$undefined"}]],["$","$Ld",null,{"children":["$","$e",null,{"name":"Next.MetadataOutlet","children":"$@f"}]}]]}],{},null,false,null]},null,false,"$@10"]},null,false,"$@10"]},null,false,null],["$","$1","h",{"children":[null,["$","$L11",null,{"children":"$L12"}],["$","div",null,{"hidden":true,"children":["$","$L13",null,{"children":["$","$e",null,{"name":"Next.Metadata","children":"$L14"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$15",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"kmSVPuUqY3Rhw5xy4D2nn"} +16:[] +10:"$W16" +:HL["/images/blog-post-pic-3.webp","image"] +17:T3d6f, + .dm-single-blog { + --dm-red: #c01227; + --dm-red-hover: #e31d32; + --dm-radius-card: 22px; + --dm-radius-img: 20px; + --dm-radius-badge: 8px; + --dm-shadow-card: 0 4px 24px rgba(15, 23, 42, 0.05); + --dm-border: 1px solid rgba(15, 23, 42, 0.09); + --dm-space-p: 24px; + --dm-space-h: 32px; + --dm-space-img: 32px; + --dm-space-quote: 40px; + --dm-sticky-top: 138px; + --dm-measure: min(1100px, 100%); + font-family: var(--font-manrope), sans-serif; + } + + /* Heading normalization. Beat the global theme's .elementor-kit-5 h1-h6 + (120/80/60px UPPERCASE) rules with !important on our own classes. */ + .dm-single-blog :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline, + specificity 0-1-1) so blog links keep our colors and never get underlined. */ + .dm-single-blog a { text-decoration: none !important; } + + /* Page banner: tall homepage-scale frame with only badge + title inside */ + /* Compound selector (specificity 20) + !important beats the global 800px + single-class height rules so the blog banner can use viewport heights. */ + .custom-standard-hero-card.dm-banner-card { + height: 90vh !important; + min-height: 85vh !important; + } + @media (max-width: 1024px) { + .custom-standard-hero-card.dm-banner-card { height: 80vh !important; min-height: 75vh !important; } + } + @media (max-width: 600px) { + .custom-standard-hero-card.dm-banner-card { height: 78vh !important; min-height: 72vh !important; } + } + + .dm-banner-inner { + position: relative; width: 100%; height: 100%; + display: flex; flex-direction: column; align-items: center; justify-content: center; + text-align: center; gap: clamp(22px, 2.6vw, 34px); + padding: clamp(48px, 8vh, 96px) clamp(20px, 5vw, 48px); + } + + .dm-banner-category { + display: inline-block; background: var(--dm-red); color: #fff; + font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.6px; + padding: 9px 18px; border-radius: 999px; box-shadow: 0 8px 22px rgba(192,18,39,0.45); + } + .dm-banner-title { + font-family: var(--font-manrope), sans-serif !important; + font-size: clamp(34px, 5vw, 60px) !important; font-weight: 850 !important; + line-height: 1.16 !important; letter-spacing: -1.2px !important; + color: #ffffff !important; margin: 0; max-width: 820px; + text-wrap: balance; text-shadow: 0 2px 30px rgba(0,0,0,0.38); + } + @media (max-width: 1024px) { .dm-banner-title { font-size: clamp(32px, 6vw, 48px) !important; max-width: 90%; } } + @media (max-width: 600px) { .dm-banner-title { font-size: clamp(28px, 8vw, 38px) !important; max-width: 90%; } } + + /* Content wrap begins immediately below the banner */ + /* Shared content container: the SAME max-width + horizontal padding is used + by BlogPostFooter (.dm-blog-footer-inner) so the article body, headings, + images, Prev/Next, Related Articles and the CTA banner all align to one + grid with identical left/right edges. Keep both in sync. */ + .dm-blog-wrap { + max-width: 1280px; margin: 0 auto; + /* 20px mobile padding floor → 40px on desktop; matches the footer container. */ + padding: clamp(14px, 2vw, 26px) clamp(20px, 4vw, 40px) 0; + } + @media (max-width: 767px) { + .dm-blog-wrap { + padding-left: 16px; + padding-right: 16px; + } + } + + /* ── Article meta bar (directly under the hero) ── */ + .dm-meta-bar { + display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 14px 24px; + padding: clamp(20px, 2.6vw, 30px) 0; margin-bottom: clamp(26px, 3vw, 44px); + border-bottom: 1px solid rgba(15,23,42,0.10); + } + .dm-meta-breadcrumb ol { + list-style: none; display: flex; flex-wrap: wrap; align-items: center; + gap: 8px; margin: 0; padding: 0; font-size: 13px; font-weight: 600; color: #64748b; + } + .dm-meta-breadcrumb a { color: #64748b !important; text-decoration: none; transition: color .2s ease; } + .dm-meta-breadcrumb a:hover { color: var(--dm-red) !important; } + .dm-meta-sep { color: #cbd5e1; } + .dm-meta-current { + color: #0f172a; font-weight: 700; + max-width: min(40ch, 46vw); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; + } + @media (max-width: 600px) { .dm-meta-current { max-width: 56vw; } } + .dm-meta-items { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 20px; } + .dm-meta-item { + display: inline-flex; align-items: center; gap: 7px; + font-size: 13.5px; font-weight: 600; color: #475569; + } + .dm-meta-item svg { color: var(--dm-red); flex: 0 0 auto; } + .dm-meta-author { color: #0f172a; font-weight: 700; } + @media (max-width: 600px) { .dm-meta-bar { gap: 12px; } } + .dm-blog-layout { + display: grid; grid-template-columns: minmax(0,1fr) 320px; + /* Tighter gap gives the reading column more room next to the 320px sidebar. */ + gap: clamp(28px, 3vw, 56px); align-items: start; + } + @media (max-width: 1024px) { + .dm-blog-layout { grid-template-columns: 1fr; gap: 48px; } + /* Single-column (tablet/mobile): cap the reading column and centre it so the + article never sits left-aligned with a large empty right gutter. */ + .dm-blog-main { max-width: 900px; margin-inline: auto; } + } + .dm-blog-main { min-width: 0; } + + /* ── Intro lead ── */ + .dm-blog-intro { + max-width: var(--dm-measure); + font-size: clamp(18px, 1.5vw, 20px); line-height: 1.65; font-weight: 500; + color: #475569; margin: 0 0 clamp(26px, 3vw, 38px); padding-left: 20px; + border-left: 3px solid var(--dm-red); + } + + /* ── Article body ── */ + .dm-article-body { max-width: var(--dm-measure); } + .dm-article-p { + font-size: 18px !important; line-height: 1.8 !important; color: #334155; font-weight: 450; + margin: 0 0 var(--dm-space-p); + } + .dm-article-h2 { + font-size: clamp(23px, 2vw, 30px) !important; font-weight: 800 !important; letter-spacing: -.3px !important; + color: #0f172a !important; line-height: 1.3 !important; margin: 48px 0 var(--dm-space-h); + text-wrap: balance; + } + /* Each article block is wrapped in its OWN ScrollReveal
    , so a bare + :first-child rule matched every heading (each is the only child of its + wrapper) and zeroed its top margin, collapsing the gap above every + section heading. Scope the reset to only the article body's first block. */ + .dm-article-body > :first-child :where(.dm-article-h2, .dm-article-h3), + .dm-article-body > .dm-article-h2:first-child, + .dm-article-body > .dm-article-h3:first-child { margin-top: 0; } + .dm-article-h3 { + font-size: clamp(19px, 1.5vw, 23px) !important; font-weight: 800 !important; letter-spacing: -.2px !important; + color: #1e293b !important; line-height: 1.34 !important; margin: 40px 0 18px; + text-wrap: balance; + } + @media (max-width: 600px) { + .dm-article-p { font-size: 16px !important; } + .dm-article-ul li, .dm-article-ol li { font-size: 15.5px; } + .dm-article-h2 { font-size: clamp(22px, 6vw, 28px) !important; margin-top: 38px; } + .dm-article-h3 { font-size: clamp(18px, 5vw, 22px) !important; } + } + + .dm-article-ul, .dm-article-ol { + /* Top margin (was 0) separates the list from the paragraph above it; + matching bottom margin keeps it clear of the next heading/paragraph. + Slightly larger than --dm-space-p so the list reads as its own block. */ + margin: clamp(26px, 2.4vw, 32px) 0 clamp(26px, 2.4vw, 32px); + padding-left: 2px; list-style: none; + display: flex; flex-direction: column; gap: 15px; + } + /* Prefixed with .dm-article-body so these beat the theme's global + ".logico-front-end ul li:before" fontello-glyph bullet (specificity 0,1,3), + which otherwise replaces our clean red dot with a misaligned checkmark glyph + and adds its own 1.7em indent. */ + .dm-article-body .dm-article-ul li, .dm-article-body .dm-article-ol li { + position: relative; padding-left: 34px; + font-size: 17px; line-height: 1.65; color: #334155; font-weight: 450; + } + .dm-article-body .dm-article-ul li::before { + content: ""; position: absolute; left: 7px; top: 10px; + width: 8px; height: 8px; border-radius: 50%; background: var(--dm-red); + /* kill any inherited fontello glyph from the global rule */ + font-size: 0; line-height: 0; + } + .dm-article-ol { counter-reset: dm-li; } + .dm-article-body .dm-article-ol li { counter-increment: dm-li; } + .dm-article-body .dm-article-ol li::before { + content: counter(dm-li); position: absolute; left: 0; top: 0; + width: 24px; height: 24px; border-radius: 7px; + background: rgba(192,18,39,0.10); color: var(--dm-red); + font-size: 12px; font-weight: 800; display: flex; align-items: center; justify-content: center; + } + + /* ── Quote ── */ + .dm-article-quote { + position: relative; margin: var(--dm-space-quote) 0; padding: 30px 32px 30px 64px; + background: linear-gradient(135deg, #fbf2f3 0%, #fdf7f8 100%); + border-left: 4px solid var(--dm-red); border-radius: 0 18px 18px 0; + box-shadow: 0 8px 28px rgba(192, 18, 39, 0.06); + } + .dm-article-quote::before { + content: "\201C"; position: absolute; left: 22px; top: 8px; + font-family: Georgia, "Times New Roman", serif; + font-size: 64px; line-height: 1; color: rgba(192, 18, 39, 0.28); font-weight: 700; + } + .dm-article-quote p { + font-size: clamp(19px, 2vw, 23px); line-height: 1.5; font-weight: 600; + font-style: italic; color: #1e293b; margin: 0; + } + .dm-article-quote cite { + display: block; margin-top: 16px; font-size: 13px; font-weight: 700; + font-style: normal; color: var(--dm-red); text-transform: uppercase; letter-spacing: .6px; + } + @media (max-width: 600px) { .dm-article-quote { padding: 26px 22px; } .dm-article-quote::before { display: none; } } + + /* ── Images ── */ + .dm-article-figure { margin: var(--dm-space-img) 0; } + .dm-article-figure-img { + position: relative; display: block; width: 100%; aspect-ratio: 16 / 9; + border-radius: var(--dm-radius-img); overflow: hidden; box-shadow: 0 14px 34px rgba(15,23,42,0.10); + } + .dm-article-figure figcaption { + margin-top: 14px; font-size: 13.5px; color: #94a3b8; font-weight: 500; + text-align: center; font-style: italic; + } + + /* ── Sidebar ── */ + .dm-blog-aside-wrap { position: relative; } + .dm-blog-sidebar { + display: flex; flex-direction: column; gap: 18px; + position: sticky; top: var(--dm-sticky-top); + } + @media (max-width: 1024px) { .dm-blog-sidebar { position: static; gap: 20px; } } + + .dm-blog-widget { + background: #fff; border: var(--dm-border); border-radius: var(--dm-radius-card); + padding: 20px; box-shadow: var(--dm-shadow-card); + } + .dm-blog-widget-title { + font-size: 13px !important; font-weight: 700 !important; text-transform: uppercase !important; + letter-spacing: .8px !important; line-height: 1.35 !important; color: #0f172a !important; + margin: 0 0 15px; padding: 0 0 12px; + border-bottom: 1px solid rgba(15,23,42,0.08); + overflow: visible; white-space: normal; word-break: normal; + } + + /* Search */ + .dm-sr-only { + position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; + overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; + } + .dm-blog-search { position: relative; } + .dm-blog-search-form { position: relative; } + .dm-blog-search-input { + width: 100%; height: 46px; border: 1.5px solid #e2e8f0; border-radius: 12px; + padding: 0 42px 0 15px; font-size: 14px; font-family: inherit; color: #0f172a; + background: #f8fafc; transition: border-color .2s ease, box-shadow .2s ease, background .2s ease; + } + .dm-blog-search-input::placeholder { color: #9c9c9c; } + .dm-blog-search-input:focus { + outline: none; border-color: var(--dm-red); background: #fff; + box-shadow: 0 0 0 3px rgba(192,18,39,0.11); + } + .dm-blog-search-icon { + position: absolute; right: 14px; top: 50%; transform: translateY(-50%); + color: #94a3b8; pointer-events: none; display: flex; + } + .dm-blog-search-results { + position: absolute; z-index: 20; top: calc(100% + 8px); left: 0; right: 0; + background: #fff; border: 1px solid rgba(15,23,42,0.10); border-radius: 14px; + box-shadow: 0 18px 42px rgba(15,23,42,0.14); overflow: hidden; + } + .dm-blog-search-results ul { list-style: none; margin: 0; padding: 6px; } + .dm-blog-search-result { + display: flex; flex-direction: column; gap: 3px; padding: 10px 12px; + border-radius: 10px; text-decoration: none; transition: background .15s ease; + } + .dm-blog-search-result:hover { background: #f8fafc; } + .dm-blog-search-result-cat { + font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .8px; color: var(--dm-red); + } + .dm-blog-search-result-title { font-size: 13.5px; font-weight: 600; color: #1e293b; line-height: 1.35; } + .dm-blog-search-empty { margin: 0; padding: 14px 12px; font-size: 13px; color: #64748b; } + + /* Recent posts */ + .dm-blog-recent { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 15px; } + .dm-blog-recent-item { display: flex; gap: 13px; align-items: center; text-decoration: none; } + .dm-blog-recent-thumb { + position: relative; flex: 0 0 62px; width: 62px; height: 62px; + border-radius: 13px; overflow: hidden; background: #f1f5f9; + } + .dm-blog-recent-meta { display: flex; flex-direction: column; gap: 4px; min-width: 0; } + .dm-blog-recent-title { + font-size: 13.5px; font-weight: 700; color: #1e293b; line-height: 1.35; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-blog-recent-item:hover .dm-blog-recent-title { color: var(--dm-red); } + .dm-blog-recent-date { font-size: 11.5px; font-weight: 600; color: #94a3b8; } + + /* Categories */ + .dm-blog-categories { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; } + .dm-blog-category-item { + display: flex; align-items: center; justify-content: space-between; gap: 10px; + padding: 11px 2px; text-decoration: none; font-size: 14px; font-weight: 600; color: #334155 !important; + border-bottom: 1px solid rgba(15,23,42,0.06); transition: color .2s ease, padding-left .2s ease; + } + .dm-blog-categories li:last-child .dm-blog-category-item { border-bottom: none; } + .dm-blog-category-item:hover { color: var(--dm-red); padding-left: 6px; } + .dm-blog-category-item > span:first-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } + .dm-blog-category-count { + flex: 0 0 auto; font-size: 11px; font-weight: 800; color: #94a3b8; background: #f1f5f9; + min-width: 24px; height: 22px; border-radius: 7px; display: inline-flex; + align-items: center; justify-content: center; padding: 0 7px; + } + + /* CTA card */ + .dm-blog-cta-card { background: #1f1f1f; border-color: #1f1f1f; } + .dm-blog-cta-title { font-size: 18px !important; font-weight: 800 !important; color: #fff !important; line-height: 1.32 !important; margin: 0 0 10px; letter-spacing: -.2px !important; } + .dm-blog-cta-text { font-size: 13.5px; line-height: 1.6; color: #c7c7c7; margin: 0 0 20px; font-weight: 450; } + .dm-blog-cta-btn { + display: inline-flex; align-items: center; gap: 8px; + background: var(--dm-red); color: #fff !important; font-size: 13.5px; font-weight: 700; + padding: 12px 22px; border-radius: 12px; text-decoration: none; + transition: background .2s ease, transform .2s ease; + } + .dm-blog-cta-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } +c:["$","div",null,{"className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"Article\",\"headline\":\"Battery Simulation: The Secret to EV Route Pre-Validation\",\"description\":\"Before a rider leaves the hub, every EV route should be checked against real charge capacity and the expected return plan.\",\"image\":[\"https://www.doormile.com/images/blog-post-pic-3.webp\"],\"datePublished\":\"2025-06-12T00:00:00.000Z\",\"dateModified\":\"2025-06-12T00:00:00.000Z\",\"author\":{\"@type\":\"Organization\",\"name\":\"Doormile Team\",\"url\":\"https://www.doormile.com\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Doormile\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://www.doormile.com/images/cropped-image-2.png\"}},\"mainEntityOfPage\":{\"@type\":\"WebPage\",\"@id\":\"https://www.doormile.com/blog/battery-simulation-the-secret-to-ev-route-pre-validation\"},\"articleSection\":\"EV Fleet\"}"}}],["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https://www.doormile.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https://www.doormile.com/blog\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Battery Simulation: The Secret to EV Route Pre-Validation\",\"item\":\"https://www.doormile.com/blog/battery-simulation-the-secret-to-ev-route-pre-validation\"}]}"}}],["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":[["$","article",null,{"className":"dm-single-blog","children":[["$","link",null,{"rel":"preload","as":"image","href":"/images/blog-post-pic-3.webp"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$17"}}],"$L18","$L19"]}],"$L1a"]}]}]]}] +1b:I[22016,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],""] +1c:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"ScrollReveal"] +18:["$","div",null,{"className":"custom-standard-hero-container","children":["$","div",null,{"className":"custom-standard-hero-card dm-banner-card","style":{"backgroundImage":"url(/images/blog-post-pic-3.webp)","--hero-overlay":"linear-gradient(180deg, rgba(0,0,0,0.38) 0%, rgba(0,0,0,0.46) 55%, rgba(0,0,0,0.60) 100%)"},"children":["$","div",null,{"className":"e-con-inner dm-banner-inner","children":[["$","span",null,{"className":"dm-banner-category","children":"EV Fleet"}],["$","h1",null,{"className":"dm-banner-title","children":"Battery Simulation: The Secret to EV Route Pre-Validation"}]]}]}]}] +19:["$","div",null,{"className":"dm-blog-wrap","children":[["$","div",null,{"className":"dm-meta-bar","children":[["$","nav",null,{"className":"dm-meta-breadcrumb","aria-label":"Breadcrumb","children":["$","ol",null,{"children":[["$","li",null,{"children":["$","$L1b",null,{"href":"/","children":"Home"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"children":["$","$L1b",null,{"href":"/blog","children":"Blog"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"aria-current":"page","className":"dm-meta-current","children":"Battery Simulation: The Secret to EV Route Pre-Validation"}]]}]}],["$","div",null,{"className":"dm-meta-items","children":[["$","span",null,{"className":"dm-meta-item dm-meta-author","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","path",null,{"d":"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"}],["$","circle",null,{"cx":"12","cy":"7","r":"4"}]]}],"Doormile Team"]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","rect",null,{"x":"3","y":"4","width":"18","height":"18","rx":"2"}],["$","line",null,{"x1":"16","y1":"2","x2":"16","y2":"6"}],["$","line",null,{"x1":"8","y1":"2","x2":"8","y2":"6"}],["$","line",null,{"x1":"3","y1":"10","x2":"21","y2":"10"}]]}],["$","time",null,{"dateTime":"2025-06-12","children":"Jun 12, 2025"}]]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","circle",null,{"cx":"12","cy":"12","r":"9"}],["$","polyline",null,{"points":"12 7 12 12 15 14"}]]}],2," min read"]}]]}]]}],["$","div",null,{"className":"dm-blog-layout","children":[["$","div",null,{"className":"dm-blog-main","children":[["$","p",null,{"className":"dm-blog-intro","children":"A stranded EV is not just a late delivery. It means a vehicle is out of service, a customer is waiting, and the hub has to arrange recovery. Range checks need to happen before dispatch."}],["$","div",null,{"className":"dm-article-body","children":[["$","$L1c","0",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"In last-mile logistics, a missed SLA is rarely caused by one big failure. It usually comes from small delays adding up across a route. Battery Simulation: The Secret to EV Route Pre-Validation looks at how delivery teams can spot those delays early and plan around them before vehicles leave the hub."}]}],["$","$L1c","1",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"Why this matters for fleet teams"}]}],["$","$L1c","2",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"Every extra kilometre costs money. It uses fuel or charge, adds rider time, wears down vehicles, and increases the chance of a late delivery. When routes are built from fixed zones or old habits, those costs repeat every day."}]}],["$","$L1c","3",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ul",null,{"className":"dm-article-ul","children":[["$","li","0",{"children":"Fewer vehicles needed for the same number of drops"}],["$","li","1",{"children":"Lower cost per drop through better stop sequencing"}],["$","li","2",{"children":"ETAs that match traffic, distance, and delivery windows"}],["$","li","3",{"children":"Less fuel or charge used per completed order"}]]}]}],["$","$L1c","4",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h3",null,{"className":"dm-article-h3","children":"From orders to dispatch"}]}],["$","$L1c","5",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"A good dispatch plan starts with the basics: order locations, promised delivery windows, rider capacity, vehicle range, and known traffic trouble spots. MileTruth™ checks those inputs before dispatch so the team is not fixing avoidable mistakes on the road."}]}],["$","$L1c","6",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","figure",null,{"className":"dm-article-figure","children":["$L1d","$L1e"]}]}],"$L1f","$L20","$L21","$L22","$L23"]}]]}],"$L24"]}]]}] +25:T2021, + .dm-blog-footer { + font-family: var(--font-manrope), sans-serif; --dm-red: #c01227; --dm-red-hover: #e31d32; + /* The global theme applies 72px top/bottom section padding — strip it so the + inner container is the single source of vertical rhythm (no double gap). */ + padding: 0 !important; + } + /* Neutralize the global theme's 120/80/60px UPPERCASE heading rules */ + .dm-blog-footer :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline) */ + .dm-blog-footer a { text-decoration: none !important; } + /* Shared content container — mirrors SingleBlog's .dm-blog-wrap (same 1280px + max-width + 20→40px horizontal padding) so Prev/Next, Related and the CTA + align to the exact same left/right edges as the article body above. + Vertical rhythm: ~64px from the article end to the Prev/Next divider, then a + consistent ~64–72px section→section gap (no 120px+ voids). */ + .dm-blog-footer-inner { + max-width: 1280px; margin: 0 auto; + /* Compact vertical rhythm on an 8px system. Top padding sets the + article→Prev/Next gap (~24–32px); the inter-section gap sets the + Prev/Next→Related gap (~32–48px). No large arbitrary voids. */ + /* Minimal bottom padding — the global site footer already contributes its + own 20px top inset, so the CTA banner sits close to it without a void. */ + padding: clamp(24px, 3vw, 32px) clamp(20px, 4vw, 40px) clamp(8px, 1.5vw, 16px); + display: flex; flex-direction: column; gap: clamp(32px, 4vw, 48px); + } + @media (max-width: 767px) { + .dm-blog-footer-inner { + padding-left: 16px; + padding-right: 16px; + } + } + + /* Prev / Next */ + .dm-prevnext { + display: grid; grid-template-columns: 1fr 1fr; gap: 20px; + /* Halved from 40px: tight divider→cards spacing without crowding. */ + padding-top: clamp(16px, 2vw, 24px); border-top: 1px solid rgba(15,23,42,0.08); + } + @media (max-width: 640px) { .dm-prevnext { grid-template-columns: 1fr; } } + .dm-prevnext-placeholder { display: block; } + .dm-prevnext-card { + display: flex; gap: 16px; align-items: center; padding: 16px; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + text-decoration: none; transition: transform .3s ease, box-shadow .3s ease, border-color .3s ease; + } + .dm-prevnext-card:hover { + transform: translateY(-4px); border-color: rgba(192,18,39,0.2); + box-shadow: 0 16px 34px rgba(192,18,39,0.10); + } + .dm-prevnext-thumb { + position: relative; flex: 0 0 80px; width: 80px; height: 80px; + border-radius: 16px; overflow: hidden; background: #f1f5f9; + } + .dm-prevnext-text { display: flex; flex-direction: column; gap: 5px; min-width: 0; } + .dm-prevnext-next { text-align: right; } + .dm-prevnext-next .dm-prevnext-text { align-items: flex-end; } + .dm-prevnext-label { + display: inline-flex; align-items: center; gap: 6px; + font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: 1px; color: var(--dm-red); + } + .dm-prevnext-cat { font-size: 11px; font-weight: 700; color: #94a3b8; text-transform: uppercase; letter-spacing: .5px; } + .dm-prevnext-title { + font-size: 15.5px; font-weight: 700; color: #1e293b; line-height: 1.4; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-prevnext-card:hover .dm-prevnext-title { color: var(--dm-red); } + + /* Related */ + .dm-related-heading { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 850 !important; letter-spacing: -.4px !important; + line-height: 1.25 !important; color: #0f172a !important; margin: 0 0 24px; + } + .dm-related-grid { + display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; + } + @media (max-width: 1024px) { .dm-related-grid { grid-template-columns: repeat(2, 1fr); } } + @media (max-width: 700px) { .dm-related-grid { grid-template-columns: 1fr; gap: 24px; } } + + .dm-related-card { + display: flex; flex-direction: column; height: 100%; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + overflow: hidden; box-shadow: 0 4px 24px rgba(15,23,42,0.05); text-decoration: none; + transition: transform .4s cubic-bezier(0.2,0.8,0.2,1), box-shadow .4s ease, border-color .4s ease; + } + .dm-related-card:hover { + transform: translateY(-8px); box-shadow: 0 22px 44px rgba(192,18,39,0.13); + border-color: rgba(192,18,39,0.2); + } + .dm-related-img { + position: relative; width: 100%; aspect-ratio: 16 / 10; overflow: hidden; background: #f1f5f9; + } + .dm-related-img img { transition: transform .5s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-img img { transform: scale(1.05); } + .dm-related-badge { + position: absolute; top: 14px; left: 14px; z-index: 5; background: var(--dm-red); color: #fff; + font-size: 9px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.2px; + padding: 5px 11px; border-radius: 8px; box-shadow: 0 4px 12px rgba(192,18,39,0.25); + } + .dm-related-body { display: flex; flex-direction: column; flex: 1; padding: 22px; } + .dm-related-card-title { + font-size: 17px !important; font-weight: 800 !important; color: #1e293b !important; line-height: 1.4 !important; + letter-spacing: -.2px !important; margin: 0 0 10px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-related-card:hover .dm-related-card-title { color: var(--dm-red); } + .dm-related-card-excerpt { + font-size: 13.5px; font-weight: 500; color: #64748b; line-height: 1.6; margin: 0 0 18px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + } + .dm-related-readmore { + margin-top: auto; display: inline-flex; align-items: center; gap: 7px; + font-size: 12.5px; font-weight: 800; color: var(--dm-red); + text-transform: uppercase; letter-spacing: .6px; + } + .dm-related-readmore-arrow { transition: transform .3s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-readmore-arrow { transform: translateX(5px); } + + /* Contact CTA banner */ + .dm-blog-contact-cta { + display: flex; align-items: center; justify-content: space-between; gap: 32px; + flex-wrap: wrap; + background: linear-gradient(135deg, #1a1a1a 0%, #2d1417 100%); + border-radius: 30px; padding: clamp(32px, 4vw, 56px); + position: relative; overflow: hidden; + } + .dm-blog-contact-cta::after { + content: ""; position: absolute; right: -80px; top: -80px; width: 300px; height: 300px; + background: radial-gradient(circle, rgba(192,18,39,0.40), transparent 70%); + pointer-events: none; + } + .dm-blog-contact-cta-content { position: relative; z-index: 1; max-width: 640px; } + .dm-blog-contact-eyebrow { + display: inline-block; font-size: 12px; font-weight: 800; text-transform: uppercase; + letter-spacing: 1.4px; color: #ff8088; margin-bottom: 14px; + } + .dm-blog-contact-title { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 800 !important; line-height: 1.25 !important; + letter-spacing: -.3px !important; color: #ffffff !important; margin: 0 0 12px; text-wrap: balance; + } + .dm-blog-contact-sub { + font-size: 15.5px; line-height: 1.65; color: #e2e2e2; margin: 0; font-weight: 450; + } + .dm-blog-contact-btn { + position: relative; z-index: 1; flex-shrink: 0; + display: inline-flex; align-items: center; justify-content: center; gap: 10px; + background: var(--dm-red); color: #fff !important; font-size: 15px; font-weight: 700; + padding: 16px 32px; border-radius: 16px; text-decoration: none; + box-shadow: 0 10px 26px rgba(192,18,39,0.34); + transition: background .2s ease, transform .2s ease; + } + .dm-blog-contact-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } + @media (max-width: 720px) { + .dm-blog-contact-cta { flex-direction: column; align-items: flex-start; gap: 26px; } + .dm-blog-contact-btn { width: 100%; } + } +1a:["$","section",null,{"className":"dm-blog-footer","aria-label":"More articles","children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$25"}}],"$L26"]}] +27:I[5500,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"Image"] +28:I[23096,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"default"] +1d:["$","span",null,{"className":"dm-article-figure-img","children":["$","$L27",null,{"src":"/images/blog-post-pic-3.webp","alt":"Battery Simulation: The Secret to EV Route Pre-Validation","fill":true,"sizes":"(max-width: 768px) 100vw, 760px","style":{"objectFit":"cover"}}]}] +1e:["$","figcaption",null,{"children":"EV Fleet: route planning decisions made before dispatch."}] +1f:["$","$L1c","7",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","blockquote",null,{"className":"dm-article-quote","children":[["$","p",null,{"children":"A route should be checked before the rider leaves, not explained after the customer calls."}],["$","cite",null,{"children":"Doormile Operations"}]]}]}] +20:["$","$L1c","8",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"Putting it into practice"}]}] +21:["$","$L1c","9",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"The best improvements usually start with simple measurements. Track distance per route, failed delivery windows, rider idle time, and orders moved between vehicles after dispatch. Those numbers show where the operation is leaking time."}]}] +22:["$","$L1c","10",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ol",null,{"className":"dm-article-ol","children":[["$","li","0",{"children":"Benchmark today's distance, fleet size, and on-time rate."}],["$","li","1",{"children":"Include vehicle capacity, delivery windows, rider shifts, and battery charge."}],["$","li","2",{"children":"Check routes against traffic and customer commitments before dispatch."}],["$","li","3",{"children":"Compare the next dispatch cycle against the old plan."}]]}]}] +23:["$","$L1c","11",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"Better routing is not about pushing riders harder. It is about giving them a plan that already accounts for the real day ahead."}]}] +24:["$","div",null,{"className":"dm-blog-aside-wrap","children":["$","aside",null,{"className":"dm-blog-sidebar","aria-label":"Blog sidebar","children":[["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Search"}],["$","$L28",null,{}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Recent Posts"}],["$","ul",null,{"className":"dm-blog-recent","children":[["$","li","how-ai-is-transforming-last-mile-ev-delivery",{"children":["$","$L1b",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"How Better Planning Improves Last-Mile EV Delivery"}],["$","time",null,{"dateTime":"2025-10-02","className":"dm-blog-recent-date","children":"Oct 2, 2025"}]]}]]}]}],["$","li","42-less-distance-insights-from-our-hyderabad-hub",{"children":["$","$L1b",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}],["$","time",null,{"dateTime":"2025-09-18","className":"dm-blog-recent-date","children":"Sep 18, 2025"}]]}]]}]}],["$","li","miletruth-ai-10-stages-to-smarter-dispatch",{"children":["$","$L1b",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","time",null,{"dateTime":"2025-09-05","className":"dm-blog-recent-date","children":"Sep 5, 2025"}]]}]]}]}],["$","li","the-ev-paradox-solving-range-anxiety-for-urban-fleets",{"children":["$","$L1b",null,{"href":"/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/ev-paradox.webp","alt":"The EV Paradox: Solving Range Anxiety for Urban Fleets","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}],["$","time",null,{"dateTime":"2025-08-21","className":"dm-blog-recent-date","children":"Aug 21, 2025"}]]}]]}]}]]}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Categories"}],["$","ul",null,{"className":"dm-blog-categories","children":[["$","li","Case Study",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Case Study"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","EV Fleet",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"EV Fleet"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}],["$","li","Fleet Management",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Fleet Management"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","MileTruth",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"MileTruth"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],"$L29","$L2a","$L2b"]}]]}],"$L2c"]}]}] +26:["$","div",null,{"className":"dm-blog-footer-inner","children":[["$","nav",null,{"className":"dm-prevnext","aria-label":"Article navigation","children":[["$","$L1b",null,{"href":"/blog/how-doormile-maintains-99-9-sla-compliance-at-scale","className":"dm-prevnext-card dm-prevnext-prev","children":[["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L27",null,{"src":"/images/last-mile-approach.webp","alt":"How Doormile Maintains 99.9% SLA Compliance at Scale","fill":true,"sizes":"80px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-prevnext-text","children":[["$","span",null,{"className":"dm-prevnext-label","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"19","y1":"12","x2":"5","y2":"12"}],["$","polyline",null,{"points":"12 19 5 12 12 5"}]]}],"Previous"]}],["$","span",null,{"className":"dm-prevnext-cat","children":"Operations"}],["$","span",null,{"className":"dm-prevnext-title","children":"How Doormile Maintains 99.9% SLA Compliance at Scale"}]]}]]}],["$","span",null,{"className":"dm-prevnext-placeholder"}]]}],["$","div",null,{"className":"dm-related","children":[["$","h2",null,{"className":"dm-related-heading","children":"Related Articles"}],["$","div",null,{"className":"dm-related-grid","children":[["$","$L1c","the-ev-paradox-solving-range-anxiety-for-urban-fleets",{"delay":0,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L27",null,{"src":"/images/ev-paradox.webp","alt":"The EV Paradox: Solving Range Anxiety for Urban Fleets","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"EV Fleet"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"Electric vehicles lower running costs, but battery range changes how routes must be planned before dispatch."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}],["$","$L1c","how-ai-is-transforming-last-mile-ev-delivery",{"delay":0.08,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L27",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Technology"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"How Better Planning Improves Last-Mile EV Delivery"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"A practical look at how EV fleets can plan routes, manage charging, and keep delivery promises without adding unnecessary vehicles."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}],["$","$L1c","42-less-distance-insights-from-our-hyderabad-hub",{"delay":0.16,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-related-card","children":["$L2d","$L2e"]}]}]]}]]}],"$L2f"]}] +29:["$","li","Operations",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Operations"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +2a:["$","li","Sustainability",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Sustainability"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +2b:["$","li","Technology",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Technology"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}] +2c:["$","section",null,{"className":"dm-blog-widget dm-blog-cta-card","children":[["$","h2",null,{"className":"dm-blog-cta-title","children":"Planning delivery routes?"}],["$","p",null,{"className":"dm-blog-cta-text","children":"Talk to us about reducing wasted distance, missed windows, and avoidable vehicle time."}],["$","$L1b",null,{"href":"/contact","className":"dm-blog-cta-btn","children":["Contact Us",["$","svg",null,{"width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] +2d:["$","div",null,{"className":"dm-related-img","children":[["$","$L27",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Case Study"}]]}] +2e:["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"A practical look at how one Hyderabad hub reduced distance, used fewer vehicles, and protected delivery windows with better route planning."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] +2f:["$","div",null,{"className":"dm-blog-contact-cta","children":[["$","div",null,{"className":"dm-blog-contact-cta-content","children":[["$","span",null,{"className":"dm-blog-contact-eyebrow","children":"Let's talk logistics"}],["$","h2",null,{"className":"dm-blog-contact-title","children":"Ready to move smarter with Doormile?"}],["$","p",null,{"className":"dm-blog-contact-sub","children":"Tell us about your fleet and routes — we'll show you where the distance, vehicles and emissions are hiding."}]]}],["$","$L1b",null,{"href":"/contact","className":"dm-blog-contact-btn","children":["Get in Touch",["$","svg",null,{"width":"20","height":"20","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] +12:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] +30:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +f:null +14:[["$","title","0",{"children":"Battery Simulation: The Secret to EV Route Pre-Validation – Doormile"}],["$","meta","1",{"name":"description","content":"Before a rider leaves the hub, every EV route should be checked against real charge capacity and the expected return plan."}],["$","meta","2",{"name":"author","content":"Doormile Team"}],["$","meta","3",{"name":"keywords","content":"EV Fleet,last-mile logistics,EV fleet,MileTruth,route optimisation"}],["$","meta","4",{"name":"robots","content":"index, follow"}],["$","link","5",{"rel":"canonical","href":"https://www.doormile.com/blog/battery-simulation-the-secret-to-ev-route-pre-validation"}],["$","meta","6",{"property":"og:title","content":"Battery Simulation: The Secret to EV Route Pre-Validation"}],["$","meta","7",{"property":"og:description","content":"Before a rider leaves the hub, every EV route should be checked against real charge capacity and the expected return plan."}],["$","meta","8",{"property":"og:url","content":"https://www.doormile.com/blog/battery-simulation-the-secret-to-ev-route-pre-validation"}],["$","meta","9",{"property":"og:site_name","content":"Doormile"}],["$","meta","10",{"property":"og:image","content":"https://www.doormile.com/images/blog-post-pic-3.webp"}],["$","meta","11",{"property":"og:image:alt","content":"Battery Simulation: The Secret to EV Route Pre-Validation"}],["$","meta","12",{"property":"og:type","content":"article"}],["$","meta","13",{"property":"article:published_time","content":"2025-06-12T00:00:00.000Z"}],["$","meta","14",{"property":"article:author","content":"Doormile Team"}],["$","meta","15",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","16",{"name":"twitter:title","content":"Battery Simulation: The Secret to EV Route Pre-Validation"}],["$","meta","17",{"name":"twitter:description","content":"Before a rider leaves the hub, every EV route should be checked against real charge capacity and the expected return plan."}],["$","meta","18",{"name":"twitter:image","content":"https://www.doormile.com/images/blog-post-pic-3.webp"}],["$","link","19",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","20",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","21",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","22",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L30","23",{}]] diff --git a/build/blog/battery-simulation-the-secret-to-ev-route-pre-validation/__next._full.txt b/build/blog/battery-simulation-the-secret-to-ev-route-pre-validation/__next._full.txt new file mode 100644 index 0000000..a5e3880 --- /dev/null +++ b/build/blog/battery-simulation-the-secret-to-ev-route-pre-validation/__next._full.txt @@ -0,0 +1,544 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +d:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +e:"$Sreact.suspense" +11:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +13:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +15:I[68027,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"P":null,"c":["","blog","battery-simulation-the-secret-to-ev-route-pre-validation"],"q":"","i":false,"f":[[["",{"children":["blog",{"children":[["slug","battery-simulation-the-secret-to-ev-route-pre-validation","d",null],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":["$Lc",[["$","script","script-0",{"src":"/_next/static/chunks/0yvxf3ok9gcp_.js","async":true,"nonce":"$undefined"}]],["$","$Ld",null,{"children":["$","$e",null,{"name":"Next.MetadataOutlet","children":"$@f"}]}]]}],{},null,false,null]},null,false,"$@10"]},null,false,"$@10"]},null,false,null],["$","$1","h",{"children":[null,["$","$L11",null,{"children":"$L12"}],["$","div",null,{"hidden":true,"children":["$","$L13",null,{"children":["$","$e",null,{"name":"Next.Metadata","children":"$L14"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$15",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"kmSVPuUqY3Rhw5xy4D2nn"} +16:[] +10:"$W16" +:HL["/images/blog-post-pic-3.webp","image"] +17:T3d6f, + .dm-single-blog { + --dm-red: #c01227; + --dm-red-hover: #e31d32; + --dm-radius-card: 22px; + --dm-radius-img: 20px; + --dm-radius-badge: 8px; + --dm-shadow-card: 0 4px 24px rgba(15, 23, 42, 0.05); + --dm-border: 1px solid rgba(15, 23, 42, 0.09); + --dm-space-p: 24px; + --dm-space-h: 32px; + --dm-space-img: 32px; + --dm-space-quote: 40px; + --dm-sticky-top: 138px; + --dm-measure: min(1100px, 100%); + font-family: var(--font-manrope), sans-serif; + } + + /* Heading normalization. Beat the global theme's .elementor-kit-5 h1-h6 + (120/80/60px UPPERCASE) rules with !important on our own classes. */ + .dm-single-blog :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline, + specificity 0-1-1) so blog links keep our colors and never get underlined. */ + .dm-single-blog a { text-decoration: none !important; } + + /* Page banner: tall homepage-scale frame with only badge + title inside */ + /* Compound selector (specificity 20) + !important beats the global 800px + single-class height rules so the blog banner can use viewport heights. */ + .custom-standard-hero-card.dm-banner-card { + height: 90vh !important; + min-height: 85vh !important; + } + @media (max-width: 1024px) { + .custom-standard-hero-card.dm-banner-card { height: 80vh !important; min-height: 75vh !important; } + } + @media (max-width: 600px) { + .custom-standard-hero-card.dm-banner-card { height: 78vh !important; min-height: 72vh !important; } + } + + .dm-banner-inner { + position: relative; width: 100%; height: 100%; + display: flex; flex-direction: column; align-items: center; justify-content: center; + text-align: center; gap: clamp(22px, 2.6vw, 34px); + padding: clamp(48px, 8vh, 96px) clamp(20px, 5vw, 48px); + } + + .dm-banner-category { + display: inline-block; background: var(--dm-red); color: #fff; + font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.6px; + padding: 9px 18px; border-radius: 999px; box-shadow: 0 8px 22px rgba(192,18,39,0.45); + } + .dm-banner-title { + font-family: var(--font-manrope), sans-serif !important; + font-size: clamp(34px, 5vw, 60px) !important; font-weight: 850 !important; + line-height: 1.16 !important; letter-spacing: -1.2px !important; + color: #ffffff !important; margin: 0; max-width: 820px; + text-wrap: balance; text-shadow: 0 2px 30px rgba(0,0,0,0.38); + } + @media (max-width: 1024px) { .dm-banner-title { font-size: clamp(32px, 6vw, 48px) !important; max-width: 90%; } } + @media (max-width: 600px) { .dm-banner-title { font-size: clamp(28px, 8vw, 38px) !important; max-width: 90%; } } + + /* Content wrap begins immediately below the banner */ + /* Shared content container: the SAME max-width + horizontal padding is used + by BlogPostFooter (.dm-blog-footer-inner) so the article body, headings, + images, Prev/Next, Related Articles and the CTA banner all align to one + grid with identical left/right edges. Keep both in sync. */ + .dm-blog-wrap { + max-width: 1280px; margin: 0 auto; + /* 20px mobile padding floor → 40px on desktop; matches the footer container. */ + padding: clamp(14px, 2vw, 26px) clamp(20px, 4vw, 40px) 0; + } + @media (max-width: 767px) { + .dm-blog-wrap { + padding-left: 16px; + padding-right: 16px; + } + } + + /* ── Article meta bar (directly under the hero) ── */ + .dm-meta-bar { + display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 14px 24px; + padding: clamp(20px, 2.6vw, 30px) 0; margin-bottom: clamp(26px, 3vw, 44px); + border-bottom: 1px solid rgba(15,23,42,0.10); + } + .dm-meta-breadcrumb ol { + list-style: none; display: flex; flex-wrap: wrap; align-items: center; + gap: 8px; margin: 0; padding: 0; font-size: 13px; font-weight: 600; color: #64748b; + } + .dm-meta-breadcrumb a { color: #64748b !important; text-decoration: none; transition: color .2s ease; } + .dm-meta-breadcrumb a:hover { color: var(--dm-red) !important; } + .dm-meta-sep { color: #cbd5e1; } + .dm-meta-current { + color: #0f172a; font-weight: 700; + max-width: min(40ch, 46vw); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; + } + @media (max-width: 600px) { .dm-meta-current { max-width: 56vw; } } + .dm-meta-items { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 20px; } + .dm-meta-item { + display: inline-flex; align-items: center; gap: 7px; + font-size: 13.5px; font-weight: 600; color: #475569; + } + .dm-meta-item svg { color: var(--dm-red); flex: 0 0 auto; } + .dm-meta-author { color: #0f172a; font-weight: 700; } + @media (max-width: 600px) { .dm-meta-bar { gap: 12px; } } + .dm-blog-layout { + display: grid; grid-template-columns: minmax(0,1fr) 320px; + /* Tighter gap gives the reading column more room next to the 320px sidebar. */ + gap: clamp(28px, 3vw, 56px); align-items: start; + } + @media (max-width: 1024px) { + .dm-blog-layout { grid-template-columns: 1fr; gap: 48px; } + /* Single-column (tablet/mobile): cap the reading column and centre it so the + article never sits left-aligned with a large empty right gutter. */ + .dm-blog-main { max-width: 900px; margin-inline: auto; } + } + .dm-blog-main { min-width: 0; } + + /* ── Intro lead ── */ + .dm-blog-intro { + max-width: var(--dm-measure); + font-size: clamp(18px, 1.5vw, 20px); line-height: 1.65; font-weight: 500; + color: #475569; margin: 0 0 clamp(26px, 3vw, 38px); padding-left: 20px; + border-left: 3px solid var(--dm-red); + } + + /* ── Article body ── */ + .dm-article-body { max-width: var(--dm-measure); } + .dm-article-p { + font-size: 18px !important; line-height: 1.8 !important; color: #334155; font-weight: 450; + margin: 0 0 var(--dm-space-p); + } + .dm-article-h2 { + font-size: clamp(23px, 2vw, 30px) !important; font-weight: 800 !important; letter-spacing: -.3px !important; + color: #0f172a !important; line-height: 1.3 !important; margin: 48px 0 var(--dm-space-h); + text-wrap: balance; + } + /* Each article block is wrapped in its OWN ScrollReveal
    , so a bare + :first-child rule matched every heading (each is the only child of its + wrapper) and zeroed its top margin, collapsing the gap above every + section heading. Scope the reset to only the article body's first block. */ + .dm-article-body > :first-child :where(.dm-article-h2, .dm-article-h3), + .dm-article-body > .dm-article-h2:first-child, + .dm-article-body > .dm-article-h3:first-child { margin-top: 0; } + .dm-article-h3 { + font-size: clamp(19px, 1.5vw, 23px) !important; font-weight: 800 !important; letter-spacing: -.2px !important; + color: #1e293b !important; line-height: 1.34 !important; margin: 40px 0 18px; + text-wrap: balance; + } + @media (max-width: 600px) { + .dm-article-p { font-size: 16px !important; } + .dm-article-ul li, .dm-article-ol li { font-size: 15.5px; } + .dm-article-h2 { font-size: clamp(22px, 6vw, 28px) !important; margin-top: 38px; } + .dm-article-h3 { font-size: clamp(18px, 5vw, 22px) !important; } + } + + .dm-article-ul, .dm-article-ol { + /* Top margin (was 0) separates the list from the paragraph above it; + matching bottom margin keeps it clear of the next heading/paragraph. + Slightly larger than --dm-space-p so the list reads as its own block. */ + margin: clamp(26px, 2.4vw, 32px) 0 clamp(26px, 2.4vw, 32px); + padding-left: 2px; list-style: none; + display: flex; flex-direction: column; gap: 15px; + } + /* Prefixed with .dm-article-body so these beat the theme's global + ".logico-front-end ul li:before" fontello-glyph bullet (specificity 0,1,3), + which otherwise replaces our clean red dot with a misaligned checkmark glyph + and adds its own 1.7em indent. */ + .dm-article-body .dm-article-ul li, .dm-article-body .dm-article-ol li { + position: relative; padding-left: 34px; + font-size: 17px; line-height: 1.65; color: #334155; font-weight: 450; + } + .dm-article-body .dm-article-ul li::before { + content: ""; position: absolute; left: 7px; top: 10px; + width: 8px; height: 8px; border-radius: 50%; background: var(--dm-red); + /* kill any inherited fontello glyph from the global rule */ + font-size: 0; line-height: 0; + } + .dm-article-ol { counter-reset: dm-li; } + .dm-article-body .dm-article-ol li { counter-increment: dm-li; } + .dm-article-body .dm-article-ol li::before { + content: counter(dm-li); position: absolute; left: 0; top: 0; + width: 24px; height: 24px; border-radius: 7px; + background: rgba(192,18,39,0.10); color: var(--dm-red); + font-size: 12px; font-weight: 800; display: flex; align-items: center; justify-content: center; + } + + /* ── Quote ── */ + .dm-article-quote { + position: relative; margin: var(--dm-space-quote) 0; padding: 30px 32px 30px 64px; + background: linear-gradient(135deg, #fbf2f3 0%, #fdf7f8 100%); + border-left: 4px solid var(--dm-red); border-radius: 0 18px 18px 0; + box-shadow: 0 8px 28px rgba(192, 18, 39, 0.06); + } + .dm-article-quote::before { + content: "\201C"; position: absolute; left: 22px; top: 8px; + font-family: Georgia, "Times New Roman", serif; + font-size: 64px; line-height: 1; color: rgba(192, 18, 39, 0.28); font-weight: 700; + } + .dm-article-quote p { + font-size: clamp(19px, 2vw, 23px); line-height: 1.5; font-weight: 600; + font-style: italic; color: #1e293b; margin: 0; + } + .dm-article-quote cite { + display: block; margin-top: 16px; font-size: 13px; font-weight: 700; + font-style: normal; color: var(--dm-red); text-transform: uppercase; letter-spacing: .6px; + } + @media (max-width: 600px) { .dm-article-quote { padding: 26px 22px; } .dm-article-quote::before { display: none; } } + + /* ── Images ── */ + .dm-article-figure { margin: var(--dm-space-img) 0; } + .dm-article-figure-img { + position: relative; display: block; width: 100%; aspect-ratio: 16 / 9; + border-radius: var(--dm-radius-img); overflow: hidden; box-shadow: 0 14px 34px rgba(15,23,42,0.10); + } + .dm-article-figure figcaption { + margin-top: 14px; font-size: 13.5px; color: #94a3b8; font-weight: 500; + text-align: center; font-style: italic; + } + + /* ── Sidebar ── */ + .dm-blog-aside-wrap { position: relative; } + .dm-blog-sidebar { + display: flex; flex-direction: column; gap: 18px; + position: sticky; top: var(--dm-sticky-top); + } + @media (max-width: 1024px) { .dm-blog-sidebar { position: static; gap: 20px; } } + + .dm-blog-widget { + background: #fff; border: var(--dm-border); border-radius: var(--dm-radius-card); + padding: 20px; box-shadow: var(--dm-shadow-card); + } + .dm-blog-widget-title { + font-size: 13px !important; font-weight: 700 !important; text-transform: uppercase !important; + letter-spacing: .8px !important; line-height: 1.35 !important; color: #0f172a !important; + margin: 0 0 15px; padding: 0 0 12px; + border-bottom: 1px solid rgba(15,23,42,0.08); + overflow: visible; white-space: normal; word-break: normal; + } + + /* Search */ + .dm-sr-only { + position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; + overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; + } + .dm-blog-search { position: relative; } + .dm-blog-search-form { position: relative; } + .dm-blog-search-input { + width: 100%; height: 46px; border: 1.5px solid #e2e8f0; border-radius: 12px; + padding: 0 42px 0 15px; font-size: 14px; font-family: inherit; color: #0f172a; + background: #f8fafc; transition: border-color .2s ease, box-shadow .2s ease, background .2s ease; + } + .dm-blog-search-input::placeholder { color: #9c9c9c; } + .dm-blog-search-input:focus { + outline: none; border-color: var(--dm-red); background: #fff; + box-shadow: 0 0 0 3px rgba(192,18,39,0.11); + } + .dm-blog-search-icon { + position: absolute; right: 14px; top: 50%; transform: translateY(-50%); + color: #94a3b8; pointer-events: none; display: flex; + } + .dm-blog-search-results { + position: absolute; z-index: 20; top: calc(100% + 8px); left: 0; right: 0; + background: #fff; border: 1px solid rgba(15,23,42,0.10); border-radius: 14px; + box-shadow: 0 18px 42px rgba(15,23,42,0.14); overflow: hidden; + } + .dm-blog-search-results ul { list-style: none; margin: 0; padding: 6px; } + .dm-blog-search-result { + display: flex; flex-direction: column; gap: 3px; padding: 10px 12px; + border-radius: 10px; text-decoration: none; transition: background .15s ease; + } + .dm-blog-search-result:hover { background: #f8fafc; } + .dm-blog-search-result-cat { + font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .8px; color: var(--dm-red); + } + .dm-blog-search-result-title { font-size: 13.5px; font-weight: 600; color: #1e293b; line-height: 1.35; } + .dm-blog-search-empty { margin: 0; padding: 14px 12px; font-size: 13px; color: #64748b; } + + /* Recent posts */ + .dm-blog-recent { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 15px; } + .dm-blog-recent-item { display: flex; gap: 13px; align-items: center; text-decoration: none; } + .dm-blog-recent-thumb { + position: relative; flex: 0 0 62px; width: 62px; height: 62px; + border-radius: 13px; overflow: hidden; background: #f1f5f9; + } + .dm-blog-recent-meta { display: flex; flex-direction: column; gap: 4px; min-width: 0; } + .dm-blog-recent-title { + font-size: 13.5px; font-weight: 700; color: #1e293b; line-height: 1.35; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-blog-recent-item:hover .dm-blog-recent-title { color: var(--dm-red); } + .dm-blog-recent-date { font-size: 11.5px; font-weight: 600; color: #94a3b8; } + + /* Categories */ + .dm-blog-categories { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; } + .dm-blog-category-item { + display: flex; align-items: center; justify-content: space-between; gap: 10px; + padding: 11px 2px; text-decoration: none; font-size: 14px; font-weight: 600; color: #334155 !important; + border-bottom: 1px solid rgba(15,23,42,0.06); transition: color .2s ease, padding-left .2s ease; + } + .dm-blog-categories li:last-child .dm-blog-category-item { border-bottom: none; } + .dm-blog-category-item:hover { color: var(--dm-red); padding-left: 6px; } + .dm-blog-category-item > span:first-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } + .dm-blog-category-count { + flex: 0 0 auto; font-size: 11px; font-weight: 800; color: #94a3b8; background: #f1f5f9; + min-width: 24px; height: 22px; border-radius: 7px; display: inline-flex; + align-items: center; justify-content: center; padding: 0 7px; + } + + /* CTA card */ + .dm-blog-cta-card { background: #1f1f1f; border-color: #1f1f1f; } + .dm-blog-cta-title { font-size: 18px !important; font-weight: 800 !important; color: #fff !important; line-height: 1.32 !important; margin: 0 0 10px; letter-spacing: -.2px !important; } + .dm-blog-cta-text { font-size: 13.5px; line-height: 1.6; color: #c7c7c7; margin: 0 0 20px; font-weight: 450; } + .dm-blog-cta-btn { + display: inline-flex; align-items: center; gap: 8px; + background: var(--dm-red); color: #fff !important; font-size: 13.5px; font-weight: 700; + padding: 12px 22px; border-radius: 12px; text-decoration: none; + transition: background .2s ease, transform .2s ease; + } + .dm-blog-cta-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } +c:["$","div",null,{"className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"Article\",\"headline\":\"Battery Simulation: The Secret to EV Route Pre-Validation\",\"description\":\"Before a rider leaves the hub, every EV route should be checked against real charge capacity and the expected return plan.\",\"image\":[\"https://www.doormile.com/images/blog-post-pic-3.webp\"],\"datePublished\":\"2025-06-12T00:00:00.000Z\",\"dateModified\":\"2025-06-12T00:00:00.000Z\",\"author\":{\"@type\":\"Organization\",\"name\":\"Doormile Team\",\"url\":\"https://www.doormile.com\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Doormile\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://www.doormile.com/images/cropped-image-2.png\"}},\"mainEntityOfPage\":{\"@type\":\"WebPage\",\"@id\":\"https://www.doormile.com/blog/battery-simulation-the-secret-to-ev-route-pre-validation\"},\"articleSection\":\"EV Fleet\"}"}}],["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https://www.doormile.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https://www.doormile.com/blog\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Battery Simulation: The Secret to EV Route Pre-Validation\",\"item\":\"https://www.doormile.com/blog/battery-simulation-the-secret-to-ev-route-pre-validation\"}]}"}}],["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":[["$","article",null,{"className":"dm-single-blog","children":[["$","link",null,{"rel":"preload","as":"image","href":"/images/blog-post-pic-3.webp"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$17"}}],"$L18","$L19"]}],"$L1a"]}]}]]}] +1b:I[22016,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],""] +1c:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"ScrollReveal"] +18:["$","div",null,{"className":"custom-standard-hero-container","children":["$","div",null,{"className":"custom-standard-hero-card dm-banner-card","style":{"backgroundImage":"url(/images/blog-post-pic-3.webp)","--hero-overlay":"linear-gradient(180deg, rgba(0,0,0,0.38) 0%, rgba(0,0,0,0.46) 55%, rgba(0,0,0,0.60) 100%)"},"children":["$","div",null,{"className":"e-con-inner dm-banner-inner","children":[["$","span",null,{"className":"dm-banner-category","children":"EV Fleet"}],["$","h1",null,{"className":"dm-banner-title","children":"Battery Simulation: The Secret to EV Route Pre-Validation"}]]}]}]}] +19:["$","div",null,{"className":"dm-blog-wrap","children":[["$","div",null,{"className":"dm-meta-bar","children":[["$","nav",null,{"className":"dm-meta-breadcrumb","aria-label":"Breadcrumb","children":["$","ol",null,{"children":[["$","li",null,{"children":["$","$L1b",null,{"href":"/","children":"Home"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"children":["$","$L1b",null,{"href":"/blog","children":"Blog"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"aria-current":"page","className":"dm-meta-current","children":"Battery Simulation: The Secret to EV Route Pre-Validation"}]]}]}],["$","div",null,{"className":"dm-meta-items","children":[["$","span",null,{"className":"dm-meta-item dm-meta-author","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","path",null,{"d":"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"}],["$","circle",null,{"cx":"12","cy":"7","r":"4"}]]}],"Doormile Team"]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","rect",null,{"x":"3","y":"4","width":"18","height":"18","rx":"2"}],["$","line",null,{"x1":"16","y1":"2","x2":"16","y2":"6"}],["$","line",null,{"x1":"8","y1":"2","x2":"8","y2":"6"}],["$","line",null,{"x1":"3","y1":"10","x2":"21","y2":"10"}]]}],["$","time",null,{"dateTime":"2025-06-12","children":"Jun 12, 2025"}]]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","circle",null,{"cx":"12","cy":"12","r":"9"}],["$","polyline",null,{"points":"12 7 12 12 15 14"}]]}],2," min read"]}]]}]]}],["$","div",null,{"className":"dm-blog-layout","children":[["$","div",null,{"className":"dm-blog-main","children":[["$","p",null,{"className":"dm-blog-intro","children":"A stranded EV is not just a late delivery. It means a vehicle is out of service, a customer is waiting, and the hub has to arrange recovery. Range checks need to happen before dispatch."}],["$","div",null,{"className":"dm-article-body","children":[["$","$L1c","0",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"In last-mile logistics, a missed SLA is rarely caused by one big failure. It usually comes from small delays adding up across a route. Battery Simulation: The Secret to EV Route Pre-Validation looks at how delivery teams can spot those delays early and plan around them before vehicles leave the hub."}]}],["$","$L1c","1",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"Why this matters for fleet teams"}]}],["$","$L1c","2",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"Every extra kilometre costs money. It uses fuel or charge, adds rider time, wears down vehicles, and increases the chance of a late delivery. When routes are built from fixed zones or old habits, those costs repeat every day."}]}],["$","$L1c","3",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ul",null,{"className":"dm-article-ul","children":[["$","li","0",{"children":"Fewer vehicles needed for the same number of drops"}],["$","li","1",{"children":"Lower cost per drop through better stop sequencing"}],["$","li","2",{"children":"ETAs that match traffic, distance, and delivery windows"}],["$","li","3",{"children":"Less fuel or charge used per completed order"}]]}]}],["$","$L1c","4",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h3",null,{"className":"dm-article-h3","children":"From orders to dispatch"}]}],["$","$L1c","5",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"A good dispatch plan starts with the basics: order locations, promised delivery windows, rider capacity, vehicle range, and known traffic trouble spots. MileTruth™ checks those inputs before dispatch so the team is not fixing avoidable mistakes on the road."}]}],["$","$L1c","6",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","figure",null,{"className":"dm-article-figure","children":["$L1d","$L1e"]}]}],"$L1f","$L20","$L21","$L22","$L23"]}]]}],"$L24"]}]]}] +25:T2021, + .dm-blog-footer { + font-family: var(--font-manrope), sans-serif; --dm-red: #c01227; --dm-red-hover: #e31d32; + /* The global theme applies 72px top/bottom section padding — strip it so the + inner container is the single source of vertical rhythm (no double gap). */ + padding: 0 !important; + } + /* Neutralize the global theme's 120/80/60px UPPERCASE heading rules */ + .dm-blog-footer :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline) */ + .dm-blog-footer a { text-decoration: none !important; } + /* Shared content container — mirrors SingleBlog's .dm-blog-wrap (same 1280px + max-width + 20→40px horizontal padding) so Prev/Next, Related and the CTA + align to the exact same left/right edges as the article body above. + Vertical rhythm: ~64px from the article end to the Prev/Next divider, then a + consistent ~64–72px section→section gap (no 120px+ voids). */ + .dm-blog-footer-inner { + max-width: 1280px; margin: 0 auto; + /* Compact vertical rhythm on an 8px system. Top padding sets the + article→Prev/Next gap (~24–32px); the inter-section gap sets the + Prev/Next→Related gap (~32–48px). No large arbitrary voids. */ + /* Minimal bottom padding — the global site footer already contributes its + own 20px top inset, so the CTA banner sits close to it without a void. */ + padding: clamp(24px, 3vw, 32px) clamp(20px, 4vw, 40px) clamp(8px, 1.5vw, 16px); + display: flex; flex-direction: column; gap: clamp(32px, 4vw, 48px); + } + @media (max-width: 767px) { + .dm-blog-footer-inner { + padding-left: 16px; + padding-right: 16px; + } + } + + /* Prev / Next */ + .dm-prevnext { + display: grid; grid-template-columns: 1fr 1fr; gap: 20px; + /* Halved from 40px: tight divider→cards spacing without crowding. */ + padding-top: clamp(16px, 2vw, 24px); border-top: 1px solid rgba(15,23,42,0.08); + } + @media (max-width: 640px) { .dm-prevnext { grid-template-columns: 1fr; } } + .dm-prevnext-placeholder { display: block; } + .dm-prevnext-card { + display: flex; gap: 16px; align-items: center; padding: 16px; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + text-decoration: none; transition: transform .3s ease, box-shadow .3s ease, border-color .3s ease; + } + .dm-prevnext-card:hover { + transform: translateY(-4px); border-color: rgba(192,18,39,0.2); + box-shadow: 0 16px 34px rgba(192,18,39,0.10); + } + .dm-prevnext-thumb { + position: relative; flex: 0 0 80px; width: 80px; height: 80px; + border-radius: 16px; overflow: hidden; background: #f1f5f9; + } + .dm-prevnext-text { display: flex; flex-direction: column; gap: 5px; min-width: 0; } + .dm-prevnext-next { text-align: right; } + .dm-prevnext-next .dm-prevnext-text { align-items: flex-end; } + .dm-prevnext-label { + display: inline-flex; align-items: center; gap: 6px; + font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: 1px; color: var(--dm-red); + } + .dm-prevnext-cat { font-size: 11px; font-weight: 700; color: #94a3b8; text-transform: uppercase; letter-spacing: .5px; } + .dm-prevnext-title { + font-size: 15.5px; font-weight: 700; color: #1e293b; line-height: 1.4; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-prevnext-card:hover .dm-prevnext-title { color: var(--dm-red); } + + /* Related */ + .dm-related-heading { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 850 !important; letter-spacing: -.4px !important; + line-height: 1.25 !important; color: #0f172a !important; margin: 0 0 24px; + } + .dm-related-grid { + display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; + } + @media (max-width: 1024px) { .dm-related-grid { grid-template-columns: repeat(2, 1fr); } } + @media (max-width: 700px) { .dm-related-grid { grid-template-columns: 1fr; gap: 24px; } } + + .dm-related-card { + display: flex; flex-direction: column; height: 100%; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + overflow: hidden; box-shadow: 0 4px 24px rgba(15,23,42,0.05); text-decoration: none; + transition: transform .4s cubic-bezier(0.2,0.8,0.2,1), box-shadow .4s ease, border-color .4s ease; + } + .dm-related-card:hover { + transform: translateY(-8px); box-shadow: 0 22px 44px rgba(192,18,39,0.13); + border-color: rgba(192,18,39,0.2); + } + .dm-related-img { + position: relative; width: 100%; aspect-ratio: 16 / 10; overflow: hidden; background: #f1f5f9; + } + .dm-related-img img { transition: transform .5s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-img img { transform: scale(1.05); } + .dm-related-badge { + position: absolute; top: 14px; left: 14px; z-index: 5; background: var(--dm-red); color: #fff; + font-size: 9px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.2px; + padding: 5px 11px; border-radius: 8px; box-shadow: 0 4px 12px rgba(192,18,39,0.25); + } + .dm-related-body { display: flex; flex-direction: column; flex: 1; padding: 22px; } + .dm-related-card-title { + font-size: 17px !important; font-weight: 800 !important; color: #1e293b !important; line-height: 1.4 !important; + letter-spacing: -.2px !important; margin: 0 0 10px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-related-card:hover .dm-related-card-title { color: var(--dm-red); } + .dm-related-card-excerpt { + font-size: 13.5px; font-weight: 500; color: #64748b; line-height: 1.6; margin: 0 0 18px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + } + .dm-related-readmore { + margin-top: auto; display: inline-flex; align-items: center; gap: 7px; + font-size: 12.5px; font-weight: 800; color: var(--dm-red); + text-transform: uppercase; letter-spacing: .6px; + } + .dm-related-readmore-arrow { transition: transform .3s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-readmore-arrow { transform: translateX(5px); } + + /* Contact CTA banner */ + .dm-blog-contact-cta { + display: flex; align-items: center; justify-content: space-between; gap: 32px; + flex-wrap: wrap; + background: linear-gradient(135deg, #1a1a1a 0%, #2d1417 100%); + border-radius: 30px; padding: clamp(32px, 4vw, 56px); + position: relative; overflow: hidden; + } + .dm-blog-contact-cta::after { + content: ""; position: absolute; right: -80px; top: -80px; width: 300px; height: 300px; + background: radial-gradient(circle, rgba(192,18,39,0.40), transparent 70%); + pointer-events: none; + } + .dm-blog-contact-cta-content { position: relative; z-index: 1; max-width: 640px; } + .dm-blog-contact-eyebrow { + display: inline-block; font-size: 12px; font-weight: 800; text-transform: uppercase; + letter-spacing: 1.4px; color: #ff8088; margin-bottom: 14px; + } + .dm-blog-contact-title { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 800 !important; line-height: 1.25 !important; + letter-spacing: -.3px !important; color: #ffffff !important; margin: 0 0 12px; text-wrap: balance; + } + .dm-blog-contact-sub { + font-size: 15.5px; line-height: 1.65; color: #e2e2e2; margin: 0; font-weight: 450; + } + .dm-blog-contact-btn { + position: relative; z-index: 1; flex-shrink: 0; + display: inline-flex; align-items: center; justify-content: center; gap: 10px; + background: var(--dm-red); color: #fff !important; font-size: 15px; font-weight: 700; + padding: 16px 32px; border-radius: 16px; text-decoration: none; + box-shadow: 0 10px 26px rgba(192,18,39,0.34); + transition: background .2s ease, transform .2s ease; + } + .dm-blog-contact-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } + @media (max-width: 720px) { + .dm-blog-contact-cta { flex-direction: column; align-items: flex-start; gap: 26px; } + .dm-blog-contact-btn { width: 100%; } + } +1a:["$","section",null,{"className":"dm-blog-footer","aria-label":"More articles","children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$25"}}],"$L26"]}] +27:I[5500,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"Image"] +28:I[23096,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"default"] +1d:["$","span",null,{"className":"dm-article-figure-img","children":["$","$L27",null,{"src":"/images/blog-post-pic-3.webp","alt":"Battery Simulation: The Secret to EV Route Pre-Validation","fill":true,"sizes":"(max-width: 768px) 100vw, 760px","style":{"objectFit":"cover"}}]}] +1e:["$","figcaption",null,{"children":"EV Fleet: route planning decisions made before dispatch."}] +1f:["$","$L1c","7",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","blockquote",null,{"className":"dm-article-quote","children":[["$","p",null,{"children":"A route should be checked before the rider leaves, not explained after the customer calls."}],["$","cite",null,{"children":"Doormile Operations"}]]}]}] +20:["$","$L1c","8",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"Putting it into practice"}]}] +21:["$","$L1c","9",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"The best improvements usually start with simple measurements. Track distance per route, failed delivery windows, rider idle time, and orders moved between vehicles after dispatch. Those numbers show where the operation is leaking time."}]}] +22:["$","$L1c","10",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ol",null,{"className":"dm-article-ol","children":[["$","li","0",{"children":"Benchmark today's distance, fleet size, and on-time rate."}],["$","li","1",{"children":"Include vehicle capacity, delivery windows, rider shifts, and battery charge."}],["$","li","2",{"children":"Check routes against traffic and customer commitments before dispatch."}],["$","li","3",{"children":"Compare the next dispatch cycle against the old plan."}]]}]}] +23:["$","$L1c","11",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"Better routing is not about pushing riders harder. It is about giving them a plan that already accounts for the real day ahead."}]}] +24:["$","div",null,{"className":"dm-blog-aside-wrap","children":["$","aside",null,{"className":"dm-blog-sidebar","aria-label":"Blog sidebar","children":[["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Search"}],["$","$L28",null,{}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Recent Posts"}],["$","ul",null,{"className":"dm-blog-recent","children":[["$","li","how-ai-is-transforming-last-mile-ev-delivery",{"children":["$","$L1b",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"How Better Planning Improves Last-Mile EV Delivery"}],["$","time",null,{"dateTime":"2025-10-02","className":"dm-blog-recent-date","children":"Oct 2, 2025"}]]}]]}]}],["$","li","42-less-distance-insights-from-our-hyderabad-hub",{"children":["$","$L1b",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}],["$","time",null,{"dateTime":"2025-09-18","className":"dm-blog-recent-date","children":"Sep 18, 2025"}]]}]]}]}],["$","li","miletruth-ai-10-stages-to-smarter-dispatch",{"children":["$","$L1b",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","time",null,{"dateTime":"2025-09-05","className":"dm-blog-recent-date","children":"Sep 5, 2025"}]]}]]}]}],["$","li","the-ev-paradox-solving-range-anxiety-for-urban-fleets",{"children":["$","$L1b",null,{"href":"/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/ev-paradox.webp","alt":"The EV Paradox: Solving Range Anxiety for Urban Fleets","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}],["$","time",null,{"dateTime":"2025-08-21","className":"dm-blog-recent-date","children":"Aug 21, 2025"}]]}]]}]}]]}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Categories"}],["$","ul",null,{"className":"dm-blog-categories","children":[["$","li","Case Study",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Case Study"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","EV Fleet",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"EV Fleet"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}],["$","li","Fleet Management",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Fleet Management"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","MileTruth",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"MileTruth"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],"$L29","$L2a","$L2b"]}]]}],"$L2c"]}]}] +26:["$","div",null,{"className":"dm-blog-footer-inner","children":[["$","nav",null,{"className":"dm-prevnext","aria-label":"Article navigation","children":[["$","$L1b",null,{"href":"/blog/how-doormile-maintains-99-9-sla-compliance-at-scale","className":"dm-prevnext-card dm-prevnext-prev","children":[["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L27",null,{"src":"/images/last-mile-approach.webp","alt":"How Doormile Maintains 99.9% SLA Compliance at Scale","fill":true,"sizes":"80px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-prevnext-text","children":[["$","span",null,{"className":"dm-prevnext-label","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"19","y1":"12","x2":"5","y2":"12"}],["$","polyline",null,{"points":"12 19 5 12 12 5"}]]}],"Previous"]}],["$","span",null,{"className":"dm-prevnext-cat","children":"Operations"}],["$","span",null,{"className":"dm-prevnext-title","children":"How Doormile Maintains 99.9% SLA Compliance at Scale"}]]}]]}],["$","span",null,{"className":"dm-prevnext-placeholder"}]]}],["$","div",null,{"className":"dm-related","children":[["$","h2",null,{"className":"dm-related-heading","children":"Related Articles"}],["$","div",null,{"className":"dm-related-grid","children":[["$","$L1c","the-ev-paradox-solving-range-anxiety-for-urban-fleets",{"delay":0,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L27",null,{"src":"/images/ev-paradox.webp","alt":"The EV Paradox: Solving Range Anxiety for Urban Fleets","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"EV Fleet"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"Electric vehicles lower running costs, but battery range changes how routes must be planned before dispatch."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}],["$","$L1c","how-ai-is-transforming-last-mile-ev-delivery",{"delay":0.08,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L27",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Technology"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"How Better Planning Improves Last-Mile EV Delivery"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"A practical look at how EV fleets can plan routes, manage charging, and keep delivery promises without adding unnecessary vehicles."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}],["$","$L1c","42-less-distance-insights-from-our-hyderabad-hub",{"delay":0.16,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-related-card","children":["$L2d","$L2e"]}]}]]}]]}],"$L2f"]}] +29:["$","li","Operations",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Operations"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +2a:["$","li","Sustainability",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Sustainability"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +2b:["$","li","Technology",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Technology"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}] +2c:["$","section",null,{"className":"dm-blog-widget dm-blog-cta-card","children":[["$","h2",null,{"className":"dm-blog-cta-title","children":"Planning delivery routes?"}],["$","p",null,{"className":"dm-blog-cta-text","children":"Talk to us about reducing wasted distance, missed windows, and avoidable vehicle time."}],["$","$L1b",null,{"href":"/contact","className":"dm-blog-cta-btn","children":["Contact Us",["$","svg",null,{"width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] +2d:["$","div",null,{"className":"dm-related-img","children":[["$","$L27",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Case Study"}]]}] +2e:["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"A practical look at how one Hyderabad hub reduced distance, used fewer vehicles, and protected delivery windows with better route planning."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] +2f:["$","div",null,{"className":"dm-blog-contact-cta","children":[["$","div",null,{"className":"dm-blog-contact-cta-content","children":[["$","span",null,{"className":"dm-blog-contact-eyebrow","children":"Let's talk logistics"}],["$","h2",null,{"className":"dm-blog-contact-title","children":"Ready to move smarter with Doormile?"}],["$","p",null,{"className":"dm-blog-contact-sub","children":"Tell us about your fleet and routes — we'll show you where the distance, vehicles and emissions are hiding."}]]}],["$","$L1b",null,{"href":"/contact","className":"dm-blog-contact-btn","children":["Get in Touch",["$","svg",null,{"width":"20","height":"20","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] +12:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] +30:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +f:null +14:[["$","title","0",{"children":"Battery Simulation: The Secret to EV Route Pre-Validation – Doormile"}],["$","meta","1",{"name":"description","content":"Before a rider leaves the hub, every EV route should be checked against real charge capacity and the expected return plan."}],["$","meta","2",{"name":"author","content":"Doormile Team"}],["$","meta","3",{"name":"keywords","content":"EV Fleet,last-mile logistics,EV fleet,MileTruth,route optimisation"}],["$","meta","4",{"name":"robots","content":"index, follow"}],["$","link","5",{"rel":"canonical","href":"https://www.doormile.com/blog/battery-simulation-the-secret-to-ev-route-pre-validation"}],["$","meta","6",{"property":"og:title","content":"Battery Simulation: The Secret to EV Route Pre-Validation"}],["$","meta","7",{"property":"og:description","content":"Before a rider leaves the hub, every EV route should be checked against real charge capacity and the expected return plan."}],["$","meta","8",{"property":"og:url","content":"https://www.doormile.com/blog/battery-simulation-the-secret-to-ev-route-pre-validation"}],["$","meta","9",{"property":"og:site_name","content":"Doormile"}],["$","meta","10",{"property":"og:image","content":"https://www.doormile.com/images/blog-post-pic-3.webp"}],["$","meta","11",{"property":"og:image:alt","content":"Battery Simulation: The Secret to EV Route Pre-Validation"}],["$","meta","12",{"property":"og:type","content":"article"}],["$","meta","13",{"property":"article:published_time","content":"2025-06-12T00:00:00.000Z"}],["$","meta","14",{"property":"article:author","content":"Doormile Team"}],["$","meta","15",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","16",{"name":"twitter:title","content":"Battery Simulation: The Secret to EV Route Pre-Validation"}],["$","meta","17",{"name":"twitter:description","content":"Before a rider leaves the hub, every EV route should be checked against real charge capacity and the expected return plan."}],["$","meta","18",{"name":"twitter:image","content":"https://www.doormile.com/images/blog-post-pic-3.webp"}],["$","link","19",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","20",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","21",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","22",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L30","23",{}]] diff --git a/build/blog/battery-simulation-the-secret-to-ev-route-pre-validation/__next._head.txt b/build/blog/battery-simulation-the-secret-to-ev-route-pre-validation/__next._head.txt new file mode 100644 index 0000000..94bdfb7 --- /dev/null +++ b/build/blog/battery-simulation-the-secret-to-ev-route-pre-validation/__next._head.txt @@ -0,0 +1,6 @@ +1:"$Sreact.fragment" +2:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +3:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +4:"$Sreact.suspense" +5:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +0:{"rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"Battery Simulation: The Secret to EV Route Pre-Validation – Doormile"}],["$","meta","1",{"name":"description","content":"Before a rider leaves the hub, every EV route should be checked against real charge capacity and the expected return plan."}],["$","meta","2",{"name":"author","content":"Doormile Team"}],["$","meta","3",{"name":"keywords","content":"EV Fleet,last-mile logistics,EV fleet,MileTruth,route optimisation"}],["$","meta","4",{"name":"robots","content":"index, follow"}],["$","link","5",{"rel":"canonical","href":"https://www.doormile.com/blog/battery-simulation-the-secret-to-ev-route-pre-validation"}],["$","meta","6",{"property":"og:title","content":"Battery Simulation: The Secret to EV Route Pre-Validation"}],["$","meta","7",{"property":"og:description","content":"Before a rider leaves the hub, every EV route should be checked against real charge capacity and the expected return plan."}],["$","meta","8",{"property":"og:url","content":"https://www.doormile.com/blog/battery-simulation-the-secret-to-ev-route-pre-validation"}],["$","meta","9",{"property":"og:site_name","content":"Doormile"}],["$","meta","10",{"property":"og:image","content":"https://www.doormile.com/images/blog-post-pic-3.webp"}],["$","meta","11",{"property":"og:image:alt","content":"Battery Simulation: The Secret to EV Route Pre-Validation"}],["$","meta","12",{"property":"og:type","content":"article"}],["$","meta","13",{"property":"article:published_time","content":"2025-06-12T00:00:00.000Z"}],["$","meta","14",{"property":"article:author","content":"Doormile Team"}],["$","meta","15",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","16",{"name":"twitter:title","content":"Battery Simulation: The Secret to EV Route Pre-Validation"}],["$","meta","17",{"name":"twitter:description","content":"Before a rider leaves the hub, every EV route should be checked against real charge capacity and the expected return plan."}],["$","meta","18",{"name":"twitter:image","content":"https://www.doormile.com/images/blog-post-pic-3.webp"}],["$","link","19",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","20",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","21",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","22",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L5","23",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/blog/battery-simulation-the-secret-to-ev-route-pre-validation/__next._index.txt b/build/blog/battery-simulation-the-secret-to-ev-route-pre-validation/__next._index.txt new file mode 100644 index 0000000..d0b3355 --- /dev/null +++ b/build/blog/battery-simulation-the-secret-to-ev-route-pre-validation/__next._index.txt @@ -0,0 +1,15 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","template":["$","$La",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/blog/battery-simulation-the-secret-to-ev-route-pre-validation/__next._tree.txt b/build/blog/battery-simulation-the-secret-to-ev-route-pre-validation/__next._tree.txt new file mode 100644 index 0000000..ac35bc5 --- /dev/null +++ b/build/blog/battery-simulation-the-secret-to-ev-route-pre-validation/__next._tree.txt @@ -0,0 +1,10 @@ +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +:HL["/images/blog-post-pic-3.webp","image"] +0:{"tree":{"name":"","param":null,"prefetchHints":16,"slots":{"children":{"name":"blog","param":null,"prefetchHints":0,"slots":{"children":{"name":"slug","param":{"type":"d","key":"battery-simulation-the-secret-to-ev-route-pre-validation","siblings":null},"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}}}}}},"staleTime":300,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/blog/battery-simulation-the-secret-to-ev-route-pre-validation/__next.blog.$d$slug.__PAGE__.txt b/build/blog/battery-simulation-the-secret-to-ev-route-pre-validation/__next.blog.$d$slug.__PAGE__.txt new file mode 100644 index 0000000..b1f238e --- /dev/null +++ b/build/blog/battery-simulation-the-secret-to-ev-route-pre-validation/__next.blog.$d$slug.__PAGE__.txt @@ -0,0 +1,519 @@ +1:"$Sreact.fragment" +8:I[22016,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],""] +9:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"ScrollReveal"] +14:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +15:"$Sreact.suspense" +17:I[5500,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"Image"] +18:I[23096,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"default"] +:HL["/images/blog-post-pic-3.webp","image"] +2:T3d6f, + .dm-single-blog { + --dm-red: #c01227; + --dm-red-hover: #e31d32; + --dm-radius-card: 22px; + --dm-radius-img: 20px; + --dm-radius-badge: 8px; + --dm-shadow-card: 0 4px 24px rgba(15, 23, 42, 0.05); + --dm-border: 1px solid rgba(15, 23, 42, 0.09); + --dm-space-p: 24px; + --dm-space-h: 32px; + --dm-space-img: 32px; + --dm-space-quote: 40px; + --dm-sticky-top: 138px; + --dm-measure: min(1100px, 100%); + font-family: var(--font-manrope), sans-serif; + } + + /* Heading normalization. Beat the global theme's .elementor-kit-5 h1-h6 + (120/80/60px UPPERCASE) rules with !important on our own classes. */ + .dm-single-blog :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline, + specificity 0-1-1) so blog links keep our colors and never get underlined. */ + .dm-single-blog a { text-decoration: none !important; } + + /* Page banner: tall homepage-scale frame with only badge + title inside */ + /* Compound selector (specificity 20) + !important beats the global 800px + single-class height rules so the blog banner can use viewport heights. */ + .custom-standard-hero-card.dm-banner-card { + height: 90vh !important; + min-height: 85vh !important; + } + @media (max-width: 1024px) { + .custom-standard-hero-card.dm-banner-card { height: 80vh !important; min-height: 75vh !important; } + } + @media (max-width: 600px) { + .custom-standard-hero-card.dm-banner-card { height: 78vh !important; min-height: 72vh !important; } + } + + .dm-banner-inner { + position: relative; width: 100%; height: 100%; + display: flex; flex-direction: column; align-items: center; justify-content: center; + text-align: center; gap: clamp(22px, 2.6vw, 34px); + padding: clamp(48px, 8vh, 96px) clamp(20px, 5vw, 48px); + } + + .dm-banner-category { + display: inline-block; background: var(--dm-red); color: #fff; + font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.6px; + padding: 9px 18px; border-radius: 999px; box-shadow: 0 8px 22px rgba(192,18,39,0.45); + } + .dm-banner-title { + font-family: var(--font-manrope), sans-serif !important; + font-size: clamp(34px, 5vw, 60px) !important; font-weight: 850 !important; + line-height: 1.16 !important; letter-spacing: -1.2px !important; + color: #ffffff !important; margin: 0; max-width: 820px; + text-wrap: balance; text-shadow: 0 2px 30px rgba(0,0,0,0.38); + } + @media (max-width: 1024px) { .dm-banner-title { font-size: clamp(32px, 6vw, 48px) !important; max-width: 90%; } } + @media (max-width: 600px) { .dm-banner-title { font-size: clamp(28px, 8vw, 38px) !important; max-width: 90%; } } + + /* Content wrap begins immediately below the banner */ + /* Shared content container: the SAME max-width + horizontal padding is used + by BlogPostFooter (.dm-blog-footer-inner) so the article body, headings, + images, Prev/Next, Related Articles and the CTA banner all align to one + grid with identical left/right edges. Keep both in sync. */ + .dm-blog-wrap { + max-width: 1280px; margin: 0 auto; + /* 20px mobile padding floor → 40px on desktop; matches the footer container. */ + padding: clamp(14px, 2vw, 26px) clamp(20px, 4vw, 40px) 0; + } + @media (max-width: 767px) { + .dm-blog-wrap { + padding-left: 16px; + padding-right: 16px; + } + } + + /* ── Article meta bar (directly under the hero) ── */ + .dm-meta-bar { + display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 14px 24px; + padding: clamp(20px, 2.6vw, 30px) 0; margin-bottom: clamp(26px, 3vw, 44px); + border-bottom: 1px solid rgba(15,23,42,0.10); + } + .dm-meta-breadcrumb ol { + list-style: none; display: flex; flex-wrap: wrap; align-items: center; + gap: 8px; margin: 0; padding: 0; font-size: 13px; font-weight: 600; color: #64748b; + } + .dm-meta-breadcrumb a { color: #64748b !important; text-decoration: none; transition: color .2s ease; } + .dm-meta-breadcrumb a:hover { color: var(--dm-red) !important; } + .dm-meta-sep { color: #cbd5e1; } + .dm-meta-current { + color: #0f172a; font-weight: 700; + max-width: min(40ch, 46vw); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; + } + @media (max-width: 600px) { .dm-meta-current { max-width: 56vw; } } + .dm-meta-items { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 20px; } + .dm-meta-item { + display: inline-flex; align-items: center; gap: 7px; + font-size: 13.5px; font-weight: 600; color: #475569; + } + .dm-meta-item svg { color: var(--dm-red); flex: 0 0 auto; } + .dm-meta-author { color: #0f172a; font-weight: 700; } + @media (max-width: 600px) { .dm-meta-bar { gap: 12px; } } + .dm-blog-layout { + display: grid; grid-template-columns: minmax(0,1fr) 320px; + /* Tighter gap gives the reading column more room next to the 320px sidebar. */ + gap: clamp(28px, 3vw, 56px); align-items: start; + } + @media (max-width: 1024px) { + .dm-blog-layout { grid-template-columns: 1fr; gap: 48px; } + /* Single-column (tablet/mobile): cap the reading column and centre it so the + article never sits left-aligned with a large empty right gutter. */ + .dm-blog-main { max-width: 900px; margin-inline: auto; } + } + .dm-blog-main { min-width: 0; } + + /* ── Intro lead ── */ + .dm-blog-intro { + max-width: var(--dm-measure); + font-size: clamp(18px, 1.5vw, 20px); line-height: 1.65; font-weight: 500; + color: #475569; margin: 0 0 clamp(26px, 3vw, 38px); padding-left: 20px; + border-left: 3px solid var(--dm-red); + } + + /* ── Article body ── */ + .dm-article-body { max-width: var(--dm-measure); } + .dm-article-p { + font-size: 18px !important; line-height: 1.8 !important; color: #334155; font-weight: 450; + margin: 0 0 var(--dm-space-p); + } + .dm-article-h2 { + font-size: clamp(23px, 2vw, 30px) !important; font-weight: 800 !important; letter-spacing: -.3px !important; + color: #0f172a !important; line-height: 1.3 !important; margin: 48px 0 var(--dm-space-h); + text-wrap: balance; + } + /* Each article block is wrapped in its OWN ScrollReveal
    , so a bare + :first-child rule matched every heading (each is the only child of its + wrapper) and zeroed its top margin, collapsing the gap above every + section heading. Scope the reset to only the article body's first block. */ + .dm-article-body > :first-child :where(.dm-article-h2, .dm-article-h3), + .dm-article-body > .dm-article-h2:first-child, + .dm-article-body > .dm-article-h3:first-child { margin-top: 0; } + .dm-article-h3 { + font-size: clamp(19px, 1.5vw, 23px) !important; font-weight: 800 !important; letter-spacing: -.2px !important; + color: #1e293b !important; line-height: 1.34 !important; margin: 40px 0 18px; + text-wrap: balance; + } + @media (max-width: 600px) { + .dm-article-p { font-size: 16px !important; } + .dm-article-ul li, .dm-article-ol li { font-size: 15.5px; } + .dm-article-h2 { font-size: clamp(22px, 6vw, 28px) !important; margin-top: 38px; } + .dm-article-h3 { font-size: clamp(18px, 5vw, 22px) !important; } + } + + .dm-article-ul, .dm-article-ol { + /* Top margin (was 0) separates the list from the paragraph above it; + matching bottom margin keeps it clear of the next heading/paragraph. + Slightly larger than --dm-space-p so the list reads as its own block. */ + margin: clamp(26px, 2.4vw, 32px) 0 clamp(26px, 2.4vw, 32px); + padding-left: 2px; list-style: none; + display: flex; flex-direction: column; gap: 15px; + } + /* Prefixed with .dm-article-body so these beat the theme's global + ".logico-front-end ul li:before" fontello-glyph bullet (specificity 0,1,3), + which otherwise replaces our clean red dot with a misaligned checkmark glyph + and adds its own 1.7em indent. */ + .dm-article-body .dm-article-ul li, .dm-article-body .dm-article-ol li { + position: relative; padding-left: 34px; + font-size: 17px; line-height: 1.65; color: #334155; font-weight: 450; + } + .dm-article-body .dm-article-ul li::before { + content: ""; position: absolute; left: 7px; top: 10px; + width: 8px; height: 8px; border-radius: 50%; background: var(--dm-red); + /* kill any inherited fontello glyph from the global rule */ + font-size: 0; line-height: 0; + } + .dm-article-ol { counter-reset: dm-li; } + .dm-article-body .dm-article-ol li { counter-increment: dm-li; } + .dm-article-body .dm-article-ol li::before { + content: counter(dm-li); position: absolute; left: 0; top: 0; + width: 24px; height: 24px; border-radius: 7px; + background: rgba(192,18,39,0.10); color: var(--dm-red); + font-size: 12px; font-weight: 800; display: flex; align-items: center; justify-content: center; + } + + /* ── Quote ── */ + .dm-article-quote { + position: relative; margin: var(--dm-space-quote) 0; padding: 30px 32px 30px 64px; + background: linear-gradient(135deg, #fbf2f3 0%, #fdf7f8 100%); + border-left: 4px solid var(--dm-red); border-radius: 0 18px 18px 0; + box-shadow: 0 8px 28px rgba(192, 18, 39, 0.06); + } + .dm-article-quote::before { + content: "\201C"; position: absolute; left: 22px; top: 8px; + font-family: Georgia, "Times New Roman", serif; + font-size: 64px; line-height: 1; color: rgba(192, 18, 39, 0.28); font-weight: 700; + } + .dm-article-quote p { + font-size: clamp(19px, 2vw, 23px); line-height: 1.5; font-weight: 600; + font-style: italic; color: #1e293b; margin: 0; + } + .dm-article-quote cite { + display: block; margin-top: 16px; font-size: 13px; font-weight: 700; + font-style: normal; color: var(--dm-red); text-transform: uppercase; letter-spacing: .6px; + } + @media (max-width: 600px) { .dm-article-quote { padding: 26px 22px; } .dm-article-quote::before { display: none; } } + + /* ── Images ── */ + .dm-article-figure { margin: var(--dm-space-img) 0; } + .dm-article-figure-img { + position: relative; display: block; width: 100%; aspect-ratio: 16 / 9; + border-radius: var(--dm-radius-img); overflow: hidden; box-shadow: 0 14px 34px rgba(15,23,42,0.10); + } + .dm-article-figure figcaption { + margin-top: 14px; font-size: 13.5px; color: #94a3b8; font-weight: 500; + text-align: center; font-style: italic; + } + + /* ── Sidebar ── */ + .dm-blog-aside-wrap { position: relative; } + .dm-blog-sidebar { + display: flex; flex-direction: column; gap: 18px; + position: sticky; top: var(--dm-sticky-top); + } + @media (max-width: 1024px) { .dm-blog-sidebar { position: static; gap: 20px; } } + + .dm-blog-widget { + background: #fff; border: var(--dm-border); border-radius: var(--dm-radius-card); + padding: 20px; box-shadow: var(--dm-shadow-card); + } + .dm-blog-widget-title { + font-size: 13px !important; font-weight: 700 !important; text-transform: uppercase !important; + letter-spacing: .8px !important; line-height: 1.35 !important; color: #0f172a !important; + margin: 0 0 15px; padding: 0 0 12px; + border-bottom: 1px solid rgba(15,23,42,0.08); + overflow: visible; white-space: normal; word-break: normal; + } + + /* Search */ + .dm-sr-only { + position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; + overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; + } + .dm-blog-search { position: relative; } + .dm-blog-search-form { position: relative; } + .dm-blog-search-input { + width: 100%; height: 46px; border: 1.5px solid #e2e8f0; border-radius: 12px; + padding: 0 42px 0 15px; font-size: 14px; font-family: inherit; color: #0f172a; + background: #f8fafc; transition: border-color .2s ease, box-shadow .2s ease, background .2s ease; + } + .dm-blog-search-input::placeholder { color: #9c9c9c; } + .dm-blog-search-input:focus { + outline: none; border-color: var(--dm-red); background: #fff; + box-shadow: 0 0 0 3px rgba(192,18,39,0.11); + } + .dm-blog-search-icon { + position: absolute; right: 14px; top: 50%; transform: translateY(-50%); + color: #94a3b8; pointer-events: none; display: flex; + } + .dm-blog-search-results { + position: absolute; z-index: 20; top: calc(100% + 8px); left: 0; right: 0; + background: #fff; border: 1px solid rgba(15,23,42,0.10); border-radius: 14px; + box-shadow: 0 18px 42px rgba(15,23,42,0.14); overflow: hidden; + } + .dm-blog-search-results ul { list-style: none; margin: 0; padding: 6px; } + .dm-blog-search-result { + display: flex; flex-direction: column; gap: 3px; padding: 10px 12px; + border-radius: 10px; text-decoration: none; transition: background .15s ease; + } + .dm-blog-search-result:hover { background: #f8fafc; } + .dm-blog-search-result-cat { + font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .8px; color: var(--dm-red); + } + .dm-blog-search-result-title { font-size: 13.5px; font-weight: 600; color: #1e293b; line-height: 1.35; } + .dm-blog-search-empty { margin: 0; padding: 14px 12px; font-size: 13px; color: #64748b; } + + /* Recent posts */ + .dm-blog-recent { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 15px; } + .dm-blog-recent-item { display: flex; gap: 13px; align-items: center; text-decoration: none; } + .dm-blog-recent-thumb { + position: relative; flex: 0 0 62px; width: 62px; height: 62px; + border-radius: 13px; overflow: hidden; background: #f1f5f9; + } + .dm-blog-recent-meta { display: flex; flex-direction: column; gap: 4px; min-width: 0; } + .dm-blog-recent-title { + font-size: 13.5px; font-weight: 700; color: #1e293b; line-height: 1.35; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-blog-recent-item:hover .dm-blog-recent-title { color: var(--dm-red); } + .dm-blog-recent-date { font-size: 11.5px; font-weight: 600; color: #94a3b8; } + + /* Categories */ + .dm-blog-categories { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; } + .dm-blog-category-item { + display: flex; align-items: center; justify-content: space-between; gap: 10px; + padding: 11px 2px; text-decoration: none; font-size: 14px; font-weight: 600; color: #334155 !important; + border-bottom: 1px solid rgba(15,23,42,0.06); transition: color .2s ease, padding-left .2s ease; + } + .dm-blog-categories li:last-child .dm-blog-category-item { border-bottom: none; } + .dm-blog-category-item:hover { color: var(--dm-red); padding-left: 6px; } + .dm-blog-category-item > span:first-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } + .dm-blog-category-count { + flex: 0 0 auto; font-size: 11px; font-weight: 800; color: #94a3b8; background: #f1f5f9; + min-width: 24px; height: 22px; border-radius: 7px; display: inline-flex; + align-items: center; justify-content: center; padding: 0 7px; + } + + /* CTA card */ + .dm-blog-cta-card { background: #1f1f1f; border-color: #1f1f1f; } + .dm-blog-cta-title { font-size: 18px !important; font-weight: 800 !important; color: #fff !important; line-height: 1.32 !important; margin: 0 0 10px; letter-spacing: -.2px !important; } + .dm-blog-cta-text { font-size: 13.5px; line-height: 1.6; color: #c7c7c7; margin: 0 0 20px; font-weight: 450; } + .dm-blog-cta-btn { + display: inline-flex; align-items: center; gap: 8px; + background: var(--dm-red); color: #fff !important; font-size: 13.5px; font-weight: 700; + padding: 12px 22px; border-radius: 12px; text-decoration: none; + transition: background .2s ease, transform .2s ease; + } + .dm-blog-cta-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } +0:{"rsc":["$","$1","c",{"children":[["$","div",null,{"className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"Article\",\"headline\":\"Battery Simulation: The Secret to EV Route Pre-Validation\",\"description\":\"Before a rider leaves the hub, every EV route should be checked against real charge capacity and the expected return plan.\",\"image\":[\"https://www.doormile.com/images/blog-post-pic-3.webp\"],\"datePublished\":\"2025-06-12T00:00:00.000Z\",\"dateModified\":\"2025-06-12T00:00:00.000Z\",\"author\":{\"@type\":\"Organization\",\"name\":\"Doormile Team\",\"url\":\"https://www.doormile.com\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Doormile\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://www.doormile.com/images/cropped-image-2.png\"}},\"mainEntityOfPage\":{\"@type\":\"WebPage\",\"@id\":\"https://www.doormile.com/blog/battery-simulation-the-secret-to-ev-route-pre-validation\"},\"articleSection\":\"EV Fleet\"}"}}],["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https://www.doormile.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https://www.doormile.com/blog\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Battery Simulation: The Secret to EV Route Pre-Validation\",\"item\":\"https://www.doormile.com/blog/battery-simulation-the-secret-to-ev-route-pre-validation\"}]}"}}],["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":[["$","article",null,{"className":"dm-single-blog","children":[["$","link",null,{"rel":"preload","as":"image","href":"/images/blog-post-pic-3.webp"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$2"}}],"$L3","$L4"]}],"$L5"]}]}]]}],["$L6"],"$L7"]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} +3:["$","div",null,{"className":"custom-standard-hero-container","children":["$","div",null,{"className":"custom-standard-hero-card dm-banner-card","style":{"backgroundImage":"url(/images/blog-post-pic-3.webp)","--hero-overlay":"linear-gradient(180deg, rgba(0,0,0,0.38) 0%, rgba(0,0,0,0.46) 55%, rgba(0,0,0,0.60) 100%)"},"children":["$","div",null,{"className":"e-con-inner dm-banner-inner","children":[["$","span",null,{"className":"dm-banner-category","children":"EV Fleet"}],["$","h1",null,{"className":"dm-banner-title","children":"Battery Simulation: The Secret to EV Route Pre-Validation"}]]}]}]}] +4:["$","div",null,{"className":"dm-blog-wrap","children":[["$","div",null,{"className":"dm-meta-bar","children":[["$","nav",null,{"className":"dm-meta-breadcrumb","aria-label":"Breadcrumb","children":["$","ol",null,{"children":[["$","li",null,{"children":["$","$L8",null,{"href":"/","children":"Home"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"children":["$","$L8",null,{"href":"/blog","children":"Blog"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"aria-current":"page","className":"dm-meta-current","children":"Battery Simulation: The Secret to EV Route Pre-Validation"}]]}]}],["$","div",null,{"className":"dm-meta-items","children":[["$","span",null,{"className":"dm-meta-item dm-meta-author","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","path",null,{"d":"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"}],["$","circle",null,{"cx":"12","cy":"7","r":"4"}]]}],"Doormile Team"]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","rect",null,{"x":"3","y":"4","width":"18","height":"18","rx":"2"}],["$","line",null,{"x1":"16","y1":"2","x2":"16","y2":"6"}],["$","line",null,{"x1":"8","y1":"2","x2":"8","y2":"6"}],["$","line",null,{"x1":"3","y1":"10","x2":"21","y2":"10"}]]}],["$","time",null,{"dateTime":"2025-06-12","children":"Jun 12, 2025"}]]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","circle",null,{"cx":"12","cy":"12","r":"9"}],["$","polyline",null,{"points":"12 7 12 12 15 14"}]]}],2," min read"]}]]}]]}],["$","div",null,{"className":"dm-blog-layout","children":[["$","div",null,{"className":"dm-blog-main","children":[["$","p",null,{"className":"dm-blog-intro","children":"A stranded EV is not just a late delivery. It means a vehicle is out of service, a customer is waiting, and the hub has to arrange recovery. Range checks need to happen before dispatch."}],["$","div",null,{"className":"dm-article-body","children":[["$","$L9","0",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"In last-mile logistics, a missed SLA is rarely caused by one big failure. It usually comes from small delays adding up across a route. Battery Simulation: The Secret to EV Route Pre-Validation looks at how delivery teams can spot those delays early and plan around them before vehicles leave the hub."}]}],["$","$L9","1",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"Why this matters for fleet teams"}]}],["$","$L9","2",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"Every extra kilometre costs money. It uses fuel or charge, adds rider time, wears down vehicles, and increases the chance of a late delivery. When routes are built from fixed zones or old habits, those costs repeat every day."}]}],["$","$L9","3",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ul",null,{"className":"dm-article-ul","children":[["$","li","0",{"children":"Fewer vehicles needed for the same number of drops"}],["$","li","1",{"children":"Lower cost per drop through better stop sequencing"}],["$","li","2",{"children":"ETAs that match traffic, distance, and delivery windows"}],["$","li","3",{"children":"Less fuel or charge used per completed order"}]]}]}],["$","$L9","4",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h3",null,{"className":"dm-article-h3","children":"From orders to dispatch"}]}],["$","$L9","5",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"A good dispatch plan starts with the basics: order locations, promised delivery windows, rider capacity, vehicle range, and known traffic trouble spots. MileTruth™ checks those inputs before dispatch so the team is not fixing avoidable mistakes on the road."}]}],["$","$L9","6",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","figure",null,{"className":"dm-article-figure","children":["$La","$Lb"]}]}],"$Lc","$Ld","$Le","$Lf","$L10"]}]]}],"$L11"]}]]}] +12:T2021, + .dm-blog-footer { + font-family: var(--font-manrope), sans-serif; --dm-red: #c01227; --dm-red-hover: #e31d32; + /* The global theme applies 72px top/bottom section padding — strip it so the + inner container is the single source of vertical rhythm (no double gap). */ + padding: 0 !important; + } + /* Neutralize the global theme's 120/80/60px UPPERCASE heading rules */ + .dm-blog-footer :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline) */ + .dm-blog-footer a { text-decoration: none !important; } + /* Shared content container — mirrors SingleBlog's .dm-blog-wrap (same 1280px + max-width + 20→40px horizontal padding) so Prev/Next, Related and the CTA + align to the exact same left/right edges as the article body above. + Vertical rhythm: ~64px from the article end to the Prev/Next divider, then a + consistent ~64–72px section→section gap (no 120px+ voids). */ + .dm-blog-footer-inner { + max-width: 1280px; margin: 0 auto; + /* Compact vertical rhythm on an 8px system. Top padding sets the + article→Prev/Next gap (~24–32px); the inter-section gap sets the + Prev/Next→Related gap (~32–48px). No large arbitrary voids. */ + /* Minimal bottom padding — the global site footer already contributes its + own 20px top inset, so the CTA banner sits close to it without a void. */ + padding: clamp(24px, 3vw, 32px) clamp(20px, 4vw, 40px) clamp(8px, 1.5vw, 16px); + display: flex; flex-direction: column; gap: clamp(32px, 4vw, 48px); + } + @media (max-width: 767px) { + .dm-blog-footer-inner { + padding-left: 16px; + padding-right: 16px; + } + } + + /* Prev / Next */ + .dm-prevnext { + display: grid; grid-template-columns: 1fr 1fr; gap: 20px; + /* Halved from 40px: tight divider→cards spacing without crowding. */ + padding-top: clamp(16px, 2vw, 24px); border-top: 1px solid rgba(15,23,42,0.08); + } + @media (max-width: 640px) { .dm-prevnext { grid-template-columns: 1fr; } } + .dm-prevnext-placeholder { display: block; } + .dm-prevnext-card { + display: flex; gap: 16px; align-items: center; padding: 16px; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + text-decoration: none; transition: transform .3s ease, box-shadow .3s ease, border-color .3s ease; + } + .dm-prevnext-card:hover { + transform: translateY(-4px); border-color: rgba(192,18,39,0.2); + box-shadow: 0 16px 34px rgba(192,18,39,0.10); + } + .dm-prevnext-thumb { + position: relative; flex: 0 0 80px; width: 80px; height: 80px; + border-radius: 16px; overflow: hidden; background: #f1f5f9; + } + .dm-prevnext-text { display: flex; flex-direction: column; gap: 5px; min-width: 0; } + .dm-prevnext-next { text-align: right; } + .dm-prevnext-next .dm-prevnext-text { align-items: flex-end; } + .dm-prevnext-label { + display: inline-flex; align-items: center; gap: 6px; + font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: 1px; color: var(--dm-red); + } + .dm-prevnext-cat { font-size: 11px; font-weight: 700; color: #94a3b8; text-transform: uppercase; letter-spacing: .5px; } + .dm-prevnext-title { + font-size: 15.5px; font-weight: 700; color: #1e293b; line-height: 1.4; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-prevnext-card:hover .dm-prevnext-title { color: var(--dm-red); } + + /* Related */ + .dm-related-heading { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 850 !important; letter-spacing: -.4px !important; + line-height: 1.25 !important; color: #0f172a !important; margin: 0 0 24px; + } + .dm-related-grid { + display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; + } + @media (max-width: 1024px) { .dm-related-grid { grid-template-columns: repeat(2, 1fr); } } + @media (max-width: 700px) { .dm-related-grid { grid-template-columns: 1fr; gap: 24px; } } + + .dm-related-card { + display: flex; flex-direction: column; height: 100%; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + overflow: hidden; box-shadow: 0 4px 24px rgba(15,23,42,0.05); text-decoration: none; + transition: transform .4s cubic-bezier(0.2,0.8,0.2,1), box-shadow .4s ease, border-color .4s ease; + } + .dm-related-card:hover { + transform: translateY(-8px); box-shadow: 0 22px 44px rgba(192,18,39,0.13); + border-color: rgba(192,18,39,0.2); + } + .dm-related-img { + position: relative; width: 100%; aspect-ratio: 16 / 10; overflow: hidden; background: #f1f5f9; + } + .dm-related-img img { transition: transform .5s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-img img { transform: scale(1.05); } + .dm-related-badge { + position: absolute; top: 14px; left: 14px; z-index: 5; background: var(--dm-red); color: #fff; + font-size: 9px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.2px; + padding: 5px 11px; border-radius: 8px; box-shadow: 0 4px 12px rgba(192,18,39,0.25); + } + .dm-related-body { display: flex; flex-direction: column; flex: 1; padding: 22px; } + .dm-related-card-title { + font-size: 17px !important; font-weight: 800 !important; color: #1e293b !important; line-height: 1.4 !important; + letter-spacing: -.2px !important; margin: 0 0 10px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-related-card:hover .dm-related-card-title { color: var(--dm-red); } + .dm-related-card-excerpt { + font-size: 13.5px; font-weight: 500; color: #64748b; line-height: 1.6; margin: 0 0 18px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + } + .dm-related-readmore { + margin-top: auto; display: inline-flex; align-items: center; gap: 7px; + font-size: 12.5px; font-weight: 800; color: var(--dm-red); + text-transform: uppercase; letter-spacing: .6px; + } + .dm-related-readmore-arrow { transition: transform .3s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-readmore-arrow { transform: translateX(5px); } + + /* Contact CTA banner */ + .dm-blog-contact-cta { + display: flex; align-items: center; justify-content: space-between; gap: 32px; + flex-wrap: wrap; + background: linear-gradient(135deg, #1a1a1a 0%, #2d1417 100%); + border-radius: 30px; padding: clamp(32px, 4vw, 56px); + position: relative; overflow: hidden; + } + .dm-blog-contact-cta::after { + content: ""; position: absolute; right: -80px; top: -80px; width: 300px; height: 300px; + background: radial-gradient(circle, rgba(192,18,39,0.40), transparent 70%); + pointer-events: none; + } + .dm-blog-contact-cta-content { position: relative; z-index: 1; max-width: 640px; } + .dm-blog-contact-eyebrow { + display: inline-block; font-size: 12px; font-weight: 800; text-transform: uppercase; + letter-spacing: 1.4px; color: #ff8088; margin-bottom: 14px; + } + .dm-blog-contact-title { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 800 !important; line-height: 1.25 !important; + letter-spacing: -.3px !important; color: #ffffff !important; margin: 0 0 12px; text-wrap: balance; + } + .dm-blog-contact-sub { + font-size: 15.5px; line-height: 1.65; color: #e2e2e2; margin: 0; font-weight: 450; + } + .dm-blog-contact-btn { + position: relative; z-index: 1; flex-shrink: 0; + display: inline-flex; align-items: center; justify-content: center; gap: 10px; + background: var(--dm-red); color: #fff !important; font-size: 15px; font-weight: 700; + padding: 16px 32px; border-radius: 16px; text-decoration: none; + box-shadow: 0 10px 26px rgba(192,18,39,0.34); + transition: background .2s ease, transform .2s ease; + } + .dm-blog-contact-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } + @media (max-width: 720px) { + .dm-blog-contact-cta { flex-direction: column; align-items: flex-start; gap: 26px; } + .dm-blog-contact-btn { width: 100%; } + } +5:["$","section",null,{"className":"dm-blog-footer","aria-label":"More articles","children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$12"}}],"$L13"]}] +6:["$","script","script-0",{"src":"/_next/static/chunks/0yvxf3ok9gcp_.js","async":true}] +7:["$","$L14",null,{"children":["$","$15",null,{"name":"Next.MetadataOutlet","children":"$@16"}]}] +a:["$","span",null,{"className":"dm-article-figure-img","children":["$","$L17",null,{"src":"/images/blog-post-pic-3.webp","alt":"Battery Simulation: The Secret to EV Route Pre-Validation","fill":true,"sizes":"(max-width: 768px) 100vw, 760px","style":{"objectFit":"cover"}}]}] +b:["$","figcaption",null,{"children":"EV Fleet: route planning decisions made before dispatch."}] +c:["$","$L9","7",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","blockquote",null,{"className":"dm-article-quote","children":[["$","p",null,{"children":"A route should be checked before the rider leaves, not explained after the customer calls."}],["$","cite",null,{"children":"Doormile Operations"}]]}]}] +d:["$","$L9","8",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"Putting it into practice"}]}] +e:["$","$L9","9",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"The best improvements usually start with simple measurements. Track distance per route, failed delivery windows, rider idle time, and orders moved between vehicles after dispatch. Those numbers show where the operation is leaking time."}]}] +f:["$","$L9","10",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ol",null,{"className":"dm-article-ol","children":[["$","li","0",{"children":"Benchmark today's distance, fleet size, and on-time rate."}],["$","li","1",{"children":"Include vehicle capacity, delivery windows, rider shifts, and battery charge."}],["$","li","2",{"children":"Check routes against traffic and customer commitments before dispatch."}],["$","li","3",{"children":"Compare the next dispatch cycle against the old plan."}]]}]}] +10:["$","$L9","11",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"Better routing is not about pushing riders harder. It is about giving them a plan that already accounts for the real day ahead."}]}] +11:["$","div",null,{"className":"dm-blog-aside-wrap","children":["$","aside",null,{"className":"dm-blog-sidebar","aria-label":"Blog sidebar","children":[["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Search"}],["$","$L18",null,{}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Recent Posts"}],["$","ul",null,{"className":"dm-blog-recent","children":[["$","li","how-ai-is-transforming-last-mile-ev-delivery",{"children":["$","$L8",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L17",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"How Better Planning Improves Last-Mile EV Delivery"}],["$","time",null,{"dateTime":"2025-10-02","className":"dm-blog-recent-date","children":"Oct 2, 2025"}]]}]]}]}],["$","li","42-less-distance-insights-from-our-hyderabad-hub",{"children":["$","$L8",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L17",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}],["$","time",null,{"dateTime":"2025-09-18","className":"dm-blog-recent-date","children":"Sep 18, 2025"}]]}]]}]}],["$","li","miletruth-ai-10-stages-to-smarter-dispatch",{"children":["$","$L8",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L17",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","time",null,{"dateTime":"2025-09-05","className":"dm-blog-recent-date","children":"Sep 5, 2025"}]]}]]}]}],["$","li","the-ev-paradox-solving-range-anxiety-for-urban-fleets",{"children":["$","$L8",null,{"href":"/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L17",null,{"src":"/images/ev-paradox.webp","alt":"The EV Paradox: Solving Range Anxiety for Urban Fleets","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}],["$","time",null,{"dateTime":"2025-08-21","className":"dm-blog-recent-date","children":"Aug 21, 2025"}]]}]]}]}]]}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Categories"}],["$","ul",null,{"className":"dm-blog-categories","children":[["$","li","Case Study",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Case Study"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","EV Fleet",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"EV Fleet"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}],["$","li","Fleet Management",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Fleet Management"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","MileTruth",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"MileTruth"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],"$L19","$L1a","$L1b"]}]]}],"$L1c"]}]}] +13:["$","div",null,{"className":"dm-blog-footer-inner","children":[["$","nav",null,{"className":"dm-prevnext","aria-label":"Article navigation","children":[["$","$L8",null,{"href":"/blog/how-doormile-maintains-99-9-sla-compliance-at-scale","className":"dm-prevnext-card dm-prevnext-prev","children":[["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L17",null,{"src":"/images/last-mile-approach.webp","alt":"How Doormile Maintains 99.9% SLA Compliance at Scale","fill":true,"sizes":"80px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-prevnext-text","children":[["$","span",null,{"className":"dm-prevnext-label","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"19","y1":"12","x2":"5","y2":"12"}],["$","polyline",null,{"points":"12 19 5 12 12 5"}]]}],"Previous"]}],["$","span",null,{"className":"dm-prevnext-cat","children":"Operations"}],["$","span",null,{"className":"dm-prevnext-title","children":"How Doormile Maintains 99.9% SLA Compliance at Scale"}]]}]]}],["$","span",null,{"className":"dm-prevnext-placeholder"}]]}],["$","div",null,{"className":"dm-related","children":[["$","h2",null,{"className":"dm-related-heading","children":"Related Articles"}],["$","div",null,{"className":"dm-related-grid","children":[["$","$L9","the-ev-paradox-solving-range-anxiety-for-urban-fleets",{"delay":0,"duration":0.7,"yOffset":30,"children":["$","$L8",null,{"href":"/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L17",null,{"src":"/images/ev-paradox.webp","alt":"The EV Paradox: Solving Range Anxiety for Urban Fleets","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"EV Fleet"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"Electric vehicles lower running costs, but battery range changes how routes must be planned before dispatch."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}],["$","$L9","how-ai-is-transforming-last-mile-ev-delivery",{"delay":0.08,"duration":0.7,"yOffset":30,"children":["$","$L8",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L17",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Technology"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"How Better Planning Improves Last-Mile EV Delivery"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"A practical look at how EV fleets can plan routes, manage charging, and keep delivery promises without adding unnecessary vehicles."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}],["$","$L9","42-less-distance-insights-from-our-hyderabad-hub",{"delay":0.16,"duration":0.7,"yOffset":30,"children":["$","$L8",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-related-card","children":["$L1d","$L1e"]}]}]]}]]}],"$L1f"]}] +16:null +19:["$","li","Operations",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Operations"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +1a:["$","li","Sustainability",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Sustainability"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +1b:["$","li","Technology",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Technology"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}] +1c:["$","section",null,{"className":"dm-blog-widget dm-blog-cta-card","children":[["$","h2",null,{"className":"dm-blog-cta-title","children":"Planning delivery routes?"}],["$","p",null,{"className":"dm-blog-cta-text","children":"Talk to us about reducing wasted distance, missed windows, and avoidable vehicle time."}],["$","$L8",null,{"href":"/contact","className":"dm-blog-cta-btn","children":["Contact Us",["$","svg",null,{"width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] +1d:["$","div",null,{"className":"dm-related-img","children":[["$","$L17",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Case Study"}]]}] +1e:["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"A practical look at how one Hyderabad hub reduced distance, used fewer vehicles, and protected delivery windows with better route planning."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] +1f:["$","div",null,{"className":"dm-blog-contact-cta","children":[["$","div",null,{"className":"dm-blog-contact-cta-content","children":[["$","span",null,{"className":"dm-blog-contact-eyebrow","children":"Let's talk logistics"}],["$","h2",null,{"className":"dm-blog-contact-title","children":"Ready to move smarter with Doormile?"}],["$","p",null,{"className":"dm-blog-contact-sub","children":"Tell us about your fleet and routes — we'll show you where the distance, vehicles and emissions are hiding."}]]}],["$","$L8",null,{"href":"/contact","className":"dm-blog-contact-btn","children":["Get in Touch",["$","svg",null,{"width":"20","height":"20","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] diff --git a/build/blog/battery-simulation-the-secret-to-ev-route-pre-validation/__next.blog.$d$slug.txt b/build/blog/battery-simulation-the-secret-to-ev-route-pre-validation/__next.blog.$d$slug.txt new file mode 100644 index 0000000..e0935ae --- /dev/null +++ b/build/blog/battery-simulation-the-secret-to-ev-route-pre-validation/__next.blog.$d$slug.txt @@ -0,0 +1,5 @@ +1:"$Sreact.fragment" +2:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:[] +0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/blog/battery-simulation-the-secret-to-ev-route-pre-validation/__next.blog.txt b/build/blog/battery-simulation-the-secret-to-ev-route-pre-validation/__next.blog.txt new file mode 100644 index 0000000..e0935ae --- /dev/null +++ b/build/blog/battery-simulation-the-secret-to-ev-route-pre-validation/__next.blog.txt @@ -0,0 +1,5 @@ +1:"$Sreact.fragment" +2:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:[] +0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/blog/building-a-greener-city-the-future-of-urban-logistics.html b/build/blog/building-a-greener-city-the-future-of-urban-logistics.html new file mode 100644 index 0000000..2efa575 --- /dev/null +++ b/build/blog/building-a-greener-city-the-future-of-urban-logistics.html @@ -0,0 +1,1168 @@ +Building a Greener City: The Future of Urban Logistics – Doormile

    Doormile

    Doormile logo
    Address
    Hyderabad

    5th Floor, Vision Ultima,
    Street No.3, Jayabheri Enclave,
    Gachibowli, Hyderabad,
    Telangana 500032.

    Coimbatore

    Mayflower Valencia,
    Near Nava India Bus Stop,
    Avinashi Road,
    Udayampalayam,
    Tamil Nadu 641037.

    Bengaluru

    C612, 6th Floor,
    Trifecta Starlight,
    ITPL Road,
    Garudacharapalya,
    Mahadevapura,
    Bangalore 560048,
    Karnataka, India.

    Contact Us

    Tel : +91 86886 97941

    Email

    care@doormile.com

    Sustainability

    Building a Greener City: The Future of Urban Logistics

    Doormile Team2 min read

    Cleaner delivery is becoming an operating requirement, not just a brand message. It depends on EV adoption and route plans that make those vehicles practical every day.

    In last-mile logistics, a missed SLA is rarely caused by one big failure. It usually comes from small delays adding up across a route. Building a Greener City: The Future of Urban Logistics looks at how delivery teams can spot those delays early and plan around them before vehicles leave the hub.

    Why this matters for fleet teams

    Every extra kilometre costs money. It uses fuel or charge, adds rider time, wears down vehicles, and increases the chance of a late delivery. When routes are built from fixed zones or old habits, those costs repeat every day.

    • Fewer vehicles needed for the same number of drops
    • Lower cost per drop through better stop sequencing
    • ETAs that match traffic, distance, and delivery windows
    • Less fuel or charge used per completed order

    From orders to dispatch

    A good dispatch plan starts with the basics: order locations, promised delivery windows, rider capacity, vehicle range, and known traffic trouble spots. MileTruth™ checks those inputs before dispatch so the team is not fixing avoidable mistakes on the road.

    Building a Greener City: The Future of Urban Logistics
    Sustainability: route planning decisions made before dispatch.

    A route should be checked before the rider leaves, not explained after the customer calls.

    Doormile Operations

    Putting it into practice

    The best improvements usually start with simple measurements. Track distance per route, failed delivery windows, rider idle time, and orders moved between vehicles after dispatch. Those numbers show where the operation is leaking time.

    1. Benchmark today's distance, fleet size, and on-time rate.
    2. Include vehicle capacity, delivery windows, rider shifts, and battery charge.
    3. Check routes against traffic and customer commitments before dispatch.
    4. Compare the next dispatch cycle against the old plan.

    Better routing is not about pushing riders harder. It is about giving them a plan that already accounts for the real day ahead.

    \ No newline at end of file diff --git a/build/blog/building-a-greener-city-the-future-of-urban-logistics.txt b/build/blog/building-a-greener-city-the-future-of-urban-logistics.txt new file mode 100644 index 0000000..be17cd9 --- /dev/null +++ b/build/blog/building-a-greener-city-the-future-of-urban-logistics.txt @@ -0,0 +1,545 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +d:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +e:"$Sreact.suspense" +11:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +13:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +15:I[68027,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"P":null,"c":["","blog","building-a-greener-city-the-future-of-urban-logistics"],"q":"","i":false,"f":[[["",{"children":["blog",{"children":[["slug","building-a-greener-city-the-future-of-urban-logistics","d",null],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":["$Lc",[["$","script","script-0",{"src":"/_next/static/chunks/0yvxf3ok9gcp_.js","async":true,"nonce":"$undefined"}]],["$","$Ld",null,{"children":["$","$e",null,{"name":"Next.MetadataOutlet","children":"$@f"}]}]]}],{},null,false,null]},null,false,"$@10"]},null,false,"$@10"]},null,false,null],["$","$1","h",{"children":[null,["$","$L11",null,{"children":"$L12"}],["$","div",null,{"hidden":true,"children":["$","$L13",null,{"children":["$","$e",null,{"name":"Next.Metadata","children":"$L14"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$15",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"kmSVPuUqY3Rhw5xy4D2nn"} +16:[] +10:"$W16" +:HL["/images/blog-post-pic-6.webp","image"] +17:T3d6f, + .dm-single-blog { + --dm-red: #c01227; + --dm-red-hover: #e31d32; + --dm-radius-card: 22px; + --dm-radius-img: 20px; + --dm-radius-badge: 8px; + --dm-shadow-card: 0 4px 24px rgba(15, 23, 42, 0.05); + --dm-border: 1px solid rgba(15, 23, 42, 0.09); + --dm-space-p: 24px; + --dm-space-h: 32px; + --dm-space-img: 32px; + --dm-space-quote: 40px; + --dm-sticky-top: 138px; + --dm-measure: min(1100px, 100%); + font-family: var(--font-manrope), sans-serif; + } + + /* Heading normalization. Beat the global theme's .elementor-kit-5 h1-h6 + (120/80/60px UPPERCASE) rules with !important on our own classes. */ + .dm-single-blog :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline, + specificity 0-1-1) so blog links keep our colors and never get underlined. */ + .dm-single-blog a { text-decoration: none !important; } + + /* Page banner: tall homepage-scale frame with only badge + title inside */ + /* Compound selector (specificity 20) + !important beats the global 800px + single-class height rules so the blog banner can use viewport heights. */ + .custom-standard-hero-card.dm-banner-card { + height: 90vh !important; + min-height: 85vh !important; + } + @media (max-width: 1024px) { + .custom-standard-hero-card.dm-banner-card { height: 80vh !important; min-height: 75vh !important; } + } + @media (max-width: 600px) { + .custom-standard-hero-card.dm-banner-card { height: 78vh !important; min-height: 72vh !important; } + } + + .dm-banner-inner { + position: relative; width: 100%; height: 100%; + display: flex; flex-direction: column; align-items: center; justify-content: center; + text-align: center; gap: clamp(22px, 2.6vw, 34px); + padding: clamp(48px, 8vh, 96px) clamp(20px, 5vw, 48px); + } + + .dm-banner-category { + display: inline-block; background: var(--dm-red); color: #fff; + font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.6px; + padding: 9px 18px; border-radius: 999px; box-shadow: 0 8px 22px rgba(192,18,39,0.45); + } + .dm-banner-title { + font-family: var(--font-manrope), sans-serif !important; + font-size: clamp(34px, 5vw, 60px) !important; font-weight: 850 !important; + line-height: 1.16 !important; letter-spacing: -1.2px !important; + color: #ffffff !important; margin: 0; max-width: 820px; + text-wrap: balance; text-shadow: 0 2px 30px rgba(0,0,0,0.38); + } + @media (max-width: 1024px) { .dm-banner-title { font-size: clamp(32px, 6vw, 48px) !important; max-width: 90%; } } + @media (max-width: 600px) { .dm-banner-title { font-size: clamp(28px, 8vw, 38px) !important; max-width: 90%; } } + + /* Content wrap begins immediately below the banner */ + /* Shared content container: the SAME max-width + horizontal padding is used + by BlogPostFooter (.dm-blog-footer-inner) so the article body, headings, + images, Prev/Next, Related Articles and the CTA banner all align to one + grid with identical left/right edges. Keep both in sync. */ + .dm-blog-wrap { + max-width: 1280px; margin: 0 auto; + /* 20px mobile padding floor → 40px on desktop; matches the footer container. */ + padding: clamp(14px, 2vw, 26px) clamp(20px, 4vw, 40px) 0; + } + @media (max-width: 767px) { + .dm-blog-wrap { + padding-left: 16px; + padding-right: 16px; + } + } + + /* ── Article meta bar (directly under the hero) ── */ + .dm-meta-bar { + display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 14px 24px; + padding: clamp(20px, 2.6vw, 30px) 0; margin-bottom: clamp(26px, 3vw, 44px); + border-bottom: 1px solid rgba(15,23,42,0.10); + } + .dm-meta-breadcrumb ol { + list-style: none; display: flex; flex-wrap: wrap; align-items: center; + gap: 8px; margin: 0; padding: 0; font-size: 13px; font-weight: 600; color: #64748b; + } + .dm-meta-breadcrumb a { color: #64748b !important; text-decoration: none; transition: color .2s ease; } + .dm-meta-breadcrumb a:hover { color: var(--dm-red) !important; } + .dm-meta-sep { color: #cbd5e1; } + .dm-meta-current { + color: #0f172a; font-weight: 700; + max-width: min(40ch, 46vw); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; + } + @media (max-width: 600px) { .dm-meta-current { max-width: 56vw; } } + .dm-meta-items { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 20px; } + .dm-meta-item { + display: inline-flex; align-items: center; gap: 7px; + font-size: 13.5px; font-weight: 600; color: #475569; + } + .dm-meta-item svg { color: var(--dm-red); flex: 0 0 auto; } + .dm-meta-author { color: #0f172a; font-weight: 700; } + @media (max-width: 600px) { .dm-meta-bar { gap: 12px; } } + .dm-blog-layout { + display: grid; grid-template-columns: minmax(0,1fr) 320px; + /* Tighter gap gives the reading column more room next to the 320px sidebar. */ + gap: clamp(28px, 3vw, 56px); align-items: start; + } + @media (max-width: 1024px) { + .dm-blog-layout { grid-template-columns: 1fr; gap: 48px; } + /* Single-column (tablet/mobile): cap the reading column and centre it so the + article never sits left-aligned with a large empty right gutter. */ + .dm-blog-main { max-width: 900px; margin-inline: auto; } + } + .dm-blog-main { min-width: 0; } + + /* ── Intro lead ── */ + .dm-blog-intro { + max-width: var(--dm-measure); + font-size: clamp(18px, 1.5vw, 20px); line-height: 1.65; font-weight: 500; + color: #475569; margin: 0 0 clamp(26px, 3vw, 38px); padding-left: 20px; + border-left: 3px solid var(--dm-red); + } + + /* ── Article body ── */ + .dm-article-body { max-width: var(--dm-measure); } + .dm-article-p { + font-size: 18px !important; line-height: 1.8 !important; color: #334155; font-weight: 450; + margin: 0 0 var(--dm-space-p); + } + .dm-article-h2 { + font-size: clamp(23px, 2vw, 30px) !important; font-weight: 800 !important; letter-spacing: -.3px !important; + color: #0f172a !important; line-height: 1.3 !important; margin: 48px 0 var(--dm-space-h); + text-wrap: balance; + } + /* Each article block is wrapped in its OWN ScrollReveal
    , so a bare + :first-child rule matched every heading (each is the only child of its + wrapper) and zeroed its top margin, collapsing the gap above every + section heading. Scope the reset to only the article body's first block. */ + .dm-article-body > :first-child :where(.dm-article-h2, .dm-article-h3), + .dm-article-body > .dm-article-h2:first-child, + .dm-article-body > .dm-article-h3:first-child { margin-top: 0; } + .dm-article-h3 { + font-size: clamp(19px, 1.5vw, 23px) !important; font-weight: 800 !important; letter-spacing: -.2px !important; + color: #1e293b !important; line-height: 1.34 !important; margin: 40px 0 18px; + text-wrap: balance; + } + @media (max-width: 600px) { + .dm-article-p { font-size: 16px !important; } + .dm-article-ul li, .dm-article-ol li { font-size: 15.5px; } + .dm-article-h2 { font-size: clamp(22px, 6vw, 28px) !important; margin-top: 38px; } + .dm-article-h3 { font-size: clamp(18px, 5vw, 22px) !important; } + } + + .dm-article-ul, .dm-article-ol { + /* Top margin (was 0) separates the list from the paragraph above it; + matching bottom margin keeps it clear of the next heading/paragraph. + Slightly larger than --dm-space-p so the list reads as its own block. */ + margin: clamp(26px, 2.4vw, 32px) 0 clamp(26px, 2.4vw, 32px); + padding-left: 2px; list-style: none; + display: flex; flex-direction: column; gap: 15px; + } + /* Prefixed with .dm-article-body so these beat the theme's global + ".logico-front-end ul li:before" fontello-glyph bullet (specificity 0,1,3), + which otherwise replaces our clean red dot with a misaligned checkmark glyph + and adds its own 1.7em indent. */ + .dm-article-body .dm-article-ul li, .dm-article-body .dm-article-ol li { + position: relative; padding-left: 34px; + font-size: 17px; line-height: 1.65; color: #334155; font-weight: 450; + } + .dm-article-body .dm-article-ul li::before { + content: ""; position: absolute; left: 7px; top: 10px; + width: 8px; height: 8px; border-radius: 50%; background: var(--dm-red); + /* kill any inherited fontello glyph from the global rule */ + font-size: 0; line-height: 0; + } + .dm-article-ol { counter-reset: dm-li; } + .dm-article-body .dm-article-ol li { counter-increment: dm-li; } + .dm-article-body .dm-article-ol li::before { + content: counter(dm-li); position: absolute; left: 0; top: 0; + width: 24px; height: 24px; border-radius: 7px; + background: rgba(192,18,39,0.10); color: var(--dm-red); + font-size: 12px; font-weight: 800; display: flex; align-items: center; justify-content: center; + } + + /* ── Quote ── */ + .dm-article-quote { + position: relative; margin: var(--dm-space-quote) 0; padding: 30px 32px 30px 64px; + background: linear-gradient(135deg, #fbf2f3 0%, #fdf7f8 100%); + border-left: 4px solid var(--dm-red); border-radius: 0 18px 18px 0; + box-shadow: 0 8px 28px rgba(192, 18, 39, 0.06); + } + .dm-article-quote::before { + content: "\201C"; position: absolute; left: 22px; top: 8px; + font-family: Georgia, "Times New Roman", serif; + font-size: 64px; line-height: 1; color: rgba(192, 18, 39, 0.28); font-weight: 700; + } + .dm-article-quote p { + font-size: clamp(19px, 2vw, 23px); line-height: 1.5; font-weight: 600; + font-style: italic; color: #1e293b; margin: 0; + } + .dm-article-quote cite { + display: block; margin-top: 16px; font-size: 13px; font-weight: 700; + font-style: normal; color: var(--dm-red); text-transform: uppercase; letter-spacing: .6px; + } + @media (max-width: 600px) { .dm-article-quote { padding: 26px 22px; } .dm-article-quote::before { display: none; } } + + /* ── Images ── */ + .dm-article-figure { margin: var(--dm-space-img) 0; } + .dm-article-figure-img { + position: relative; display: block; width: 100%; aspect-ratio: 16 / 9; + border-radius: var(--dm-radius-img); overflow: hidden; box-shadow: 0 14px 34px rgba(15,23,42,0.10); + } + .dm-article-figure figcaption { + margin-top: 14px; font-size: 13.5px; color: #94a3b8; font-weight: 500; + text-align: center; font-style: italic; + } + + /* ── Sidebar ── */ + .dm-blog-aside-wrap { position: relative; } + .dm-blog-sidebar { + display: flex; flex-direction: column; gap: 18px; + position: sticky; top: var(--dm-sticky-top); + } + @media (max-width: 1024px) { .dm-blog-sidebar { position: static; gap: 20px; } } + + .dm-blog-widget { + background: #fff; border: var(--dm-border); border-radius: var(--dm-radius-card); + padding: 20px; box-shadow: var(--dm-shadow-card); + } + .dm-blog-widget-title { + font-size: 13px !important; font-weight: 700 !important; text-transform: uppercase !important; + letter-spacing: .8px !important; line-height: 1.35 !important; color: #0f172a !important; + margin: 0 0 15px; padding: 0 0 12px; + border-bottom: 1px solid rgba(15,23,42,0.08); + overflow: visible; white-space: normal; word-break: normal; + } + + /* Search */ + .dm-sr-only { + position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; + overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; + } + .dm-blog-search { position: relative; } + .dm-blog-search-form { position: relative; } + .dm-blog-search-input { + width: 100%; height: 46px; border: 1.5px solid #e2e8f0; border-radius: 12px; + padding: 0 42px 0 15px; font-size: 14px; font-family: inherit; color: #0f172a; + background: #f8fafc; transition: border-color .2s ease, box-shadow .2s ease, background .2s ease; + } + .dm-blog-search-input::placeholder { color: #9c9c9c; } + .dm-blog-search-input:focus { + outline: none; border-color: var(--dm-red); background: #fff; + box-shadow: 0 0 0 3px rgba(192,18,39,0.11); + } + .dm-blog-search-icon { + position: absolute; right: 14px; top: 50%; transform: translateY(-50%); + color: #94a3b8; pointer-events: none; display: flex; + } + .dm-blog-search-results { + position: absolute; z-index: 20; top: calc(100% + 8px); left: 0; right: 0; + background: #fff; border: 1px solid rgba(15,23,42,0.10); border-radius: 14px; + box-shadow: 0 18px 42px rgba(15,23,42,0.14); overflow: hidden; + } + .dm-blog-search-results ul { list-style: none; margin: 0; padding: 6px; } + .dm-blog-search-result { + display: flex; flex-direction: column; gap: 3px; padding: 10px 12px; + border-radius: 10px; text-decoration: none; transition: background .15s ease; + } + .dm-blog-search-result:hover { background: #f8fafc; } + .dm-blog-search-result-cat { + font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .8px; color: var(--dm-red); + } + .dm-blog-search-result-title { font-size: 13.5px; font-weight: 600; color: #1e293b; line-height: 1.35; } + .dm-blog-search-empty { margin: 0; padding: 14px 12px; font-size: 13px; color: #64748b; } + + /* Recent posts */ + .dm-blog-recent { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 15px; } + .dm-blog-recent-item { display: flex; gap: 13px; align-items: center; text-decoration: none; } + .dm-blog-recent-thumb { + position: relative; flex: 0 0 62px; width: 62px; height: 62px; + border-radius: 13px; overflow: hidden; background: #f1f5f9; + } + .dm-blog-recent-meta { display: flex; flex-direction: column; gap: 4px; min-width: 0; } + .dm-blog-recent-title { + font-size: 13.5px; font-weight: 700; color: #1e293b; line-height: 1.35; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-blog-recent-item:hover .dm-blog-recent-title { color: var(--dm-red); } + .dm-blog-recent-date { font-size: 11.5px; font-weight: 600; color: #94a3b8; } + + /* Categories */ + .dm-blog-categories { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; } + .dm-blog-category-item { + display: flex; align-items: center; justify-content: space-between; gap: 10px; + padding: 11px 2px; text-decoration: none; font-size: 14px; font-weight: 600; color: #334155 !important; + border-bottom: 1px solid rgba(15,23,42,0.06); transition: color .2s ease, padding-left .2s ease; + } + .dm-blog-categories li:last-child .dm-blog-category-item { border-bottom: none; } + .dm-blog-category-item:hover { color: var(--dm-red); padding-left: 6px; } + .dm-blog-category-item > span:first-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } + .dm-blog-category-count { + flex: 0 0 auto; font-size: 11px; font-weight: 800; color: #94a3b8; background: #f1f5f9; + min-width: 24px; height: 22px; border-radius: 7px; display: inline-flex; + align-items: center; justify-content: center; padding: 0 7px; + } + + /* CTA card */ + .dm-blog-cta-card { background: #1f1f1f; border-color: #1f1f1f; } + .dm-blog-cta-title { font-size: 18px !important; font-weight: 800 !important; color: #fff !important; line-height: 1.32 !important; margin: 0 0 10px; letter-spacing: -.2px !important; } + .dm-blog-cta-text { font-size: 13.5px; line-height: 1.6; color: #c7c7c7; margin: 0 0 20px; font-weight: 450; } + .dm-blog-cta-btn { + display: inline-flex; align-items: center; gap: 8px; + background: var(--dm-red); color: #fff !important; font-size: 13.5px; font-weight: 700; + padding: 12px 22px; border-radius: 12px; text-decoration: none; + transition: background .2s ease, transform .2s ease; + } + .dm-blog-cta-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } +c:["$","div",null,{"className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"Article\",\"headline\":\"Building a Greener City: The Future of Urban Logistics\",\"description\":\"Cities are asking for cleaner delivery. The practical challenge is planning EV routes that can meet customer windows without wasting charge.\",\"image\":[\"https://www.doormile.com/images/blog-post-pic-6.webp\"],\"datePublished\":\"2025-07-10T00:00:00.000Z\",\"dateModified\":\"2025-07-10T00:00:00.000Z\",\"author\":{\"@type\":\"Organization\",\"name\":\"Doormile Team\",\"url\":\"https://www.doormile.com\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Doormile\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://www.doormile.com/images/cropped-image-2.png\"}},\"mainEntityOfPage\":{\"@type\":\"WebPage\",\"@id\":\"https://www.doormile.com/blog/building-a-greener-city-the-future-of-urban-logistics\"},\"articleSection\":\"Sustainability\"}"}}],["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https://www.doormile.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https://www.doormile.com/blog\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Building a Greener City: The Future of Urban Logistics\",\"item\":\"https://www.doormile.com/blog/building-a-greener-city-the-future-of-urban-logistics\"}]}"}}],["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":[["$","article",null,{"className":"dm-single-blog","children":[["$","link",null,{"rel":"preload","as":"image","href":"/images/blog-post-pic-6.webp"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$17"}}],"$L18","$L19"]}],"$L1a"]}]}]]}] +1b:I[22016,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],""] +1c:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"ScrollReveal"] +18:["$","div",null,{"className":"custom-standard-hero-container","children":["$","div",null,{"className":"custom-standard-hero-card dm-banner-card","style":{"backgroundImage":"url(/images/blog-post-pic-6.webp)","--hero-overlay":"linear-gradient(180deg, rgba(0,0,0,0.38) 0%, rgba(0,0,0,0.46) 55%, rgba(0,0,0,0.60) 100%)"},"children":["$","div",null,{"className":"e-con-inner dm-banner-inner","children":[["$","span",null,{"className":"dm-banner-category","children":"Sustainability"}],["$","h1",null,{"className":"dm-banner-title","children":"Building a Greener City: The Future of Urban Logistics"}]]}]}]}] +19:["$","div",null,{"className":"dm-blog-wrap","children":[["$","div",null,{"className":"dm-meta-bar","children":[["$","nav",null,{"className":"dm-meta-breadcrumb","aria-label":"Breadcrumb","children":["$","ol",null,{"children":[["$","li",null,{"children":["$","$L1b",null,{"href":"/","children":"Home"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"children":["$","$L1b",null,{"href":"/blog","children":"Blog"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"aria-current":"page","className":"dm-meta-current","children":"Building a Greener City: The Future of Urban Logistics"}]]}]}],["$","div",null,{"className":"dm-meta-items","children":[["$","span",null,{"className":"dm-meta-item dm-meta-author","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","path",null,{"d":"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"}],["$","circle",null,{"cx":"12","cy":"7","r":"4"}]]}],"Doormile Team"]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","rect",null,{"x":"3","y":"4","width":"18","height":"18","rx":"2"}],["$","line",null,{"x1":"16","y1":"2","x2":"16","y2":"6"}],["$","line",null,{"x1":"8","y1":"2","x2":"8","y2":"6"}],["$","line",null,{"x1":"3","y1":"10","x2":"21","y2":"10"}]]}],["$","time",null,{"dateTime":"2025-07-10","children":"Jul 10, 2025"}]]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","circle",null,{"cx":"12","cy":"12","r":"9"}],["$","polyline",null,{"points":"12 7 12 12 15 14"}]]}],2," min read"]}]]}]]}],["$","div",null,{"className":"dm-blog-layout","children":[["$","div",null,{"className":"dm-blog-main","children":[["$","p",null,{"className":"dm-blog-intro","children":"Cleaner delivery is becoming an operating requirement, not just a brand message. It depends on EV adoption and route plans that make those vehicles practical every day."}],["$","div",null,{"className":"dm-article-body","children":[["$","$L1c","0",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"In last-mile logistics, a missed SLA is rarely caused by one big failure. It usually comes from small delays adding up across a route. Building a Greener City: The Future of Urban Logistics looks at how delivery teams can spot those delays early and plan around them before vehicles leave the hub."}]}],["$","$L1c","1",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"Why this matters for fleet teams"}]}],["$","$L1c","2",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"Every extra kilometre costs money. It uses fuel or charge, adds rider time, wears down vehicles, and increases the chance of a late delivery. When routes are built from fixed zones or old habits, those costs repeat every day."}]}],["$","$L1c","3",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ul",null,{"className":"dm-article-ul","children":[["$","li","0",{"children":"Fewer vehicles needed for the same number of drops"}],["$","li","1",{"children":"Lower cost per drop through better stop sequencing"}],["$","li","2",{"children":"ETAs that match traffic, distance, and delivery windows"}],["$","li","3",{"children":"Less fuel or charge used per completed order"}]]}]}],["$","$L1c","4",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h3",null,{"className":"dm-article-h3","children":"From orders to dispatch"}]}],["$","$L1c","5",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"A good dispatch plan starts with the basics: order locations, promised delivery windows, rider capacity, vehicle range, and known traffic trouble spots. MileTruth™ checks those inputs before dispatch so the team is not fixing avoidable mistakes on the road."}]}],["$","$L1c","6",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","figure",null,{"className":"dm-article-figure","children":["$L1d","$L1e"]}]}],"$L1f","$L20","$L21","$L22","$L23"]}]]}],"$L24"]}]]}] +25:T2021, + .dm-blog-footer { + font-family: var(--font-manrope), sans-serif; --dm-red: #c01227; --dm-red-hover: #e31d32; + /* The global theme applies 72px top/bottom section padding — strip it so the + inner container is the single source of vertical rhythm (no double gap). */ + padding: 0 !important; + } + /* Neutralize the global theme's 120/80/60px UPPERCASE heading rules */ + .dm-blog-footer :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline) */ + .dm-blog-footer a { text-decoration: none !important; } + /* Shared content container — mirrors SingleBlog's .dm-blog-wrap (same 1280px + max-width + 20→40px horizontal padding) so Prev/Next, Related and the CTA + align to the exact same left/right edges as the article body above. + Vertical rhythm: ~64px from the article end to the Prev/Next divider, then a + consistent ~64–72px section→section gap (no 120px+ voids). */ + .dm-blog-footer-inner { + max-width: 1280px; margin: 0 auto; + /* Compact vertical rhythm on an 8px system. Top padding sets the + article→Prev/Next gap (~24–32px); the inter-section gap sets the + Prev/Next→Related gap (~32–48px). No large arbitrary voids. */ + /* Minimal bottom padding — the global site footer already contributes its + own 20px top inset, so the CTA banner sits close to it without a void. */ + padding: clamp(24px, 3vw, 32px) clamp(20px, 4vw, 40px) clamp(8px, 1.5vw, 16px); + display: flex; flex-direction: column; gap: clamp(32px, 4vw, 48px); + } + @media (max-width: 767px) { + .dm-blog-footer-inner { + padding-left: 16px; + padding-right: 16px; + } + } + + /* Prev / Next */ + .dm-prevnext { + display: grid; grid-template-columns: 1fr 1fr; gap: 20px; + /* Halved from 40px: tight divider→cards spacing without crowding. */ + padding-top: clamp(16px, 2vw, 24px); border-top: 1px solid rgba(15,23,42,0.08); + } + @media (max-width: 640px) { .dm-prevnext { grid-template-columns: 1fr; } } + .dm-prevnext-placeholder { display: block; } + .dm-prevnext-card { + display: flex; gap: 16px; align-items: center; padding: 16px; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + text-decoration: none; transition: transform .3s ease, box-shadow .3s ease, border-color .3s ease; + } + .dm-prevnext-card:hover { + transform: translateY(-4px); border-color: rgba(192,18,39,0.2); + box-shadow: 0 16px 34px rgba(192,18,39,0.10); + } + .dm-prevnext-thumb { + position: relative; flex: 0 0 80px; width: 80px; height: 80px; + border-radius: 16px; overflow: hidden; background: #f1f5f9; + } + .dm-prevnext-text { display: flex; flex-direction: column; gap: 5px; min-width: 0; } + .dm-prevnext-next { text-align: right; } + .dm-prevnext-next .dm-prevnext-text { align-items: flex-end; } + .dm-prevnext-label { + display: inline-flex; align-items: center; gap: 6px; + font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: 1px; color: var(--dm-red); + } + .dm-prevnext-cat { font-size: 11px; font-weight: 700; color: #94a3b8; text-transform: uppercase; letter-spacing: .5px; } + .dm-prevnext-title { + font-size: 15.5px; font-weight: 700; color: #1e293b; line-height: 1.4; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-prevnext-card:hover .dm-prevnext-title { color: var(--dm-red); } + + /* Related */ + .dm-related-heading { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 850 !important; letter-spacing: -.4px !important; + line-height: 1.25 !important; color: #0f172a !important; margin: 0 0 24px; + } + .dm-related-grid { + display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; + } + @media (max-width: 1024px) { .dm-related-grid { grid-template-columns: repeat(2, 1fr); } } + @media (max-width: 700px) { .dm-related-grid { grid-template-columns: 1fr; gap: 24px; } } + + .dm-related-card { + display: flex; flex-direction: column; height: 100%; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + overflow: hidden; box-shadow: 0 4px 24px rgba(15,23,42,0.05); text-decoration: none; + transition: transform .4s cubic-bezier(0.2,0.8,0.2,1), box-shadow .4s ease, border-color .4s ease; + } + .dm-related-card:hover { + transform: translateY(-8px); box-shadow: 0 22px 44px rgba(192,18,39,0.13); + border-color: rgba(192,18,39,0.2); + } + .dm-related-img { + position: relative; width: 100%; aspect-ratio: 16 / 10; overflow: hidden; background: #f1f5f9; + } + .dm-related-img img { transition: transform .5s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-img img { transform: scale(1.05); } + .dm-related-badge { + position: absolute; top: 14px; left: 14px; z-index: 5; background: var(--dm-red); color: #fff; + font-size: 9px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.2px; + padding: 5px 11px; border-radius: 8px; box-shadow: 0 4px 12px rgba(192,18,39,0.25); + } + .dm-related-body { display: flex; flex-direction: column; flex: 1; padding: 22px; } + .dm-related-card-title { + font-size: 17px !important; font-weight: 800 !important; color: #1e293b !important; line-height: 1.4 !important; + letter-spacing: -.2px !important; margin: 0 0 10px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-related-card:hover .dm-related-card-title { color: var(--dm-red); } + .dm-related-card-excerpt { + font-size: 13.5px; font-weight: 500; color: #64748b; line-height: 1.6; margin: 0 0 18px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + } + .dm-related-readmore { + margin-top: auto; display: inline-flex; align-items: center; gap: 7px; + font-size: 12.5px; font-weight: 800; color: var(--dm-red); + text-transform: uppercase; letter-spacing: .6px; + } + .dm-related-readmore-arrow { transition: transform .3s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-readmore-arrow { transform: translateX(5px); } + + /* Contact CTA banner */ + .dm-blog-contact-cta { + display: flex; align-items: center; justify-content: space-between; gap: 32px; + flex-wrap: wrap; + background: linear-gradient(135deg, #1a1a1a 0%, #2d1417 100%); + border-radius: 30px; padding: clamp(32px, 4vw, 56px); + position: relative; overflow: hidden; + } + .dm-blog-contact-cta::after { + content: ""; position: absolute; right: -80px; top: -80px; width: 300px; height: 300px; + background: radial-gradient(circle, rgba(192,18,39,0.40), transparent 70%); + pointer-events: none; + } + .dm-blog-contact-cta-content { position: relative; z-index: 1; max-width: 640px; } + .dm-blog-contact-eyebrow { + display: inline-block; font-size: 12px; font-weight: 800; text-transform: uppercase; + letter-spacing: 1.4px; color: #ff8088; margin-bottom: 14px; + } + .dm-blog-contact-title { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 800 !important; line-height: 1.25 !important; + letter-spacing: -.3px !important; color: #ffffff !important; margin: 0 0 12px; text-wrap: balance; + } + .dm-blog-contact-sub { + font-size: 15.5px; line-height: 1.65; color: #e2e2e2; margin: 0; font-weight: 450; + } + .dm-blog-contact-btn { + position: relative; z-index: 1; flex-shrink: 0; + display: inline-flex; align-items: center; justify-content: center; gap: 10px; + background: var(--dm-red); color: #fff !important; font-size: 15px; font-weight: 700; + padding: 16px 32px; border-radius: 16px; text-decoration: none; + box-shadow: 0 10px 26px rgba(192,18,39,0.34); + transition: background .2s ease, transform .2s ease; + } + .dm-blog-contact-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } + @media (max-width: 720px) { + .dm-blog-contact-cta { flex-direction: column; align-items: flex-start; gap: 26px; } + .dm-blog-contact-btn { width: 100%; } + } +1a:["$","section",null,{"className":"dm-blog-footer","aria-label":"More articles","children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$25"}}],"$L26"]}] +27:I[5500,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"Image"] +28:I[23096,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"default"] +1d:["$","span",null,{"className":"dm-article-figure-img","children":["$","$L27",null,{"src":"/images/blog-post-pic-6.webp","alt":"Building a Greener City: The Future of Urban Logistics","fill":true,"sizes":"(max-width: 768px) 100vw, 760px","style":{"objectFit":"cover"}}]}] +1e:["$","figcaption",null,{"children":"Sustainability: route planning decisions made before dispatch."}] +1f:["$","$L1c","7",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","blockquote",null,{"className":"dm-article-quote","children":[["$","p",null,{"children":"A route should be checked before the rider leaves, not explained after the customer calls."}],["$","cite",null,{"children":"Doormile Operations"}]]}]}] +20:["$","$L1c","8",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"Putting it into practice"}]}] +21:["$","$L1c","9",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"The best improvements usually start with simple measurements. Track distance per route, failed delivery windows, rider idle time, and orders moved between vehicles after dispatch. Those numbers show where the operation is leaking time."}]}] +22:["$","$L1c","10",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ol",null,{"className":"dm-article-ol","children":[["$","li","0",{"children":"Benchmark today's distance, fleet size, and on-time rate."}],["$","li","1",{"children":"Include vehicle capacity, delivery windows, rider shifts, and battery charge."}],["$","li","2",{"children":"Check routes against traffic and customer commitments before dispatch."}],["$","li","3",{"children":"Compare the next dispatch cycle against the old plan."}]]}]}] +23:["$","$L1c","11",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"Better routing is not about pushing riders harder. It is about giving them a plan that already accounts for the real day ahead."}]}] +24:["$","div",null,{"className":"dm-blog-aside-wrap","children":["$","aside",null,{"className":"dm-blog-sidebar","aria-label":"Blog sidebar","children":[["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Search"}],["$","$L28",null,{}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Recent Posts"}],["$","ul",null,{"className":"dm-blog-recent","children":[["$","li","how-ai-is-transforming-last-mile-ev-delivery",{"children":["$","$L1b",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"How Better Planning Improves Last-Mile EV Delivery"}],["$","time",null,{"dateTime":"2025-10-02","className":"dm-blog-recent-date","children":"Oct 2, 2025"}]]}]]}]}],["$","li","42-less-distance-insights-from-our-hyderabad-hub",{"children":["$","$L1b",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}],["$","time",null,{"dateTime":"2025-09-18","className":"dm-blog-recent-date","children":"Sep 18, 2025"}]]}]]}]}],["$","li","miletruth-ai-10-stages-to-smarter-dispatch",{"children":["$","$L1b",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","time",null,{"dateTime":"2025-09-05","className":"dm-blog-recent-date","children":"Sep 5, 2025"}]]}]]}]}],["$","li","the-ev-paradox-solving-range-anxiety-for-urban-fleets",{"children":["$","$L1b",null,{"href":"/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/ev-paradox.webp","alt":"The EV Paradox: Solving Range Anxiety for Urban Fleets","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}],["$","time",null,{"dateTime":"2025-08-21","className":"dm-blog-recent-date","children":"Aug 21, 2025"}]]}]]}]}]]}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Categories"}],["$","ul",null,{"className":"dm-blog-categories","children":[["$","li","Case Study",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Case Study"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","EV Fleet",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"EV Fleet"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}],["$","li","Fleet Management",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Fleet Management"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","MileTruth",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"MileTruth"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],"$L29","$L2a","$L2b"]}]]}],"$L2c"]}]}] +26:["$","div",null,{"className":"dm-blog-footer-inner","children":[["$","nav",null,{"className":"dm-prevnext","aria-label":"Article navigation","children":[["$","$L1b",null,{"href":"/blog/fleet-reduction-without-compromising-delivery-volume","className":"dm-prevnext-card dm-prevnext-prev","children":[["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-8.webp","alt":"Fleet Reduction Without Compromising Delivery Volume","fill":true,"sizes":"80px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-prevnext-text","children":[["$","span",null,{"className":"dm-prevnext-label","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"19","y1":"12","x2":"5","y2":"12"}],["$","polyline",null,{"points":"12 19 5 12 12 5"}]]}],"Previous"]}],["$","span",null,{"className":"dm-prevnext-cat","children":"Fleet Management"}],["$","span",null,{"className":"dm-prevnext-title","children":"Fleet Reduction Without Compromising Delivery Volume"}]]}]]}],["$","$L1b",null,{"href":"/blog/how-doormile-maintains-99-9-sla-compliance-at-scale","className":"dm-prevnext-card dm-prevnext-next","children":[["$","span",null,{"className":"dm-prevnext-text","children":[["$","span",null,{"className":"dm-prevnext-label","children":["Next",["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","span",null,{"className":"dm-prevnext-cat","children":"Operations"}],["$","span",null,{"className":"dm-prevnext-title","children":"How Doormile Maintains 99.9% SLA Compliance at Scale"}]]}],["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L27",null,{"src":"/images/last-mile-approach.webp","alt":"How Doormile Maintains 99.9% SLA Compliance at Scale","fill":true,"sizes":"80px","style":{"objectFit":"cover"}}]}]]}]]}],["$","div",null,{"className":"dm-related","children":[["$","h2",null,{"className":"dm-related-heading","children":"Related Articles"}],["$","div",null,{"className":"dm-related-grid","children":[["$","$L1c","how-ai-is-transforming-last-mile-ev-delivery",{"delay":0,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L27",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Technology"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"How Better Planning Improves Last-Mile EV Delivery"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"A practical look at how EV fleets can plan routes, manage charging, and keep delivery promises without adding unnecessary vehicles."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}],["$","$L1c","42-less-distance-insights-from-our-hyderabad-hub",{"delay":0.08,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L27",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Case Study"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}],"$L2d","$L2e"]}]]}]}],"$L2f"]}]]}],"$L30"]}] +29:["$","li","Operations",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Operations"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +2a:["$","li","Sustainability",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Sustainability"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +2b:["$","li","Technology",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Technology"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}] +2c:["$","section",null,{"className":"dm-blog-widget dm-blog-cta-card","children":[["$","h2",null,{"className":"dm-blog-cta-title","children":"Planning delivery routes?"}],["$","p",null,{"className":"dm-blog-cta-text","children":"Talk to us about reducing wasted distance, missed windows, and avoidable vehicle time."}],["$","$L1b",null,{"href":"/contact","className":"dm-blog-cta-btn","children":["Contact Us",["$","svg",null,{"width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] +2d:["$","p",null,{"className":"dm-related-card-excerpt","children":"A practical look at how one Hyderabad hub reduced distance, used fewer vehicles, and protected delivery windows with better route planning."}] +2e:["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}] +2f:["$","$L1c","miletruth-ai-10-stages-to-smarter-dispatch",{"delay":0.16,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L27",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"MileTruth"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"From order intake to final route output, here is how a dispatch plan is checked before riders leave the hub."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}] +30:["$","div",null,{"className":"dm-blog-contact-cta","children":[["$","div",null,{"className":"dm-blog-contact-cta-content","children":[["$","span",null,{"className":"dm-blog-contact-eyebrow","children":"Let's talk logistics"}],["$","h2",null,{"className":"dm-blog-contact-title","children":"Ready to move smarter with Doormile?"}],["$","p",null,{"className":"dm-blog-contact-sub","children":"Tell us about your fleet and routes — we'll show you where the distance, vehicles and emissions are hiding."}]]}],["$","$L1b",null,{"href":"/contact","className":"dm-blog-contact-btn","children":["Get in Touch",["$","svg",null,{"width":"20","height":"20","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] +12:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] +31:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +f:null +14:[["$","title","0",{"children":"Building a Greener City: The Future of Urban Logistics – Doormile"}],["$","meta","1",{"name":"description","content":"Cities are asking for cleaner delivery. The practical challenge is planning EV routes that can meet customer windows without wasting charge."}],["$","meta","2",{"name":"author","content":"Doormile Team"}],["$","meta","3",{"name":"keywords","content":"Sustainability,last-mile logistics,EV fleet,MileTruth,route optimisation"}],["$","meta","4",{"name":"robots","content":"index, follow"}],["$","link","5",{"rel":"canonical","href":"https://www.doormile.com/blog/building-a-greener-city-the-future-of-urban-logistics"}],["$","meta","6",{"property":"og:title","content":"Building a Greener City: The Future of Urban Logistics"}],["$","meta","7",{"property":"og:description","content":"Cities are asking for cleaner delivery. The practical challenge is planning EV routes that can meet customer windows without wasting charge."}],["$","meta","8",{"property":"og:url","content":"https://www.doormile.com/blog/building-a-greener-city-the-future-of-urban-logistics"}],["$","meta","9",{"property":"og:site_name","content":"Doormile"}],["$","meta","10",{"property":"og:image","content":"https://www.doormile.com/images/blog-post-pic-6.webp"}],["$","meta","11",{"property":"og:image:alt","content":"Building a Greener City: The Future of Urban Logistics"}],["$","meta","12",{"property":"og:type","content":"article"}],["$","meta","13",{"property":"article:published_time","content":"2025-07-10T00:00:00.000Z"}],["$","meta","14",{"property":"article:author","content":"Doormile Team"}],["$","meta","15",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","16",{"name":"twitter:title","content":"Building a Greener City: The Future of Urban Logistics"}],["$","meta","17",{"name":"twitter:description","content":"Cities are asking for cleaner delivery. The practical challenge is planning EV routes that can meet customer windows without wasting charge."}],["$","meta","18",{"name":"twitter:image","content":"https://www.doormile.com/images/blog-post-pic-6.webp"}],["$","link","19",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","20",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","21",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","22",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L31","23",{}]] diff --git a/build/blog/building-a-greener-city-the-future-of-urban-logistics/__next._full.txt b/build/blog/building-a-greener-city-the-future-of-urban-logistics/__next._full.txt new file mode 100644 index 0000000..be17cd9 --- /dev/null +++ b/build/blog/building-a-greener-city-the-future-of-urban-logistics/__next._full.txt @@ -0,0 +1,545 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +d:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +e:"$Sreact.suspense" +11:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +13:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +15:I[68027,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"P":null,"c":["","blog","building-a-greener-city-the-future-of-urban-logistics"],"q":"","i":false,"f":[[["",{"children":["blog",{"children":[["slug","building-a-greener-city-the-future-of-urban-logistics","d",null],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":["$Lc",[["$","script","script-0",{"src":"/_next/static/chunks/0yvxf3ok9gcp_.js","async":true,"nonce":"$undefined"}]],["$","$Ld",null,{"children":["$","$e",null,{"name":"Next.MetadataOutlet","children":"$@f"}]}]]}],{},null,false,null]},null,false,"$@10"]},null,false,"$@10"]},null,false,null],["$","$1","h",{"children":[null,["$","$L11",null,{"children":"$L12"}],["$","div",null,{"hidden":true,"children":["$","$L13",null,{"children":["$","$e",null,{"name":"Next.Metadata","children":"$L14"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$15",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"kmSVPuUqY3Rhw5xy4D2nn"} +16:[] +10:"$W16" +:HL["/images/blog-post-pic-6.webp","image"] +17:T3d6f, + .dm-single-blog { + --dm-red: #c01227; + --dm-red-hover: #e31d32; + --dm-radius-card: 22px; + --dm-radius-img: 20px; + --dm-radius-badge: 8px; + --dm-shadow-card: 0 4px 24px rgba(15, 23, 42, 0.05); + --dm-border: 1px solid rgba(15, 23, 42, 0.09); + --dm-space-p: 24px; + --dm-space-h: 32px; + --dm-space-img: 32px; + --dm-space-quote: 40px; + --dm-sticky-top: 138px; + --dm-measure: min(1100px, 100%); + font-family: var(--font-manrope), sans-serif; + } + + /* Heading normalization. Beat the global theme's .elementor-kit-5 h1-h6 + (120/80/60px UPPERCASE) rules with !important on our own classes. */ + .dm-single-blog :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline, + specificity 0-1-1) so blog links keep our colors and never get underlined. */ + .dm-single-blog a { text-decoration: none !important; } + + /* Page banner: tall homepage-scale frame with only badge + title inside */ + /* Compound selector (specificity 20) + !important beats the global 800px + single-class height rules so the blog banner can use viewport heights. */ + .custom-standard-hero-card.dm-banner-card { + height: 90vh !important; + min-height: 85vh !important; + } + @media (max-width: 1024px) { + .custom-standard-hero-card.dm-banner-card { height: 80vh !important; min-height: 75vh !important; } + } + @media (max-width: 600px) { + .custom-standard-hero-card.dm-banner-card { height: 78vh !important; min-height: 72vh !important; } + } + + .dm-banner-inner { + position: relative; width: 100%; height: 100%; + display: flex; flex-direction: column; align-items: center; justify-content: center; + text-align: center; gap: clamp(22px, 2.6vw, 34px); + padding: clamp(48px, 8vh, 96px) clamp(20px, 5vw, 48px); + } + + .dm-banner-category { + display: inline-block; background: var(--dm-red); color: #fff; + font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.6px; + padding: 9px 18px; border-radius: 999px; box-shadow: 0 8px 22px rgba(192,18,39,0.45); + } + .dm-banner-title { + font-family: var(--font-manrope), sans-serif !important; + font-size: clamp(34px, 5vw, 60px) !important; font-weight: 850 !important; + line-height: 1.16 !important; letter-spacing: -1.2px !important; + color: #ffffff !important; margin: 0; max-width: 820px; + text-wrap: balance; text-shadow: 0 2px 30px rgba(0,0,0,0.38); + } + @media (max-width: 1024px) { .dm-banner-title { font-size: clamp(32px, 6vw, 48px) !important; max-width: 90%; } } + @media (max-width: 600px) { .dm-banner-title { font-size: clamp(28px, 8vw, 38px) !important; max-width: 90%; } } + + /* Content wrap begins immediately below the banner */ + /* Shared content container: the SAME max-width + horizontal padding is used + by BlogPostFooter (.dm-blog-footer-inner) so the article body, headings, + images, Prev/Next, Related Articles and the CTA banner all align to one + grid with identical left/right edges. Keep both in sync. */ + .dm-blog-wrap { + max-width: 1280px; margin: 0 auto; + /* 20px mobile padding floor → 40px on desktop; matches the footer container. */ + padding: clamp(14px, 2vw, 26px) clamp(20px, 4vw, 40px) 0; + } + @media (max-width: 767px) { + .dm-blog-wrap { + padding-left: 16px; + padding-right: 16px; + } + } + + /* ── Article meta bar (directly under the hero) ── */ + .dm-meta-bar { + display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 14px 24px; + padding: clamp(20px, 2.6vw, 30px) 0; margin-bottom: clamp(26px, 3vw, 44px); + border-bottom: 1px solid rgba(15,23,42,0.10); + } + .dm-meta-breadcrumb ol { + list-style: none; display: flex; flex-wrap: wrap; align-items: center; + gap: 8px; margin: 0; padding: 0; font-size: 13px; font-weight: 600; color: #64748b; + } + .dm-meta-breadcrumb a { color: #64748b !important; text-decoration: none; transition: color .2s ease; } + .dm-meta-breadcrumb a:hover { color: var(--dm-red) !important; } + .dm-meta-sep { color: #cbd5e1; } + .dm-meta-current { + color: #0f172a; font-weight: 700; + max-width: min(40ch, 46vw); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; + } + @media (max-width: 600px) { .dm-meta-current { max-width: 56vw; } } + .dm-meta-items { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 20px; } + .dm-meta-item { + display: inline-flex; align-items: center; gap: 7px; + font-size: 13.5px; font-weight: 600; color: #475569; + } + .dm-meta-item svg { color: var(--dm-red); flex: 0 0 auto; } + .dm-meta-author { color: #0f172a; font-weight: 700; } + @media (max-width: 600px) { .dm-meta-bar { gap: 12px; } } + .dm-blog-layout { + display: grid; grid-template-columns: minmax(0,1fr) 320px; + /* Tighter gap gives the reading column more room next to the 320px sidebar. */ + gap: clamp(28px, 3vw, 56px); align-items: start; + } + @media (max-width: 1024px) { + .dm-blog-layout { grid-template-columns: 1fr; gap: 48px; } + /* Single-column (tablet/mobile): cap the reading column and centre it so the + article never sits left-aligned with a large empty right gutter. */ + .dm-blog-main { max-width: 900px; margin-inline: auto; } + } + .dm-blog-main { min-width: 0; } + + /* ── Intro lead ── */ + .dm-blog-intro { + max-width: var(--dm-measure); + font-size: clamp(18px, 1.5vw, 20px); line-height: 1.65; font-weight: 500; + color: #475569; margin: 0 0 clamp(26px, 3vw, 38px); padding-left: 20px; + border-left: 3px solid var(--dm-red); + } + + /* ── Article body ── */ + .dm-article-body { max-width: var(--dm-measure); } + .dm-article-p { + font-size: 18px !important; line-height: 1.8 !important; color: #334155; font-weight: 450; + margin: 0 0 var(--dm-space-p); + } + .dm-article-h2 { + font-size: clamp(23px, 2vw, 30px) !important; font-weight: 800 !important; letter-spacing: -.3px !important; + color: #0f172a !important; line-height: 1.3 !important; margin: 48px 0 var(--dm-space-h); + text-wrap: balance; + } + /* Each article block is wrapped in its OWN ScrollReveal
    , so a bare + :first-child rule matched every heading (each is the only child of its + wrapper) and zeroed its top margin, collapsing the gap above every + section heading. Scope the reset to only the article body's first block. */ + .dm-article-body > :first-child :where(.dm-article-h2, .dm-article-h3), + .dm-article-body > .dm-article-h2:first-child, + .dm-article-body > .dm-article-h3:first-child { margin-top: 0; } + .dm-article-h3 { + font-size: clamp(19px, 1.5vw, 23px) !important; font-weight: 800 !important; letter-spacing: -.2px !important; + color: #1e293b !important; line-height: 1.34 !important; margin: 40px 0 18px; + text-wrap: balance; + } + @media (max-width: 600px) { + .dm-article-p { font-size: 16px !important; } + .dm-article-ul li, .dm-article-ol li { font-size: 15.5px; } + .dm-article-h2 { font-size: clamp(22px, 6vw, 28px) !important; margin-top: 38px; } + .dm-article-h3 { font-size: clamp(18px, 5vw, 22px) !important; } + } + + .dm-article-ul, .dm-article-ol { + /* Top margin (was 0) separates the list from the paragraph above it; + matching bottom margin keeps it clear of the next heading/paragraph. + Slightly larger than --dm-space-p so the list reads as its own block. */ + margin: clamp(26px, 2.4vw, 32px) 0 clamp(26px, 2.4vw, 32px); + padding-left: 2px; list-style: none; + display: flex; flex-direction: column; gap: 15px; + } + /* Prefixed with .dm-article-body so these beat the theme's global + ".logico-front-end ul li:before" fontello-glyph bullet (specificity 0,1,3), + which otherwise replaces our clean red dot with a misaligned checkmark glyph + and adds its own 1.7em indent. */ + .dm-article-body .dm-article-ul li, .dm-article-body .dm-article-ol li { + position: relative; padding-left: 34px; + font-size: 17px; line-height: 1.65; color: #334155; font-weight: 450; + } + .dm-article-body .dm-article-ul li::before { + content: ""; position: absolute; left: 7px; top: 10px; + width: 8px; height: 8px; border-radius: 50%; background: var(--dm-red); + /* kill any inherited fontello glyph from the global rule */ + font-size: 0; line-height: 0; + } + .dm-article-ol { counter-reset: dm-li; } + .dm-article-body .dm-article-ol li { counter-increment: dm-li; } + .dm-article-body .dm-article-ol li::before { + content: counter(dm-li); position: absolute; left: 0; top: 0; + width: 24px; height: 24px; border-radius: 7px; + background: rgba(192,18,39,0.10); color: var(--dm-red); + font-size: 12px; font-weight: 800; display: flex; align-items: center; justify-content: center; + } + + /* ── Quote ── */ + .dm-article-quote { + position: relative; margin: var(--dm-space-quote) 0; padding: 30px 32px 30px 64px; + background: linear-gradient(135deg, #fbf2f3 0%, #fdf7f8 100%); + border-left: 4px solid var(--dm-red); border-radius: 0 18px 18px 0; + box-shadow: 0 8px 28px rgba(192, 18, 39, 0.06); + } + .dm-article-quote::before { + content: "\201C"; position: absolute; left: 22px; top: 8px; + font-family: Georgia, "Times New Roman", serif; + font-size: 64px; line-height: 1; color: rgba(192, 18, 39, 0.28); font-weight: 700; + } + .dm-article-quote p { + font-size: clamp(19px, 2vw, 23px); line-height: 1.5; font-weight: 600; + font-style: italic; color: #1e293b; margin: 0; + } + .dm-article-quote cite { + display: block; margin-top: 16px; font-size: 13px; font-weight: 700; + font-style: normal; color: var(--dm-red); text-transform: uppercase; letter-spacing: .6px; + } + @media (max-width: 600px) { .dm-article-quote { padding: 26px 22px; } .dm-article-quote::before { display: none; } } + + /* ── Images ── */ + .dm-article-figure { margin: var(--dm-space-img) 0; } + .dm-article-figure-img { + position: relative; display: block; width: 100%; aspect-ratio: 16 / 9; + border-radius: var(--dm-radius-img); overflow: hidden; box-shadow: 0 14px 34px rgba(15,23,42,0.10); + } + .dm-article-figure figcaption { + margin-top: 14px; font-size: 13.5px; color: #94a3b8; font-weight: 500; + text-align: center; font-style: italic; + } + + /* ── Sidebar ── */ + .dm-blog-aside-wrap { position: relative; } + .dm-blog-sidebar { + display: flex; flex-direction: column; gap: 18px; + position: sticky; top: var(--dm-sticky-top); + } + @media (max-width: 1024px) { .dm-blog-sidebar { position: static; gap: 20px; } } + + .dm-blog-widget { + background: #fff; border: var(--dm-border); border-radius: var(--dm-radius-card); + padding: 20px; box-shadow: var(--dm-shadow-card); + } + .dm-blog-widget-title { + font-size: 13px !important; font-weight: 700 !important; text-transform: uppercase !important; + letter-spacing: .8px !important; line-height: 1.35 !important; color: #0f172a !important; + margin: 0 0 15px; padding: 0 0 12px; + border-bottom: 1px solid rgba(15,23,42,0.08); + overflow: visible; white-space: normal; word-break: normal; + } + + /* Search */ + .dm-sr-only { + position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; + overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; + } + .dm-blog-search { position: relative; } + .dm-blog-search-form { position: relative; } + .dm-blog-search-input { + width: 100%; height: 46px; border: 1.5px solid #e2e8f0; border-radius: 12px; + padding: 0 42px 0 15px; font-size: 14px; font-family: inherit; color: #0f172a; + background: #f8fafc; transition: border-color .2s ease, box-shadow .2s ease, background .2s ease; + } + .dm-blog-search-input::placeholder { color: #9c9c9c; } + .dm-blog-search-input:focus { + outline: none; border-color: var(--dm-red); background: #fff; + box-shadow: 0 0 0 3px rgba(192,18,39,0.11); + } + .dm-blog-search-icon { + position: absolute; right: 14px; top: 50%; transform: translateY(-50%); + color: #94a3b8; pointer-events: none; display: flex; + } + .dm-blog-search-results { + position: absolute; z-index: 20; top: calc(100% + 8px); left: 0; right: 0; + background: #fff; border: 1px solid rgba(15,23,42,0.10); border-radius: 14px; + box-shadow: 0 18px 42px rgba(15,23,42,0.14); overflow: hidden; + } + .dm-blog-search-results ul { list-style: none; margin: 0; padding: 6px; } + .dm-blog-search-result { + display: flex; flex-direction: column; gap: 3px; padding: 10px 12px; + border-radius: 10px; text-decoration: none; transition: background .15s ease; + } + .dm-blog-search-result:hover { background: #f8fafc; } + .dm-blog-search-result-cat { + font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .8px; color: var(--dm-red); + } + .dm-blog-search-result-title { font-size: 13.5px; font-weight: 600; color: #1e293b; line-height: 1.35; } + .dm-blog-search-empty { margin: 0; padding: 14px 12px; font-size: 13px; color: #64748b; } + + /* Recent posts */ + .dm-blog-recent { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 15px; } + .dm-blog-recent-item { display: flex; gap: 13px; align-items: center; text-decoration: none; } + .dm-blog-recent-thumb { + position: relative; flex: 0 0 62px; width: 62px; height: 62px; + border-radius: 13px; overflow: hidden; background: #f1f5f9; + } + .dm-blog-recent-meta { display: flex; flex-direction: column; gap: 4px; min-width: 0; } + .dm-blog-recent-title { + font-size: 13.5px; font-weight: 700; color: #1e293b; line-height: 1.35; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-blog-recent-item:hover .dm-blog-recent-title { color: var(--dm-red); } + .dm-blog-recent-date { font-size: 11.5px; font-weight: 600; color: #94a3b8; } + + /* Categories */ + .dm-blog-categories { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; } + .dm-blog-category-item { + display: flex; align-items: center; justify-content: space-between; gap: 10px; + padding: 11px 2px; text-decoration: none; font-size: 14px; font-weight: 600; color: #334155 !important; + border-bottom: 1px solid rgba(15,23,42,0.06); transition: color .2s ease, padding-left .2s ease; + } + .dm-blog-categories li:last-child .dm-blog-category-item { border-bottom: none; } + .dm-blog-category-item:hover { color: var(--dm-red); padding-left: 6px; } + .dm-blog-category-item > span:first-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } + .dm-blog-category-count { + flex: 0 0 auto; font-size: 11px; font-weight: 800; color: #94a3b8; background: #f1f5f9; + min-width: 24px; height: 22px; border-radius: 7px; display: inline-flex; + align-items: center; justify-content: center; padding: 0 7px; + } + + /* CTA card */ + .dm-blog-cta-card { background: #1f1f1f; border-color: #1f1f1f; } + .dm-blog-cta-title { font-size: 18px !important; font-weight: 800 !important; color: #fff !important; line-height: 1.32 !important; margin: 0 0 10px; letter-spacing: -.2px !important; } + .dm-blog-cta-text { font-size: 13.5px; line-height: 1.6; color: #c7c7c7; margin: 0 0 20px; font-weight: 450; } + .dm-blog-cta-btn { + display: inline-flex; align-items: center; gap: 8px; + background: var(--dm-red); color: #fff !important; font-size: 13.5px; font-weight: 700; + padding: 12px 22px; border-radius: 12px; text-decoration: none; + transition: background .2s ease, transform .2s ease; + } + .dm-blog-cta-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } +c:["$","div",null,{"className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"Article\",\"headline\":\"Building a Greener City: The Future of Urban Logistics\",\"description\":\"Cities are asking for cleaner delivery. The practical challenge is planning EV routes that can meet customer windows without wasting charge.\",\"image\":[\"https://www.doormile.com/images/blog-post-pic-6.webp\"],\"datePublished\":\"2025-07-10T00:00:00.000Z\",\"dateModified\":\"2025-07-10T00:00:00.000Z\",\"author\":{\"@type\":\"Organization\",\"name\":\"Doormile Team\",\"url\":\"https://www.doormile.com\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Doormile\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://www.doormile.com/images/cropped-image-2.png\"}},\"mainEntityOfPage\":{\"@type\":\"WebPage\",\"@id\":\"https://www.doormile.com/blog/building-a-greener-city-the-future-of-urban-logistics\"},\"articleSection\":\"Sustainability\"}"}}],["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https://www.doormile.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https://www.doormile.com/blog\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Building a Greener City: The Future of Urban Logistics\",\"item\":\"https://www.doormile.com/blog/building-a-greener-city-the-future-of-urban-logistics\"}]}"}}],["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":[["$","article",null,{"className":"dm-single-blog","children":[["$","link",null,{"rel":"preload","as":"image","href":"/images/blog-post-pic-6.webp"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$17"}}],"$L18","$L19"]}],"$L1a"]}]}]]}] +1b:I[22016,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],""] +1c:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"ScrollReveal"] +18:["$","div",null,{"className":"custom-standard-hero-container","children":["$","div",null,{"className":"custom-standard-hero-card dm-banner-card","style":{"backgroundImage":"url(/images/blog-post-pic-6.webp)","--hero-overlay":"linear-gradient(180deg, rgba(0,0,0,0.38) 0%, rgba(0,0,0,0.46) 55%, rgba(0,0,0,0.60) 100%)"},"children":["$","div",null,{"className":"e-con-inner dm-banner-inner","children":[["$","span",null,{"className":"dm-banner-category","children":"Sustainability"}],["$","h1",null,{"className":"dm-banner-title","children":"Building a Greener City: The Future of Urban Logistics"}]]}]}]}] +19:["$","div",null,{"className":"dm-blog-wrap","children":[["$","div",null,{"className":"dm-meta-bar","children":[["$","nav",null,{"className":"dm-meta-breadcrumb","aria-label":"Breadcrumb","children":["$","ol",null,{"children":[["$","li",null,{"children":["$","$L1b",null,{"href":"/","children":"Home"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"children":["$","$L1b",null,{"href":"/blog","children":"Blog"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"aria-current":"page","className":"dm-meta-current","children":"Building a Greener City: The Future of Urban Logistics"}]]}]}],["$","div",null,{"className":"dm-meta-items","children":[["$","span",null,{"className":"dm-meta-item dm-meta-author","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","path",null,{"d":"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"}],["$","circle",null,{"cx":"12","cy":"7","r":"4"}]]}],"Doormile Team"]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","rect",null,{"x":"3","y":"4","width":"18","height":"18","rx":"2"}],["$","line",null,{"x1":"16","y1":"2","x2":"16","y2":"6"}],["$","line",null,{"x1":"8","y1":"2","x2":"8","y2":"6"}],["$","line",null,{"x1":"3","y1":"10","x2":"21","y2":"10"}]]}],["$","time",null,{"dateTime":"2025-07-10","children":"Jul 10, 2025"}]]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","circle",null,{"cx":"12","cy":"12","r":"9"}],["$","polyline",null,{"points":"12 7 12 12 15 14"}]]}],2," min read"]}]]}]]}],["$","div",null,{"className":"dm-blog-layout","children":[["$","div",null,{"className":"dm-blog-main","children":[["$","p",null,{"className":"dm-blog-intro","children":"Cleaner delivery is becoming an operating requirement, not just a brand message. It depends on EV adoption and route plans that make those vehicles practical every day."}],["$","div",null,{"className":"dm-article-body","children":[["$","$L1c","0",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"In last-mile logistics, a missed SLA is rarely caused by one big failure. It usually comes from small delays adding up across a route. Building a Greener City: The Future of Urban Logistics looks at how delivery teams can spot those delays early and plan around them before vehicles leave the hub."}]}],["$","$L1c","1",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"Why this matters for fleet teams"}]}],["$","$L1c","2",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"Every extra kilometre costs money. It uses fuel or charge, adds rider time, wears down vehicles, and increases the chance of a late delivery. When routes are built from fixed zones or old habits, those costs repeat every day."}]}],["$","$L1c","3",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ul",null,{"className":"dm-article-ul","children":[["$","li","0",{"children":"Fewer vehicles needed for the same number of drops"}],["$","li","1",{"children":"Lower cost per drop through better stop sequencing"}],["$","li","2",{"children":"ETAs that match traffic, distance, and delivery windows"}],["$","li","3",{"children":"Less fuel or charge used per completed order"}]]}]}],["$","$L1c","4",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h3",null,{"className":"dm-article-h3","children":"From orders to dispatch"}]}],["$","$L1c","5",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"A good dispatch plan starts with the basics: order locations, promised delivery windows, rider capacity, vehicle range, and known traffic trouble spots. MileTruth™ checks those inputs before dispatch so the team is not fixing avoidable mistakes on the road."}]}],["$","$L1c","6",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","figure",null,{"className":"dm-article-figure","children":["$L1d","$L1e"]}]}],"$L1f","$L20","$L21","$L22","$L23"]}]]}],"$L24"]}]]}] +25:T2021, + .dm-blog-footer { + font-family: var(--font-manrope), sans-serif; --dm-red: #c01227; --dm-red-hover: #e31d32; + /* The global theme applies 72px top/bottom section padding — strip it so the + inner container is the single source of vertical rhythm (no double gap). */ + padding: 0 !important; + } + /* Neutralize the global theme's 120/80/60px UPPERCASE heading rules */ + .dm-blog-footer :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline) */ + .dm-blog-footer a { text-decoration: none !important; } + /* Shared content container — mirrors SingleBlog's .dm-blog-wrap (same 1280px + max-width + 20→40px horizontal padding) so Prev/Next, Related and the CTA + align to the exact same left/right edges as the article body above. + Vertical rhythm: ~64px from the article end to the Prev/Next divider, then a + consistent ~64–72px section→section gap (no 120px+ voids). */ + .dm-blog-footer-inner { + max-width: 1280px; margin: 0 auto; + /* Compact vertical rhythm on an 8px system. Top padding sets the + article→Prev/Next gap (~24–32px); the inter-section gap sets the + Prev/Next→Related gap (~32–48px). No large arbitrary voids. */ + /* Minimal bottom padding — the global site footer already contributes its + own 20px top inset, so the CTA banner sits close to it without a void. */ + padding: clamp(24px, 3vw, 32px) clamp(20px, 4vw, 40px) clamp(8px, 1.5vw, 16px); + display: flex; flex-direction: column; gap: clamp(32px, 4vw, 48px); + } + @media (max-width: 767px) { + .dm-blog-footer-inner { + padding-left: 16px; + padding-right: 16px; + } + } + + /* Prev / Next */ + .dm-prevnext { + display: grid; grid-template-columns: 1fr 1fr; gap: 20px; + /* Halved from 40px: tight divider→cards spacing without crowding. */ + padding-top: clamp(16px, 2vw, 24px); border-top: 1px solid rgba(15,23,42,0.08); + } + @media (max-width: 640px) { .dm-prevnext { grid-template-columns: 1fr; } } + .dm-prevnext-placeholder { display: block; } + .dm-prevnext-card { + display: flex; gap: 16px; align-items: center; padding: 16px; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + text-decoration: none; transition: transform .3s ease, box-shadow .3s ease, border-color .3s ease; + } + .dm-prevnext-card:hover { + transform: translateY(-4px); border-color: rgba(192,18,39,0.2); + box-shadow: 0 16px 34px rgba(192,18,39,0.10); + } + .dm-prevnext-thumb { + position: relative; flex: 0 0 80px; width: 80px; height: 80px; + border-radius: 16px; overflow: hidden; background: #f1f5f9; + } + .dm-prevnext-text { display: flex; flex-direction: column; gap: 5px; min-width: 0; } + .dm-prevnext-next { text-align: right; } + .dm-prevnext-next .dm-prevnext-text { align-items: flex-end; } + .dm-prevnext-label { + display: inline-flex; align-items: center; gap: 6px; + font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: 1px; color: var(--dm-red); + } + .dm-prevnext-cat { font-size: 11px; font-weight: 700; color: #94a3b8; text-transform: uppercase; letter-spacing: .5px; } + .dm-prevnext-title { + font-size: 15.5px; font-weight: 700; color: #1e293b; line-height: 1.4; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-prevnext-card:hover .dm-prevnext-title { color: var(--dm-red); } + + /* Related */ + .dm-related-heading { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 850 !important; letter-spacing: -.4px !important; + line-height: 1.25 !important; color: #0f172a !important; margin: 0 0 24px; + } + .dm-related-grid { + display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; + } + @media (max-width: 1024px) { .dm-related-grid { grid-template-columns: repeat(2, 1fr); } } + @media (max-width: 700px) { .dm-related-grid { grid-template-columns: 1fr; gap: 24px; } } + + .dm-related-card { + display: flex; flex-direction: column; height: 100%; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + overflow: hidden; box-shadow: 0 4px 24px rgba(15,23,42,0.05); text-decoration: none; + transition: transform .4s cubic-bezier(0.2,0.8,0.2,1), box-shadow .4s ease, border-color .4s ease; + } + .dm-related-card:hover { + transform: translateY(-8px); box-shadow: 0 22px 44px rgba(192,18,39,0.13); + border-color: rgba(192,18,39,0.2); + } + .dm-related-img { + position: relative; width: 100%; aspect-ratio: 16 / 10; overflow: hidden; background: #f1f5f9; + } + .dm-related-img img { transition: transform .5s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-img img { transform: scale(1.05); } + .dm-related-badge { + position: absolute; top: 14px; left: 14px; z-index: 5; background: var(--dm-red); color: #fff; + font-size: 9px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.2px; + padding: 5px 11px; border-radius: 8px; box-shadow: 0 4px 12px rgba(192,18,39,0.25); + } + .dm-related-body { display: flex; flex-direction: column; flex: 1; padding: 22px; } + .dm-related-card-title { + font-size: 17px !important; font-weight: 800 !important; color: #1e293b !important; line-height: 1.4 !important; + letter-spacing: -.2px !important; margin: 0 0 10px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-related-card:hover .dm-related-card-title { color: var(--dm-red); } + .dm-related-card-excerpt { + font-size: 13.5px; font-weight: 500; color: #64748b; line-height: 1.6; margin: 0 0 18px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + } + .dm-related-readmore { + margin-top: auto; display: inline-flex; align-items: center; gap: 7px; + font-size: 12.5px; font-weight: 800; color: var(--dm-red); + text-transform: uppercase; letter-spacing: .6px; + } + .dm-related-readmore-arrow { transition: transform .3s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-readmore-arrow { transform: translateX(5px); } + + /* Contact CTA banner */ + .dm-blog-contact-cta { + display: flex; align-items: center; justify-content: space-between; gap: 32px; + flex-wrap: wrap; + background: linear-gradient(135deg, #1a1a1a 0%, #2d1417 100%); + border-radius: 30px; padding: clamp(32px, 4vw, 56px); + position: relative; overflow: hidden; + } + .dm-blog-contact-cta::after { + content: ""; position: absolute; right: -80px; top: -80px; width: 300px; height: 300px; + background: radial-gradient(circle, rgba(192,18,39,0.40), transparent 70%); + pointer-events: none; + } + .dm-blog-contact-cta-content { position: relative; z-index: 1; max-width: 640px; } + .dm-blog-contact-eyebrow { + display: inline-block; font-size: 12px; font-weight: 800; text-transform: uppercase; + letter-spacing: 1.4px; color: #ff8088; margin-bottom: 14px; + } + .dm-blog-contact-title { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 800 !important; line-height: 1.25 !important; + letter-spacing: -.3px !important; color: #ffffff !important; margin: 0 0 12px; text-wrap: balance; + } + .dm-blog-contact-sub { + font-size: 15.5px; line-height: 1.65; color: #e2e2e2; margin: 0; font-weight: 450; + } + .dm-blog-contact-btn { + position: relative; z-index: 1; flex-shrink: 0; + display: inline-flex; align-items: center; justify-content: center; gap: 10px; + background: var(--dm-red); color: #fff !important; font-size: 15px; font-weight: 700; + padding: 16px 32px; border-radius: 16px; text-decoration: none; + box-shadow: 0 10px 26px rgba(192,18,39,0.34); + transition: background .2s ease, transform .2s ease; + } + .dm-blog-contact-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } + @media (max-width: 720px) { + .dm-blog-contact-cta { flex-direction: column; align-items: flex-start; gap: 26px; } + .dm-blog-contact-btn { width: 100%; } + } +1a:["$","section",null,{"className":"dm-blog-footer","aria-label":"More articles","children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$25"}}],"$L26"]}] +27:I[5500,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"Image"] +28:I[23096,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"default"] +1d:["$","span",null,{"className":"dm-article-figure-img","children":["$","$L27",null,{"src":"/images/blog-post-pic-6.webp","alt":"Building a Greener City: The Future of Urban Logistics","fill":true,"sizes":"(max-width: 768px) 100vw, 760px","style":{"objectFit":"cover"}}]}] +1e:["$","figcaption",null,{"children":"Sustainability: route planning decisions made before dispatch."}] +1f:["$","$L1c","7",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","blockquote",null,{"className":"dm-article-quote","children":[["$","p",null,{"children":"A route should be checked before the rider leaves, not explained after the customer calls."}],["$","cite",null,{"children":"Doormile Operations"}]]}]}] +20:["$","$L1c","8",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"Putting it into practice"}]}] +21:["$","$L1c","9",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"The best improvements usually start with simple measurements. Track distance per route, failed delivery windows, rider idle time, and orders moved between vehicles after dispatch. Those numbers show where the operation is leaking time."}]}] +22:["$","$L1c","10",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ol",null,{"className":"dm-article-ol","children":[["$","li","0",{"children":"Benchmark today's distance, fleet size, and on-time rate."}],["$","li","1",{"children":"Include vehicle capacity, delivery windows, rider shifts, and battery charge."}],["$","li","2",{"children":"Check routes against traffic and customer commitments before dispatch."}],["$","li","3",{"children":"Compare the next dispatch cycle against the old plan."}]]}]}] +23:["$","$L1c","11",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"Better routing is not about pushing riders harder. It is about giving them a plan that already accounts for the real day ahead."}]}] +24:["$","div",null,{"className":"dm-blog-aside-wrap","children":["$","aside",null,{"className":"dm-blog-sidebar","aria-label":"Blog sidebar","children":[["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Search"}],["$","$L28",null,{}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Recent Posts"}],["$","ul",null,{"className":"dm-blog-recent","children":[["$","li","how-ai-is-transforming-last-mile-ev-delivery",{"children":["$","$L1b",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"How Better Planning Improves Last-Mile EV Delivery"}],["$","time",null,{"dateTime":"2025-10-02","className":"dm-blog-recent-date","children":"Oct 2, 2025"}]]}]]}]}],["$","li","42-less-distance-insights-from-our-hyderabad-hub",{"children":["$","$L1b",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}],["$","time",null,{"dateTime":"2025-09-18","className":"dm-blog-recent-date","children":"Sep 18, 2025"}]]}]]}]}],["$","li","miletruth-ai-10-stages-to-smarter-dispatch",{"children":["$","$L1b",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","time",null,{"dateTime":"2025-09-05","className":"dm-blog-recent-date","children":"Sep 5, 2025"}]]}]]}]}],["$","li","the-ev-paradox-solving-range-anxiety-for-urban-fleets",{"children":["$","$L1b",null,{"href":"/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/ev-paradox.webp","alt":"The EV Paradox: Solving Range Anxiety for Urban Fleets","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}],["$","time",null,{"dateTime":"2025-08-21","className":"dm-blog-recent-date","children":"Aug 21, 2025"}]]}]]}]}]]}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Categories"}],["$","ul",null,{"className":"dm-blog-categories","children":[["$","li","Case Study",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Case Study"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","EV Fleet",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"EV Fleet"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}],["$","li","Fleet Management",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Fleet Management"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","MileTruth",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"MileTruth"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],"$L29","$L2a","$L2b"]}]]}],"$L2c"]}]}] +26:["$","div",null,{"className":"dm-blog-footer-inner","children":[["$","nav",null,{"className":"dm-prevnext","aria-label":"Article navigation","children":[["$","$L1b",null,{"href":"/blog/fleet-reduction-without-compromising-delivery-volume","className":"dm-prevnext-card dm-prevnext-prev","children":[["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-8.webp","alt":"Fleet Reduction Without Compromising Delivery Volume","fill":true,"sizes":"80px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-prevnext-text","children":[["$","span",null,{"className":"dm-prevnext-label","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"19","y1":"12","x2":"5","y2":"12"}],["$","polyline",null,{"points":"12 19 5 12 12 5"}]]}],"Previous"]}],["$","span",null,{"className":"dm-prevnext-cat","children":"Fleet Management"}],["$","span",null,{"className":"dm-prevnext-title","children":"Fleet Reduction Without Compromising Delivery Volume"}]]}]]}],["$","$L1b",null,{"href":"/blog/how-doormile-maintains-99-9-sla-compliance-at-scale","className":"dm-prevnext-card dm-prevnext-next","children":[["$","span",null,{"className":"dm-prevnext-text","children":[["$","span",null,{"className":"dm-prevnext-label","children":["Next",["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","span",null,{"className":"dm-prevnext-cat","children":"Operations"}],["$","span",null,{"className":"dm-prevnext-title","children":"How Doormile Maintains 99.9% SLA Compliance at Scale"}]]}],["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L27",null,{"src":"/images/last-mile-approach.webp","alt":"How Doormile Maintains 99.9% SLA Compliance at Scale","fill":true,"sizes":"80px","style":{"objectFit":"cover"}}]}]]}]]}],["$","div",null,{"className":"dm-related","children":[["$","h2",null,{"className":"dm-related-heading","children":"Related Articles"}],["$","div",null,{"className":"dm-related-grid","children":[["$","$L1c","how-ai-is-transforming-last-mile-ev-delivery",{"delay":0,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L27",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Technology"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"How Better Planning Improves Last-Mile EV Delivery"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"A practical look at how EV fleets can plan routes, manage charging, and keep delivery promises without adding unnecessary vehicles."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}],["$","$L1c","42-less-distance-insights-from-our-hyderabad-hub",{"delay":0.08,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L27",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Case Study"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}],"$L2d","$L2e"]}]]}]}],"$L2f"]}]]}],"$L30"]}] +29:["$","li","Operations",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Operations"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +2a:["$","li","Sustainability",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Sustainability"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +2b:["$","li","Technology",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Technology"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}] +2c:["$","section",null,{"className":"dm-blog-widget dm-blog-cta-card","children":[["$","h2",null,{"className":"dm-blog-cta-title","children":"Planning delivery routes?"}],["$","p",null,{"className":"dm-blog-cta-text","children":"Talk to us about reducing wasted distance, missed windows, and avoidable vehicle time."}],["$","$L1b",null,{"href":"/contact","className":"dm-blog-cta-btn","children":["Contact Us",["$","svg",null,{"width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] +2d:["$","p",null,{"className":"dm-related-card-excerpt","children":"A practical look at how one Hyderabad hub reduced distance, used fewer vehicles, and protected delivery windows with better route planning."}] +2e:["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}] +2f:["$","$L1c","miletruth-ai-10-stages-to-smarter-dispatch",{"delay":0.16,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L27",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"MileTruth"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"From order intake to final route output, here is how a dispatch plan is checked before riders leave the hub."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}] +30:["$","div",null,{"className":"dm-blog-contact-cta","children":[["$","div",null,{"className":"dm-blog-contact-cta-content","children":[["$","span",null,{"className":"dm-blog-contact-eyebrow","children":"Let's talk logistics"}],["$","h2",null,{"className":"dm-blog-contact-title","children":"Ready to move smarter with Doormile?"}],["$","p",null,{"className":"dm-blog-contact-sub","children":"Tell us about your fleet and routes — we'll show you where the distance, vehicles and emissions are hiding."}]]}],["$","$L1b",null,{"href":"/contact","className":"dm-blog-contact-btn","children":["Get in Touch",["$","svg",null,{"width":"20","height":"20","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] +12:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] +31:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +f:null +14:[["$","title","0",{"children":"Building a Greener City: The Future of Urban Logistics – Doormile"}],["$","meta","1",{"name":"description","content":"Cities are asking for cleaner delivery. The practical challenge is planning EV routes that can meet customer windows without wasting charge."}],["$","meta","2",{"name":"author","content":"Doormile Team"}],["$","meta","3",{"name":"keywords","content":"Sustainability,last-mile logistics,EV fleet,MileTruth,route optimisation"}],["$","meta","4",{"name":"robots","content":"index, follow"}],["$","link","5",{"rel":"canonical","href":"https://www.doormile.com/blog/building-a-greener-city-the-future-of-urban-logistics"}],["$","meta","6",{"property":"og:title","content":"Building a Greener City: The Future of Urban Logistics"}],["$","meta","7",{"property":"og:description","content":"Cities are asking for cleaner delivery. The practical challenge is planning EV routes that can meet customer windows without wasting charge."}],["$","meta","8",{"property":"og:url","content":"https://www.doormile.com/blog/building-a-greener-city-the-future-of-urban-logistics"}],["$","meta","9",{"property":"og:site_name","content":"Doormile"}],["$","meta","10",{"property":"og:image","content":"https://www.doormile.com/images/blog-post-pic-6.webp"}],["$","meta","11",{"property":"og:image:alt","content":"Building a Greener City: The Future of Urban Logistics"}],["$","meta","12",{"property":"og:type","content":"article"}],["$","meta","13",{"property":"article:published_time","content":"2025-07-10T00:00:00.000Z"}],["$","meta","14",{"property":"article:author","content":"Doormile Team"}],["$","meta","15",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","16",{"name":"twitter:title","content":"Building a Greener City: The Future of Urban Logistics"}],["$","meta","17",{"name":"twitter:description","content":"Cities are asking for cleaner delivery. The practical challenge is planning EV routes that can meet customer windows without wasting charge."}],["$","meta","18",{"name":"twitter:image","content":"https://www.doormile.com/images/blog-post-pic-6.webp"}],["$","link","19",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","20",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","21",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","22",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L31","23",{}]] diff --git a/build/blog/building-a-greener-city-the-future-of-urban-logistics/__next._head.txt b/build/blog/building-a-greener-city-the-future-of-urban-logistics/__next._head.txt new file mode 100644 index 0000000..219a702 --- /dev/null +++ b/build/blog/building-a-greener-city-the-future-of-urban-logistics/__next._head.txt @@ -0,0 +1,6 @@ +1:"$Sreact.fragment" +2:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +3:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +4:"$Sreact.suspense" +5:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +0:{"rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"Building a Greener City: The Future of Urban Logistics – Doormile"}],["$","meta","1",{"name":"description","content":"Cities are asking for cleaner delivery. The practical challenge is planning EV routes that can meet customer windows without wasting charge."}],["$","meta","2",{"name":"author","content":"Doormile Team"}],["$","meta","3",{"name":"keywords","content":"Sustainability,last-mile logistics,EV fleet,MileTruth,route optimisation"}],["$","meta","4",{"name":"robots","content":"index, follow"}],["$","link","5",{"rel":"canonical","href":"https://www.doormile.com/blog/building-a-greener-city-the-future-of-urban-logistics"}],["$","meta","6",{"property":"og:title","content":"Building a Greener City: The Future of Urban Logistics"}],["$","meta","7",{"property":"og:description","content":"Cities are asking for cleaner delivery. The practical challenge is planning EV routes that can meet customer windows without wasting charge."}],["$","meta","8",{"property":"og:url","content":"https://www.doormile.com/blog/building-a-greener-city-the-future-of-urban-logistics"}],["$","meta","9",{"property":"og:site_name","content":"Doormile"}],["$","meta","10",{"property":"og:image","content":"https://www.doormile.com/images/blog-post-pic-6.webp"}],["$","meta","11",{"property":"og:image:alt","content":"Building a Greener City: The Future of Urban Logistics"}],["$","meta","12",{"property":"og:type","content":"article"}],["$","meta","13",{"property":"article:published_time","content":"2025-07-10T00:00:00.000Z"}],["$","meta","14",{"property":"article:author","content":"Doormile Team"}],["$","meta","15",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","16",{"name":"twitter:title","content":"Building a Greener City: The Future of Urban Logistics"}],["$","meta","17",{"name":"twitter:description","content":"Cities are asking for cleaner delivery. The practical challenge is planning EV routes that can meet customer windows without wasting charge."}],["$","meta","18",{"name":"twitter:image","content":"https://www.doormile.com/images/blog-post-pic-6.webp"}],["$","link","19",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","20",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","21",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","22",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L5","23",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/blog/building-a-greener-city-the-future-of-urban-logistics/__next._index.txt b/build/blog/building-a-greener-city-the-future-of-urban-logistics/__next._index.txt new file mode 100644 index 0000000..d0b3355 --- /dev/null +++ b/build/blog/building-a-greener-city-the-future-of-urban-logistics/__next._index.txt @@ -0,0 +1,15 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","template":["$","$La",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/blog/building-a-greener-city-the-future-of-urban-logistics/__next._tree.txt b/build/blog/building-a-greener-city-the-future-of-urban-logistics/__next._tree.txt new file mode 100644 index 0000000..ae214b8 --- /dev/null +++ b/build/blog/building-a-greener-city-the-future-of-urban-logistics/__next._tree.txt @@ -0,0 +1,10 @@ +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +:HL["/images/blog-post-pic-6.webp","image"] +0:{"tree":{"name":"","param":null,"prefetchHints":16,"slots":{"children":{"name":"blog","param":null,"prefetchHints":0,"slots":{"children":{"name":"slug","param":{"type":"d","key":"building-a-greener-city-the-future-of-urban-logistics","siblings":null},"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}}}}}},"staleTime":300,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/blog/building-a-greener-city-the-future-of-urban-logistics/__next.blog.$d$slug.__PAGE__.txt b/build/blog/building-a-greener-city-the-future-of-urban-logistics/__next.blog.$d$slug.__PAGE__.txt new file mode 100644 index 0000000..0aeb898 --- /dev/null +++ b/build/blog/building-a-greener-city-the-future-of-urban-logistics/__next.blog.$d$slug.__PAGE__.txt @@ -0,0 +1,520 @@ +1:"$Sreact.fragment" +8:I[22016,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],""] +9:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"ScrollReveal"] +14:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +15:"$Sreact.suspense" +17:I[5500,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"Image"] +18:I[23096,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"default"] +:HL["/images/blog-post-pic-6.webp","image"] +2:T3d6f, + .dm-single-blog { + --dm-red: #c01227; + --dm-red-hover: #e31d32; + --dm-radius-card: 22px; + --dm-radius-img: 20px; + --dm-radius-badge: 8px; + --dm-shadow-card: 0 4px 24px rgba(15, 23, 42, 0.05); + --dm-border: 1px solid rgba(15, 23, 42, 0.09); + --dm-space-p: 24px; + --dm-space-h: 32px; + --dm-space-img: 32px; + --dm-space-quote: 40px; + --dm-sticky-top: 138px; + --dm-measure: min(1100px, 100%); + font-family: var(--font-manrope), sans-serif; + } + + /* Heading normalization. Beat the global theme's .elementor-kit-5 h1-h6 + (120/80/60px UPPERCASE) rules with !important on our own classes. */ + .dm-single-blog :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline, + specificity 0-1-1) so blog links keep our colors and never get underlined. */ + .dm-single-blog a { text-decoration: none !important; } + + /* Page banner: tall homepage-scale frame with only badge + title inside */ + /* Compound selector (specificity 20) + !important beats the global 800px + single-class height rules so the blog banner can use viewport heights. */ + .custom-standard-hero-card.dm-banner-card { + height: 90vh !important; + min-height: 85vh !important; + } + @media (max-width: 1024px) { + .custom-standard-hero-card.dm-banner-card { height: 80vh !important; min-height: 75vh !important; } + } + @media (max-width: 600px) { + .custom-standard-hero-card.dm-banner-card { height: 78vh !important; min-height: 72vh !important; } + } + + .dm-banner-inner { + position: relative; width: 100%; height: 100%; + display: flex; flex-direction: column; align-items: center; justify-content: center; + text-align: center; gap: clamp(22px, 2.6vw, 34px); + padding: clamp(48px, 8vh, 96px) clamp(20px, 5vw, 48px); + } + + .dm-banner-category { + display: inline-block; background: var(--dm-red); color: #fff; + font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.6px; + padding: 9px 18px; border-radius: 999px; box-shadow: 0 8px 22px rgba(192,18,39,0.45); + } + .dm-banner-title { + font-family: var(--font-manrope), sans-serif !important; + font-size: clamp(34px, 5vw, 60px) !important; font-weight: 850 !important; + line-height: 1.16 !important; letter-spacing: -1.2px !important; + color: #ffffff !important; margin: 0; max-width: 820px; + text-wrap: balance; text-shadow: 0 2px 30px rgba(0,0,0,0.38); + } + @media (max-width: 1024px) { .dm-banner-title { font-size: clamp(32px, 6vw, 48px) !important; max-width: 90%; } } + @media (max-width: 600px) { .dm-banner-title { font-size: clamp(28px, 8vw, 38px) !important; max-width: 90%; } } + + /* Content wrap begins immediately below the banner */ + /* Shared content container: the SAME max-width + horizontal padding is used + by BlogPostFooter (.dm-blog-footer-inner) so the article body, headings, + images, Prev/Next, Related Articles and the CTA banner all align to one + grid with identical left/right edges. Keep both in sync. */ + .dm-blog-wrap { + max-width: 1280px; margin: 0 auto; + /* 20px mobile padding floor → 40px on desktop; matches the footer container. */ + padding: clamp(14px, 2vw, 26px) clamp(20px, 4vw, 40px) 0; + } + @media (max-width: 767px) { + .dm-blog-wrap { + padding-left: 16px; + padding-right: 16px; + } + } + + /* ── Article meta bar (directly under the hero) ── */ + .dm-meta-bar { + display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 14px 24px; + padding: clamp(20px, 2.6vw, 30px) 0; margin-bottom: clamp(26px, 3vw, 44px); + border-bottom: 1px solid rgba(15,23,42,0.10); + } + .dm-meta-breadcrumb ol { + list-style: none; display: flex; flex-wrap: wrap; align-items: center; + gap: 8px; margin: 0; padding: 0; font-size: 13px; font-weight: 600; color: #64748b; + } + .dm-meta-breadcrumb a { color: #64748b !important; text-decoration: none; transition: color .2s ease; } + .dm-meta-breadcrumb a:hover { color: var(--dm-red) !important; } + .dm-meta-sep { color: #cbd5e1; } + .dm-meta-current { + color: #0f172a; font-weight: 700; + max-width: min(40ch, 46vw); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; + } + @media (max-width: 600px) { .dm-meta-current { max-width: 56vw; } } + .dm-meta-items { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 20px; } + .dm-meta-item { + display: inline-flex; align-items: center; gap: 7px; + font-size: 13.5px; font-weight: 600; color: #475569; + } + .dm-meta-item svg { color: var(--dm-red); flex: 0 0 auto; } + .dm-meta-author { color: #0f172a; font-weight: 700; } + @media (max-width: 600px) { .dm-meta-bar { gap: 12px; } } + .dm-blog-layout { + display: grid; grid-template-columns: minmax(0,1fr) 320px; + /* Tighter gap gives the reading column more room next to the 320px sidebar. */ + gap: clamp(28px, 3vw, 56px); align-items: start; + } + @media (max-width: 1024px) { + .dm-blog-layout { grid-template-columns: 1fr; gap: 48px; } + /* Single-column (tablet/mobile): cap the reading column and centre it so the + article never sits left-aligned with a large empty right gutter. */ + .dm-blog-main { max-width: 900px; margin-inline: auto; } + } + .dm-blog-main { min-width: 0; } + + /* ── Intro lead ── */ + .dm-blog-intro { + max-width: var(--dm-measure); + font-size: clamp(18px, 1.5vw, 20px); line-height: 1.65; font-weight: 500; + color: #475569; margin: 0 0 clamp(26px, 3vw, 38px); padding-left: 20px; + border-left: 3px solid var(--dm-red); + } + + /* ── Article body ── */ + .dm-article-body { max-width: var(--dm-measure); } + .dm-article-p { + font-size: 18px !important; line-height: 1.8 !important; color: #334155; font-weight: 450; + margin: 0 0 var(--dm-space-p); + } + .dm-article-h2 { + font-size: clamp(23px, 2vw, 30px) !important; font-weight: 800 !important; letter-spacing: -.3px !important; + color: #0f172a !important; line-height: 1.3 !important; margin: 48px 0 var(--dm-space-h); + text-wrap: balance; + } + /* Each article block is wrapped in its OWN ScrollReveal
    , so a bare + :first-child rule matched every heading (each is the only child of its + wrapper) and zeroed its top margin, collapsing the gap above every + section heading. Scope the reset to only the article body's first block. */ + .dm-article-body > :first-child :where(.dm-article-h2, .dm-article-h3), + .dm-article-body > .dm-article-h2:first-child, + .dm-article-body > .dm-article-h3:first-child { margin-top: 0; } + .dm-article-h3 { + font-size: clamp(19px, 1.5vw, 23px) !important; font-weight: 800 !important; letter-spacing: -.2px !important; + color: #1e293b !important; line-height: 1.34 !important; margin: 40px 0 18px; + text-wrap: balance; + } + @media (max-width: 600px) { + .dm-article-p { font-size: 16px !important; } + .dm-article-ul li, .dm-article-ol li { font-size: 15.5px; } + .dm-article-h2 { font-size: clamp(22px, 6vw, 28px) !important; margin-top: 38px; } + .dm-article-h3 { font-size: clamp(18px, 5vw, 22px) !important; } + } + + .dm-article-ul, .dm-article-ol { + /* Top margin (was 0) separates the list from the paragraph above it; + matching bottom margin keeps it clear of the next heading/paragraph. + Slightly larger than --dm-space-p so the list reads as its own block. */ + margin: clamp(26px, 2.4vw, 32px) 0 clamp(26px, 2.4vw, 32px); + padding-left: 2px; list-style: none; + display: flex; flex-direction: column; gap: 15px; + } + /* Prefixed with .dm-article-body so these beat the theme's global + ".logico-front-end ul li:before" fontello-glyph bullet (specificity 0,1,3), + which otherwise replaces our clean red dot with a misaligned checkmark glyph + and adds its own 1.7em indent. */ + .dm-article-body .dm-article-ul li, .dm-article-body .dm-article-ol li { + position: relative; padding-left: 34px; + font-size: 17px; line-height: 1.65; color: #334155; font-weight: 450; + } + .dm-article-body .dm-article-ul li::before { + content: ""; position: absolute; left: 7px; top: 10px; + width: 8px; height: 8px; border-radius: 50%; background: var(--dm-red); + /* kill any inherited fontello glyph from the global rule */ + font-size: 0; line-height: 0; + } + .dm-article-ol { counter-reset: dm-li; } + .dm-article-body .dm-article-ol li { counter-increment: dm-li; } + .dm-article-body .dm-article-ol li::before { + content: counter(dm-li); position: absolute; left: 0; top: 0; + width: 24px; height: 24px; border-radius: 7px; + background: rgba(192,18,39,0.10); color: var(--dm-red); + font-size: 12px; font-weight: 800; display: flex; align-items: center; justify-content: center; + } + + /* ── Quote ── */ + .dm-article-quote { + position: relative; margin: var(--dm-space-quote) 0; padding: 30px 32px 30px 64px; + background: linear-gradient(135deg, #fbf2f3 0%, #fdf7f8 100%); + border-left: 4px solid var(--dm-red); border-radius: 0 18px 18px 0; + box-shadow: 0 8px 28px rgba(192, 18, 39, 0.06); + } + .dm-article-quote::before { + content: "\201C"; position: absolute; left: 22px; top: 8px; + font-family: Georgia, "Times New Roman", serif; + font-size: 64px; line-height: 1; color: rgba(192, 18, 39, 0.28); font-weight: 700; + } + .dm-article-quote p { + font-size: clamp(19px, 2vw, 23px); line-height: 1.5; font-weight: 600; + font-style: italic; color: #1e293b; margin: 0; + } + .dm-article-quote cite { + display: block; margin-top: 16px; font-size: 13px; font-weight: 700; + font-style: normal; color: var(--dm-red); text-transform: uppercase; letter-spacing: .6px; + } + @media (max-width: 600px) { .dm-article-quote { padding: 26px 22px; } .dm-article-quote::before { display: none; } } + + /* ── Images ── */ + .dm-article-figure { margin: var(--dm-space-img) 0; } + .dm-article-figure-img { + position: relative; display: block; width: 100%; aspect-ratio: 16 / 9; + border-radius: var(--dm-radius-img); overflow: hidden; box-shadow: 0 14px 34px rgba(15,23,42,0.10); + } + .dm-article-figure figcaption { + margin-top: 14px; font-size: 13.5px; color: #94a3b8; font-weight: 500; + text-align: center; font-style: italic; + } + + /* ── Sidebar ── */ + .dm-blog-aside-wrap { position: relative; } + .dm-blog-sidebar { + display: flex; flex-direction: column; gap: 18px; + position: sticky; top: var(--dm-sticky-top); + } + @media (max-width: 1024px) { .dm-blog-sidebar { position: static; gap: 20px; } } + + .dm-blog-widget { + background: #fff; border: var(--dm-border); border-radius: var(--dm-radius-card); + padding: 20px; box-shadow: var(--dm-shadow-card); + } + .dm-blog-widget-title { + font-size: 13px !important; font-weight: 700 !important; text-transform: uppercase !important; + letter-spacing: .8px !important; line-height: 1.35 !important; color: #0f172a !important; + margin: 0 0 15px; padding: 0 0 12px; + border-bottom: 1px solid rgba(15,23,42,0.08); + overflow: visible; white-space: normal; word-break: normal; + } + + /* Search */ + .dm-sr-only { + position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; + overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; + } + .dm-blog-search { position: relative; } + .dm-blog-search-form { position: relative; } + .dm-blog-search-input { + width: 100%; height: 46px; border: 1.5px solid #e2e8f0; border-radius: 12px; + padding: 0 42px 0 15px; font-size: 14px; font-family: inherit; color: #0f172a; + background: #f8fafc; transition: border-color .2s ease, box-shadow .2s ease, background .2s ease; + } + .dm-blog-search-input::placeholder { color: #9c9c9c; } + .dm-blog-search-input:focus { + outline: none; border-color: var(--dm-red); background: #fff; + box-shadow: 0 0 0 3px rgba(192,18,39,0.11); + } + .dm-blog-search-icon { + position: absolute; right: 14px; top: 50%; transform: translateY(-50%); + color: #94a3b8; pointer-events: none; display: flex; + } + .dm-blog-search-results { + position: absolute; z-index: 20; top: calc(100% + 8px); left: 0; right: 0; + background: #fff; border: 1px solid rgba(15,23,42,0.10); border-radius: 14px; + box-shadow: 0 18px 42px rgba(15,23,42,0.14); overflow: hidden; + } + .dm-blog-search-results ul { list-style: none; margin: 0; padding: 6px; } + .dm-blog-search-result { + display: flex; flex-direction: column; gap: 3px; padding: 10px 12px; + border-radius: 10px; text-decoration: none; transition: background .15s ease; + } + .dm-blog-search-result:hover { background: #f8fafc; } + .dm-blog-search-result-cat { + font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .8px; color: var(--dm-red); + } + .dm-blog-search-result-title { font-size: 13.5px; font-weight: 600; color: #1e293b; line-height: 1.35; } + .dm-blog-search-empty { margin: 0; padding: 14px 12px; font-size: 13px; color: #64748b; } + + /* Recent posts */ + .dm-blog-recent { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 15px; } + .dm-blog-recent-item { display: flex; gap: 13px; align-items: center; text-decoration: none; } + .dm-blog-recent-thumb { + position: relative; flex: 0 0 62px; width: 62px; height: 62px; + border-radius: 13px; overflow: hidden; background: #f1f5f9; + } + .dm-blog-recent-meta { display: flex; flex-direction: column; gap: 4px; min-width: 0; } + .dm-blog-recent-title { + font-size: 13.5px; font-weight: 700; color: #1e293b; line-height: 1.35; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-blog-recent-item:hover .dm-blog-recent-title { color: var(--dm-red); } + .dm-blog-recent-date { font-size: 11.5px; font-weight: 600; color: #94a3b8; } + + /* Categories */ + .dm-blog-categories { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; } + .dm-blog-category-item { + display: flex; align-items: center; justify-content: space-between; gap: 10px; + padding: 11px 2px; text-decoration: none; font-size: 14px; font-weight: 600; color: #334155 !important; + border-bottom: 1px solid rgba(15,23,42,0.06); transition: color .2s ease, padding-left .2s ease; + } + .dm-blog-categories li:last-child .dm-blog-category-item { border-bottom: none; } + .dm-blog-category-item:hover { color: var(--dm-red); padding-left: 6px; } + .dm-blog-category-item > span:first-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } + .dm-blog-category-count { + flex: 0 0 auto; font-size: 11px; font-weight: 800; color: #94a3b8; background: #f1f5f9; + min-width: 24px; height: 22px; border-radius: 7px; display: inline-flex; + align-items: center; justify-content: center; padding: 0 7px; + } + + /* CTA card */ + .dm-blog-cta-card { background: #1f1f1f; border-color: #1f1f1f; } + .dm-blog-cta-title { font-size: 18px !important; font-weight: 800 !important; color: #fff !important; line-height: 1.32 !important; margin: 0 0 10px; letter-spacing: -.2px !important; } + .dm-blog-cta-text { font-size: 13.5px; line-height: 1.6; color: #c7c7c7; margin: 0 0 20px; font-weight: 450; } + .dm-blog-cta-btn { + display: inline-flex; align-items: center; gap: 8px; + background: var(--dm-red); color: #fff !important; font-size: 13.5px; font-weight: 700; + padding: 12px 22px; border-radius: 12px; text-decoration: none; + transition: background .2s ease, transform .2s ease; + } + .dm-blog-cta-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } +0:{"rsc":["$","$1","c",{"children":[["$","div",null,{"className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"Article\",\"headline\":\"Building a Greener City: The Future of Urban Logistics\",\"description\":\"Cities are asking for cleaner delivery. The practical challenge is planning EV routes that can meet customer windows without wasting charge.\",\"image\":[\"https://www.doormile.com/images/blog-post-pic-6.webp\"],\"datePublished\":\"2025-07-10T00:00:00.000Z\",\"dateModified\":\"2025-07-10T00:00:00.000Z\",\"author\":{\"@type\":\"Organization\",\"name\":\"Doormile Team\",\"url\":\"https://www.doormile.com\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Doormile\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://www.doormile.com/images/cropped-image-2.png\"}},\"mainEntityOfPage\":{\"@type\":\"WebPage\",\"@id\":\"https://www.doormile.com/blog/building-a-greener-city-the-future-of-urban-logistics\"},\"articleSection\":\"Sustainability\"}"}}],["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https://www.doormile.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https://www.doormile.com/blog\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Building a Greener City: The Future of Urban Logistics\",\"item\":\"https://www.doormile.com/blog/building-a-greener-city-the-future-of-urban-logistics\"}]}"}}],["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":[["$","article",null,{"className":"dm-single-blog","children":[["$","link",null,{"rel":"preload","as":"image","href":"/images/blog-post-pic-6.webp"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$2"}}],"$L3","$L4"]}],"$L5"]}]}]]}],["$L6"],"$L7"]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} +3:["$","div",null,{"className":"custom-standard-hero-container","children":["$","div",null,{"className":"custom-standard-hero-card dm-banner-card","style":{"backgroundImage":"url(/images/blog-post-pic-6.webp)","--hero-overlay":"linear-gradient(180deg, rgba(0,0,0,0.38) 0%, rgba(0,0,0,0.46) 55%, rgba(0,0,0,0.60) 100%)"},"children":["$","div",null,{"className":"e-con-inner dm-banner-inner","children":[["$","span",null,{"className":"dm-banner-category","children":"Sustainability"}],["$","h1",null,{"className":"dm-banner-title","children":"Building a Greener City: The Future of Urban Logistics"}]]}]}]}] +4:["$","div",null,{"className":"dm-blog-wrap","children":[["$","div",null,{"className":"dm-meta-bar","children":[["$","nav",null,{"className":"dm-meta-breadcrumb","aria-label":"Breadcrumb","children":["$","ol",null,{"children":[["$","li",null,{"children":["$","$L8",null,{"href":"/","children":"Home"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"children":["$","$L8",null,{"href":"/blog","children":"Blog"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"aria-current":"page","className":"dm-meta-current","children":"Building a Greener City: The Future of Urban Logistics"}]]}]}],["$","div",null,{"className":"dm-meta-items","children":[["$","span",null,{"className":"dm-meta-item dm-meta-author","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","path",null,{"d":"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"}],["$","circle",null,{"cx":"12","cy":"7","r":"4"}]]}],"Doormile Team"]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","rect",null,{"x":"3","y":"4","width":"18","height":"18","rx":"2"}],["$","line",null,{"x1":"16","y1":"2","x2":"16","y2":"6"}],["$","line",null,{"x1":"8","y1":"2","x2":"8","y2":"6"}],["$","line",null,{"x1":"3","y1":"10","x2":"21","y2":"10"}]]}],["$","time",null,{"dateTime":"2025-07-10","children":"Jul 10, 2025"}]]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","circle",null,{"cx":"12","cy":"12","r":"9"}],["$","polyline",null,{"points":"12 7 12 12 15 14"}]]}],2," min read"]}]]}]]}],["$","div",null,{"className":"dm-blog-layout","children":[["$","div",null,{"className":"dm-blog-main","children":[["$","p",null,{"className":"dm-blog-intro","children":"Cleaner delivery is becoming an operating requirement, not just a brand message. It depends on EV adoption and route plans that make those vehicles practical every day."}],["$","div",null,{"className":"dm-article-body","children":[["$","$L9","0",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"In last-mile logistics, a missed SLA is rarely caused by one big failure. It usually comes from small delays adding up across a route. Building a Greener City: The Future of Urban Logistics looks at how delivery teams can spot those delays early and plan around them before vehicles leave the hub."}]}],["$","$L9","1",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"Why this matters for fleet teams"}]}],["$","$L9","2",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"Every extra kilometre costs money. It uses fuel or charge, adds rider time, wears down vehicles, and increases the chance of a late delivery. When routes are built from fixed zones or old habits, those costs repeat every day."}]}],["$","$L9","3",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ul",null,{"className":"dm-article-ul","children":[["$","li","0",{"children":"Fewer vehicles needed for the same number of drops"}],["$","li","1",{"children":"Lower cost per drop through better stop sequencing"}],["$","li","2",{"children":"ETAs that match traffic, distance, and delivery windows"}],["$","li","3",{"children":"Less fuel or charge used per completed order"}]]}]}],["$","$L9","4",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h3",null,{"className":"dm-article-h3","children":"From orders to dispatch"}]}],["$","$L9","5",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"A good dispatch plan starts with the basics: order locations, promised delivery windows, rider capacity, vehicle range, and known traffic trouble spots. MileTruth™ checks those inputs before dispatch so the team is not fixing avoidable mistakes on the road."}]}],["$","$L9","6",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","figure",null,{"className":"dm-article-figure","children":["$La","$Lb"]}]}],"$Lc","$Ld","$Le","$Lf","$L10"]}]]}],"$L11"]}]]}] +12:T2021, + .dm-blog-footer { + font-family: var(--font-manrope), sans-serif; --dm-red: #c01227; --dm-red-hover: #e31d32; + /* The global theme applies 72px top/bottom section padding — strip it so the + inner container is the single source of vertical rhythm (no double gap). */ + padding: 0 !important; + } + /* Neutralize the global theme's 120/80/60px UPPERCASE heading rules */ + .dm-blog-footer :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline) */ + .dm-blog-footer a { text-decoration: none !important; } + /* Shared content container — mirrors SingleBlog's .dm-blog-wrap (same 1280px + max-width + 20→40px horizontal padding) so Prev/Next, Related and the CTA + align to the exact same left/right edges as the article body above. + Vertical rhythm: ~64px from the article end to the Prev/Next divider, then a + consistent ~64–72px section→section gap (no 120px+ voids). */ + .dm-blog-footer-inner { + max-width: 1280px; margin: 0 auto; + /* Compact vertical rhythm on an 8px system. Top padding sets the + article→Prev/Next gap (~24–32px); the inter-section gap sets the + Prev/Next→Related gap (~32–48px). No large arbitrary voids. */ + /* Minimal bottom padding — the global site footer already contributes its + own 20px top inset, so the CTA banner sits close to it without a void. */ + padding: clamp(24px, 3vw, 32px) clamp(20px, 4vw, 40px) clamp(8px, 1.5vw, 16px); + display: flex; flex-direction: column; gap: clamp(32px, 4vw, 48px); + } + @media (max-width: 767px) { + .dm-blog-footer-inner { + padding-left: 16px; + padding-right: 16px; + } + } + + /* Prev / Next */ + .dm-prevnext { + display: grid; grid-template-columns: 1fr 1fr; gap: 20px; + /* Halved from 40px: tight divider→cards spacing without crowding. */ + padding-top: clamp(16px, 2vw, 24px); border-top: 1px solid rgba(15,23,42,0.08); + } + @media (max-width: 640px) { .dm-prevnext { grid-template-columns: 1fr; } } + .dm-prevnext-placeholder { display: block; } + .dm-prevnext-card { + display: flex; gap: 16px; align-items: center; padding: 16px; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + text-decoration: none; transition: transform .3s ease, box-shadow .3s ease, border-color .3s ease; + } + .dm-prevnext-card:hover { + transform: translateY(-4px); border-color: rgba(192,18,39,0.2); + box-shadow: 0 16px 34px rgba(192,18,39,0.10); + } + .dm-prevnext-thumb { + position: relative; flex: 0 0 80px; width: 80px; height: 80px; + border-radius: 16px; overflow: hidden; background: #f1f5f9; + } + .dm-prevnext-text { display: flex; flex-direction: column; gap: 5px; min-width: 0; } + .dm-prevnext-next { text-align: right; } + .dm-prevnext-next .dm-prevnext-text { align-items: flex-end; } + .dm-prevnext-label { + display: inline-flex; align-items: center; gap: 6px; + font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: 1px; color: var(--dm-red); + } + .dm-prevnext-cat { font-size: 11px; font-weight: 700; color: #94a3b8; text-transform: uppercase; letter-spacing: .5px; } + .dm-prevnext-title { + font-size: 15.5px; font-weight: 700; color: #1e293b; line-height: 1.4; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-prevnext-card:hover .dm-prevnext-title { color: var(--dm-red); } + + /* Related */ + .dm-related-heading { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 850 !important; letter-spacing: -.4px !important; + line-height: 1.25 !important; color: #0f172a !important; margin: 0 0 24px; + } + .dm-related-grid { + display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; + } + @media (max-width: 1024px) { .dm-related-grid { grid-template-columns: repeat(2, 1fr); } } + @media (max-width: 700px) { .dm-related-grid { grid-template-columns: 1fr; gap: 24px; } } + + .dm-related-card { + display: flex; flex-direction: column; height: 100%; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + overflow: hidden; box-shadow: 0 4px 24px rgba(15,23,42,0.05); text-decoration: none; + transition: transform .4s cubic-bezier(0.2,0.8,0.2,1), box-shadow .4s ease, border-color .4s ease; + } + .dm-related-card:hover { + transform: translateY(-8px); box-shadow: 0 22px 44px rgba(192,18,39,0.13); + border-color: rgba(192,18,39,0.2); + } + .dm-related-img { + position: relative; width: 100%; aspect-ratio: 16 / 10; overflow: hidden; background: #f1f5f9; + } + .dm-related-img img { transition: transform .5s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-img img { transform: scale(1.05); } + .dm-related-badge { + position: absolute; top: 14px; left: 14px; z-index: 5; background: var(--dm-red); color: #fff; + font-size: 9px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.2px; + padding: 5px 11px; border-radius: 8px; box-shadow: 0 4px 12px rgba(192,18,39,0.25); + } + .dm-related-body { display: flex; flex-direction: column; flex: 1; padding: 22px; } + .dm-related-card-title { + font-size: 17px !important; font-weight: 800 !important; color: #1e293b !important; line-height: 1.4 !important; + letter-spacing: -.2px !important; margin: 0 0 10px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-related-card:hover .dm-related-card-title { color: var(--dm-red); } + .dm-related-card-excerpt { + font-size: 13.5px; font-weight: 500; color: #64748b; line-height: 1.6; margin: 0 0 18px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + } + .dm-related-readmore { + margin-top: auto; display: inline-flex; align-items: center; gap: 7px; + font-size: 12.5px; font-weight: 800; color: var(--dm-red); + text-transform: uppercase; letter-spacing: .6px; + } + .dm-related-readmore-arrow { transition: transform .3s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-readmore-arrow { transform: translateX(5px); } + + /* Contact CTA banner */ + .dm-blog-contact-cta { + display: flex; align-items: center; justify-content: space-between; gap: 32px; + flex-wrap: wrap; + background: linear-gradient(135deg, #1a1a1a 0%, #2d1417 100%); + border-radius: 30px; padding: clamp(32px, 4vw, 56px); + position: relative; overflow: hidden; + } + .dm-blog-contact-cta::after { + content: ""; position: absolute; right: -80px; top: -80px; width: 300px; height: 300px; + background: radial-gradient(circle, rgba(192,18,39,0.40), transparent 70%); + pointer-events: none; + } + .dm-blog-contact-cta-content { position: relative; z-index: 1; max-width: 640px; } + .dm-blog-contact-eyebrow { + display: inline-block; font-size: 12px; font-weight: 800; text-transform: uppercase; + letter-spacing: 1.4px; color: #ff8088; margin-bottom: 14px; + } + .dm-blog-contact-title { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 800 !important; line-height: 1.25 !important; + letter-spacing: -.3px !important; color: #ffffff !important; margin: 0 0 12px; text-wrap: balance; + } + .dm-blog-contact-sub { + font-size: 15.5px; line-height: 1.65; color: #e2e2e2; margin: 0; font-weight: 450; + } + .dm-blog-contact-btn { + position: relative; z-index: 1; flex-shrink: 0; + display: inline-flex; align-items: center; justify-content: center; gap: 10px; + background: var(--dm-red); color: #fff !important; font-size: 15px; font-weight: 700; + padding: 16px 32px; border-radius: 16px; text-decoration: none; + box-shadow: 0 10px 26px rgba(192,18,39,0.34); + transition: background .2s ease, transform .2s ease; + } + .dm-blog-contact-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } + @media (max-width: 720px) { + .dm-blog-contact-cta { flex-direction: column; align-items: flex-start; gap: 26px; } + .dm-blog-contact-btn { width: 100%; } + } +5:["$","section",null,{"className":"dm-blog-footer","aria-label":"More articles","children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$12"}}],"$L13"]}] +6:["$","script","script-0",{"src":"/_next/static/chunks/0yvxf3ok9gcp_.js","async":true}] +7:["$","$L14",null,{"children":["$","$15",null,{"name":"Next.MetadataOutlet","children":"$@16"}]}] +a:["$","span",null,{"className":"dm-article-figure-img","children":["$","$L17",null,{"src":"/images/blog-post-pic-6.webp","alt":"Building a Greener City: The Future of Urban Logistics","fill":true,"sizes":"(max-width: 768px) 100vw, 760px","style":{"objectFit":"cover"}}]}] +b:["$","figcaption",null,{"children":"Sustainability: route planning decisions made before dispatch."}] +c:["$","$L9","7",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","blockquote",null,{"className":"dm-article-quote","children":[["$","p",null,{"children":"A route should be checked before the rider leaves, not explained after the customer calls."}],["$","cite",null,{"children":"Doormile Operations"}]]}]}] +d:["$","$L9","8",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"Putting it into practice"}]}] +e:["$","$L9","9",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"The best improvements usually start with simple measurements. Track distance per route, failed delivery windows, rider idle time, and orders moved between vehicles after dispatch. Those numbers show where the operation is leaking time."}]}] +f:["$","$L9","10",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ol",null,{"className":"dm-article-ol","children":[["$","li","0",{"children":"Benchmark today's distance, fleet size, and on-time rate."}],["$","li","1",{"children":"Include vehicle capacity, delivery windows, rider shifts, and battery charge."}],["$","li","2",{"children":"Check routes against traffic and customer commitments before dispatch."}],["$","li","3",{"children":"Compare the next dispatch cycle against the old plan."}]]}]}] +10:["$","$L9","11",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"Better routing is not about pushing riders harder. It is about giving them a plan that already accounts for the real day ahead."}]}] +11:["$","div",null,{"className":"dm-blog-aside-wrap","children":["$","aside",null,{"className":"dm-blog-sidebar","aria-label":"Blog sidebar","children":[["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Search"}],["$","$L18",null,{}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Recent Posts"}],["$","ul",null,{"className":"dm-blog-recent","children":[["$","li","how-ai-is-transforming-last-mile-ev-delivery",{"children":["$","$L8",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L17",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"How Better Planning Improves Last-Mile EV Delivery"}],["$","time",null,{"dateTime":"2025-10-02","className":"dm-blog-recent-date","children":"Oct 2, 2025"}]]}]]}]}],["$","li","42-less-distance-insights-from-our-hyderabad-hub",{"children":["$","$L8",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L17",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}],["$","time",null,{"dateTime":"2025-09-18","className":"dm-blog-recent-date","children":"Sep 18, 2025"}]]}]]}]}],["$","li","miletruth-ai-10-stages-to-smarter-dispatch",{"children":["$","$L8",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L17",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","time",null,{"dateTime":"2025-09-05","className":"dm-blog-recent-date","children":"Sep 5, 2025"}]]}]]}]}],["$","li","the-ev-paradox-solving-range-anxiety-for-urban-fleets",{"children":["$","$L8",null,{"href":"/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L17",null,{"src":"/images/ev-paradox.webp","alt":"The EV Paradox: Solving Range Anxiety for Urban Fleets","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}],["$","time",null,{"dateTime":"2025-08-21","className":"dm-blog-recent-date","children":"Aug 21, 2025"}]]}]]}]}]]}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Categories"}],["$","ul",null,{"className":"dm-blog-categories","children":[["$","li","Case Study",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Case Study"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","EV Fleet",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"EV Fleet"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}],["$","li","Fleet Management",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Fleet Management"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","MileTruth",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"MileTruth"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],"$L19","$L1a","$L1b"]}]]}],"$L1c"]}]}] +13:["$","div",null,{"className":"dm-blog-footer-inner","children":[["$","nav",null,{"className":"dm-prevnext","aria-label":"Article navigation","children":[["$","$L8",null,{"href":"/blog/fleet-reduction-without-compromising-delivery-volume","className":"dm-prevnext-card dm-prevnext-prev","children":[["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L17",null,{"src":"/images/blog-post-pic-8.webp","alt":"Fleet Reduction Without Compromising Delivery Volume","fill":true,"sizes":"80px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-prevnext-text","children":[["$","span",null,{"className":"dm-prevnext-label","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"19","y1":"12","x2":"5","y2":"12"}],["$","polyline",null,{"points":"12 19 5 12 12 5"}]]}],"Previous"]}],["$","span",null,{"className":"dm-prevnext-cat","children":"Fleet Management"}],["$","span",null,{"className":"dm-prevnext-title","children":"Fleet Reduction Without Compromising Delivery Volume"}]]}]]}],["$","$L8",null,{"href":"/blog/how-doormile-maintains-99-9-sla-compliance-at-scale","className":"dm-prevnext-card dm-prevnext-next","children":[["$","span",null,{"className":"dm-prevnext-text","children":[["$","span",null,{"className":"dm-prevnext-label","children":["Next",["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","span",null,{"className":"dm-prevnext-cat","children":"Operations"}],["$","span",null,{"className":"dm-prevnext-title","children":"How Doormile Maintains 99.9% SLA Compliance at Scale"}]]}],["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L17",null,{"src":"/images/last-mile-approach.webp","alt":"How Doormile Maintains 99.9% SLA Compliance at Scale","fill":true,"sizes":"80px","style":{"objectFit":"cover"}}]}]]}]]}],["$","div",null,{"className":"dm-related","children":[["$","h2",null,{"className":"dm-related-heading","children":"Related Articles"}],["$","div",null,{"className":"dm-related-grid","children":[["$","$L9","how-ai-is-transforming-last-mile-ev-delivery",{"delay":0,"duration":0.7,"yOffset":30,"children":["$","$L8",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L17",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Technology"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"How Better Planning Improves Last-Mile EV Delivery"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"A practical look at how EV fleets can plan routes, manage charging, and keep delivery promises without adding unnecessary vehicles."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}],["$","$L9","42-less-distance-insights-from-our-hyderabad-hub",{"delay":0.08,"duration":0.7,"yOffset":30,"children":["$","$L8",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L17",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Case Study"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}],"$L1d","$L1e"]}]]}]}],"$L1f"]}]]}],"$L20"]}] +16:null +19:["$","li","Operations",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Operations"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +1a:["$","li","Sustainability",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Sustainability"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +1b:["$","li","Technology",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Technology"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}] +1c:["$","section",null,{"className":"dm-blog-widget dm-blog-cta-card","children":[["$","h2",null,{"className":"dm-blog-cta-title","children":"Planning delivery routes?"}],["$","p",null,{"className":"dm-blog-cta-text","children":"Talk to us about reducing wasted distance, missed windows, and avoidable vehicle time."}],["$","$L8",null,{"href":"/contact","className":"dm-blog-cta-btn","children":["Contact Us",["$","svg",null,{"width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] +1d:["$","p",null,{"className":"dm-related-card-excerpt","children":"A practical look at how one Hyderabad hub reduced distance, used fewer vehicles, and protected delivery windows with better route planning."}] +1e:["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}] +1f:["$","$L9","miletruth-ai-10-stages-to-smarter-dispatch",{"delay":0.16,"duration":0.7,"yOffset":30,"children":["$","$L8",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L17",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"MileTruth"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"From order intake to final route output, here is how a dispatch plan is checked before riders leave the hub."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}] +20:["$","div",null,{"className":"dm-blog-contact-cta","children":[["$","div",null,{"className":"dm-blog-contact-cta-content","children":[["$","span",null,{"className":"dm-blog-contact-eyebrow","children":"Let's talk logistics"}],["$","h2",null,{"className":"dm-blog-contact-title","children":"Ready to move smarter with Doormile?"}],["$","p",null,{"className":"dm-blog-contact-sub","children":"Tell us about your fleet and routes — we'll show you where the distance, vehicles and emissions are hiding."}]]}],["$","$L8",null,{"href":"/contact","className":"dm-blog-contact-btn","children":["Get in Touch",["$","svg",null,{"width":"20","height":"20","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] diff --git a/build/blog/building-a-greener-city-the-future-of-urban-logistics/__next.blog.$d$slug.txt b/build/blog/building-a-greener-city-the-future-of-urban-logistics/__next.blog.$d$slug.txt new file mode 100644 index 0000000..e0935ae --- /dev/null +++ b/build/blog/building-a-greener-city-the-future-of-urban-logistics/__next.blog.$d$slug.txt @@ -0,0 +1,5 @@ +1:"$Sreact.fragment" +2:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:[] +0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/blog/building-a-greener-city-the-future-of-urban-logistics/__next.blog.txt b/build/blog/building-a-greener-city-the-future-of-urban-logistics/__next.blog.txt new file mode 100644 index 0000000..e0935ae --- /dev/null +++ b/build/blog/building-a-greener-city-the-future-of-urban-logistics/__next.blog.txt @@ -0,0 +1,5 @@ +1:"$Sreact.fragment" +2:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:[] +0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/blog/fleet-reduction-without-compromising-delivery-volume.html b/build/blog/fleet-reduction-without-compromising-delivery-volume.html new file mode 100644 index 0000000..9af44cb --- /dev/null +++ b/build/blog/fleet-reduction-without-compromising-delivery-volume.html @@ -0,0 +1,1168 @@ +Fleet Reduction Without Compromising Delivery Volume – Doormile

    Doormile

    Doormile logo
    Address
    Hyderabad

    5th Floor, Vision Ultima,
    Street No.3, Jayabheri Enclave,
    Gachibowli, Hyderabad,
    Telangana 500032.

    Coimbatore

    Mayflower Valencia,
    Near Nava India Bus Stop,
    Avinashi Road,
    Udayampalayam,
    Tamil Nadu 641037.

    Bengaluru

    C612, 6th Floor,
    Trifecta Starlight,
    ITPL Road,
    Garudacharapalya,
    Mahadevapura,
    Bangalore 560048,
    Karnataka, India.

    Contact Us

    Tel : +91 86886 97941

    Email

    care@doormile.com

    Fleet Management

    Fleet Reduction Without Compromising Delivery Volume

    Doormile Team2 min read

    Cutting vehicles usually means cutting capacity unless the removed kilometres were never needed. Better route planning turns wasted distance into operating headroom.

    In last-mile logistics, a missed SLA is rarely caused by one big failure. It usually comes from small delays adding up across a route. Fleet Reduction Without Compromising Delivery Volume looks at how delivery teams can spot those delays early and plan around them before vehicles leave the hub.

    Why this matters for fleet teams

    Every extra kilometre costs money. It uses fuel or charge, adds rider time, wears down vehicles, and increases the chance of a late delivery. When routes are built from fixed zones or old habits, those costs repeat every day.

    • Fewer vehicles needed for the same number of drops
    • Lower cost per drop through better stop sequencing
    • ETAs that match traffic, distance, and delivery windows
    • Less fuel or charge used per completed order

    From orders to dispatch

    A good dispatch plan starts with the basics: order locations, promised delivery windows, rider capacity, vehicle range, and known traffic trouble spots. MileTruth™ checks those inputs before dispatch so the team is not fixing avoidable mistakes on the road.

    Fleet Reduction Without Compromising Delivery Volume
    Fleet Management: route planning decisions made before dispatch.

    A route should be checked before the rider leaves, not explained after the customer calls.

    Doormile Operations

    Putting it into practice

    The best improvements usually start with simple measurements. Track distance per route, failed delivery windows, rider idle time, and orders moved between vehicles after dispatch. Those numbers show where the operation is leaking time.

    1. Benchmark today's distance, fleet size, and on-time rate.
    2. Include vehicle capacity, delivery windows, rider shifts, and battery charge.
    3. Check routes against traffic and customer commitments before dispatch.
    4. Compare the next dispatch cycle against the old plan.

    Better routing is not about pushing riders harder. It is about giving them a plan that already accounts for the real day ahead.

    \ No newline at end of file diff --git a/build/blog/fleet-reduction-without-compromising-delivery-volume.txt b/build/blog/fleet-reduction-without-compromising-delivery-volume.txt new file mode 100644 index 0000000..e06d939 --- /dev/null +++ b/build/blog/fleet-reduction-without-compromising-delivery-volume.txt @@ -0,0 +1,546 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +d:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +e:"$Sreact.suspense" +11:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +13:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +15:I[68027,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"P":null,"c":["","blog","fleet-reduction-without-compromising-delivery-volume"],"q":"","i":false,"f":[[["",{"children":["blog",{"children":[["slug","fleet-reduction-without-compromising-delivery-volume","d",null],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":["$Lc",[["$","script","script-0",{"src":"/_next/static/chunks/0yvxf3ok9gcp_.js","async":true,"nonce":"$undefined"}]],["$","$Ld",null,{"children":["$","$e",null,{"name":"Next.MetadataOutlet","children":"$@f"}]}]]}],{},null,false,null]},null,false,"$@10"]},null,false,"$@10"]},null,false,null],["$","$1","h",{"children":[null,["$","$L11",null,{"children":"$L12"}],["$","div",null,{"hidden":true,"children":["$","$L13",null,{"children":["$","$e",null,{"name":"Next.Metadata","children":"$L14"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$15",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"kmSVPuUqY3Rhw5xy4D2nn"} +16:[] +10:"$W16" +:HL["/images/blog-post-pic-8.webp","image"] +17:T3d6f, + .dm-single-blog { + --dm-red: #c01227; + --dm-red-hover: #e31d32; + --dm-radius-card: 22px; + --dm-radius-img: 20px; + --dm-radius-badge: 8px; + --dm-shadow-card: 0 4px 24px rgba(15, 23, 42, 0.05); + --dm-border: 1px solid rgba(15, 23, 42, 0.09); + --dm-space-p: 24px; + --dm-space-h: 32px; + --dm-space-img: 32px; + --dm-space-quote: 40px; + --dm-sticky-top: 138px; + --dm-measure: min(1100px, 100%); + font-family: var(--font-manrope), sans-serif; + } + + /* Heading normalization. Beat the global theme's .elementor-kit-5 h1-h6 + (120/80/60px UPPERCASE) rules with !important on our own classes. */ + .dm-single-blog :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline, + specificity 0-1-1) so blog links keep our colors and never get underlined. */ + .dm-single-blog a { text-decoration: none !important; } + + /* Page banner: tall homepage-scale frame with only badge + title inside */ + /* Compound selector (specificity 20) + !important beats the global 800px + single-class height rules so the blog banner can use viewport heights. */ + .custom-standard-hero-card.dm-banner-card { + height: 90vh !important; + min-height: 85vh !important; + } + @media (max-width: 1024px) { + .custom-standard-hero-card.dm-banner-card { height: 80vh !important; min-height: 75vh !important; } + } + @media (max-width: 600px) { + .custom-standard-hero-card.dm-banner-card { height: 78vh !important; min-height: 72vh !important; } + } + + .dm-banner-inner { + position: relative; width: 100%; height: 100%; + display: flex; flex-direction: column; align-items: center; justify-content: center; + text-align: center; gap: clamp(22px, 2.6vw, 34px); + padding: clamp(48px, 8vh, 96px) clamp(20px, 5vw, 48px); + } + + .dm-banner-category { + display: inline-block; background: var(--dm-red); color: #fff; + font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.6px; + padding: 9px 18px; border-radius: 999px; box-shadow: 0 8px 22px rgba(192,18,39,0.45); + } + .dm-banner-title { + font-family: var(--font-manrope), sans-serif !important; + font-size: clamp(34px, 5vw, 60px) !important; font-weight: 850 !important; + line-height: 1.16 !important; letter-spacing: -1.2px !important; + color: #ffffff !important; margin: 0; max-width: 820px; + text-wrap: balance; text-shadow: 0 2px 30px rgba(0,0,0,0.38); + } + @media (max-width: 1024px) { .dm-banner-title { font-size: clamp(32px, 6vw, 48px) !important; max-width: 90%; } } + @media (max-width: 600px) { .dm-banner-title { font-size: clamp(28px, 8vw, 38px) !important; max-width: 90%; } } + + /* Content wrap begins immediately below the banner */ + /* Shared content container: the SAME max-width + horizontal padding is used + by BlogPostFooter (.dm-blog-footer-inner) so the article body, headings, + images, Prev/Next, Related Articles and the CTA banner all align to one + grid with identical left/right edges. Keep both in sync. */ + .dm-blog-wrap { + max-width: 1280px; margin: 0 auto; + /* 20px mobile padding floor → 40px on desktop; matches the footer container. */ + padding: clamp(14px, 2vw, 26px) clamp(20px, 4vw, 40px) 0; + } + @media (max-width: 767px) { + .dm-blog-wrap { + padding-left: 16px; + padding-right: 16px; + } + } + + /* ── Article meta bar (directly under the hero) ── */ + .dm-meta-bar { + display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 14px 24px; + padding: clamp(20px, 2.6vw, 30px) 0; margin-bottom: clamp(26px, 3vw, 44px); + border-bottom: 1px solid rgba(15,23,42,0.10); + } + .dm-meta-breadcrumb ol { + list-style: none; display: flex; flex-wrap: wrap; align-items: center; + gap: 8px; margin: 0; padding: 0; font-size: 13px; font-weight: 600; color: #64748b; + } + .dm-meta-breadcrumb a { color: #64748b !important; text-decoration: none; transition: color .2s ease; } + .dm-meta-breadcrumb a:hover { color: var(--dm-red) !important; } + .dm-meta-sep { color: #cbd5e1; } + .dm-meta-current { + color: #0f172a; font-weight: 700; + max-width: min(40ch, 46vw); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; + } + @media (max-width: 600px) { .dm-meta-current { max-width: 56vw; } } + .dm-meta-items { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 20px; } + .dm-meta-item { + display: inline-flex; align-items: center; gap: 7px; + font-size: 13.5px; font-weight: 600; color: #475569; + } + .dm-meta-item svg { color: var(--dm-red); flex: 0 0 auto; } + .dm-meta-author { color: #0f172a; font-weight: 700; } + @media (max-width: 600px) { .dm-meta-bar { gap: 12px; } } + .dm-blog-layout { + display: grid; grid-template-columns: minmax(0,1fr) 320px; + /* Tighter gap gives the reading column more room next to the 320px sidebar. */ + gap: clamp(28px, 3vw, 56px); align-items: start; + } + @media (max-width: 1024px) { + .dm-blog-layout { grid-template-columns: 1fr; gap: 48px; } + /* Single-column (tablet/mobile): cap the reading column and centre it so the + article never sits left-aligned with a large empty right gutter. */ + .dm-blog-main { max-width: 900px; margin-inline: auto; } + } + .dm-blog-main { min-width: 0; } + + /* ── Intro lead ── */ + .dm-blog-intro { + max-width: var(--dm-measure); + font-size: clamp(18px, 1.5vw, 20px); line-height: 1.65; font-weight: 500; + color: #475569; margin: 0 0 clamp(26px, 3vw, 38px); padding-left: 20px; + border-left: 3px solid var(--dm-red); + } + + /* ── Article body ── */ + .dm-article-body { max-width: var(--dm-measure); } + .dm-article-p { + font-size: 18px !important; line-height: 1.8 !important; color: #334155; font-weight: 450; + margin: 0 0 var(--dm-space-p); + } + .dm-article-h2 { + font-size: clamp(23px, 2vw, 30px) !important; font-weight: 800 !important; letter-spacing: -.3px !important; + color: #0f172a !important; line-height: 1.3 !important; margin: 48px 0 var(--dm-space-h); + text-wrap: balance; + } + /* Each article block is wrapped in its OWN ScrollReveal
    , so a bare + :first-child rule matched every heading (each is the only child of its + wrapper) and zeroed its top margin, collapsing the gap above every + section heading. Scope the reset to only the article body's first block. */ + .dm-article-body > :first-child :where(.dm-article-h2, .dm-article-h3), + .dm-article-body > .dm-article-h2:first-child, + .dm-article-body > .dm-article-h3:first-child { margin-top: 0; } + .dm-article-h3 { + font-size: clamp(19px, 1.5vw, 23px) !important; font-weight: 800 !important; letter-spacing: -.2px !important; + color: #1e293b !important; line-height: 1.34 !important; margin: 40px 0 18px; + text-wrap: balance; + } + @media (max-width: 600px) { + .dm-article-p { font-size: 16px !important; } + .dm-article-ul li, .dm-article-ol li { font-size: 15.5px; } + .dm-article-h2 { font-size: clamp(22px, 6vw, 28px) !important; margin-top: 38px; } + .dm-article-h3 { font-size: clamp(18px, 5vw, 22px) !important; } + } + + .dm-article-ul, .dm-article-ol { + /* Top margin (was 0) separates the list from the paragraph above it; + matching bottom margin keeps it clear of the next heading/paragraph. + Slightly larger than --dm-space-p so the list reads as its own block. */ + margin: clamp(26px, 2.4vw, 32px) 0 clamp(26px, 2.4vw, 32px); + padding-left: 2px; list-style: none; + display: flex; flex-direction: column; gap: 15px; + } + /* Prefixed with .dm-article-body so these beat the theme's global + ".logico-front-end ul li:before" fontello-glyph bullet (specificity 0,1,3), + which otherwise replaces our clean red dot with a misaligned checkmark glyph + and adds its own 1.7em indent. */ + .dm-article-body .dm-article-ul li, .dm-article-body .dm-article-ol li { + position: relative; padding-left: 34px; + font-size: 17px; line-height: 1.65; color: #334155; font-weight: 450; + } + .dm-article-body .dm-article-ul li::before { + content: ""; position: absolute; left: 7px; top: 10px; + width: 8px; height: 8px; border-radius: 50%; background: var(--dm-red); + /* kill any inherited fontello glyph from the global rule */ + font-size: 0; line-height: 0; + } + .dm-article-ol { counter-reset: dm-li; } + .dm-article-body .dm-article-ol li { counter-increment: dm-li; } + .dm-article-body .dm-article-ol li::before { + content: counter(dm-li); position: absolute; left: 0; top: 0; + width: 24px; height: 24px; border-radius: 7px; + background: rgba(192,18,39,0.10); color: var(--dm-red); + font-size: 12px; font-weight: 800; display: flex; align-items: center; justify-content: center; + } + + /* ── Quote ── */ + .dm-article-quote { + position: relative; margin: var(--dm-space-quote) 0; padding: 30px 32px 30px 64px; + background: linear-gradient(135deg, #fbf2f3 0%, #fdf7f8 100%); + border-left: 4px solid var(--dm-red); border-radius: 0 18px 18px 0; + box-shadow: 0 8px 28px rgba(192, 18, 39, 0.06); + } + .dm-article-quote::before { + content: "\201C"; position: absolute; left: 22px; top: 8px; + font-family: Georgia, "Times New Roman", serif; + font-size: 64px; line-height: 1; color: rgba(192, 18, 39, 0.28); font-weight: 700; + } + .dm-article-quote p { + font-size: clamp(19px, 2vw, 23px); line-height: 1.5; font-weight: 600; + font-style: italic; color: #1e293b; margin: 0; + } + .dm-article-quote cite { + display: block; margin-top: 16px; font-size: 13px; font-weight: 700; + font-style: normal; color: var(--dm-red); text-transform: uppercase; letter-spacing: .6px; + } + @media (max-width: 600px) { .dm-article-quote { padding: 26px 22px; } .dm-article-quote::before { display: none; } } + + /* ── Images ── */ + .dm-article-figure { margin: var(--dm-space-img) 0; } + .dm-article-figure-img { + position: relative; display: block; width: 100%; aspect-ratio: 16 / 9; + border-radius: var(--dm-radius-img); overflow: hidden; box-shadow: 0 14px 34px rgba(15,23,42,0.10); + } + .dm-article-figure figcaption { + margin-top: 14px; font-size: 13.5px; color: #94a3b8; font-weight: 500; + text-align: center; font-style: italic; + } + + /* ── Sidebar ── */ + .dm-blog-aside-wrap { position: relative; } + .dm-blog-sidebar { + display: flex; flex-direction: column; gap: 18px; + position: sticky; top: var(--dm-sticky-top); + } + @media (max-width: 1024px) { .dm-blog-sidebar { position: static; gap: 20px; } } + + .dm-blog-widget { + background: #fff; border: var(--dm-border); border-radius: var(--dm-radius-card); + padding: 20px; box-shadow: var(--dm-shadow-card); + } + .dm-blog-widget-title { + font-size: 13px !important; font-weight: 700 !important; text-transform: uppercase !important; + letter-spacing: .8px !important; line-height: 1.35 !important; color: #0f172a !important; + margin: 0 0 15px; padding: 0 0 12px; + border-bottom: 1px solid rgba(15,23,42,0.08); + overflow: visible; white-space: normal; word-break: normal; + } + + /* Search */ + .dm-sr-only { + position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; + overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; + } + .dm-blog-search { position: relative; } + .dm-blog-search-form { position: relative; } + .dm-blog-search-input { + width: 100%; height: 46px; border: 1.5px solid #e2e8f0; border-radius: 12px; + padding: 0 42px 0 15px; font-size: 14px; font-family: inherit; color: #0f172a; + background: #f8fafc; transition: border-color .2s ease, box-shadow .2s ease, background .2s ease; + } + .dm-blog-search-input::placeholder { color: #9c9c9c; } + .dm-blog-search-input:focus { + outline: none; border-color: var(--dm-red); background: #fff; + box-shadow: 0 0 0 3px rgba(192,18,39,0.11); + } + .dm-blog-search-icon { + position: absolute; right: 14px; top: 50%; transform: translateY(-50%); + color: #94a3b8; pointer-events: none; display: flex; + } + .dm-blog-search-results { + position: absolute; z-index: 20; top: calc(100% + 8px); left: 0; right: 0; + background: #fff; border: 1px solid rgba(15,23,42,0.10); border-radius: 14px; + box-shadow: 0 18px 42px rgba(15,23,42,0.14); overflow: hidden; + } + .dm-blog-search-results ul { list-style: none; margin: 0; padding: 6px; } + .dm-blog-search-result { + display: flex; flex-direction: column; gap: 3px; padding: 10px 12px; + border-radius: 10px; text-decoration: none; transition: background .15s ease; + } + .dm-blog-search-result:hover { background: #f8fafc; } + .dm-blog-search-result-cat { + font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .8px; color: var(--dm-red); + } + .dm-blog-search-result-title { font-size: 13.5px; font-weight: 600; color: #1e293b; line-height: 1.35; } + .dm-blog-search-empty { margin: 0; padding: 14px 12px; font-size: 13px; color: #64748b; } + + /* Recent posts */ + .dm-blog-recent { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 15px; } + .dm-blog-recent-item { display: flex; gap: 13px; align-items: center; text-decoration: none; } + .dm-blog-recent-thumb { + position: relative; flex: 0 0 62px; width: 62px; height: 62px; + border-radius: 13px; overflow: hidden; background: #f1f5f9; + } + .dm-blog-recent-meta { display: flex; flex-direction: column; gap: 4px; min-width: 0; } + .dm-blog-recent-title { + font-size: 13.5px; font-weight: 700; color: #1e293b; line-height: 1.35; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-blog-recent-item:hover .dm-blog-recent-title { color: var(--dm-red); } + .dm-blog-recent-date { font-size: 11.5px; font-weight: 600; color: #94a3b8; } + + /* Categories */ + .dm-blog-categories { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; } + .dm-blog-category-item { + display: flex; align-items: center; justify-content: space-between; gap: 10px; + padding: 11px 2px; text-decoration: none; font-size: 14px; font-weight: 600; color: #334155 !important; + border-bottom: 1px solid rgba(15,23,42,0.06); transition: color .2s ease, padding-left .2s ease; + } + .dm-blog-categories li:last-child .dm-blog-category-item { border-bottom: none; } + .dm-blog-category-item:hover { color: var(--dm-red); padding-left: 6px; } + .dm-blog-category-item > span:first-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } + .dm-blog-category-count { + flex: 0 0 auto; font-size: 11px; font-weight: 800; color: #94a3b8; background: #f1f5f9; + min-width: 24px; height: 22px; border-radius: 7px; display: inline-flex; + align-items: center; justify-content: center; padding: 0 7px; + } + + /* CTA card */ + .dm-blog-cta-card { background: #1f1f1f; border-color: #1f1f1f; } + .dm-blog-cta-title { font-size: 18px !important; font-weight: 800 !important; color: #fff !important; line-height: 1.32 !important; margin: 0 0 10px; letter-spacing: -.2px !important; } + .dm-blog-cta-text { font-size: 13.5px; line-height: 1.6; color: #c7c7c7; margin: 0 0 20px; font-weight: 450; } + .dm-blog-cta-btn { + display: inline-flex; align-items: center; gap: 8px; + background: var(--dm-red); color: #fff !important; font-size: 13.5px; font-weight: 700; + padding: 12px 22px; border-radius: 12px; text-decoration: none; + transition: background .2s ease, transform .2s ease; + } + .dm-blog-cta-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } +c:["$","div",null,{"className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"Article\",\"headline\":\"Fleet Reduction Without Compromising Delivery Volume\",\"description\":\"Handling the same order volume with fewer vehicles starts by removing avoidable kilometres and overlapping routes.\",\"image\":[\"https://www.doormile.com/images/blog-post-pic-8.webp\"],\"datePublished\":\"2025-07-24T00:00:00.000Z\",\"dateModified\":\"2025-07-24T00:00:00.000Z\",\"author\":{\"@type\":\"Organization\",\"name\":\"Doormile Team\",\"url\":\"https://www.doormile.com\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Doormile\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://www.doormile.com/images/cropped-image-2.png\"}},\"mainEntityOfPage\":{\"@type\":\"WebPage\",\"@id\":\"https://www.doormile.com/blog/fleet-reduction-without-compromising-delivery-volume\"},\"articleSection\":\"Fleet Management\"}"}}],["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https://www.doormile.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https://www.doormile.com/blog\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Fleet Reduction Without Compromising Delivery Volume\",\"item\":\"https://www.doormile.com/blog/fleet-reduction-without-compromising-delivery-volume\"}]}"}}],["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":[["$","article",null,{"className":"dm-single-blog","children":[["$","link",null,{"rel":"preload","as":"image","href":"/images/blog-post-pic-8.webp"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$17"}}],"$L18","$L19"]}],"$L1a"]}]}]]}] +1b:I[22016,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],""] +1c:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"ScrollReveal"] +18:["$","div",null,{"className":"custom-standard-hero-container","children":["$","div",null,{"className":"custom-standard-hero-card dm-banner-card","style":{"backgroundImage":"url(/images/blog-post-pic-8.webp)","--hero-overlay":"linear-gradient(180deg, rgba(0,0,0,0.38) 0%, rgba(0,0,0,0.46) 55%, rgba(0,0,0,0.60) 100%)"},"children":["$","div",null,{"className":"e-con-inner dm-banner-inner","children":[["$","span",null,{"className":"dm-banner-category","children":"Fleet Management"}],["$","h1",null,{"className":"dm-banner-title","children":"Fleet Reduction Without Compromising Delivery Volume"}]]}]}]}] +19:["$","div",null,{"className":"dm-blog-wrap","children":[["$","div",null,{"className":"dm-meta-bar","children":[["$","nav",null,{"className":"dm-meta-breadcrumb","aria-label":"Breadcrumb","children":["$","ol",null,{"children":[["$","li",null,{"children":["$","$L1b",null,{"href":"/","children":"Home"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"children":["$","$L1b",null,{"href":"/blog","children":"Blog"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"aria-current":"page","className":"dm-meta-current","children":"Fleet Reduction Without Compromising Delivery Volume"}]]}]}],["$","div",null,{"className":"dm-meta-items","children":[["$","span",null,{"className":"dm-meta-item dm-meta-author","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","path",null,{"d":"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"}],["$","circle",null,{"cx":"12","cy":"7","r":"4"}]]}],"Doormile Team"]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","rect",null,{"x":"3","y":"4","width":"18","height":"18","rx":"2"}],["$","line",null,{"x1":"16","y1":"2","x2":"16","y2":"6"}],["$","line",null,{"x1":"8","y1":"2","x2":"8","y2":"6"}],["$","line",null,{"x1":"3","y1":"10","x2":"21","y2":"10"}]]}],["$","time",null,{"dateTime":"2025-07-24","children":"Jul 24, 2025"}]]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","circle",null,{"cx":"12","cy":"12","r":"9"}],["$","polyline",null,{"points":"12 7 12 12 15 14"}]]}],2," min read"]}]]}]]}],["$","div",null,{"className":"dm-blog-layout","children":[["$","div",null,{"className":"dm-blog-main","children":[["$","p",null,{"className":"dm-blog-intro","children":"Cutting vehicles usually means cutting capacity unless the removed kilometres were never needed. Better route planning turns wasted distance into operating headroom."}],["$","div",null,{"className":"dm-article-body","children":[["$","$L1c","0",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"In last-mile logistics, a missed SLA is rarely caused by one big failure. It usually comes from small delays adding up across a route. Fleet Reduction Without Compromising Delivery Volume looks at how delivery teams can spot those delays early and plan around them before vehicles leave the hub."}]}],["$","$L1c","1",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"Why this matters for fleet teams"}]}],["$","$L1c","2",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"Every extra kilometre costs money. It uses fuel or charge, adds rider time, wears down vehicles, and increases the chance of a late delivery. When routes are built from fixed zones or old habits, those costs repeat every day."}]}],["$","$L1c","3",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ul",null,{"className":"dm-article-ul","children":[["$","li","0",{"children":"Fewer vehicles needed for the same number of drops"}],["$","li","1",{"children":"Lower cost per drop through better stop sequencing"}],["$","li","2",{"children":"ETAs that match traffic, distance, and delivery windows"}],["$","li","3",{"children":"Less fuel or charge used per completed order"}]]}]}],["$","$L1c","4",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h3",null,{"className":"dm-article-h3","children":"From orders to dispatch"}]}],["$","$L1c","5",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"A good dispatch plan starts with the basics: order locations, promised delivery windows, rider capacity, vehicle range, and known traffic trouble spots. MileTruth™ checks those inputs before dispatch so the team is not fixing avoidable mistakes on the road."}]}],["$","$L1c","6",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","figure",null,{"className":"dm-article-figure","children":["$L1d","$L1e"]}]}],"$L1f","$L20","$L21","$L22","$L23"]}]]}],"$L24"]}]]}] +25:T2021, + .dm-blog-footer { + font-family: var(--font-manrope), sans-serif; --dm-red: #c01227; --dm-red-hover: #e31d32; + /* The global theme applies 72px top/bottom section padding — strip it so the + inner container is the single source of vertical rhythm (no double gap). */ + padding: 0 !important; + } + /* Neutralize the global theme's 120/80/60px UPPERCASE heading rules */ + .dm-blog-footer :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline) */ + .dm-blog-footer a { text-decoration: none !important; } + /* Shared content container — mirrors SingleBlog's .dm-blog-wrap (same 1280px + max-width + 20→40px horizontal padding) so Prev/Next, Related and the CTA + align to the exact same left/right edges as the article body above. + Vertical rhythm: ~64px from the article end to the Prev/Next divider, then a + consistent ~64–72px section→section gap (no 120px+ voids). */ + .dm-blog-footer-inner { + max-width: 1280px; margin: 0 auto; + /* Compact vertical rhythm on an 8px system. Top padding sets the + article→Prev/Next gap (~24–32px); the inter-section gap sets the + Prev/Next→Related gap (~32–48px). No large arbitrary voids. */ + /* Minimal bottom padding — the global site footer already contributes its + own 20px top inset, so the CTA banner sits close to it without a void. */ + padding: clamp(24px, 3vw, 32px) clamp(20px, 4vw, 40px) clamp(8px, 1.5vw, 16px); + display: flex; flex-direction: column; gap: clamp(32px, 4vw, 48px); + } + @media (max-width: 767px) { + .dm-blog-footer-inner { + padding-left: 16px; + padding-right: 16px; + } + } + + /* Prev / Next */ + .dm-prevnext { + display: grid; grid-template-columns: 1fr 1fr; gap: 20px; + /* Halved from 40px: tight divider→cards spacing without crowding. */ + padding-top: clamp(16px, 2vw, 24px); border-top: 1px solid rgba(15,23,42,0.08); + } + @media (max-width: 640px) { .dm-prevnext { grid-template-columns: 1fr; } } + .dm-prevnext-placeholder { display: block; } + .dm-prevnext-card { + display: flex; gap: 16px; align-items: center; padding: 16px; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + text-decoration: none; transition: transform .3s ease, box-shadow .3s ease, border-color .3s ease; + } + .dm-prevnext-card:hover { + transform: translateY(-4px); border-color: rgba(192,18,39,0.2); + box-shadow: 0 16px 34px rgba(192,18,39,0.10); + } + .dm-prevnext-thumb { + position: relative; flex: 0 0 80px; width: 80px; height: 80px; + border-radius: 16px; overflow: hidden; background: #f1f5f9; + } + .dm-prevnext-text { display: flex; flex-direction: column; gap: 5px; min-width: 0; } + .dm-prevnext-next { text-align: right; } + .dm-prevnext-next .dm-prevnext-text { align-items: flex-end; } + .dm-prevnext-label { + display: inline-flex; align-items: center; gap: 6px; + font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: 1px; color: var(--dm-red); + } + .dm-prevnext-cat { font-size: 11px; font-weight: 700; color: #94a3b8; text-transform: uppercase; letter-spacing: .5px; } + .dm-prevnext-title { + font-size: 15.5px; font-weight: 700; color: #1e293b; line-height: 1.4; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-prevnext-card:hover .dm-prevnext-title { color: var(--dm-red); } + + /* Related */ + .dm-related-heading { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 850 !important; letter-spacing: -.4px !important; + line-height: 1.25 !important; color: #0f172a !important; margin: 0 0 24px; + } + .dm-related-grid { + display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; + } + @media (max-width: 1024px) { .dm-related-grid { grid-template-columns: repeat(2, 1fr); } } + @media (max-width: 700px) { .dm-related-grid { grid-template-columns: 1fr; gap: 24px; } } + + .dm-related-card { + display: flex; flex-direction: column; height: 100%; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + overflow: hidden; box-shadow: 0 4px 24px rgba(15,23,42,0.05); text-decoration: none; + transition: transform .4s cubic-bezier(0.2,0.8,0.2,1), box-shadow .4s ease, border-color .4s ease; + } + .dm-related-card:hover { + transform: translateY(-8px); box-shadow: 0 22px 44px rgba(192,18,39,0.13); + border-color: rgba(192,18,39,0.2); + } + .dm-related-img { + position: relative; width: 100%; aspect-ratio: 16 / 10; overflow: hidden; background: #f1f5f9; + } + .dm-related-img img { transition: transform .5s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-img img { transform: scale(1.05); } + .dm-related-badge { + position: absolute; top: 14px; left: 14px; z-index: 5; background: var(--dm-red); color: #fff; + font-size: 9px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.2px; + padding: 5px 11px; border-radius: 8px; box-shadow: 0 4px 12px rgba(192,18,39,0.25); + } + .dm-related-body { display: flex; flex-direction: column; flex: 1; padding: 22px; } + .dm-related-card-title { + font-size: 17px !important; font-weight: 800 !important; color: #1e293b !important; line-height: 1.4 !important; + letter-spacing: -.2px !important; margin: 0 0 10px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-related-card:hover .dm-related-card-title { color: var(--dm-red); } + .dm-related-card-excerpt { + font-size: 13.5px; font-weight: 500; color: #64748b; line-height: 1.6; margin: 0 0 18px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + } + .dm-related-readmore { + margin-top: auto; display: inline-flex; align-items: center; gap: 7px; + font-size: 12.5px; font-weight: 800; color: var(--dm-red); + text-transform: uppercase; letter-spacing: .6px; + } + .dm-related-readmore-arrow { transition: transform .3s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-readmore-arrow { transform: translateX(5px); } + + /* Contact CTA banner */ + .dm-blog-contact-cta { + display: flex; align-items: center; justify-content: space-between; gap: 32px; + flex-wrap: wrap; + background: linear-gradient(135deg, #1a1a1a 0%, #2d1417 100%); + border-radius: 30px; padding: clamp(32px, 4vw, 56px); + position: relative; overflow: hidden; + } + .dm-blog-contact-cta::after { + content: ""; position: absolute; right: -80px; top: -80px; width: 300px; height: 300px; + background: radial-gradient(circle, rgba(192,18,39,0.40), transparent 70%); + pointer-events: none; + } + .dm-blog-contact-cta-content { position: relative; z-index: 1; max-width: 640px; } + .dm-blog-contact-eyebrow { + display: inline-block; font-size: 12px; font-weight: 800; text-transform: uppercase; + letter-spacing: 1.4px; color: #ff8088; margin-bottom: 14px; + } + .dm-blog-contact-title { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 800 !important; line-height: 1.25 !important; + letter-spacing: -.3px !important; color: #ffffff !important; margin: 0 0 12px; text-wrap: balance; + } + .dm-blog-contact-sub { + font-size: 15.5px; line-height: 1.65; color: #e2e2e2; margin: 0; font-weight: 450; + } + .dm-blog-contact-btn { + position: relative; z-index: 1; flex-shrink: 0; + display: inline-flex; align-items: center; justify-content: center; gap: 10px; + background: var(--dm-red); color: #fff !important; font-size: 15px; font-weight: 700; + padding: 16px 32px; border-radius: 16px; text-decoration: none; + box-shadow: 0 10px 26px rgba(192,18,39,0.34); + transition: background .2s ease, transform .2s ease; + } + .dm-blog-contact-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } + @media (max-width: 720px) { + .dm-blog-contact-cta { flex-direction: column; align-items: flex-start; gap: 26px; } + .dm-blog-contact-btn { width: 100%; } + } +1a:["$","section",null,{"className":"dm-blog-footer","aria-label":"More articles","children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$25"}}],"$L26"]}] +27:I[5500,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"Image"] +28:I[23096,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"default"] +1d:["$","span",null,{"className":"dm-article-figure-img","children":["$","$L27",null,{"src":"/images/blog-post-pic-8.webp","alt":"Fleet Reduction Without Compromising Delivery Volume","fill":true,"sizes":"(max-width: 768px) 100vw, 760px","style":{"objectFit":"cover"}}]}] +1e:["$","figcaption",null,{"children":"Fleet Management: route planning decisions made before dispatch."}] +1f:["$","$L1c","7",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","blockquote",null,{"className":"dm-article-quote","children":[["$","p",null,{"children":"A route should be checked before the rider leaves, not explained after the customer calls."}],["$","cite",null,{"children":"Doormile Operations"}]]}]}] +20:["$","$L1c","8",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"Putting it into practice"}]}] +21:["$","$L1c","9",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"The best improvements usually start with simple measurements. Track distance per route, failed delivery windows, rider idle time, and orders moved between vehicles after dispatch. Those numbers show where the operation is leaking time."}]}] +22:["$","$L1c","10",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ol",null,{"className":"dm-article-ol","children":[["$","li","0",{"children":"Benchmark today's distance, fleet size, and on-time rate."}],["$","li","1",{"children":"Include vehicle capacity, delivery windows, rider shifts, and battery charge."}],["$","li","2",{"children":"Check routes against traffic and customer commitments before dispatch."}],["$","li","3",{"children":"Compare the next dispatch cycle against the old plan."}]]}]}] +23:["$","$L1c","11",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"Better routing is not about pushing riders harder. It is about giving them a plan that already accounts for the real day ahead."}]}] +24:["$","div",null,{"className":"dm-blog-aside-wrap","children":["$","aside",null,{"className":"dm-blog-sidebar","aria-label":"Blog sidebar","children":[["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Search"}],["$","$L28",null,{}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Recent Posts"}],["$","ul",null,{"className":"dm-blog-recent","children":[["$","li","how-ai-is-transforming-last-mile-ev-delivery",{"children":["$","$L1b",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"How Better Planning Improves Last-Mile EV Delivery"}],["$","time",null,{"dateTime":"2025-10-02","className":"dm-blog-recent-date","children":"Oct 2, 2025"}]]}]]}]}],["$","li","42-less-distance-insights-from-our-hyderabad-hub",{"children":["$","$L1b",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}],["$","time",null,{"dateTime":"2025-09-18","className":"dm-blog-recent-date","children":"Sep 18, 2025"}]]}]]}]}],["$","li","miletruth-ai-10-stages-to-smarter-dispatch",{"children":["$","$L1b",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","time",null,{"dateTime":"2025-09-05","className":"dm-blog-recent-date","children":"Sep 5, 2025"}]]}]]}]}],["$","li","the-ev-paradox-solving-range-anxiety-for-urban-fleets",{"children":["$","$L1b",null,{"href":"/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/ev-paradox.webp","alt":"The EV Paradox: Solving Range Anxiety for Urban Fleets","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}],["$","time",null,{"dateTime":"2025-08-21","className":"dm-blog-recent-date","children":"Aug 21, 2025"}]]}]]}]}]]}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Categories"}],["$","ul",null,{"className":"dm-blog-categories","children":[["$","li","Case Study",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Case Study"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","EV Fleet",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"EV Fleet"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}],["$","li","Fleet Management",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Fleet Management"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","MileTruth",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"MileTruth"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],"$L29","$L2a","$L2b"]}]]}],"$L2c"]}]}] +26:["$","div",null,{"className":"dm-blog-footer-inner","children":[["$","nav",null,{"className":"dm-prevnext","aria-label":"Article navigation","children":[["$","$L1b",null,{"href":"/blog/why-mathematical-precision-beats-heuristics-in-routing","className":"dm-prevnext-card dm-prevnext-prev","children":[["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-14.webp","alt":"Why Mathematical Precision Beats Heuristics in Routing","fill":true,"sizes":"80px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-prevnext-text","children":[["$","span",null,{"className":"dm-prevnext-label","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"19","y1":"12","x2":"5","y2":"12"}],["$","polyline",null,{"points":"12 19 5 12 12 5"}]]}],"Previous"]}],["$","span",null,{"className":"dm-prevnext-cat","children":"Technology"}],["$","span",null,{"className":"dm-prevnext-title","children":"Why Mathematical Precision Beats Heuristics in Routing"}]]}]]}],["$","$L1b",null,{"href":"/blog/building-a-greener-city-the-future-of-urban-logistics","className":"dm-prevnext-card dm-prevnext-next","children":[["$","span",null,{"className":"dm-prevnext-text","children":[["$","span",null,{"className":"dm-prevnext-label","children":["Next",["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","span",null,{"className":"dm-prevnext-cat","children":"Sustainability"}],["$","span",null,{"className":"dm-prevnext-title","children":"Building a Greener City: The Future of Urban Logistics"}]]}],["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-6.webp","alt":"Building a Greener City: The Future of Urban Logistics","fill":true,"sizes":"80px","style":{"objectFit":"cover"}}]}]]}]]}],["$","div",null,{"className":"dm-related","children":[["$","h2",null,{"className":"dm-related-heading","children":"Related Articles"}],["$","div",null,{"className":"dm-related-grid","children":[["$","$L1c","how-ai-is-transforming-last-mile-ev-delivery",{"delay":0,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L27",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Technology"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"How Better Planning Improves Last-Mile EV Delivery"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"A practical look at how EV fleets can plan routes, manage charging, and keep delivery promises without adding unnecessary vehicles."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}],["$","$L1c","42-less-distance-insights-from-our-hyderabad-hub",{"delay":0.08,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L27",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Case Study"}]]}],["$","div",null,{"className":"dm-related-body","children":["$L2d","$L2e","$L2f"]}]]}]}],"$L30"]}]]}],"$L31"]}] +29:["$","li","Operations",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Operations"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +2a:["$","li","Sustainability",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Sustainability"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +2b:["$","li","Technology",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Technology"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}] +2c:["$","section",null,{"className":"dm-blog-widget dm-blog-cta-card","children":[["$","h2",null,{"className":"dm-blog-cta-title","children":"Planning delivery routes?"}],["$","p",null,{"className":"dm-blog-cta-text","children":"Talk to us about reducing wasted distance, missed windows, and avoidable vehicle time."}],["$","$L1b",null,{"href":"/contact","className":"dm-blog-cta-btn","children":["Contact Us",["$","svg",null,{"width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] +2d:["$","h3",null,{"className":"dm-related-card-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}] +2e:["$","p",null,{"className":"dm-related-card-excerpt","children":"A practical look at how one Hyderabad hub reduced distance, used fewer vehicles, and protected delivery windows with better route planning."}] +2f:["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}] +30:["$","$L1c","miletruth-ai-10-stages-to-smarter-dispatch",{"delay":0.16,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L27",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"MileTruth"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"From order intake to final route output, here is how a dispatch plan is checked before riders leave the hub."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}] +31:["$","div",null,{"className":"dm-blog-contact-cta","children":[["$","div",null,{"className":"dm-blog-contact-cta-content","children":[["$","span",null,{"className":"dm-blog-contact-eyebrow","children":"Let's talk logistics"}],["$","h2",null,{"className":"dm-blog-contact-title","children":"Ready to move smarter with Doormile?"}],["$","p",null,{"className":"dm-blog-contact-sub","children":"Tell us about your fleet and routes — we'll show you where the distance, vehicles and emissions are hiding."}]]}],["$","$L1b",null,{"href":"/contact","className":"dm-blog-contact-btn","children":["Get in Touch",["$","svg",null,{"width":"20","height":"20","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] +12:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] +32:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +f:null +14:[["$","title","0",{"children":"Fleet Reduction Without Compromising Delivery Volume – Doormile"}],["$","meta","1",{"name":"description","content":"Handling the same order volume with fewer vehicles starts by removing avoidable kilometres and overlapping routes."}],["$","meta","2",{"name":"author","content":"Doormile Team"}],["$","meta","3",{"name":"keywords","content":"Fleet Management,last-mile logistics,EV fleet,MileTruth,route optimisation"}],["$","meta","4",{"name":"robots","content":"index, follow"}],["$","link","5",{"rel":"canonical","href":"https://www.doormile.com/blog/fleet-reduction-without-compromising-delivery-volume"}],["$","meta","6",{"property":"og:title","content":"Fleet Reduction Without Compromising Delivery Volume"}],["$","meta","7",{"property":"og:description","content":"Handling the same order volume with fewer vehicles starts by removing avoidable kilometres and overlapping routes."}],["$","meta","8",{"property":"og:url","content":"https://www.doormile.com/blog/fleet-reduction-without-compromising-delivery-volume"}],["$","meta","9",{"property":"og:site_name","content":"Doormile"}],["$","meta","10",{"property":"og:image","content":"https://www.doormile.com/images/blog-post-pic-8.webp"}],["$","meta","11",{"property":"og:image:alt","content":"Fleet Reduction Without Compromising Delivery Volume"}],["$","meta","12",{"property":"og:type","content":"article"}],["$","meta","13",{"property":"article:published_time","content":"2025-07-24T00:00:00.000Z"}],["$","meta","14",{"property":"article:author","content":"Doormile Team"}],["$","meta","15",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","16",{"name":"twitter:title","content":"Fleet Reduction Without Compromising Delivery Volume"}],["$","meta","17",{"name":"twitter:description","content":"Handling the same order volume with fewer vehicles starts by removing avoidable kilometres and overlapping routes."}],["$","meta","18",{"name":"twitter:image","content":"https://www.doormile.com/images/blog-post-pic-8.webp"}],["$","link","19",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","20",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","21",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","22",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L32","23",{}]] diff --git a/build/blog/fleet-reduction-without-compromising-delivery-volume/__next._full.txt b/build/blog/fleet-reduction-without-compromising-delivery-volume/__next._full.txt new file mode 100644 index 0000000..e06d939 --- /dev/null +++ b/build/blog/fleet-reduction-without-compromising-delivery-volume/__next._full.txt @@ -0,0 +1,546 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +d:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +e:"$Sreact.suspense" +11:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +13:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +15:I[68027,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"P":null,"c":["","blog","fleet-reduction-without-compromising-delivery-volume"],"q":"","i":false,"f":[[["",{"children":["blog",{"children":[["slug","fleet-reduction-without-compromising-delivery-volume","d",null],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":["$Lc",[["$","script","script-0",{"src":"/_next/static/chunks/0yvxf3ok9gcp_.js","async":true,"nonce":"$undefined"}]],["$","$Ld",null,{"children":["$","$e",null,{"name":"Next.MetadataOutlet","children":"$@f"}]}]]}],{},null,false,null]},null,false,"$@10"]},null,false,"$@10"]},null,false,null],["$","$1","h",{"children":[null,["$","$L11",null,{"children":"$L12"}],["$","div",null,{"hidden":true,"children":["$","$L13",null,{"children":["$","$e",null,{"name":"Next.Metadata","children":"$L14"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$15",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"kmSVPuUqY3Rhw5xy4D2nn"} +16:[] +10:"$W16" +:HL["/images/blog-post-pic-8.webp","image"] +17:T3d6f, + .dm-single-blog { + --dm-red: #c01227; + --dm-red-hover: #e31d32; + --dm-radius-card: 22px; + --dm-radius-img: 20px; + --dm-radius-badge: 8px; + --dm-shadow-card: 0 4px 24px rgba(15, 23, 42, 0.05); + --dm-border: 1px solid rgba(15, 23, 42, 0.09); + --dm-space-p: 24px; + --dm-space-h: 32px; + --dm-space-img: 32px; + --dm-space-quote: 40px; + --dm-sticky-top: 138px; + --dm-measure: min(1100px, 100%); + font-family: var(--font-manrope), sans-serif; + } + + /* Heading normalization. Beat the global theme's .elementor-kit-5 h1-h6 + (120/80/60px UPPERCASE) rules with !important on our own classes. */ + .dm-single-blog :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline, + specificity 0-1-1) so blog links keep our colors and never get underlined. */ + .dm-single-blog a { text-decoration: none !important; } + + /* Page banner: tall homepage-scale frame with only badge + title inside */ + /* Compound selector (specificity 20) + !important beats the global 800px + single-class height rules so the blog banner can use viewport heights. */ + .custom-standard-hero-card.dm-banner-card { + height: 90vh !important; + min-height: 85vh !important; + } + @media (max-width: 1024px) { + .custom-standard-hero-card.dm-banner-card { height: 80vh !important; min-height: 75vh !important; } + } + @media (max-width: 600px) { + .custom-standard-hero-card.dm-banner-card { height: 78vh !important; min-height: 72vh !important; } + } + + .dm-banner-inner { + position: relative; width: 100%; height: 100%; + display: flex; flex-direction: column; align-items: center; justify-content: center; + text-align: center; gap: clamp(22px, 2.6vw, 34px); + padding: clamp(48px, 8vh, 96px) clamp(20px, 5vw, 48px); + } + + .dm-banner-category { + display: inline-block; background: var(--dm-red); color: #fff; + font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.6px; + padding: 9px 18px; border-radius: 999px; box-shadow: 0 8px 22px rgba(192,18,39,0.45); + } + .dm-banner-title { + font-family: var(--font-manrope), sans-serif !important; + font-size: clamp(34px, 5vw, 60px) !important; font-weight: 850 !important; + line-height: 1.16 !important; letter-spacing: -1.2px !important; + color: #ffffff !important; margin: 0; max-width: 820px; + text-wrap: balance; text-shadow: 0 2px 30px rgba(0,0,0,0.38); + } + @media (max-width: 1024px) { .dm-banner-title { font-size: clamp(32px, 6vw, 48px) !important; max-width: 90%; } } + @media (max-width: 600px) { .dm-banner-title { font-size: clamp(28px, 8vw, 38px) !important; max-width: 90%; } } + + /* Content wrap begins immediately below the banner */ + /* Shared content container: the SAME max-width + horizontal padding is used + by BlogPostFooter (.dm-blog-footer-inner) so the article body, headings, + images, Prev/Next, Related Articles and the CTA banner all align to one + grid with identical left/right edges. Keep both in sync. */ + .dm-blog-wrap { + max-width: 1280px; margin: 0 auto; + /* 20px mobile padding floor → 40px on desktop; matches the footer container. */ + padding: clamp(14px, 2vw, 26px) clamp(20px, 4vw, 40px) 0; + } + @media (max-width: 767px) { + .dm-blog-wrap { + padding-left: 16px; + padding-right: 16px; + } + } + + /* ── Article meta bar (directly under the hero) ── */ + .dm-meta-bar { + display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 14px 24px; + padding: clamp(20px, 2.6vw, 30px) 0; margin-bottom: clamp(26px, 3vw, 44px); + border-bottom: 1px solid rgba(15,23,42,0.10); + } + .dm-meta-breadcrumb ol { + list-style: none; display: flex; flex-wrap: wrap; align-items: center; + gap: 8px; margin: 0; padding: 0; font-size: 13px; font-weight: 600; color: #64748b; + } + .dm-meta-breadcrumb a { color: #64748b !important; text-decoration: none; transition: color .2s ease; } + .dm-meta-breadcrumb a:hover { color: var(--dm-red) !important; } + .dm-meta-sep { color: #cbd5e1; } + .dm-meta-current { + color: #0f172a; font-weight: 700; + max-width: min(40ch, 46vw); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; + } + @media (max-width: 600px) { .dm-meta-current { max-width: 56vw; } } + .dm-meta-items { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 20px; } + .dm-meta-item { + display: inline-flex; align-items: center; gap: 7px; + font-size: 13.5px; font-weight: 600; color: #475569; + } + .dm-meta-item svg { color: var(--dm-red); flex: 0 0 auto; } + .dm-meta-author { color: #0f172a; font-weight: 700; } + @media (max-width: 600px) { .dm-meta-bar { gap: 12px; } } + .dm-blog-layout { + display: grid; grid-template-columns: minmax(0,1fr) 320px; + /* Tighter gap gives the reading column more room next to the 320px sidebar. */ + gap: clamp(28px, 3vw, 56px); align-items: start; + } + @media (max-width: 1024px) { + .dm-blog-layout { grid-template-columns: 1fr; gap: 48px; } + /* Single-column (tablet/mobile): cap the reading column and centre it so the + article never sits left-aligned with a large empty right gutter. */ + .dm-blog-main { max-width: 900px; margin-inline: auto; } + } + .dm-blog-main { min-width: 0; } + + /* ── Intro lead ── */ + .dm-blog-intro { + max-width: var(--dm-measure); + font-size: clamp(18px, 1.5vw, 20px); line-height: 1.65; font-weight: 500; + color: #475569; margin: 0 0 clamp(26px, 3vw, 38px); padding-left: 20px; + border-left: 3px solid var(--dm-red); + } + + /* ── Article body ── */ + .dm-article-body { max-width: var(--dm-measure); } + .dm-article-p { + font-size: 18px !important; line-height: 1.8 !important; color: #334155; font-weight: 450; + margin: 0 0 var(--dm-space-p); + } + .dm-article-h2 { + font-size: clamp(23px, 2vw, 30px) !important; font-weight: 800 !important; letter-spacing: -.3px !important; + color: #0f172a !important; line-height: 1.3 !important; margin: 48px 0 var(--dm-space-h); + text-wrap: balance; + } + /* Each article block is wrapped in its OWN ScrollReveal
    , so a bare + :first-child rule matched every heading (each is the only child of its + wrapper) and zeroed its top margin, collapsing the gap above every + section heading. Scope the reset to only the article body's first block. */ + .dm-article-body > :first-child :where(.dm-article-h2, .dm-article-h3), + .dm-article-body > .dm-article-h2:first-child, + .dm-article-body > .dm-article-h3:first-child { margin-top: 0; } + .dm-article-h3 { + font-size: clamp(19px, 1.5vw, 23px) !important; font-weight: 800 !important; letter-spacing: -.2px !important; + color: #1e293b !important; line-height: 1.34 !important; margin: 40px 0 18px; + text-wrap: balance; + } + @media (max-width: 600px) { + .dm-article-p { font-size: 16px !important; } + .dm-article-ul li, .dm-article-ol li { font-size: 15.5px; } + .dm-article-h2 { font-size: clamp(22px, 6vw, 28px) !important; margin-top: 38px; } + .dm-article-h3 { font-size: clamp(18px, 5vw, 22px) !important; } + } + + .dm-article-ul, .dm-article-ol { + /* Top margin (was 0) separates the list from the paragraph above it; + matching bottom margin keeps it clear of the next heading/paragraph. + Slightly larger than --dm-space-p so the list reads as its own block. */ + margin: clamp(26px, 2.4vw, 32px) 0 clamp(26px, 2.4vw, 32px); + padding-left: 2px; list-style: none; + display: flex; flex-direction: column; gap: 15px; + } + /* Prefixed with .dm-article-body so these beat the theme's global + ".logico-front-end ul li:before" fontello-glyph bullet (specificity 0,1,3), + which otherwise replaces our clean red dot with a misaligned checkmark glyph + and adds its own 1.7em indent. */ + .dm-article-body .dm-article-ul li, .dm-article-body .dm-article-ol li { + position: relative; padding-left: 34px; + font-size: 17px; line-height: 1.65; color: #334155; font-weight: 450; + } + .dm-article-body .dm-article-ul li::before { + content: ""; position: absolute; left: 7px; top: 10px; + width: 8px; height: 8px; border-radius: 50%; background: var(--dm-red); + /* kill any inherited fontello glyph from the global rule */ + font-size: 0; line-height: 0; + } + .dm-article-ol { counter-reset: dm-li; } + .dm-article-body .dm-article-ol li { counter-increment: dm-li; } + .dm-article-body .dm-article-ol li::before { + content: counter(dm-li); position: absolute; left: 0; top: 0; + width: 24px; height: 24px; border-radius: 7px; + background: rgba(192,18,39,0.10); color: var(--dm-red); + font-size: 12px; font-weight: 800; display: flex; align-items: center; justify-content: center; + } + + /* ── Quote ── */ + .dm-article-quote { + position: relative; margin: var(--dm-space-quote) 0; padding: 30px 32px 30px 64px; + background: linear-gradient(135deg, #fbf2f3 0%, #fdf7f8 100%); + border-left: 4px solid var(--dm-red); border-radius: 0 18px 18px 0; + box-shadow: 0 8px 28px rgba(192, 18, 39, 0.06); + } + .dm-article-quote::before { + content: "\201C"; position: absolute; left: 22px; top: 8px; + font-family: Georgia, "Times New Roman", serif; + font-size: 64px; line-height: 1; color: rgba(192, 18, 39, 0.28); font-weight: 700; + } + .dm-article-quote p { + font-size: clamp(19px, 2vw, 23px); line-height: 1.5; font-weight: 600; + font-style: italic; color: #1e293b; margin: 0; + } + .dm-article-quote cite { + display: block; margin-top: 16px; font-size: 13px; font-weight: 700; + font-style: normal; color: var(--dm-red); text-transform: uppercase; letter-spacing: .6px; + } + @media (max-width: 600px) { .dm-article-quote { padding: 26px 22px; } .dm-article-quote::before { display: none; } } + + /* ── Images ── */ + .dm-article-figure { margin: var(--dm-space-img) 0; } + .dm-article-figure-img { + position: relative; display: block; width: 100%; aspect-ratio: 16 / 9; + border-radius: var(--dm-radius-img); overflow: hidden; box-shadow: 0 14px 34px rgba(15,23,42,0.10); + } + .dm-article-figure figcaption { + margin-top: 14px; font-size: 13.5px; color: #94a3b8; font-weight: 500; + text-align: center; font-style: italic; + } + + /* ── Sidebar ── */ + .dm-blog-aside-wrap { position: relative; } + .dm-blog-sidebar { + display: flex; flex-direction: column; gap: 18px; + position: sticky; top: var(--dm-sticky-top); + } + @media (max-width: 1024px) { .dm-blog-sidebar { position: static; gap: 20px; } } + + .dm-blog-widget { + background: #fff; border: var(--dm-border); border-radius: var(--dm-radius-card); + padding: 20px; box-shadow: var(--dm-shadow-card); + } + .dm-blog-widget-title { + font-size: 13px !important; font-weight: 700 !important; text-transform: uppercase !important; + letter-spacing: .8px !important; line-height: 1.35 !important; color: #0f172a !important; + margin: 0 0 15px; padding: 0 0 12px; + border-bottom: 1px solid rgba(15,23,42,0.08); + overflow: visible; white-space: normal; word-break: normal; + } + + /* Search */ + .dm-sr-only { + position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; + overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; + } + .dm-blog-search { position: relative; } + .dm-blog-search-form { position: relative; } + .dm-blog-search-input { + width: 100%; height: 46px; border: 1.5px solid #e2e8f0; border-radius: 12px; + padding: 0 42px 0 15px; font-size: 14px; font-family: inherit; color: #0f172a; + background: #f8fafc; transition: border-color .2s ease, box-shadow .2s ease, background .2s ease; + } + .dm-blog-search-input::placeholder { color: #9c9c9c; } + .dm-blog-search-input:focus { + outline: none; border-color: var(--dm-red); background: #fff; + box-shadow: 0 0 0 3px rgba(192,18,39,0.11); + } + .dm-blog-search-icon { + position: absolute; right: 14px; top: 50%; transform: translateY(-50%); + color: #94a3b8; pointer-events: none; display: flex; + } + .dm-blog-search-results { + position: absolute; z-index: 20; top: calc(100% + 8px); left: 0; right: 0; + background: #fff; border: 1px solid rgba(15,23,42,0.10); border-radius: 14px; + box-shadow: 0 18px 42px rgba(15,23,42,0.14); overflow: hidden; + } + .dm-blog-search-results ul { list-style: none; margin: 0; padding: 6px; } + .dm-blog-search-result { + display: flex; flex-direction: column; gap: 3px; padding: 10px 12px; + border-radius: 10px; text-decoration: none; transition: background .15s ease; + } + .dm-blog-search-result:hover { background: #f8fafc; } + .dm-blog-search-result-cat { + font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .8px; color: var(--dm-red); + } + .dm-blog-search-result-title { font-size: 13.5px; font-weight: 600; color: #1e293b; line-height: 1.35; } + .dm-blog-search-empty { margin: 0; padding: 14px 12px; font-size: 13px; color: #64748b; } + + /* Recent posts */ + .dm-blog-recent { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 15px; } + .dm-blog-recent-item { display: flex; gap: 13px; align-items: center; text-decoration: none; } + .dm-blog-recent-thumb { + position: relative; flex: 0 0 62px; width: 62px; height: 62px; + border-radius: 13px; overflow: hidden; background: #f1f5f9; + } + .dm-blog-recent-meta { display: flex; flex-direction: column; gap: 4px; min-width: 0; } + .dm-blog-recent-title { + font-size: 13.5px; font-weight: 700; color: #1e293b; line-height: 1.35; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-blog-recent-item:hover .dm-blog-recent-title { color: var(--dm-red); } + .dm-blog-recent-date { font-size: 11.5px; font-weight: 600; color: #94a3b8; } + + /* Categories */ + .dm-blog-categories { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; } + .dm-blog-category-item { + display: flex; align-items: center; justify-content: space-between; gap: 10px; + padding: 11px 2px; text-decoration: none; font-size: 14px; font-weight: 600; color: #334155 !important; + border-bottom: 1px solid rgba(15,23,42,0.06); transition: color .2s ease, padding-left .2s ease; + } + .dm-blog-categories li:last-child .dm-blog-category-item { border-bottom: none; } + .dm-blog-category-item:hover { color: var(--dm-red); padding-left: 6px; } + .dm-blog-category-item > span:first-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } + .dm-blog-category-count { + flex: 0 0 auto; font-size: 11px; font-weight: 800; color: #94a3b8; background: #f1f5f9; + min-width: 24px; height: 22px; border-radius: 7px; display: inline-flex; + align-items: center; justify-content: center; padding: 0 7px; + } + + /* CTA card */ + .dm-blog-cta-card { background: #1f1f1f; border-color: #1f1f1f; } + .dm-blog-cta-title { font-size: 18px !important; font-weight: 800 !important; color: #fff !important; line-height: 1.32 !important; margin: 0 0 10px; letter-spacing: -.2px !important; } + .dm-blog-cta-text { font-size: 13.5px; line-height: 1.6; color: #c7c7c7; margin: 0 0 20px; font-weight: 450; } + .dm-blog-cta-btn { + display: inline-flex; align-items: center; gap: 8px; + background: var(--dm-red); color: #fff !important; font-size: 13.5px; font-weight: 700; + padding: 12px 22px; border-radius: 12px; text-decoration: none; + transition: background .2s ease, transform .2s ease; + } + .dm-blog-cta-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } +c:["$","div",null,{"className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"Article\",\"headline\":\"Fleet Reduction Without Compromising Delivery Volume\",\"description\":\"Handling the same order volume with fewer vehicles starts by removing avoidable kilometres and overlapping routes.\",\"image\":[\"https://www.doormile.com/images/blog-post-pic-8.webp\"],\"datePublished\":\"2025-07-24T00:00:00.000Z\",\"dateModified\":\"2025-07-24T00:00:00.000Z\",\"author\":{\"@type\":\"Organization\",\"name\":\"Doormile Team\",\"url\":\"https://www.doormile.com\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Doormile\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://www.doormile.com/images/cropped-image-2.png\"}},\"mainEntityOfPage\":{\"@type\":\"WebPage\",\"@id\":\"https://www.doormile.com/blog/fleet-reduction-without-compromising-delivery-volume\"},\"articleSection\":\"Fleet Management\"}"}}],["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https://www.doormile.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https://www.doormile.com/blog\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Fleet Reduction Without Compromising Delivery Volume\",\"item\":\"https://www.doormile.com/blog/fleet-reduction-without-compromising-delivery-volume\"}]}"}}],["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":[["$","article",null,{"className":"dm-single-blog","children":[["$","link",null,{"rel":"preload","as":"image","href":"/images/blog-post-pic-8.webp"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$17"}}],"$L18","$L19"]}],"$L1a"]}]}]]}] +1b:I[22016,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],""] +1c:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"ScrollReveal"] +18:["$","div",null,{"className":"custom-standard-hero-container","children":["$","div",null,{"className":"custom-standard-hero-card dm-banner-card","style":{"backgroundImage":"url(/images/blog-post-pic-8.webp)","--hero-overlay":"linear-gradient(180deg, rgba(0,0,0,0.38) 0%, rgba(0,0,0,0.46) 55%, rgba(0,0,0,0.60) 100%)"},"children":["$","div",null,{"className":"e-con-inner dm-banner-inner","children":[["$","span",null,{"className":"dm-banner-category","children":"Fleet Management"}],["$","h1",null,{"className":"dm-banner-title","children":"Fleet Reduction Without Compromising Delivery Volume"}]]}]}]}] +19:["$","div",null,{"className":"dm-blog-wrap","children":[["$","div",null,{"className":"dm-meta-bar","children":[["$","nav",null,{"className":"dm-meta-breadcrumb","aria-label":"Breadcrumb","children":["$","ol",null,{"children":[["$","li",null,{"children":["$","$L1b",null,{"href":"/","children":"Home"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"children":["$","$L1b",null,{"href":"/blog","children":"Blog"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"aria-current":"page","className":"dm-meta-current","children":"Fleet Reduction Without Compromising Delivery Volume"}]]}]}],["$","div",null,{"className":"dm-meta-items","children":[["$","span",null,{"className":"dm-meta-item dm-meta-author","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","path",null,{"d":"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"}],["$","circle",null,{"cx":"12","cy":"7","r":"4"}]]}],"Doormile Team"]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","rect",null,{"x":"3","y":"4","width":"18","height":"18","rx":"2"}],["$","line",null,{"x1":"16","y1":"2","x2":"16","y2":"6"}],["$","line",null,{"x1":"8","y1":"2","x2":"8","y2":"6"}],["$","line",null,{"x1":"3","y1":"10","x2":"21","y2":"10"}]]}],["$","time",null,{"dateTime":"2025-07-24","children":"Jul 24, 2025"}]]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","circle",null,{"cx":"12","cy":"12","r":"9"}],["$","polyline",null,{"points":"12 7 12 12 15 14"}]]}],2," min read"]}]]}]]}],["$","div",null,{"className":"dm-blog-layout","children":[["$","div",null,{"className":"dm-blog-main","children":[["$","p",null,{"className":"dm-blog-intro","children":"Cutting vehicles usually means cutting capacity unless the removed kilometres were never needed. Better route planning turns wasted distance into operating headroom."}],["$","div",null,{"className":"dm-article-body","children":[["$","$L1c","0",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"In last-mile logistics, a missed SLA is rarely caused by one big failure. It usually comes from small delays adding up across a route. Fleet Reduction Without Compromising Delivery Volume looks at how delivery teams can spot those delays early and plan around them before vehicles leave the hub."}]}],["$","$L1c","1",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"Why this matters for fleet teams"}]}],["$","$L1c","2",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"Every extra kilometre costs money. It uses fuel or charge, adds rider time, wears down vehicles, and increases the chance of a late delivery. When routes are built from fixed zones or old habits, those costs repeat every day."}]}],["$","$L1c","3",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ul",null,{"className":"dm-article-ul","children":[["$","li","0",{"children":"Fewer vehicles needed for the same number of drops"}],["$","li","1",{"children":"Lower cost per drop through better stop sequencing"}],["$","li","2",{"children":"ETAs that match traffic, distance, and delivery windows"}],["$","li","3",{"children":"Less fuel or charge used per completed order"}]]}]}],["$","$L1c","4",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h3",null,{"className":"dm-article-h3","children":"From orders to dispatch"}]}],["$","$L1c","5",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"A good dispatch plan starts with the basics: order locations, promised delivery windows, rider capacity, vehicle range, and known traffic trouble spots. MileTruth™ checks those inputs before dispatch so the team is not fixing avoidable mistakes on the road."}]}],["$","$L1c","6",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","figure",null,{"className":"dm-article-figure","children":["$L1d","$L1e"]}]}],"$L1f","$L20","$L21","$L22","$L23"]}]]}],"$L24"]}]]}] +25:T2021, + .dm-blog-footer { + font-family: var(--font-manrope), sans-serif; --dm-red: #c01227; --dm-red-hover: #e31d32; + /* The global theme applies 72px top/bottom section padding — strip it so the + inner container is the single source of vertical rhythm (no double gap). */ + padding: 0 !important; + } + /* Neutralize the global theme's 120/80/60px UPPERCASE heading rules */ + .dm-blog-footer :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline) */ + .dm-blog-footer a { text-decoration: none !important; } + /* Shared content container — mirrors SingleBlog's .dm-blog-wrap (same 1280px + max-width + 20→40px horizontal padding) so Prev/Next, Related and the CTA + align to the exact same left/right edges as the article body above. + Vertical rhythm: ~64px from the article end to the Prev/Next divider, then a + consistent ~64–72px section→section gap (no 120px+ voids). */ + .dm-blog-footer-inner { + max-width: 1280px; margin: 0 auto; + /* Compact vertical rhythm on an 8px system. Top padding sets the + article→Prev/Next gap (~24–32px); the inter-section gap sets the + Prev/Next→Related gap (~32–48px). No large arbitrary voids. */ + /* Minimal bottom padding — the global site footer already contributes its + own 20px top inset, so the CTA banner sits close to it without a void. */ + padding: clamp(24px, 3vw, 32px) clamp(20px, 4vw, 40px) clamp(8px, 1.5vw, 16px); + display: flex; flex-direction: column; gap: clamp(32px, 4vw, 48px); + } + @media (max-width: 767px) { + .dm-blog-footer-inner { + padding-left: 16px; + padding-right: 16px; + } + } + + /* Prev / Next */ + .dm-prevnext { + display: grid; grid-template-columns: 1fr 1fr; gap: 20px; + /* Halved from 40px: tight divider→cards spacing without crowding. */ + padding-top: clamp(16px, 2vw, 24px); border-top: 1px solid rgba(15,23,42,0.08); + } + @media (max-width: 640px) { .dm-prevnext { grid-template-columns: 1fr; } } + .dm-prevnext-placeholder { display: block; } + .dm-prevnext-card { + display: flex; gap: 16px; align-items: center; padding: 16px; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + text-decoration: none; transition: transform .3s ease, box-shadow .3s ease, border-color .3s ease; + } + .dm-prevnext-card:hover { + transform: translateY(-4px); border-color: rgba(192,18,39,0.2); + box-shadow: 0 16px 34px rgba(192,18,39,0.10); + } + .dm-prevnext-thumb { + position: relative; flex: 0 0 80px; width: 80px; height: 80px; + border-radius: 16px; overflow: hidden; background: #f1f5f9; + } + .dm-prevnext-text { display: flex; flex-direction: column; gap: 5px; min-width: 0; } + .dm-prevnext-next { text-align: right; } + .dm-prevnext-next .dm-prevnext-text { align-items: flex-end; } + .dm-prevnext-label { + display: inline-flex; align-items: center; gap: 6px; + font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: 1px; color: var(--dm-red); + } + .dm-prevnext-cat { font-size: 11px; font-weight: 700; color: #94a3b8; text-transform: uppercase; letter-spacing: .5px; } + .dm-prevnext-title { + font-size: 15.5px; font-weight: 700; color: #1e293b; line-height: 1.4; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-prevnext-card:hover .dm-prevnext-title { color: var(--dm-red); } + + /* Related */ + .dm-related-heading { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 850 !important; letter-spacing: -.4px !important; + line-height: 1.25 !important; color: #0f172a !important; margin: 0 0 24px; + } + .dm-related-grid { + display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; + } + @media (max-width: 1024px) { .dm-related-grid { grid-template-columns: repeat(2, 1fr); } } + @media (max-width: 700px) { .dm-related-grid { grid-template-columns: 1fr; gap: 24px; } } + + .dm-related-card { + display: flex; flex-direction: column; height: 100%; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + overflow: hidden; box-shadow: 0 4px 24px rgba(15,23,42,0.05); text-decoration: none; + transition: transform .4s cubic-bezier(0.2,0.8,0.2,1), box-shadow .4s ease, border-color .4s ease; + } + .dm-related-card:hover { + transform: translateY(-8px); box-shadow: 0 22px 44px rgba(192,18,39,0.13); + border-color: rgba(192,18,39,0.2); + } + .dm-related-img { + position: relative; width: 100%; aspect-ratio: 16 / 10; overflow: hidden; background: #f1f5f9; + } + .dm-related-img img { transition: transform .5s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-img img { transform: scale(1.05); } + .dm-related-badge { + position: absolute; top: 14px; left: 14px; z-index: 5; background: var(--dm-red); color: #fff; + font-size: 9px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.2px; + padding: 5px 11px; border-radius: 8px; box-shadow: 0 4px 12px rgba(192,18,39,0.25); + } + .dm-related-body { display: flex; flex-direction: column; flex: 1; padding: 22px; } + .dm-related-card-title { + font-size: 17px !important; font-weight: 800 !important; color: #1e293b !important; line-height: 1.4 !important; + letter-spacing: -.2px !important; margin: 0 0 10px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-related-card:hover .dm-related-card-title { color: var(--dm-red); } + .dm-related-card-excerpt { + font-size: 13.5px; font-weight: 500; color: #64748b; line-height: 1.6; margin: 0 0 18px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + } + .dm-related-readmore { + margin-top: auto; display: inline-flex; align-items: center; gap: 7px; + font-size: 12.5px; font-weight: 800; color: var(--dm-red); + text-transform: uppercase; letter-spacing: .6px; + } + .dm-related-readmore-arrow { transition: transform .3s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-readmore-arrow { transform: translateX(5px); } + + /* Contact CTA banner */ + .dm-blog-contact-cta { + display: flex; align-items: center; justify-content: space-between; gap: 32px; + flex-wrap: wrap; + background: linear-gradient(135deg, #1a1a1a 0%, #2d1417 100%); + border-radius: 30px; padding: clamp(32px, 4vw, 56px); + position: relative; overflow: hidden; + } + .dm-blog-contact-cta::after { + content: ""; position: absolute; right: -80px; top: -80px; width: 300px; height: 300px; + background: radial-gradient(circle, rgba(192,18,39,0.40), transparent 70%); + pointer-events: none; + } + .dm-blog-contact-cta-content { position: relative; z-index: 1; max-width: 640px; } + .dm-blog-contact-eyebrow { + display: inline-block; font-size: 12px; font-weight: 800; text-transform: uppercase; + letter-spacing: 1.4px; color: #ff8088; margin-bottom: 14px; + } + .dm-blog-contact-title { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 800 !important; line-height: 1.25 !important; + letter-spacing: -.3px !important; color: #ffffff !important; margin: 0 0 12px; text-wrap: balance; + } + .dm-blog-contact-sub { + font-size: 15.5px; line-height: 1.65; color: #e2e2e2; margin: 0; font-weight: 450; + } + .dm-blog-contact-btn { + position: relative; z-index: 1; flex-shrink: 0; + display: inline-flex; align-items: center; justify-content: center; gap: 10px; + background: var(--dm-red); color: #fff !important; font-size: 15px; font-weight: 700; + padding: 16px 32px; border-radius: 16px; text-decoration: none; + box-shadow: 0 10px 26px rgba(192,18,39,0.34); + transition: background .2s ease, transform .2s ease; + } + .dm-blog-contact-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } + @media (max-width: 720px) { + .dm-blog-contact-cta { flex-direction: column; align-items: flex-start; gap: 26px; } + .dm-blog-contact-btn { width: 100%; } + } +1a:["$","section",null,{"className":"dm-blog-footer","aria-label":"More articles","children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$25"}}],"$L26"]}] +27:I[5500,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"Image"] +28:I[23096,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"default"] +1d:["$","span",null,{"className":"dm-article-figure-img","children":["$","$L27",null,{"src":"/images/blog-post-pic-8.webp","alt":"Fleet Reduction Without Compromising Delivery Volume","fill":true,"sizes":"(max-width: 768px) 100vw, 760px","style":{"objectFit":"cover"}}]}] +1e:["$","figcaption",null,{"children":"Fleet Management: route planning decisions made before dispatch."}] +1f:["$","$L1c","7",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","blockquote",null,{"className":"dm-article-quote","children":[["$","p",null,{"children":"A route should be checked before the rider leaves, not explained after the customer calls."}],["$","cite",null,{"children":"Doormile Operations"}]]}]}] +20:["$","$L1c","8",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"Putting it into practice"}]}] +21:["$","$L1c","9",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"The best improvements usually start with simple measurements. Track distance per route, failed delivery windows, rider idle time, and orders moved between vehicles after dispatch. Those numbers show where the operation is leaking time."}]}] +22:["$","$L1c","10",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ol",null,{"className":"dm-article-ol","children":[["$","li","0",{"children":"Benchmark today's distance, fleet size, and on-time rate."}],["$","li","1",{"children":"Include vehicle capacity, delivery windows, rider shifts, and battery charge."}],["$","li","2",{"children":"Check routes against traffic and customer commitments before dispatch."}],["$","li","3",{"children":"Compare the next dispatch cycle against the old plan."}]]}]}] +23:["$","$L1c","11",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"Better routing is not about pushing riders harder. It is about giving them a plan that already accounts for the real day ahead."}]}] +24:["$","div",null,{"className":"dm-blog-aside-wrap","children":["$","aside",null,{"className":"dm-blog-sidebar","aria-label":"Blog sidebar","children":[["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Search"}],["$","$L28",null,{}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Recent Posts"}],["$","ul",null,{"className":"dm-blog-recent","children":[["$","li","how-ai-is-transforming-last-mile-ev-delivery",{"children":["$","$L1b",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"How Better Planning Improves Last-Mile EV Delivery"}],["$","time",null,{"dateTime":"2025-10-02","className":"dm-blog-recent-date","children":"Oct 2, 2025"}]]}]]}]}],["$","li","42-less-distance-insights-from-our-hyderabad-hub",{"children":["$","$L1b",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}],["$","time",null,{"dateTime":"2025-09-18","className":"dm-blog-recent-date","children":"Sep 18, 2025"}]]}]]}]}],["$","li","miletruth-ai-10-stages-to-smarter-dispatch",{"children":["$","$L1b",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","time",null,{"dateTime":"2025-09-05","className":"dm-blog-recent-date","children":"Sep 5, 2025"}]]}]]}]}],["$","li","the-ev-paradox-solving-range-anxiety-for-urban-fleets",{"children":["$","$L1b",null,{"href":"/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/ev-paradox.webp","alt":"The EV Paradox: Solving Range Anxiety for Urban Fleets","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}],["$","time",null,{"dateTime":"2025-08-21","className":"dm-blog-recent-date","children":"Aug 21, 2025"}]]}]]}]}]]}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Categories"}],["$","ul",null,{"className":"dm-blog-categories","children":[["$","li","Case Study",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Case Study"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","EV Fleet",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"EV Fleet"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}],["$","li","Fleet Management",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Fleet Management"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","MileTruth",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"MileTruth"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],"$L29","$L2a","$L2b"]}]]}],"$L2c"]}]}] +26:["$","div",null,{"className":"dm-blog-footer-inner","children":[["$","nav",null,{"className":"dm-prevnext","aria-label":"Article navigation","children":[["$","$L1b",null,{"href":"/blog/why-mathematical-precision-beats-heuristics-in-routing","className":"dm-prevnext-card dm-prevnext-prev","children":[["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-14.webp","alt":"Why Mathematical Precision Beats Heuristics in Routing","fill":true,"sizes":"80px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-prevnext-text","children":[["$","span",null,{"className":"dm-prevnext-label","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"19","y1":"12","x2":"5","y2":"12"}],["$","polyline",null,{"points":"12 19 5 12 12 5"}]]}],"Previous"]}],["$","span",null,{"className":"dm-prevnext-cat","children":"Technology"}],["$","span",null,{"className":"dm-prevnext-title","children":"Why Mathematical Precision Beats Heuristics in Routing"}]]}]]}],["$","$L1b",null,{"href":"/blog/building-a-greener-city-the-future-of-urban-logistics","className":"dm-prevnext-card dm-prevnext-next","children":[["$","span",null,{"className":"dm-prevnext-text","children":[["$","span",null,{"className":"dm-prevnext-label","children":["Next",["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","span",null,{"className":"dm-prevnext-cat","children":"Sustainability"}],["$","span",null,{"className":"dm-prevnext-title","children":"Building a Greener City: The Future of Urban Logistics"}]]}],["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-6.webp","alt":"Building a Greener City: The Future of Urban Logistics","fill":true,"sizes":"80px","style":{"objectFit":"cover"}}]}]]}]]}],["$","div",null,{"className":"dm-related","children":[["$","h2",null,{"className":"dm-related-heading","children":"Related Articles"}],["$","div",null,{"className":"dm-related-grid","children":[["$","$L1c","how-ai-is-transforming-last-mile-ev-delivery",{"delay":0,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L27",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Technology"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"How Better Planning Improves Last-Mile EV Delivery"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"A practical look at how EV fleets can plan routes, manage charging, and keep delivery promises without adding unnecessary vehicles."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}],["$","$L1c","42-less-distance-insights-from-our-hyderabad-hub",{"delay":0.08,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L27",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Case Study"}]]}],["$","div",null,{"className":"dm-related-body","children":["$L2d","$L2e","$L2f"]}]]}]}],"$L30"]}]]}],"$L31"]}] +29:["$","li","Operations",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Operations"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +2a:["$","li","Sustainability",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Sustainability"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +2b:["$","li","Technology",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Technology"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}] +2c:["$","section",null,{"className":"dm-blog-widget dm-blog-cta-card","children":[["$","h2",null,{"className":"dm-blog-cta-title","children":"Planning delivery routes?"}],["$","p",null,{"className":"dm-blog-cta-text","children":"Talk to us about reducing wasted distance, missed windows, and avoidable vehicle time."}],["$","$L1b",null,{"href":"/contact","className":"dm-blog-cta-btn","children":["Contact Us",["$","svg",null,{"width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] +2d:["$","h3",null,{"className":"dm-related-card-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}] +2e:["$","p",null,{"className":"dm-related-card-excerpt","children":"A practical look at how one Hyderabad hub reduced distance, used fewer vehicles, and protected delivery windows with better route planning."}] +2f:["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}] +30:["$","$L1c","miletruth-ai-10-stages-to-smarter-dispatch",{"delay":0.16,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L27",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"MileTruth"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"From order intake to final route output, here is how a dispatch plan is checked before riders leave the hub."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}] +31:["$","div",null,{"className":"dm-blog-contact-cta","children":[["$","div",null,{"className":"dm-blog-contact-cta-content","children":[["$","span",null,{"className":"dm-blog-contact-eyebrow","children":"Let's talk logistics"}],["$","h2",null,{"className":"dm-blog-contact-title","children":"Ready to move smarter with Doormile?"}],["$","p",null,{"className":"dm-blog-contact-sub","children":"Tell us about your fleet and routes — we'll show you where the distance, vehicles and emissions are hiding."}]]}],["$","$L1b",null,{"href":"/contact","className":"dm-blog-contact-btn","children":["Get in Touch",["$","svg",null,{"width":"20","height":"20","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] +12:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] +32:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +f:null +14:[["$","title","0",{"children":"Fleet Reduction Without Compromising Delivery Volume – Doormile"}],["$","meta","1",{"name":"description","content":"Handling the same order volume with fewer vehicles starts by removing avoidable kilometres and overlapping routes."}],["$","meta","2",{"name":"author","content":"Doormile Team"}],["$","meta","3",{"name":"keywords","content":"Fleet Management,last-mile logistics,EV fleet,MileTruth,route optimisation"}],["$","meta","4",{"name":"robots","content":"index, follow"}],["$","link","5",{"rel":"canonical","href":"https://www.doormile.com/blog/fleet-reduction-without-compromising-delivery-volume"}],["$","meta","6",{"property":"og:title","content":"Fleet Reduction Without Compromising Delivery Volume"}],["$","meta","7",{"property":"og:description","content":"Handling the same order volume with fewer vehicles starts by removing avoidable kilometres and overlapping routes."}],["$","meta","8",{"property":"og:url","content":"https://www.doormile.com/blog/fleet-reduction-without-compromising-delivery-volume"}],["$","meta","9",{"property":"og:site_name","content":"Doormile"}],["$","meta","10",{"property":"og:image","content":"https://www.doormile.com/images/blog-post-pic-8.webp"}],["$","meta","11",{"property":"og:image:alt","content":"Fleet Reduction Without Compromising Delivery Volume"}],["$","meta","12",{"property":"og:type","content":"article"}],["$","meta","13",{"property":"article:published_time","content":"2025-07-24T00:00:00.000Z"}],["$","meta","14",{"property":"article:author","content":"Doormile Team"}],["$","meta","15",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","16",{"name":"twitter:title","content":"Fleet Reduction Without Compromising Delivery Volume"}],["$","meta","17",{"name":"twitter:description","content":"Handling the same order volume with fewer vehicles starts by removing avoidable kilometres and overlapping routes."}],["$","meta","18",{"name":"twitter:image","content":"https://www.doormile.com/images/blog-post-pic-8.webp"}],["$","link","19",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","20",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","21",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","22",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L32","23",{}]] diff --git a/build/blog/fleet-reduction-without-compromising-delivery-volume/__next._head.txt b/build/blog/fleet-reduction-without-compromising-delivery-volume/__next._head.txt new file mode 100644 index 0000000..2ba8289 --- /dev/null +++ b/build/blog/fleet-reduction-without-compromising-delivery-volume/__next._head.txt @@ -0,0 +1,6 @@ +1:"$Sreact.fragment" +2:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +3:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +4:"$Sreact.suspense" +5:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +0:{"rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"Fleet Reduction Without Compromising Delivery Volume – Doormile"}],["$","meta","1",{"name":"description","content":"Handling the same order volume with fewer vehicles starts by removing avoidable kilometres and overlapping routes."}],["$","meta","2",{"name":"author","content":"Doormile Team"}],["$","meta","3",{"name":"keywords","content":"Fleet Management,last-mile logistics,EV fleet,MileTruth,route optimisation"}],["$","meta","4",{"name":"robots","content":"index, follow"}],["$","link","5",{"rel":"canonical","href":"https://www.doormile.com/blog/fleet-reduction-without-compromising-delivery-volume"}],["$","meta","6",{"property":"og:title","content":"Fleet Reduction Without Compromising Delivery Volume"}],["$","meta","7",{"property":"og:description","content":"Handling the same order volume with fewer vehicles starts by removing avoidable kilometres and overlapping routes."}],["$","meta","8",{"property":"og:url","content":"https://www.doormile.com/blog/fleet-reduction-without-compromising-delivery-volume"}],["$","meta","9",{"property":"og:site_name","content":"Doormile"}],["$","meta","10",{"property":"og:image","content":"https://www.doormile.com/images/blog-post-pic-8.webp"}],["$","meta","11",{"property":"og:image:alt","content":"Fleet Reduction Without Compromising Delivery Volume"}],["$","meta","12",{"property":"og:type","content":"article"}],["$","meta","13",{"property":"article:published_time","content":"2025-07-24T00:00:00.000Z"}],["$","meta","14",{"property":"article:author","content":"Doormile Team"}],["$","meta","15",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","16",{"name":"twitter:title","content":"Fleet Reduction Without Compromising Delivery Volume"}],["$","meta","17",{"name":"twitter:description","content":"Handling the same order volume with fewer vehicles starts by removing avoidable kilometres and overlapping routes."}],["$","meta","18",{"name":"twitter:image","content":"https://www.doormile.com/images/blog-post-pic-8.webp"}],["$","link","19",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","20",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","21",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","22",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L5","23",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/blog/fleet-reduction-without-compromising-delivery-volume/__next._index.txt b/build/blog/fleet-reduction-without-compromising-delivery-volume/__next._index.txt new file mode 100644 index 0000000..d0b3355 --- /dev/null +++ b/build/blog/fleet-reduction-without-compromising-delivery-volume/__next._index.txt @@ -0,0 +1,15 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","template":["$","$La",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/blog/fleet-reduction-without-compromising-delivery-volume/__next._tree.txt b/build/blog/fleet-reduction-without-compromising-delivery-volume/__next._tree.txt new file mode 100644 index 0000000..3bf8395 --- /dev/null +++ b/build/blog/fleet-reduction-without-compromising-delivery-volume/__next._tree.txt @@ -0,0 +1,10 @@ +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +:HL["/images/blog-post-pic-8.webp","image"] +0:{"tree":{"name":"","param":null,"prefetchHints":16,"slots":{"children":{"name":"blog","param":null,"prefetchHints":0,"slots":{"children":{"name":"slug","param":{"type":"d","key":"fleet-reduction-without-compromising-delivery-volume","siblings":null},"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}}}}}},"staleTime":300,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/blog/fleet-reduction-without-compromising-delivery-volume/__next.blog.$d$slug.__PAGE__.txt b/build/blog/fleet-reduction-without-compromising-delivery-volume/__next.blog.$d$slug.__PAGE__.txt new file mode 100644 index 0000000..5239b9b --- /dev/null +++ b/build/blog/fleet-reduction-without-compromising-delivery-volume/__next.blog.$d$slug.__PAGE__.txt @@ -0,0 +1,521 @@ +1:"$Sreact.fragment" +8:I[22016,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],""] +9:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"ScrollReveal"] +14:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +15:"$Sreact.suspense" +17:I[5500,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"Image"] +18:I[23096,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"default"] +:HL["/images/blog-post-pic-8.webp","image"] +2:T3d6f, + .dm-single-blog { + --dm-red: #c01227; + --dm-red-hover: #e31d32; + --dm-radius-card: 22px; + --dm-radius-img: 20px; + --dm-radius-badge: 8px; + --dm-shadow-card: 0 4px 24px rgba(15, 23, 42, 0.05); + --dm-border: 1px solid rgba(15, 23, 42, 0.09); + --dm-space-p: 24px; + --dm-space-h: 32px; + --dm-space-img: 32px; + --dm-space-quote: 40px; + --dm-sticky-top: 138px; + --dm-measure: min(1100px, 100%); + font-family: var(--font-manrope), sans-serif; + } + + /* Heading normalization. Beat the global theme's .elementor-kit-5 h1-h6 + (120/80/60px UPPERCASE) rules with !important on our own classes. */ + .dm-single-blog :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline, + specificity 0-1-1) so blog links keep our colors and never get underlined. */ + .dm-single-blog a { text-decoration: none !important; } + + /* Page banner: tall homepage-scale frame with only badge + title inside */ + /* Compound selector (specificity 20) + !important beats the global 800px + single-class height rules so the blog banner can use viewport heights. */ + .custom-standard-hero-card.dm-banner-card { + height: 90vh !important; + min-height: 85vh !important; + } + @media (max-width: 1024px) { + .custom-standard-hero-card.dm-banner-card { height: 80vh !important; min-height: 75vh !important; } + } + @media (max-width: 600px) { + .custom-standard-hero-card.dm-banner-card { height: 78vh !important; min-height: 72vh !important; } + } + + .dm-banner-inner { + position: relative; width: 100%; height: 100%; + display: flex; flex-direction: column; align-items: center; justify-content: center; + text-align: center; gap: clamp(22px, 2.6vw, 34px); + padding: clamp(48px, 8vh, 96px) clamp(20px, 5vw, 48px); + } + + .dm-banner-category { + display: inline-block; background: var(--dm-red); color: #fff; + font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.6px; + padding: 9px 18px; border-radius: 999px; box-shadow: 0 8px 22px rgba(192,18,39,0.45); + } + .dm-banner-title { + font-family: var(--font-manrope), sans-serif !important; + font-size: clamp(34px, 5vw, 60px) !important; font-weight: 850 !important; + line-height: 1.16 !important; letter-spacing: -1.2px !important; + color: #ffffff !important; margin: 0; max-width: 820px; + text-wrap: balance; text-shadow: 0 2px 30px rgba(0,0,0,0.38); + } + @media (max-width: 1024px) { .dm-banner-title { font-size: clamp(32px, 6vw, 48px) !important; max-width: 90%; } } + @media (max-width: 600px) { .dm-banner-title { font-size: clamp(28px, 8vw, 38px) !important; max-width: 90%; } } + + /* Content wrap begins immediately below the banner */ + /* Shared content container: the SAME max-width + horizontal padding is used + by BlogPostFooter (.dm-blog-footer-inner) so the article body, headings, + images, Prev/Next, Related Articles and the CTA banner all align to one + grid with identical left/right edges. Keep both in sync. */ + .dm-blog-wrap { + max-width: 1280px; margin: 0 auto; + /* 20px mobile padding floor → 40px on desktop; matches the footer container. */ + padding: clamp(14px, 2vw, 26px) clamp(20px, 4vw, 40px) 0; + } + @media (max-width: 767px) { + .dm-blog-wrap { + padding-left: 16px; + padding-right: 16px; + } + } + + /* ── Article meta bar (directly under the hero) ── */ + .dm-meta-bar { + display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 14px 24px; + padding: clamp(20px, 2.6vw, 30px) 0; margin-bottom: clamp(26px, 3vw, 44px); + border-bottom: 1px solid rgba(15,23,42,0.10); + } + .dm-meta-breadcrumb ol { + list-style: none; display: flex; flex-wrap: wrap; align-items: center; + gap: 8px; margin: 0; padding: 0; font-size: 13px; font-weight: 600; color: #64748b; + } + .dm-meta-breadcrumb a { color: #64748b !important; text-decoration: none; transition: color .2s ease; } + .dm-meta-breadcrumb a:hover { color: var(--dm-red) !important; } + .dm-meta-sep { color: #cbd5e1; } + .dm-meta-current { + color: #0f172a; font-weight: 700; + max-width: min(40ch, 46vw); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; + } + @media (max-width: 600px) { .dm-meta-current { max-width: 56vw; } } + .dm-meta-items { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 20px; } + .dm-meta-item { + display: inline-flex; align-items: center; gap: 7px; + font-size: 13.5px; font-weight: 600; color: #475569; + } + .dm-meta-item svg { color: var(--dm-red); flex: 0 0 auto; } + .dm-meta-author { color: #0f172a; font-weight: 700; } + @media (max-width: 600px) { .dm-meta-bar { gap: 12px; } } + .dm-blog-layout { + display: grid; grid-template-columns: minmax(0,1fr) 320px; + /* Tighter gap gives the reading column more room next to the 320px sidebar. */ + gap: clamp(28px, 3vw, 56px); align-items: start; + } + @media (max-width: 1024px) { + .dm-blog-layout { grid-template-columns: 1fr; gap: 48px; } + /* Single-column (tablet/mobile): cap the reading column and centre it so the + article never sits left-aligned with a large empty right gutter. */ + .dm-blog-main { max-width: 900px; margin-inline: auto; } + } + .dm-blog-main { min-width: 0; } + + /* ── Intro lead ── */ + .dm-blog-intro { + max-width: var(--dm-measure); + font-size: clamp(18px, 1.5vw, 20px); line-height: 1.65; font-weight: 500; + color: #475569; margin: 0 0 clamp(26px, 3vw, 38px); padding-left: 20px; + border-left: 3px solid var(--dm-red); + } + + /* ── Article body ── */ + .dm-article-body { max-width: var(--dm-measure); } + .dm-article-p { + font-size: 18px !important; line-height: 1.8 !important; color: #334155; font-weight: 450; + margin: 0 0 var(--dm-space-p); + } + .dm-article-h2 { + font-size: clamp(23px, 2vw, 30px) !important; font-weight: 800 !important; letter-spacing: -.3px !important; + color: #0f172a !important; line-height: 1.3 !important; margin: 48px 0 var(--dm-space-h); + text-wrap: balance; + } + /* Each article block is wrapped in its OWN ScrollReveal
    , so a bare + :first-child rule matched every heading (each is the only child of its + wrapper) and zeroed its top margin, collapsing the gap above every + section heading. Scope the reset to only the article body's first block. */ + .dm-article-body > :first-child :where(.dm-article-h2, .dm-article-h3), + .dm-article-body > .dm-article-h2:first-child, + .dm-article-body > .dm-article-h3:first-child { margin-top: 0; } + .dm-article-h3 { + font-size: clamp(19px, 1.5vw, 23px) !important; font-weight: 800 !important; letter-spacing: -.2px !important; + color: #1e293b !important; line-height: 1.34 !important; margin: 40px 0 18px; + text-wrap: balance; + } + @media (max-width: 600px) { + .dm-article-p { font-size: 16px !important; } + .dm-article-ul li, .dm-article-ol li { font-size: 15.5px; } + .dm-article-h2 { font-size: clamp(22px, 6vw, 28px) !important; margin-top: 38px; } + .dm-article-h3 { font-size: clamp(18px, 5vw, 22px) !important; } + } + + .dm-article-ul, .dm-article-ol { + /* Top margin (was 0) separates the list from the paragraph above it; + matching bottom margin keeps it clear of the next heading/paragraph. + Slightly larger than --dm-space-p so the list reads as its own block. */ + margin: clamp(26px, 2.4vw, 32px) 0 clamp(26px, 2.4vw, 32px); + padding-left: 2px; list-style: none; + display: flex; flex-direction: column; gap: 15px; + } + /* Prefixed with .dm-article-body so these beat the theme's global + ".logico-front-end ul li:before" fontello-glyph bullet (specificity 0,1,3), + which otherwise replaces our clean red dot with a misaligned checkmark glyph + and adds its own 1.7em indent. */ + .dm-article-body .dm-article-ul li, .dm-article-body .dm-article-ol li { + position: relative; padding-left: 34px; + font-size: 17px; line-height: 1.65; color: #334155; font-weight: 450; + } + .dm-article-body .dm-article-ul li::before { + content: ""; position: absolute; left: 7px; top: 10px; + width: 8px; height: 8px; border-radius: 50%; background: var(--dm-red); + /* kill any inherited fontello glyph from the global rule */ + font-size: 0; line-height: 0; + } + .dm-article-ol { counter-reset: dm-li; } + .dm-article-body .dm-article-ol li { counter-increment: dm-li; } + .dm-article-body .dm-article-ol li::before { + content: counter(dm-li); position: absolute; left: 0; top: 0; + width: 24px; height: 24px; border-radius: 7px; + background: rgba(192,18,39,0.10); color: var(--dm-red); + font-size: 12px; font-weight: 800; display: flex; align-items: center; justify-content: center; + } + + /* ── Quote ── */ + .dm-article-quote { + position: relative; margin: var(--dm-space-quote) 0; padding: 30px 32px 30px 64px; + background: linear-gradient(135deg, #fbf2f3 0%, #fdf7f8 100%); + border-left: 4px solid var(--dm-red); border-radius: 0 18px 18px 0; + box-shadow: 0 8px 28px rgba(192, 18, 39, 0.06); + } + .dm-article-quote::before { + content: "\201C"; position: absolute; left: 22px; top: 8px; + font-family: Georgia, "Times New Roman", serif; + font-size: 64px; line-height: 1; color: rgba(192, 18, 39, 0.28); font-weight: 700; + } + .dm-article-quote p { + font-size: clamp(19px, 2vw, 23px); line-height: 1.5; font-weight: 600; + font-style: italic; color: #1e293b; margin: 0; + } + .dm-article-quote cite { + display: block; margin-top: 16px; font-size: 13px; font-weight: 700; + font-style: normal; color: var(--dm-red); text-transform: uppercase; letter-spacing: .6px; + } + @media (max-width: 600px) { .dm-article-quote { padding: 26px 22px; } .dm-article-quote::before { display: none; } } + + /* ── Images ── */ + .dm-article-figure { margin: var(--dm-space-img) 0; } + .dm-article-figure-img { + position: relative; display: block; width: 100%; aspect-ratio: 16 / 9; + border-radius: var(--dm-radius-img); overflow: hidden; box-shadow: 0 14px 34px rgba(15,23,42,0.10); + } + .dm-article-figure figcaption { + margin-top: 14px; font-size: 13.5px; color: #94a3b8; font-weight: 500; + text-align: center; font-style: italic; + } + + /* ── Sidebar ── */ + .dm-blog-aside-wrap { position: relative; } + .dm-blog-sidebar { + display: flex; flex-direction: column; gap: 18px; + position: sticky; top: var(--dm-sticky-top); + } + @media (max-width: 1024px) { .dm-blog-sidebar { position: static; gap: 20px; } } + + .dm-blog-widget { + background: #fff; border: var(--dm-border); border-radius: var(--dm-radius-card); + padding: 20px; box-shadow: var(--dm-shadow-card); + } + .dm-blog-widget-title { + font-size: 13px !important; font-weight: 700 !important; text-transform: uppercase !important; + letter-spacing: .8px !important; line-height: 1.35 !important; color: #0f172a !important; + margin: 0 0 15px; padding: 0 0 12px; + border-bottom: 1px solid rgba(15,23,42,0.08); + overflow: visible; white-space: normal; word-break: normal; + } + + /* Search */ + .dm-sr-only { + position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; + overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; + } + .dm-blog-search { position: relative; } + .dm-blog-search-form { position: relative; } + .dm-blog-search-input { + width: 100%; height: 46px; border: 1.5px solid #e2e8f0; border-radius: 12px; + padding: 0 42px 0 15px; font-size: 14px; font-family: inherit; color: #0f172a; + background: #f8fafc; transition: border-color .2s ease, box-shadow .2s ease, background .2s ease; + } + .dm-blog-search-input::placeholder { color: #9c9c9c; } + .dm-blog-search-input:focus { + outline: none; border-color: var(--dm-red); background: #fff; + box-shadow: 0 0 0 3px rgba(192,18,39,0.11); + } + .dm-blog-search-icon { + position: absolute; right: 14px; top: 50%; transform: translateY(-50%); + color: #94a3b8; pointer-events: none; display: flex; + } + .dm-blog-search-results { + position: absolute; z-index: 20; top: calc(100% + 8px); left: 0; right: 0; + background: #fff; border: 1px solid rgba(15,23,42,0.10); border-radius: 14px; + box-shadow: 0 18px 42px rgba(15,23,42,0.14); overflow: hidden; + } + .dm-blog-search-results ul { list-style: none; margin: 0; padding: 6px; } + .dm-blog-search-result { + display: flex; flex-direction: column; gap: 3px; padding: 10px 12px; + border-radius: 10px; text-decoration: none; transition: background .15s ease; + } + .dm-blog-search-result:hover { background: #f8fafc; } + .dm-blog-search-result-cat { + font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .8px; color: var(--dm-red); + } + .dm-blog-search-result-title { font-size: 13.5px; font-weight: 600; color: #1e293b; line-height: 1.35; } + .dm-blog-search-empty { margin: 0; padding: 14px 12px; font-size: 13px; color: #64748b; } + + /* Recent posts */ + .dm-blog-recent { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 15px; } + .dm-blog-recent-item { display: flex; gap: 13px; align-items: center; text-decoration: none; } + .dm-blog-recent-thumb { + position: relative; flex: 0 0 62px; width: 62px; height: 62px; + border-radius: 13px; overflow: hidden; background: #f1f5f9; + } + .dm-blog-recent-meta { display: flex; flex-direction: column; gap: 4px; min-width: 0; } + .dm-blog-recent-title { + font-size: 13.5px; font-weight: 700; color: #1e293b; line-height: 1.35; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-blog-recent-item:hover .dm-blog-recent-title { color: var(--dm-red); } + .dm-blog-recent-date { font-size: 11.5px; font-weight: 600; color: #94a3b8; } + + /* Categories */ + .dm-blog-categories { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; } + .dm-blog-category-item { + display: flex; align-items: center; justify-content: space-between; gap: 10px; + padding: 11px 2px; text-decoration: none; font-size: 14px; font-weight: 600; color: #334155 !important; + border-bottom: 1px solid rgba(15,23,42,0.06); transition: color .2s ease, padding-left .2s ease; + } + .dm-blog-categories li:last-child .dm-blog-category-item { border-bottom: none; } + .dm-blog-category-item:hover { color: var(--dm-red); padding-left: 6px; } + .dm-blog-category-item > span:first-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } + .dm-blog-category-count { + flex: 0 0 auto; font-size: 11px; font-weight: 800; color: #94a3b8; background: #f1f5f9; + min-width: 24px; height: 22px; border-radius: 7px; display: inline-flex; + align-items: center; justify-content: center; padding: 0 7px; + } + + /* CTA card */ + .dm-blog-cta-card { background: #1f1f1f; border-color: #1f1f1f; } + .dm-blog-cta-title { font-size: 18px !important; font-weight: 800 !important; color: #fff !important; line-height: 1.32 !important; margin: 0 0 10px; letter-spacing: -.2px !important; } + .dm-blog-cta-text { font-size: 13.5px; line-height: 1.6; color: #c7c7c7; margin: 0 0 20px; font-weight: 450; } + .dm-blog-cta-btn { + display: inline-flex; align-items: center; gap: 8px; + background: var(--dm-red); color: #fff !important; font-size: 13.5px; font-weight: 700; + padding: 12px 22px; border-radius: 12px; text-decoration: none; + transition: background .2s ease, transform .2s ease; + } + .dm-blog-cta-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } +0:{"rsc":["$","$1","c",{"children":[["$","div",null,{"className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"Article\",\"headline\":\"Fleet Reduction Without Compromising Delivery Volume\",\"description\":\"Handling the same order volume with fewer vehicles starts by removing avoidable kilometres and overlapping routes.\",\"image\":[\"https://www.doormile.com/images/blog-post-pic-8.webp\"],\"datePublished\":\"2025-07-24T00:00:00.000Z\",\"dateModified\":\"2025-07-24T00:00:00.000Z\",\"author\":{\"@type\":\"Organization\",\"name\":\"Doormile Team\",\"url\":\"https://www.doormile.com\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Doormile\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://www.doormile.com/images/cropped-image-2.png\"}},\"mainEntityOfPage\":{\"@type\":\"WebPage\",\"@id\":\"https://www.doormile.com/blog/fleet-reduction-without-compromising-delivery-volume\"},\"articleSection\":\"Fleet Management\"}"}}],["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https://www.doormile.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https://www.doormile.com/blog\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Fleet Reduction Without Compromising Delivery Volume\",\"item\":\"https://www.doormile.com/blog/fleet-reduction-without-compromising-delivery-volume\"}]}"}}],["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":[["$","article",null,{"className":"dm-single-blog","children":[["$","link",null,{"rel":"preload","as":"image","href":"/images/blog-post-pic-8.webp"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$2"}}],"$L3","$L4"]}],"$L5"]}]}]]}],["$L6"],"$L7"]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} +3:["$","div",null,{"className":"custom-standard-hero-container","children":["$","div",null,{"className":"custom-standard-hero-card dm-banner-card","style":{"backgroundImage":"url(/images/blog-post-pic-8.webp)","--hero-overlay":"linear-gradient(180deg, rgba(0,0,0,0.38) 0%, rgba(0,0,0,0.46) 55%, rgba(0,0,0,0.60) 100%)"},"children":["$","div",null,{"className":"e-con-inner dm-banner-inner","children":[["$","span",null,{"className":"dm-banner-category","children":"Fleet Management"}],["$","h1",null,{"className":"dm-banner-title","children":"Fleet Reduction Without Compromising Delivery Volume"}]]}]}]}] +4:["$","div",null,{"className":"dm-blog-wrap","children":[["$","div",null,{"className":"dm-meta-bar","children":[["$","nav",null,{"className":"dm-meta-breadcrumb","aria-label":"Breadcrumb","children":["$","ol",null,{"children":[["$","li",null,{"children":["$","$L8",null,{"href":"/","children":"Home"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"children":["$","$L8",null,{"href":"/blog","children":"Blog"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"aria-current":"page","className":"dm-meta-current","children":"Fleet Reduction Without Compromising Delivery Volume"}]]}]}],["$","div",null,{"className":"dm-meta-items","children":[["$","span",null,{"className":"dm-meta-item dm-meta-author","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","path",null,{"d":"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"}],["$","circle",null,{"cx":"12","cy":"7","r":"4"}]]}],"Doormile Team"]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","rect",null,{"x":"3","y":"4","width":"18","height":"18","rx":"2"}],["$","line",null,{"x1":"16","y1":"2","x2":"16","y2":"6"}],["$","line",null,{"x1":"8","y1":"2","x2":"8","y2":"6"}],["$","line",null,{"x1":"3","y1":"10","x2":"21","y2":"10"}]]}],["$","time",null,{"dateTime":"2025-07-24","children":"Jul 24, 2025"}]]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","circle",null,{"cx":"12","cy":"12","r":"9"}],["$","polyline",null,{"points":"12 7 12 12 15 14"}]]}],2," min read"]}]]}]]}],["$","div",null,{"className":"dm-blog-layout","children":[["$","div",null,{"className":"dm-blog-main","children":[["$","p",null,{"className":"dm-blog-intro","children":"Cutting vehicles usually means cutting capacity unless the removed kilometres were never needed. Better route planning turns wasted distance into operating headroom."}],["$","div",null,{"className":"dm-article-body","children":[["$","$L9","0",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"In last-mile logistics, a missed SLA is rarely caused by one big failure. It usually comes from small delays adding up across a route. Fleet Reduction Without Compromising Delivery Volume looks at how delivery teams can spot those delays early and plan around them before vehicles leave the hub."}]}],["$","$L9","1",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"Why this matters for fleet teams"}]}],["$","$L9","2",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"Every extra kilometre costs money. It uses fuel or charge, adds rider time, wears down vehicles, and increases the chance of a late delivery. When routes are built from fixed zones or old habits, those costs repeat every day."}]}],["$","$L9","3",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ul",null,{"className":"dm-article-ul","children":[["$","li","0",{"children":"Fewer vehicles needed for the same number of drops"}],["$","li","1",{"children":"Lower cost per drop through better stop sequencing"}],["$","li","2",{"children":"ETAs that match traffic, distance, and delivery windows"}],["$","li","3",{"children":"Less fuel or charge used per completed order"}]]}]}],["$","$L9","4",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h3",null,{"className":"dm-article-h3","children":"From orders to dispatch"}]}],["$","$L9","5",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"A good dispatch plan starts with the basics: order locations, promised delivery windows, rider capacity, vehicle range, and known traffic trouble spots. MileTruth™ checks those inputs before dispatch so the team is not fixing avoidable mistakes on the road."}]}],["$","$L9","6",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","figure",null,{"className":"dm-article-figure","children":["$La","$Lb"]}]}],"$Lc","$Ld","$Le","$Lf","$L10"]}]]}],"$L11"]}]]}] +12:T2021, + .dm-blog-footer { + font-family: var(--font-manrope), sans-serif; --dm-red: #c01227; --dm-red-hover: #e31d32; + /* The global theme applies 72px top/bottom section padding — strip it so the + inner container is the single source of vertical rhythm (no double gap). */ + padding: 0 !important; + } + /* Neutralize the global theme's 120/80/60px UPPERCASE heading rules */ + .dm-blog-footer :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline) */ + .dm-blog-footer a { text-decoration: none !important; } + /* Shared content container — mirrors SingleBlog's .dm-blog-wrap (same 1280px + max-width + 20→40px horizontal padding) so Prev/Next, Related and the CTA + align to the exact same left/right edges as the article body above. + Vertical rhythm: ~64px from the article end to the Prev/Next divider, then a + consistent ~64–72px section→section gap (no 120px+ voids). */ + .dm-blog-footer-inner { + max-width: 1280px; margin: 0 auto; + /* Compact vertical rhythm on an 8px system. Top padding sets the + article→Prev/Next gap (~24–32px); the inter-section gap sets the + Prev/Next→Related gap (~32–48px). No large arbitrary voids. */ + /* Minimal bottom padding — the global site footer already contributes its + own 20px top inset, so the CTA banner sits close to it without a void. */ + padding: clamp(24px, 3vw, 32px) clamp(20px, 4vw, 40px) clamp(8px, 1.5vw, 16px); + display: flex; flex-direction: column; gap: clamp(32px, 4vw, 48px); + } + @media (max-width: 767px) { + .dm-blog-footer-inner { + padding-left: 16px; + padding-right: 16px; + } + } + + /* Prev / Next */ + .dm-prevnext { + display: grid; grid-template-columns: 1fr 1fr; gap: 20px; + /* Halved from 40px: tight divider→cards spacing without crowding. */ + padding-top: clamp(16px, 2vw, 24px); border-top: 1px solid rgba(15,23,42,0.08); + } + @media (max-width: 640px) { .dm-prevnext { grid-template-columns: 1fr; } } + .dm-prevnext-placeholder { display: block; } + .dm-prevnext-card { + display: flex; gap: 16px; align-items: center; padding: 16px; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + text-decoration: none; transition: transform .3s ease, box-shadow .3s ease, border-color .3s ease; + } + .dm-prevnext-card:hover { + transform: translateY(-4px); border-color: rgba(192,18,39,0.2); + box-shadow: 0 16px 34px rgba(192,18,39,0.10); + } + .dm-prevnext-thumb { + position: relative; flex: 0 0 80px; width: 80px; height: 80px; + border-radius: 16px; overflow: hidden; background: #f1f5f9; + } + .dm-prevnext-text { display: flex; flex-direction: column; gap: 5px; min-width: 0; } + .dm-prevnext-next { text-align: right; } + .dm-prevnext-next .dm-prevnext-text { align-items: flex-end; } + .dm-prevnext-label { + display: inline-flex; align-items: center; gap: 6px; + font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: 1px; color: var(--dm-red); + } + .dm-prevnext-cat { font-size: 11px; font-weight: 700; color: #94a3b8; text-transform: uppercase; letter-spacing: .5px; } + .dm-prevnext-title { + font-size: 15.5px; font-weight: 700; color: #1e293b; line-height: 1.4; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-prevnext-card:hover .dm-prevnext-title { color: var(--dm-red); } + + /* Related */ + .dm-related-heading { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 850 !important; letter-spacing: -.4px !important; + line-height: 1.25 !important; color: #0f172a !important; margin: 0 0 24px; + } + .dm-related-grid { + display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; + } + @media (max-width: 1024px) { .dm-related-grid { grid-template-columns: repeat(2, 1fr); } } + @media (max-width: 700px) { .dm-related-grid { grid-template-columns: 1fr; gap: 24px; } } + + .dm-related-card { + display: flex; flex-direction: column; height: 100%; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + overflow: hidden; box-shadow: 0 4px 24px rgba(15,23,42,0.05); text-decoration: none; + transition: transform .4s cubic-bezier(0.2,0.8,0.2,1), box-shadow .4s ease, border-color .4s ease; + } + .dm-related-card:hover { + transform: translateY(-8px); box-shadow: 0 22px 44px rgba(192,18,39,0.13); + border-color: rgba(192,18,39,0.2); + } + .dm-related-img { + position: relative; width: 100%; aspect-ratio: 16 / 10; overflow: hidden; background: #f1f5f9; + } + .dm-related-img img { transition: transform .5s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-img img { transform: scale(1.05); } + .dm-related-badge { + position: absolute; top: 14px; left: 14px; z-index: 5; background: var(--dm-red); color: #fff; + font-size: 9px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.2px; + padding: 5px 11px; border-radius: 8px; box-shadow: 0 4px 12px rgba(192,18,39,0.25); + } + .dm-related-body { display: flex; flex-direction: column; flex: 1; padding: 22px; } + .dm-related-card-title { + font-size: 17px !important; font-weight: 800 !important; color: #1e293b !important; line-height: 1.4 !important; + letter-spacing: -.2px !important; margin: 0 0 10px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-related-card:hover .dm-related-card-title { color: var(--dm-red); } + .dm-related-card-excerpt { + font-size: 13.5px; font-weight: 500; color: #64748b; line-height: 1.6; margin: 0 0 18px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + } + .dm-related-readmore { + margin-top: auto; display: inline-flex; align-items: center; gap: 7px; + font-size: 12.5px; font-weight: 800; color: var(--dm-red); + text-transform: uppercase; letter-spacing: .6px; + } + .dm-related-readmore-arrow { transition: transform .3s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-readmore-arrow { transform: translateX(5px); } + + /* Contact CTA banner */ + .dm-blog-contact-cta { + display: flex; align-items: center; justify-content: space-between; gap: 32px; + flex-wrap: wrap; + background: linear-gradient(135deg, #1a1a1a 0%, #2d1417 100%); + border-radius: 30px; padding: clamp(32px, 4vw, 56px); + position: relative; overflow: hidden; + } + .dm-blog-contact-cta::after { + content: ""; position: absolute; right: -80px; top: -80px; width: 300px; height: 300px; + background: radial-gradient(circle, rgba(192,18,39,0.40), transparent 70%); + pointer-events: none; + } + .dm-blog-contact-cta-content { position: relative; z-index: 1; max-width: 640px; } + .dm-blog-contact-eyebrow { + display: inline-block; font-size: 12px; font-weight: 800; text-transform: uppercase; + letter-spacing: 1.4px; color: #ff8088; margin-bottom: 14px; + } + .dm-blog-contact-title { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 800 !important; line-height: 1.25 !important; + letter-spacing: -.3px !important; color: #ffffff !important; margin: 0 0 12px; text-wrap: balance; + } + .dm-blog-contact-sub { + font-size: 15.5px; line-height: 1.65; color: #e2e2e2; margin: 0; font-weight: 450; + } + .dm-blog-contact-btn { + position: relative; z-index: 1; flex-shrink: 0; + display: inline-flex; align-items: center; justify-content: center; gap: 10px; + background: var(--dm-red); color: #fff !important; font-size: 15px; font-weight: 700; + padding: 16px 32px; border-radius: 16px; text-decoration: none; + box-shadow: 0 10px 26px rgba(192,18,39,0.34); + transition: background .2s ease, transform .2s ease; + } + .dm-blog-contact-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } + @media (max-width: 720px) { + .dm-blog-contact-cta { flex-direction: column; align-items: flex-start; gap: 26px; } + .dm-blog-contact-btn { width: 100%; } + } +5:["$","section",null,{"className":"dm-blog-footer","aria-label":"More articles","children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$12"}}],"$L13"]}] +6:["$","script","script-0",{"src":"/_next/static/chunks/0yvxf3ok9gcp_.js","async":true}] +7:["$","$L14",null,{"children":["$","$15",null,{"name":"Next.MetadataOutlet","children":"$@16"}]}] +a:["$","span",null,{"className":"dm-article-figure-img","children":["$","$L17",null,{"src":"/images/blog-post-pic-8.webp","alt":"Fleet Reduction Without Compromising Delivery Volume","fill":true,"sizes":"(max-width: 768px) 100vw, 760px","style":{"objectFit":"cover"}}]}] +b:["$","figcaption",null,{"children":"Fleet Management: route planning decisions made before dispatch."}] +c:["$","$L9","7",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","blockquote",null,{"className":"dm-article-quote","children":[["$","p",null,{"children":"A route should be checked before the rider leaves, not explained after the customer calls."}],["$","cite",null,{"children":"Doormile Operations"}]]}]}] +d:["$","$L9","8",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"Putting it into practice"}]}] +e:["$","$L9","9",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"The best improvements usually start with simple measurements. Track distance per route, failed delivery windows, rider idle time, and orders moved between vehicles after dispatch. Those numbers show where the operation is leaking time."}]}] +f:["$","$L9","10",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ol",null,{"className":"dm-article-ol","children":[["$","li","0",{"children":"Benchmark today's distance, fleet size, and on-time rate."}],["$","li","1",{"children":"Include vehicle capacity, delivery windows, rider shifts, and battery charge."}],["$","li","2",{"children":"Check routes against traffic and customer commitments before dispatch."}],["$","li","3",{"children":"Compare the next dispatch cycle against the old plan."}]]}]}] +10:["$","$L9","11",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"Better routing is not about pushing riders harder. It is about giving them a plan that already accounts for the real day ahead."}]}] +11:["$","div",null,{"className":"dm-blog-aside-wrap","children":["$","aside",null,{"className":"dm-blog-sidebar","aria-label":"Blog sidebar","children":[["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Search"}],["$","$L18",null,{}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Recent Posts"}],["$","ul",null,{"className":"dm-blog-recent","children":[["$","li","how-ai-is-transforming-last-mile-ev-delivery",{"children":["$","$L8",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L17",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"How Better Planning Improves Last-Mile EV Delivery"}],["$","time",null,{"dateTime":"2025-10-02","className":"dm-blog-recent-date","children":"Oct 2, 2025"}]]}]]}]}],["$","li","42-less-distance-insights-from-our-hyderabad-hub",{"children":["$","$L8",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L17",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}],["$","time",null,{"dateTime":"2025-09-18","className":"dm-blog-recent-date","children":"Sep 18, 2025"}]]}]]}]}],["$","li","miletruth-ai-10-stages-to-smarter-dispatch",{"children":["$","$L8",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L17",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","time",null,{"dateTime":"2025-09-05","className":"dm-blog-recent-date","children":"Sep 5, 2025"}]]}]]}]}],["$","li","the-ev-paradox-solving-range-anxiety-for-urban-fleets",{"children":["$","$L8",null,{"href":"/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L17",null,{"src":"/images/ev-paradox.webp","alt":"The EV Paradox: Solving Range Anxiety for Urban Fleets","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}],["$","time",null,{"dateTime":"2025-08-21","className":"dm-blog-recent-date","children":"Aug 21, 2025"}]]}]]}]}]]}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Categories"}],["$","ul",null,{"className":"dm-blog-categories","children":[["$","li","Case Study",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Case Study"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","EV Fleet",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"EV Fleet"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}],["$","li","Fleet Management",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Fleet Management"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","MileTruth",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"MileTruth"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],"$L19","$L1a","$L1b"]}]]}],"$L1c"]}]}] +13:["$","div",null,{"className":"dm-blog-footer-inner","children":[["$","nav",null,{"className":"dm-prevnext","aria-label":"Article navigation","children":[["$","$L8",null,{"href":"/blog/why-mathematical-precision-beats-heuristics-in-routing","className":"dm-prevnext-card dm-prevnext-prev","children":[["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L17",null,{"src":"/images/blog-post-pic-14.webp","alt":"Why Mathematical Precision Beats Heuristics in Routing","fill":true,"sizes":"80px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-prevnext-text","children":[["$","span",null,{"className":"dm-prevnext-label","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"19","y1":"12","x2":"5","y2":"12"}],["$","polyline",null,{"points":"12 19 5 12 12 5"}]]}],"Previous"]}],["$","span",null,{"className":"dm-prevnext-cat","children":"Technology"}],["$","span",null,{"className":"dm-prevnext-title","children":"Why Mathematical Precision Beats Heuristics in Routing"}]]}]]}],["$","$L8",null,{"href":"/blog/building-a-greener-city-the-future-of-urban-logistics","className":"dm-prevnext-card dm-prevnext-next","children":[["$","span",null,{"className":"dm-prevnext-text","children":[["$","span",null,{"className":"dm-prevnext-label","children":["Next",["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","span",null,{"className":"dm-prevnext-cat","children":"Sustainability"}],["$","span",null,{"className":"dm-prevnext-title","children":"Building a Greener City: The Future of Urban Logistics"}]]}],["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L17",null,{"src":"/images/blog-post-pic-6.webp","alt":"Building a Greener City: The Future of Urban Logistics","fill":true,"sizes":"80px","style":{"objectFit":"cover"}}]}]]}]]}],["$","div",null,{"className":"dm-related","children":[["$","h2",null,{"className":"dm-related-heading","children":"Related Articles"}],["$","div",null,{"className":"dm-related-grid","children":[["$","$L9","how-ai-is-transforming-last-mile-ev-delivery",{"delay":0,"duration":0.7,"yOffset":30,"children":["$","$L8",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L17",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Technology"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"How Better Planning Improves Last-Mile EV Delivery"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"A practical look at how EV fleets can plan routes, manage charging, and keep delivery promises without adding unnecessary vehicles."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}],["$","$L9","42-less-distance-insights-from-our-hyderabad-hub",{"delay":0.08,"duration":0.7,"yOffset":30,"children":["$","$L8",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L17",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Case Study"}]]}],["$","div",null,{"className":"dm-related-body","children":["$L1d","$L1e","$L1f"]}]]}]}],"$L20"]}]]}],"$L21"]}] +16:null +19:["$","li","Operations",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Operations"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +1a:["$","li","Sustainability",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Sustainability"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +1b:["$","li","Technology",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Technology"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}] +1c:["$","section",null,{"className":"dm-blog-widget dm-blog-cta-card","children":[["$","h2",null,{"className":"dm-blog-cta-title","children":"Planning delivery routes?"}],["$","p",null,{"className":"dm-blog-cta-text","children":"Talk to us about reducing wasted distance, missed windows, and avoidable vehicle time."}],["$","$L8",null,{"href":"/contact","className":"dm-blog-cta-btn","children":["Contact Us",["$","svg",null,{"width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] +1d:["$","h3",null,{"className":"dm-related-card-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}] +1e:["$","p",null,{"className":"dm-related-card-excerpt","children":"A practical look at how one Hyderabad hub reduced distance, used fewer vehicles, and protected delivery windows with better route planning."}] +1f:["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}] +20:["$","$L9","miletruth-ai-10-stages-to-smarter-dispatch",{"delay":0.16,"duration":0.7,"yOffset":30,"children":["$","$L8",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L17",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"MileTruth"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"From order intake to final route output, here is how a dispatch plan is checked before riders leave the hub."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}] +21:["$","div",null,{"className":"dm-blog-contact-cta","children":[["$","div",null,{"className":"dm-blog-contact-cta-content","children":[["$","span",null,{"className":"dm-blog-contact-eyebrow","children":"Let's talk logistics"}],["$","h2",null,{"className":"dm-blog-contact-title","children":"Ready to move smarter with Doormile?"}],["$","p",null,{"className":"dm-blog-contact-sub","children":"Tell us about your fleet and routes — we'll show you where the distance, vehicles and emissions are hiding."}]]}],["$","$L8",null,{"href":"/contact","className":"dm-blog-contact-btn","children":["Get in Touch",["$","svg",null,{"width":"20","height":"20","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] diff --git a/build/blog/fleet-reduction-without-compromising-delivery-volume/__next.blog.$d$slug.txt b/build/blog/fleet-reduction-without-compromising-delivery-volume/__next.blog.$d$slug.txt new file mode 100644 index 0000000..e0935ae --- /dev/null +++ b/build/blog/fleet-reduction-without-compromising-delivery-volume/__next.blog.$d$slug.txt @@ -0,0 +1,5 @@ +1:"$Sreact.fragment" +2:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:[] +0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/blog/fleet-reduction-without-compromising-delivery-volume/__next.blog.txt b/build/blog/fleet-reduction-without-compromising-delivery-volume/__next.blog.txt new file mode 100644 index 0000000..e0935ae --- /dev/null +++ b/build/blog/fleet-reduction-without-compromising-delivery-volume/__next.blog.txt @@ -0,0 +1,5 @@ +1:"$Sreact.fragment" +2:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:[] +0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/blog/how-ai-is-transforming-last-mile-ev-delivery.html b/build/blog/how-ai-is-transforming-last-mile-ev-delivery.html new file mode 100644 index 0000000..8830acc --- /dev/null +++ b/build/blog/how-ai-is-transforming-last-mile-ev-delivery.html @@ -0,0 +1,1168 @@ +How Better Planning Improves Last-Mile EV Delivery – Doormile

    Doormile

    Doormile logo
    Address
    Hyderabad

    5th Floor, Vision Ultima,
    Street No.3, Jayabheri Enclave,
    Gachibowli, Hyderabad,
    Telangana 500032.

    Coimbatore

    Mayflower Valencia,
    Near Nava India Bus Stop,
    Avinashi Road,
    Udayampalayam,
    Tamil Nadu 641037.

    Bengaluru

    C612, 6th Floor,
    Trifecta Starlight,
    ITPL Road,
    Garudacharapalya,
    Mahadevapura,
    Bangalore 560048,
    Karnataka, India.

    Contact Us

    Tel : +91 86886 97941

    Email

    care@doormile.com

    Technology

    How Better Planning Improves Last-Mile EV Delivery

    Doormile Team2 min read

    The last mile is already difficult to plan. With electric vehicles, the team also has to think about battery range, charging time, rider load, traffic, and delivery windows. Good planning turns those moving parts into a workable dispatch plan.

    For a long time, last-mile planning depended on dispatchers, spreadsheets, and local experience. That experience still matters. The problem is that it gets stretched thin when order volume rises and the fleet includes EVs.

    The shift from fixed rules to daily planning

    A fixed-zone plan may look clean in the morning, but the road rarely follows the plan. A rider may get delayed near Hitec City, a gated community may hold a vehicle for ten extra minutes, or a battery may drain faster because the load is heavier than usual.

    • Order volumes by area, time slot, and customer type
    • Travel times based on the city's actual traffic patterns
    • Battery use by vehicle type, rider load, and route length
    • Feedback from completed deliveries, failed attempts, and late arrivals

    Adjusting during the day

    The first plan is only the starting point. By 11 a.m., traffic may change, a high-priority order may arrive, or one vehicle may return with less charge than expected. The dispatch team needs a way to adjust without rebuilding the whole day by hand.

    During peak traffic hours in Hyderabad, some vehicles were arriving 20 to 30 minutes later than planned. By adjusting routes based on live traffic and battery levels, the hub reduced missed delivery windows and improved on-time performance.

    Electric delivery vehicle routing visualisation
    EV route plans need to account for range, load, traffic, and charging time before riders leave the hub.

    With EVs, a route is only useful if the vehicle can finish it and still return safely.

    Doormile Operations

    What this means for operators

    For a fleet manager, this is not about fancy software. It is about fewer emergency calls, fewer mid-route swaps, and fewer customers asking why their delivery missed the promised window.

    1. Record delivery times, failed attempts, traffic delays, and charging cycles.
    2. Build travel-time estimates from the areas your riders actually serve.
    3. Check every route against battery capacity before dispatch.
    4. Replan when traffic, orders, or vehicle availability changes.

    The fleets that improve fastest are usually not the ones adding vehicles first. They are the ones removing wasted distance, planning charging properly, and giving riders routes they can complete on time.

    \ No newline at end of file diff --git a/build/blog/how-ai-is-transforming-last-mile-ev-delivery.txt b/build/blog/how-ai-is-transforming-last-mile-ev-delivery.txt new file mode 100644 index 0000000..e4ac319 --- /dev/null +++ b/build/blog/how-ai-is-transforming-last-mile-ev-delivery.txt @@ -0,0 +1,545 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +d:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +e:"$Sreact.suspense" +11:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +13:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +15:I[68027,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"P":null,"c":["","blog","how-ai-is-transforming-last-mile-ev-delivery"],"q":"","i":false,"f":[[["",{"children":["blog",{"children":[["slug","how-ai-is-transforming-last-mile-ev-delivery","d",null],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":["$Lc",[["$","script","script-0",{"src":"/_next/static/chunks/0yvxf3ok9gcp_.js","async":true,"nonce":"$undefined"}]],["$","$Ld",null,{"children":["$","$e",null,{"name":"Next.MetadataOutlet","children":"$@f"}]}]]}],{},null,false,null]},null,false,"$@10"]},null,false,"$@10"]},null,false,null],["$","$1","h",{"children":[null,["$","$L11",null,{"children":"$L12"}],["$","div",null,{"hidden":true,"children":["$","$L13",null,{"children":["$","$e",null,{"name":"Next.Metadata","children":"$L14"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$15",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"kmSVPuUqY3Rhw5xy4D2nn"} +16:[] +10:"$W16" +:HL["/images/blog-post-pic-17.webp","image"] +17:T3d6f, + .dm-single-blog { + --dm-red: #c01227; + --dm-red-hover: #e31d32; + --dm-radius-card: 22px; + --dm-radius-img: 20px; + --dm-radius-badge: 8px; + --dm-shadow-card: 0 4px 24px rgba(15, 23, 42, 0.05); + --dm-border: 1px solid rgba(15, 23, 42, 0.09); + --dm-space-p: 24px; + --dm-space-h: 32px; + --dm-space-img: 32px; + --dm-space-quote: 40px; + --dm-sticky-top: 138px; + --dm-measure: min(1100px, 100%); + font-family: var(--font-manrope), sans-serif; + } + + /* Heading normalization. Beat the global theme's .elementor-kit-5 h1-h6 + (120/80/60px UPPERCASE) rules with !important on our own classes. */ + .dm-single-blog :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline, + specificity 0-1-1) so blog links keep our colors and never get underlined. */ + .dm-single-blog a { text-decoration: none !important; } + + /* Page banner: tall homepage-scale frame with only badge + title inside */ + /* Compound selector (specificity 20) + !important beats the global 800px + single-class height rules so the blog banner can use viewport heights. */ + .custom-standard-hero-card.dm-banner-card { + height: 90vh !important; + min-height: 85vh !important; + } + @media (max-width: 1024px) { + .custom-standard-hero-card.dm-banner-card { height: 80vh !important; min-height: 75vh !important; } + } + @media (max-width: 600px) { + .custom-standard-hero-card.dm-banner-card { height: 78vh !important; min-height: 72vh !important; } + } + + .dm-banner-inner { + position: relative; width: 100%; height: 100%; + display: flex; flex-direction: column; align-items: center; justify-content: center; + text-align: center; gap: clamp(22px, 2.6vw, 34px); + padding: clamp(48px, 8vh, 96px) clamp(20px, 5vw, 48px); + } + + .dm-banner-category { + display: inline-block; background: var(--dm-red); color: #fff; + font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.6px; + padding: 9px 18px; border-radius: 999px; box-shadow: 0 8px 22px rgba(192,18,39,0.45); + } + .dm-banner-title { + font-family: var(--font-manrope), sans-serif !important; + font-size: clamp(34px, 5vw, 60px) !important; font-weight: 850 !important; + line-height: 1.16 !important; letter-spacing: -1.2px !important; + color: #ffffff !important; margin: 0; max-width: 820px; + text-wrap: balance; text-shadow: 0 2px 30px rgba(0,0,0,0.38); + } + @media (max-width: 1024px) { .dm-banner-title { font-size: clamp(32px, 6vw, 48px) !important; max-width: 90%; } } + @media (max-width: 600px) { .dm-banner-title { font-size: clamp(28px, 8vw, 38px) !important; max-width: 90%; } } + + /* Content wrap begins immediately below the banner */ + /* Shared content container: the SAME max-width + horizontal padding is used + by BlogPostFooter (.dm-blog-footer-inner) so the article body, headings, + images, Prev/Next, Related Articles and the CTA banner all align to one + grid with identical left/right edges. Keep both in sync. */ + .dm-blog-wrap { + max-width: 1280px; margin: 0 auto; + /* 20px mobile padding floor → 40px on desktop; matches the footer container. */ + padding: clamp(14px, 2vw, 26px) clamp(20px, 4vw, 40px) 0; + } + @media (max-width: 767px) { + .dm-blog-wrap { + padding-left: 16px; + padding-right: 16px; + } + } + + /* ── Article meta bar (directly under the hero) ── */ + .dm-meta-bar { + display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 14px 24px; + padding: clamp(20px, 2.6vw, 30px) 0; margin-bottom: clamp(26px, 3vw, 44px); + border-bottom: 1px solid rgba(15,23,42,0.10); + } + .dm-meta-breadcrumb ol { + list-style: none; display: flex; flex-wrap: wrap; align-items: center; + gap: 8px; margin: 0; padding: 0; font-size: 13px; font-weight: 600; color: #64748b; + } + .dm-meta-breadcrumb a { color: #64748b !important; text-decoration: none; transition: color .2s ease; } + .dm-meta-breadcrumb a:hover { color: var(--dm-red) !important; } + .dm-meta-sep { color: #cbd5e1; } + .dm-meta-current { + color: #0f172a; font-weight: 700; + max-width: min(40ch, 46vw); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; + } + @media (max-width: 600px) { .dm-meta-current { max-width: 56vw; } } + .dm-meta-items { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 20px; } + .dm-meta-item { + display: inline-flex; align-items: center; gap: 7px; + font-size: 13.5px; font-weight: 600; color: #475569; + } + .dm-meta-item svg { color: var(--dm-red); flex: 0 0 auto; } + .dm-meta-author { color: #0f172a; font-weight: 700; } + @media (max-width: 600px) { .dm-meta-bar { gap: 12px; } } + .dm-blog-layout { + display: grid; grid-template-columns: minmax(0,1fr) 320px; + /* Tighter gap gives the reading column more room next to the 320px sidebar. */ + gap: clamp(28px, 3vw, 56px); align-items: start; + } + @media (max-width: 1024px) { + .dm-blog-layout { grid-template-columns: 1fr; gap: 48px; } + /* Single-column (tablet/mobile): cap the reading column and centre it so the + article never sits left-aligned with a large empty right gutter. */ + .dm-blog-main { max-width: 900px; margin-inline: auto; } + } + .dm-blog-main { min-width: 0; } + + /* ── Intro lead ── */ + .dm-blog-intro { + max-width: var(--dm-measure); + font-size: clamp(18px, 1.5vw, 20px); line-height: 1.65; font-weight: 500; + color: #475569; margin: 0 0 clamp(26px, 3vw, 38px); padding-left: 20px; + border-left: 3px solid var(--dm-red); + } + + /* ── Article body ── */ + .dm-article-body { max-width: var(--dm-measure); } + .dm-article-p { + font-size: 18px !important; line-height: 1.8 !important; color: #334155; font-weight: 450; + margin: 0 0 var(--dm-space-p); + } + .dm-article-h2 { + font-size: clamp(23px, 2vw, 30px) !important; font-weight: 800 !important; letter-spacing: -.3px !important; + color: #0f172a !important; line-height: 1.3 !important; margin: 48px 0 var(--dm-space-h); + text-wrap: balance; + } + /* Each article block is wrapped in its OWN ScrollReveal
    , so a bare + :first-child rule matched every heading (each is the only child of its + wrapper) and zeroed its top margin, collapsing the gap above every + section heading. Scope the reset to only the article body's first block. */ + .dm-article-body > :first-child :where(.dm-article-h2, .dm-article-h3), + .dm-article-body > .dm-article-h2:first-child, + .dm-article-body > .dm-article-h3:first-child { margin-top: 0; } + .dm-article-h3 { + font-size: clamp(19px, 1.5vw, 23px) !important; font-weight: 800 !important; letter-spacing: -.2px !important; + color: #1e293b !important; line-height: 1.34 !important; margin: 40px 0 18px; + text-wrap: balance; + } + @media (max-width: 600px) { + .dm-article-p { font-size: 16px !important; } + .dm-article-ul li, .dm-article-ol li { font-size: 15.5px; } + .dm-article-h2 { font-size: clamp(22px, 6vw, 28px) !important; margin-top: 38px; } + .dm-article-h3 { font-size: clamp(18px, 5vw, 22px) !important; } + } + + .dm-article-ul, .dm-article-ol { + /* Top margin (was 0) separates the list from the paragraph above it; + matching bottom margin keeps it clear of the next heading/paragraph. + Slightly larger than --dm-space-p so the list reads as its own block. */ + margin: clamp(26px, 2.4vw, 32px) 0 clamp(26px, 2.4vw, 32px); + padding-left: 2px; list-style: none; + display: flex; flex-direction: column; gap: 15px; + } + /* Prefixed with .dm-article-body so these beat the theme's global + ".logico-front-end ul li:before" fontello-glyph bullet (specificity 0,1,3), + which otherwise replaces our clean red dot with a misaligned checkmark glyph + and adds its own 1.7em indent. */ + .dm-article-body .dm-article-ul li, .dm-article-body .dm-article-ol li { + position: relative; padding-left: 34px; + font-size: 17px; line-height: 1.65; color: #334155; font-weight: 450; + } + .dm-article-body .dm-article-ul li::before { + content: ""; position: absolute; left: 7px; top: 10px; + width: 8px; height: 8px; border-radius: 50%; background: var(--dm-red); + /* kill any inherited fontello glyph from the global rule */ + font-size: 0; line-height: 0; + } + .dm-article-ol { counter-reset: dm-li; } + .dm-article-body .dm-article-ol li { counter-increment: dm-li; } + .dm-article-body .dm-article-ol li::before { + content: counter(dm-li); position: absolute; left: 0; top: 0; + width: 24px; height: 24px; border-radius: 7px; + background: rgba(192,18,39,0.10); color: var(--dm-red); + font-size: 12px; font-weight: 800; display: flex; align-items: center; justify-content: center; + } + + /* ── Quote ── */ + .dm-article-quote { + position: relative; margin: var(--dm-space-quote) 0; padding: 30px 32px 30px 64px; + background: linear-gradient(135deg, #fbf2f3 0%, #fdf7f8 100%); + border-left: 4px solid var(--dm-red); border-radius: 0 18px 18px 0; + box-shadow: 0 8px 28px rgba(192, 18, 39, 0.06); + } + .dm-article-quote::before { + content: "\201C"; position: absolute; left: 22px; top: 8px; + font-family: Georgia, "Times New Roman", serif; + font-size: 64px; line-height: 1; color: rgba(192, 18, 39, 0.28); font-weight: 700; + } + .dm-article-quote p { + font-size: clamp(19px, 2vw, 23px); line-height: 1.5; font-weight: 600; + font-style: italic; color: #1e293b; margin: 0; + } + .dm-article-quote cite { + display: block; margin-top: 16px; font-size: 13px; font-weight: 700; + font-style: normal; color: var(--dm-red); text-transform: uppercase; letter-spacing: .6px; + } + @media (max-width: 600px) { .dm-article-quote { padding: 26px 22px; } .dm-article-quote::before { display: none; } } + + /* ── Images ── */ + .dm-article-figure { margin: var(--dm-space-img) 0; } + .dm-article-figure-img { + position: relative; display: block; width: 100%; aspect-ratio: 16 / 9; + border-radius: var(--dm-radius-img); overflow: hidden; box-shadow: 0 14px 34px rgba(15,23,42,0.10); + } + .dm-article-figure figcaption { + margin-top: 14px; font-size: 13.5px; color: #94a3b8; font-weight: 500; + text-align: center; font-style: italic; + } + + /* ── Sidebar ── */ + .dm-blog-aside-wrap { position: relative; } + .dm-blog-sidebar { + display: flex; flex-direction: column; gap: 18px; + position: sticky; top: var(--dm-sticky-top); + } + @media (max-width: 1024px) { .dm-blog-sidebar { position: static; gap: 20px; } } + + .dm-blog-widget { + background: #fff; border: var(--dm-border); border-radius: var(--dm-radius-card); + padding: 20px; box-shadow: var(--dm-shadow-card); + } + .dm-blog-widget-title { + font-size: 13px !important; font-weight: 700 !important; text-transform: uppercase !important; + letter-spacing: .8px !important; line-height: 1.35 !important; color: #0f172a !important; + margin: 0 0 15px; padding: 0 0 12px; + border-bottom: 1px solid rgba(15,23,42,0.08); + overflow: visible; white-space: normal; word-break: normal; + } + + /* Search */ + .dm-sr-only { + position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; + overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; + } + .dm-blog-search { position: relative; } + .dm-blog-search-form { position: relative; } + .dm-blog-search-input { + width: 100%; height: 46px; border: 1.5px solid #e2e8f0; border-radius: 12px; + padding: 0 42px 0 15px; font-size: 14px; font-family: inherit; color: #0f172a; + background: #f8fafc; transition: border-color .2s ease, box-shadow .2s ease, background .2s ease; + } + .dm-blog-search-input::placeholder { color: #9c9c9c; } + .dm-blog-search-input:focus { + outline: none; border-color: var(--dm-red); background: #fff; + box-shadow: 0 0 0 3px rgba(192,18,39,0.11); + } + .dm-blog-search-icon { + position: absolute; right: 14px; top: 50%; transform: translateY(-50%); + color: #94a3b8; pointer-events: none; display: flex; + } + .dm-blog-search-results { + position: absolute; z-index: 20; top: calc(100% + 8px); left: 0; right: 0; + background: #fff; border: 1px solid rgba(15,23,42,0.10); border-radius: 14px; + box-shadow: 0 18px 42px rgba(15,23,42,0.14); overflow: hidden; + } + .dm-blog-search-results ul { list-style: none; margin: 0; padding: 6px; } + .dm-blog-search-result { + display: flex; flex-direction: column; gap: 3px; padding: 10px 12px; + border-radius: 10px; text-decoration: none; transition: background .15s ease; + } + .dm-blog-search-result:hover { background: #f8fafc; } + .dm-blog-search-result-cat { + font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .8px; color: var(--dm-red); + } + .dm-blog-search-result-title { font-size: 13.5px; font-weight: 600; color: #1e293b; line-height: 1.35; } + .dm-blog-search-empty { margin: 0; padding: 14px 12px; font-size: 13px; color: #64748b; } + + /* Recent posts */ + .dm-blog-recent { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 15px; } + .dm-blog-recent-item { display: flex; gap: 13px; align-items: center; text-decoration: none; } + .dm-blog-recent-thumb { + position: relative; flex: 0 0 62px; width: 62px; height: 62px; + border-radius: 13px; overflow: hidden; background: #f1f5f9; + } + .dm-blog-recent-meta { display: flex; flex-direction: column; gap: 4px; min-width: 0; } + .dm-blog-recent-title { + font-size: 13.5px; font-weight: 700; color: #1e293b; line-height: 1.35; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-blog-recent-item:hover .dm-blog-recent-title { color: var(--dm-red); } + .dm-blog-recent-date { font-size: 11.5px; font-weight: 600; color: #94a3b8; } + + /* Categories */ + .dm-blog-categories { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; } + .dm-blog-category-item { + display: flex; align-items: center; justify-content: space-between; gap: 10px; + padding: 11px 2px; text-decoration: none; font-size: 14px; font-weight: 600; color: #334155 !important; + border-bottom: 1px solid rgba(15,23,42,0.06); transition: color .2s ease, padding-left .2s ease; + } + .dm-blog-categories li:last-child .dm-blog-category-item { border-bottom: none; } + .dm-blog-category-item:hover { color: var(--dm-red); padding-left: 6px; } + .dm-blog-category-item > span:first-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } + .dm-blog-category-count { + flex: 0 0 auto; font-size: 11px; font-weight: 800; color: #94a3b8; background: #f1f5f9; + min-width: 24px; height: 22px; border-radius: 7px; display: inline-flex; + align-items: center; justify-content: center; padding: 0 7px; + } + + /* CTA card */ + .dm-blog-cta-card { background: #1f1f1f; border-color: #1f1f1f; } + .dm-blog-cta-title { font-size: 18px !important; font-weight: 800 !important; color: #fff !important; line-height: 1.32 !important; margin: 0 0 10px; letter-spacing: -.2px !important; } + .dm-blog-cta-text { font-size: 13.5px; line-height: 1.6; color: #c7c7c7; margin: 0 0 20px; font-weight: 450; } + .dm-blog-cta-btn { + display: inline-flex; align-items: center; gap: 8px; + background: var(--dm-red); color: #fff !important; font-size: 13.5px; font-weight: 700; + padding: 12px 22px; border-radius: 12px; text-decoration: none; + transition: background .2s ease, transform .2s ease; + } + .dm-blog-cta-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } +c:["$","div",null,{"className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"Article\",\"headline\":\"How Better Planning Improves Last-Mile EV Delivery\",\"description\":\"A practical look at how EV fleets can plan routes, manage charging, and keep delivery promises without adding unnecessary vehicles.\",\"image\":[\"https://www.doormile.com/images/blog-post-pic-17.webp\"],\"datePublished\":\"2025-10-02T00:00:00.000Z\",\"dateModified\":\"2025-10-02T00:00:00.000Z\",\"author\":{\"@type\":\"Organization\",\"name\":\"Doormile Team\",\"url\":\"https://www.doormile.com\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Doormile\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://www.doormile.com/images/cropped-image-2.png\"}},\"mainEntityOfPage\":{\"@type\":\"WebPage\",\"@id\":\"https://www.doormile.com/blog/how-ai-is-transforming-last-mile-ev-delivery\"},\"articleSection\":\"Technology\"}"}}],["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https://www.doormile.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https://www.doormile.com/blog\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"How Better Planning Improves Last-Mile EV Delivery\",\"item\":\"https://www.doormile.com/blog/how-ai-is-transforming-last-mile-ev-delivery\"}]}"}}],["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":[["$","article",null,{"className":"dm-single-blog","children":[["$","link",null,{"rel":"preload","as":"image","href":"/images/blog-post-pic-17.webp"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$17"}}],"$L18","$L19"]}],"$L1a"]}]}]]}] +1b:I[22016,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],""] +1c:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"ScrollReveal"] +18:["$","div",null,{"className":"custom-standard-hero-container","children":["$","div",null,{"className":"custom-standard-hero-card dm-banner-card","style":{"backgroundImage":"url(/images/blog-post-pic-17.webp)","--hero-overlay":"linear-gradient(180deg, rgba(0,0,0,0.38) 0%, rgba(0,0,0,0.46) 55%, rgba(0,0,0,0.60) 100%)"},"children":["$","div",null,{"className":"e-con-inner dm-banner-inner","children":[["$","span",null,{"className":"dm-banner-category","children":"Technology"}],["$","h1",null,{"className":"dm-banner-title","children":"How Better Planning Improves Last-Mile EV Delivery"}]]}]}]}] +19:["$","div",null,{"className":"dm-blog-wrap","children":[["$","div",null,{"className":"dm-meta-bar","children":[["$","nav",null,{"className":"dm-meta-breadcrumb","aria-label":"Breadcrumb","children":["$","ol",null,{"children":[["$","li",null,{"children":["$","$L1b",null,{"href":"/","children":"Home"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"children":["$","$L1b",null,{"href":"/blog","children":"Blog"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"aria-current":"page","className":"dm-meta-current","children":"How Better Planning Improves Last-Mile EV Delivery"}]]}]}],["$","div",null,{"className":"dm-meta-items","children":[["$","span",null,{"className":"dm-meta-item dm-meta-author","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","path",null,{"d":"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"}],["$","circle",null,{"cx":"12","cy":"7","r":"4"}]]}],"Doormile Team"]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","rect",null,{"x":"3","y":"4","width":"18","height":"18","rx":"2"}],["$","line",null,{"x1":"16","y1":"2","x2":"16","y2":"6"}],["$","line",null,{"x1":"8","y1":"2","x2":"8","y2":"6"}],["$","line",null,{"x1":"3","y1":"10","x2":"21","y2":"10"}]]}],["$","time",null,{"dateTime":"2025-10-02","children":"Oct 2, 2025"}]]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","circle",null,{"cx":"12","cy":"12","r":"9"}],["$","polyline",null,{"points":"12 7 12 12 15 14"}]]}],2," min read"]}]]}]]}],["$","div",null,{"className":"dm-blog-layout","children":[["$","div",null,{"className":"dm-blog-main","children":[["$","p",null,{"className":"dm-blog-intro","children":"The last mile is already difficult to plan. With electric vehicles, the team also has to think about battery range, charging time, rider load, traffic, and delivery windows. Good planning turns those moving parts into a workable dispatch plan."}],["$","div",null,{"className":"dm-article-body","children":[["$","$L1c","0",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"For a long time, last-mile planning depended on dispatchers, spreadsheets, and local experience. That experience still matters. The problem is that it gets stretched thin when order volume rises and the fleet includes EVs."}]}],["$","$L1c","1",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"The shift from fixed rules to daily planning"}]}],["$","$L1c","2",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"A fixed-zone plan may look clean in the morning, but the road rarely follows the plan. A rider may get delayed near Hitec City, a gated community may hold a vehicle for ten extra minutes, or a battery may drain faster because the load is heavier than usual."}]}],["$","$L1c","3",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ul",null,{"className":"dm-article-ul","children":[["$","li","0",{"children":"Order volumes by area, time slot, and customer type"}],["$","li","1",{"children":"Travel times based on the city's actual traffic patterns"}],["$","li","2",{"children":"Battery use by vehicle type, rider load, and route length"}],["$","li","3",{"children":"Feedback from completed deliveries, failed attempts, and late arrivals"}]]}]}],["$","$L1c","4",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h3",null,{"className":"dm-article-h3","children":"Adjusting during the day"}]}],["$","$L1c","5",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"The first plan is only the starting point. By 11 a.m., traffic may change, a high-priority order may arrive, or one vehicle may return with less charge than expected. The dispatch team needs a way to adjust without rebuilding the whole day by hand."}]}],"$L1d","$L1e","$L1f","$L20","$L21","$L22","$L23"]}]]}],"$L24"]}]]}] +25:T2021, + .dm-blog-footer { + font-family: var(--font-manrope), sans-serif; --dm-red: #c01227; --dm-red-hover: #e31d32; + /* The global theme applies 72px top/bottom section padding — strip it so the + inner container is the single source of vertical rhythm (no double gap). */ + padding: 0 !important; + } + /* Neutralize the global theme's 120/80/60px UPPERCASE heading rules */ + .dm-blog-footer :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline) */ + .dm-blog-footer a { text-decoration: none !important; } + /* Shared content container — mirrors SingleBlog's .dm-blog-wrap (same 1280px + max-width + 20→40px horizontal padding) so Prev/Next, Related and the CTA + align to the exact same left/right edges as the article body above. + Vertical rhythm: ~64px from the article end to the Prev/Next divider, then a + consistent ~64–72px section→section gap (no 120px+ voids). */ + .dm-blog-footer-inner { + max-width: 1280px; margin: 0 auto; + /* Compact vertical rhythm on an 8px system. Top padding sets the + article→Prev/Next gap (~24–32px); the inter-section gap sets the + Prev/Next→Related gap (~32–48px). No large arbitrary voids. */ + /* Minimal bottom padding — the global site footer already contributes its + own 20px top inset, so the CTA banner sits close to it without a void. */ + padding: clamp(24px, 3vw, 32px) clamp(20px, 4vw, 40px) clamp(8px, 1.5vw, 16px); + display: flex; flex-direction: column; gap: clamp(32px, 4vw, 48px); + } + @media (max-width: 767px) { + .dm-blog-footer-inner { + padding-left: 16px; + padding-right: 16px; + } + } + + /* Prev / Next */ + .dm-prevnext { + display: grid; grid-template-columns: 1fr 1fr; gap: 20px; + /* Halved from 40px: tight divider→cards spacing without crowding. */ + padding-top: clamp(16px, 2vw, 24px); border-top: 1px solid rgba(15,23,42,0.08); + } + @media (max-width: 640px) { .dm-prevnext { grid-template-columns: 1fr; } } + .dm-prevnext-placeholder { display: block; } + .dm-prevnext-card { + display: flex; gap: 16px; align-items: center; padding: 16px; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + text-decoration: none; transition: transform .3s ease, box-shadow .3s ease, border-color .3s ease; + } + .dm-prevnext-card:hover { + transform: translateY(-4px); border-color: rgba(192,18,39,0.2); + box-shadow: 0 16px 34px rgba(192,18,39,0.10); + } + .dm-prevnext-thumb { + position: relative; flex: 0 0 80px; width: 80px; height: 80px; + border-radius: 16px; overflow: hidden; background: #f1f5f9; + } + .dm-prevnext-text { display: flex; flex-direction: column; gap: 5px; min-width: 0; } + .dm-prevnext-next { text-align: right; } + .dm-prevnext-next .dm-prevnext-text { align-items: flex-end; } + .dm-prevnext-label { + display: inline-flex; align-items: center; gap: 6px; + font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: 1px; color: var(--dm-red); + } + .dm-prevnext-cat { font-size: 11px; font-weight: 700; color: #94a3b8; text-transform: uppercase; letter-spacing: .5px; } + .dm-prevnext-title { + font-size: 15.5px; font-weight: 700; color: #1e293b; line-height: 1.4; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-prevnext-card:hover .dm-prevnext-title { color: var(--dm-red); } + + /* Related */ + .dm-related-heading { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 850 !important; letter-spacing: -.4px !important; + line-height: 1.25 !important; color: #0f172a !important; margin: 0 0 24px; + } + .dm-related-grid { + display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; + } + @media (max-width: 1024px) { .dm-related-grid { grid-template-columns: repeat(2, 1fr); } } + @media (max-width: 700px) { .dm-related-grid { grid-template-columns: 1fr; gap: 24px; } } + + .dm-related-card { + display: flex; flex-direction: column; height: 100%; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + overflow: hidden; box-shadow: 0 4px 24px rgba(15,23,42,0.05); text-decoration: none; + transition: transform .4s cubic-bezier(0.2,0.8,0.2,1), box-shadow .4s ease, border-color .4s ease; + } + .dm-related-card:hover { + transform: translateY(-8px); box-shadow: 0 22px 44px rgba(192,18,39,0.13); + border-color: rgba(192,18,39,0.2); + } + .dm-related-img { + position: relative; width: 100%; aspect-ratio: 16 / 10; overflow: hidden; background: #f1f5f9; + } + .dm-related-img img { transition: transform .5s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-img img { transform: scale(1.05); } + .dm-related-badge { + position: absolute; top: 14px; left: 14px; z-index: 5; background: var(--dm-red); color: #fff; + font-size: 9px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.2px; + padding: 5px 11px; border-radius: 8px; box-shadow: 0 4px 12px rgba(192,18,39,0.25); + } + .dm-related-body { display: flex; flex-direction: column; flex: 1; padding: 22px; } + .dm-related-card-title { + font-size: 17px !important; font-weight: 800 !important; color: #1e293b !important; line-height: 1.4 !important; + letter-spacing: -.2px !important; margin: 0 0 10px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-related-card:hover .dm-related-card-title { color: var(--dm-red); } + .dm-related-card-excerpt { + font-size: 13.5px; font-weight: 500; color: #64748b; line-height: 1.6; margin: 0 0 18px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + } + .dm-related-readmore { + margin-top: auto; display: inline-flex; align-items: center; gap: 7px; + font-size: 12.5px; font-weight: 800; color: var(--dm-red); + text-transform: uppercase; letter-spacing: .6px; + } + .dm-related-readmore-arrow { transition: transform .3s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-readmore-arrow { transform: translateX(5px); } + + /* Contact CTA banner */ + .dm-blog-contact-cta { + display: flex; align-items: center; justify-content: space-between; gap: 32px; + flex-wrap: wrap; + background: linear-gradient(135deg, #1a1a1a 0%, #2d1417 100%); + border-radius: 30px; padding: clamp(32px, 4vw, 56px); + position: relative; overflow: hidden; + } + .dm-blog-contact-cta::after { + content: ""; position: absolute; right: -80px; top: -80px; width: 300px; height: 300px; + background: radial-gradient(circle, rgba(192,18,39,0.40), transparent 70%); + pointer-events: none; + } + .dm-blog-contact-cta-content { position: relative; z-index: 1; max-width: 640px; } + .dm-blog-contact-eyebrow { + display: inline-block; font-size: 12px; font-weight: 800; text-transform: uppercase; + letter-spacing: 1.4px; color: #ff8088; margin-bottom: 14px; + } + .dm-blog-contact-title { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 800 !important; line-height: 1.25 !important; + letter-spacing: -.3px !important; color: #ffffff !important; margin: 0 0 12px; text-wrap: balance; + } + .dm-blog-contact-sub { + font-size: 15.5px; line-height: 1.65; color: #e2e2e2; margin: 0; font-weight: 450; + } + .dm-blog-contact-btn { + position: relative; z-index: 1; flex-shrink: 0; + display: inline-flex; align-items: center; justify-content: center; gap: 10px; + background: var(--dm-red); color: #fff !important; font-size: 15px; font-weight: 700; + padding: 16px 32px; border-radius: 16px; text-decoration: none; + box-shadow: 0 10px 26px rgba(192,18,39,0.34); + transition: background .2s ease, transform .2s ease; + } + .dm-blog-contact-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } + @media (max-width: 720px) { + .dm-blog-contact-cta { flex-direction: column; align-items: flex-start; gap: 26px; } + .dm-blog-contact-btn { width: 100%; } + } +1a:["$","section",null,{"className":"dm-blog-footer","aria-label":"More articles","children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$25"}}],"$L26"]}] +27:I[5500,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"Image"] +28:I[23096,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"default"] +1d:["$","$L1c","6",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"During peak traffic hours in Hyderabad, some vehicles were arriving 20 to 30 minutes later than planned. By adjusting routes based on live traffic and battery levels, the hub reduced missed delivery windows and improved on-time performance."}]}] +1e:["$","$L1c","7",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","figure",null,{"className":"dm-article-figure","children":[["$","span",null,{"className":"dm-article-figure-img","children":["$","$L27",null,{"src":"/images/ev-paradox.webp","alt":"Electric delivery vehicle routing visualisation","fill":true,"sizes":"(max-width: 768px) 100vw, 760px","style":{"objectFit":"cover"}}]}],["$","figcaption",null,{"children":"EV route plans need to account for range, load, traffic, and charging time before riders leave the hub."}]]}]}] +1f:["$","$L1c","8",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","blockquote",null,{"className":"dm-article-quote","children":[["$","p",null,{"children":"With EVs, a route is only useful if the vehicle can finish it and still return safely."}],["$","cite",null,{"children":"Doormile Operations"}]]}]}] +20:["$","$L1c","9",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"What this means for operators"}]}] +21:["$","$L1c","10",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"For a fleet manager, this is not about fancy software. It is about fewer emergency calls, fewer mid-route swaps, and fewer customers asking why their delivery missed the promised window."}]}] +22:["$","$L1c","11",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ol",null,{"className":"dm-article-ol","children":[["$","li","0",{"children":"Record delivery times, failed attempts, traffic delays, and charging cycles."}],["$","li","1",{"children":"Build travel-time estimates from the areas your riders actually serve."}],["$","li","2",{"children":"Check every route against battery capacity before dispatch."}],["$","li","3",{"children":"Replan when traffic, orders, or vehicle availability changes."}]]}]}] +23:["$","$L1c","12",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"The fleets that improve fastest are usually not the ones adding vehicles first. They are the ones removing wasted distance, planning charging properly, and giving riders routes they can complete on time."}]}] +24:["$","div",null,{"className":"dm-blog-aside-wrap","children":["$","aside",null,{"className":"dm-blog-sidebar","aria-label":"Blog sidebar","children":[["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Search"}],["$","$L28",null,{}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Recent Posts"}],["$","ul",null,{"className":"dm-blog-recent","children":[["$","li","42-less-distance-insights-from-our-hyderabad-hub",{"children":["$","$L1b",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}],["$","time",null,{"dateTime":"2025-09-18","className":"dm-blog-recent-date","children":"Sep 18, 2025"}]]}]]}]}],["$","li","miletruth-ai-10-stages-to-smarter-dispatch",{"children":["$","$L1b",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","time",null,{"dateTime":"2025-09-05","className":"dm-blog-recent-date","children":"Sep 5, 2025"}]]}]]}]}],["$","li","the-ev-paradox-solving-range-anxiety-for-urban-fleets",{"children":["$","$L1b",null,{"href":"/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/ev-paradox.webp","alt":"The EV Paradox: Solving Range Anxiety for Urban Fleets","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}],["$","time",null,{"dateTime":"2025-08-21","className":"dm-blog-recent-date","children":"Aug 21, 2025"}]]}]]}]}],["$","li","why-mathematical-precision-beats-heuristics-in-routing",{"children":["$","$L1b",null,{"href":"/blog/why-mathematical-precision-beats-heuristics-in-routing","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-14.webp","alt":"Why Mathematical Precision Beats Heuristics in Routing","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"Why Mathematical Precision Beats Heuristics in Routing"}],["$","time",null,{"dateTime":"2025-08-07","className":"dm-blog-recent-date","children":"Aug 7, 2025"}]]}]]}]}]]}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Categories"}],["$","ul",null,{"className":"dm-blog-categories","children":[["$","li","Case Study",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Case Study"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","EV Fleet",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"EV Fleet"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}],["$","li","Fleet Management",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Fleet Management"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","MileTruth",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"MileTruth"}],"$L29"]}]}],"$L2a","$L2b","$L2c"]}]]}],"$L2d"]}]}] +26:["$","div",null,{"className":"dm-blog-footer-inner","children":[["$","nav",null,{"className":"dm-prevnext","aria-label":"Article navigation","children":[["$","span",null,{"className":"dm-prevnext-placeholder"}],["$","$L1b",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-prevnext-card dm-prevnext-next","children":[["$","span",null,{"className":"dm-prevnext-text","children":[["$","span",null,{"className":"dm-prevnext-label","children":["Next",["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","span",null,{"className":"dm-prevnext-cat","children":"Case Study"}],["$","span",null,{"className":"dm-prevnext-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}]]}],["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"80px","style":{"objectFit":"cover"}}]}]]}]]}],["$","div",null,{"className":"dm-related","children":[["$","h2",null,{"className":"dm-related-heading","children":"Related Articles"}],["$","div",null,{"className":"dm-related-grid","children":[["$","$L1c","why-mathematical-precision-beats-heuristics-in-routing",{"delay":0,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/why-mathematical-precision-beats-heuristics-in-routing","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L27",null,{"src":"/images/blog-post-pic-14.webp","alt":"Why Mathematical Precision Beats Heuristics in Routing","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Technology"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"Why Mathematical Precision Beats Heuristics in Routing"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"Fixed routing rules are easy to start with, but they often miss better stop sequences as order volume grows."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}],["$","$L1c","42-less-distance-insights-from-our-hyderabad-hub",{"delay":0.08,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L27",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Case Study"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"A practical look at how one Hyderabad hub reduced distance, used fewer vehicles, and protected delivery windows with better route planning."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}],["$","$L1c","miletruth-ai-10-stages-to-smarter-dispatch",{"delay":0.16,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-related-card","children":["$L2e","$L2f"]}]}]]}]]}],"$L30"]}] +29:["$","span",null,{"className":"dm-blog-category-count","children":1}] +2a:["$","li","Operations",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Operations"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +2b:["$","li","Sustainability",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Sustainability"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +2c:["$","li","Technology",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Technology"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}] +2d:["$","section",null,{"className":"dm-blog-widget dm-blog-cta-card","children":[["$","h2",null,{"className":"dm-blog-cta-title","children":"Planning delivery routes?"}],["$","p",null,{"className":"dm-blog-cta-text","children":"Talk to us about reducing wasted distance, missed windows, and avoidable vehicle time."}],["$","$L1b",null,{"href":"/contact","className":"dm-blog-cta-btn","children":["Contact Us",["$","svg",null,{"width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] +2e:["$","div",null,{"className":"dm-related-img","children":[["$","$L27",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"MileTruth"}]]}] +2f:["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"From order intake to final route output, here is how a dispatch plan is checked before riders leave the hub."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] +30:["$","div",null,{"className":"dm-blog-contact-cta","children":[["$","div",null,{"className":"dm-blog-contact-cta-content","children":[["$","span",null,{"className":"dm-blog-contact-eyebrow","children":"Let's talk logistics"}],["$","h2",null,{"className":"dm-blog-contact-title","children":"Ready to move smarter with Doormile?"}],["$","p",null,{"className":"dm-blog-contact-sub","children":"Tell us about your fleet and routes — we'll show you where the distance, vehicles and emissions are hiding."}]]}],["$","$L1b",null,{"href":"/contact","className":"dm-blog-contact-btn","children":["Get in Touch",["$","svg",null,{"width":"20","height":"20","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] +12:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] +31:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +f:null +14:[["$","title","0",{"children":"How Better Planning Improves Last-Mile EV Delivery – Doormile"}],["$","meta","1",{"name":"description","content":"A practical look at how EV fleets can plan routes, manage charging, and keep delivery promises without adding unnecessary vehicles."}],["$","meta","2",{"name":"author","content":"Doormile Team"}],["$","meta","3",{"name":"keywords","content":"Technology,last-mile logistics,EV fleet,MileTruth,route optimisation"}],["$","meta","4",{"name":"robots","content":"index, follow"}],["$","link","5",{"rel":"canonical","href":"https://www.doormile.com/blog/how-ai-is-transforming-last-mile-ev-delivery"}],["$","meta","6",{"property":"og:title","content":"How Better Planning Improves Last-Mile EV Delivery"}],["$","meta","7",{"property":"og:description","content":"A practical look at how EV fleets can plan routes, manage charging, and keep delivery promises without adding unnecessary vehicles."}],["$","meta","8",{"property":"og:url","content":"https://www.doormile.com/blog/how-ai-is-transforming-last-mile-ev-delivery"}],["$","meta","9",{"property":"og:site_name","content":"Doormile"}],["$","meta","10",{"property":"og:image","content":"https://www.doormile.com/images/blog-post-pic-17.webp"}],["$","meta","11",{"property":"og:image:alt","content":"How Better Planning Improves Last-Mile EV Delivery"}],["$","meta","12",{"property":"og:type","content":"article"}],["$","meta","13",{"property":"article:published_time","content":"2025-10-02T00:00:00.000Z"}],["$","meta","14",{"property":"article:author","content":"Doormile Team"}],["$","meta","15",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","16",{"name":"twitter:title","content":"How Better Planning Improves Last-Mile EV Delivery"}],["$","meta","17",{"name":"twitter:description","content":"A practical look at how EV fleets can plan routes, manage charging, and keep delivery promises without adding unnecessary vehicles."}],["$","meta","18",{"name":"twitter:image","content":"https://www.doormile.com/images/blog-post-pic-17.webp"}],["$","link","19",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","20",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","21",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","22",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L31","23",{}]] diff --git a/build/blog/how-ai-is-transforming-last-mile-ev-delivery/__next._full.txt b/build/blog/how-ai-is-transforming-last-mile-ev-delivery/__next._full.txt new file mode 100644 index 0000000..e4ac319 --- /dev/null +++ b/build/blog/how-ai-is-transforming-last-mile-ev-delivery/__next._full.txt @@ -0,0 +1,545 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +d:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +e:"$Sreact.suspense" +11:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +13:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +15:I[68027,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"P":null,"c":["","blog","how-ai-is-transforming-last-mile-ev-delivery"],"q":"","i":false,"f":[[["",{"children":["blog",{"children":[["slug","how-ai-is-transforming-last-mile-ev-delivery","d",null],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":["$Lc",[["$","script","script-0",{"src":"/_next/static/chunks/0yvxf3ok9gcp_.js","async":true,"nonce":"$undefined"}]],["$","$Ld",null,{"children":["$","$e",null,{"name":"Next.MetadataOutlet","children":"$@f"}]}]]}],{},null,false,null]},null,false,"$@10"]},null,false,"$@10"]},null,false,null],["$","$1","h",{"children":[null,["$","$L11",null,{"children":"$L12"}],["$","div",null,{"hidden":true,"children":["$","$L13",null,{"children":["$","$e",null,{"name":"Next.Metadata","children":"$L14"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$15",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"kmSVPuUqY3Rhw5xy4D2nn"} +16:[] +10:"$W16" +:HL["/images/blog-post-pic-17.webp","image"] +17:T3d6f, + .dm-single-blog { + --dm-red: #c01227; + --dm-red-hover: #e31d32; + --dm-radius-card: 22px; + --dm-radius-img: 20px; + --dm-radius-badge: 8px; + --dm-shadow-card: 0 4px 24px rgba(15, 23, 42, 0.05); + --dm-border: 1px solid rgba(15, 23, 42, 0.09); + --dm-space-p: 24px; + --dm-space-h: 32px; + --dm-space-img: 32px; + --dm-space-quote: 40px; + --dm-sticky-top: 138px; + --dm-measure: min(1100px, 100%); + font-family: var(--font-manrope), sans-serif; + } + + /* Heading normalization. Beat the global theme's .elementor-kit-5 h1-h6 + (120/80/60px UPPERCASE) rules with !important on our own classes. */ + .dm-single-blog :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline, + specificity 0-1-1) so blog links keep our colors and never get underlined. */ + .dm-single-blog a { text-decoration: none !important; } + + /* Page banner: tall homepage-scale frame with only badge + title inside */ + /* Compound selector (specificity 20) + !important beats the global 800px + single-class height rules so the blog banner can use viewport heights. */ + .custom-standard-hero-card.dm-banner-card { + height: 90vh !important; + min-height: 85vh !important; + } + @media (max-width: 1024px) { + .custom-standard-hero-card.dm-banner-card { height: 80vh !important; min-height: 75vh !important; } + } + @media (max-width: 600px) { + .custom-standard-hero-card.dm-banner-card { height: 78vh !important; min-height: 72vh !important; } + } + + .dm-banner-inner { + position: relative; width: 100%; height: 100%; + display: flex; flex-direction: column; align-items: center; justify-content: center; + text-align: center; gap: clamp(22px, 2.6vw, 34px); + padding: clamp(48px, 8vh, 96px) clamp(20px, 5vw, 48px); + } + + .dm-banner-category { + display: inline-block; background: var(--dm-red); color: #fff; + font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.6px; + padding: 9px 18px; border-radius: 999px; box-shadow: 0 8px 22px rgba(192,18,39,0.45); + } + .dm-banner-title { + font-family: var(--font-manrope), sans-serif !important; + font-size: clamp(34px, 5vw, 60px) !important; font-weight: 850 !important; + line-height: 1.16 !important; letter-spacing: -1.2px !important; + color: #ffffff !important; margin: 0; max-width: 820px; + text-wrap: balance; text-shadow: 0 2px 30px rgba(0,0,0,0.38); + } + @media (max-width: 1024px) { .dm-banner-title { font-size: clamp(32px, 6vw, 48px) !important; max-width: 90%; } } + @media (max-width: 600px) { .dm-banner-title { font-size: clamp(28px, 8vw, 38px) !important; max-width: 90%; } } + + /* Content wrap begins immediately below the banner */ + /* Shared content container: the SAME max-width + horizontal padding is used + by BlogPostFooter (.dm-blog-footer-inner) so the article body, headings, + images, Prev/Next, Related Articles and the CTA banner all align to one + grid with identical left/right edges. Keep both in sync. */ + .dm-blog-wrap { + max-width: 1280px; margin: 0 auto; + /* 20px mobile padding floor → 40px on desktop; matches the footer container. */ + padding: clamp(14px, 2vw, 26px) clamp(20px, 4vw, 40px) 0; + } + @media (max-width: 767px) { + .dm-blog-wrap { + padding-left: 16px; + padding-right: 16px; + } + } + + /* ── Article meta bar (directly under the hero) ── */ + .dm-meta-bar { + display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 14px 24px; + padding: clamp(20px, 2.6vw, 30px) 0; margin-bottom: clamp(26px, 3vw, 44px); + border-bottom: 1px solid rgba(15,23,42,0.10); + } + .dm-meta-breadcrumb ol { + list-style: none; display: flex; flex-wrap: wrap; align-items: center; + gap: 8px; margin: 0; padding: 0; font-size: 13px; font-weight: 600; color: #64748b; + } + .dm-meta-breadcrumb a { color: #64748b !important; text-decoration: none; transition: color .2s ease; } + .dm-meta-breadcrumb a:hover { color: var(--dm-red) !important; } + .dm-meta-sep { color: #cbd5e1; } + .dm-meta-current { + color: #0f172a; font-weight: 700; + max-width: min(40ch, 46vw); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; + } + @media (max-width: 600px) { .dm-meta-current { max-width: 56vw; } } + .dm-meta-items { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 20px; } + .dm-meta-item { + display: inline-flex; align-items: center; gap: 7px; + font-size: 13.5px; font-weight: 600; color: #475569; + } + .dm-meta-item svg { color: var(--dm-red); flex: 0 0 auto; } + .dm-meta-author { color: #0f172a; font-weight: 700; } + @media (max-width: 600px) { .dm-meta-bar { gap: 12px; } } + .dm-blog-layout { + display: grid; grid-template-columns: minmax(0,1fr) 320px; + /* Tighter gap gives the reading column more room next to the 320px sidebar. */ + gap: clamp(28px, 3vw, 56px); align-items: start; + } + @media (max-width: 1024px) { + .dm-blog-layout { grid-template-columns: 1fr; gap: 48px; } + /* Single-column (tablet/mobile): cap the reading column and centre it so the + article never sits left-aligned with a large empty right gutter. */ + .dm-blog-main { max-width: 900px; margin-inline: auto; } + } + .dm-blog-main { min-width: 0; } + + /* ── Intro lead ── */ + .dm-blog-intro { + max-width: var(--dm-measure); + font-size: clamp(18px, 1.5vw, 20px); line-height: 1.65; font-weight: 500; + color: #475569; margin: 0 0 clamp(26px, 3vw, 38px); padding-left: 20px; + border-left: 3px solid var(--dm-red); + } + + /* ── Article body ── */ + .dm-article-body { max-width: var(--dm-measure); } + .dm-article-p { + font-size: 18px !important; line-height: 1.8 !important; color: #334155; font-weight: 450; + margin: 0 0 var(--dm-space-p); + } + .dm-article-h2 { + font-size: clamp(23px, 2vw, 30px) !important; font-weight: 800 !important; letter-spacing: -.3px !important; + color: #0f172a !important; line-height: 1.3 !important; margin: 48px 0 var(--dm-space-h); + text-wrap: balance; + } + /* Each article block is wrapped in its OWN ScrollReveal
    , so a bare + :first-child rule matched every heading (each is the only child of its + wrapper) and zeroed its top margin, collapsing the gap above every + section heading. Scope the reset to only the article body's first block. */ + .dm-article-body > :first-child :where(.dm-article-h2, .dm-article-h3), + .dm-article-body > .dm-article-h2:first-child, + .dm-article-body > .dm-article-h3:first-child { margin-top: 0; } + .dm-article-h3 { + font-size: clamp(19px, 1.5vw, 23px) !important; font-weight: 800 !important; letter-spacing: -.2px !important; + color: #1e293b !important; line-height: 1.34 !important; margin: 40px 0 18px; + text-wrap: balance; + } + @media (max-width: 600px) { + .dm-article-p { font-size: 16px !important; } + .dm-article-ul li, .dm-article-ol li { font-size: 15.5px; } + .dm-article-h2 { font-size: clamp(22px, 6vw, 28px) !important; margin-top: 38px; } + .dm-article-h3 { font-size: clamp(18px, 5vw, 22px) !important; } + } + + .dm-article-ul, .dm-article-ol { + /* Top margin (was 0) separates the list from the paragraph above it; + matching bottom margin keeps it clear of the next heading/paragraph. + Slightly larger than --dm-space-p so the list reads as its own block. */ + margin: clamp(26px, 2.4vw, 32px) 0 clamp(26px, 2.4vw, 32px); + padding-left: 2px; list-style: none; + display: flex; flex-direction: column; gap: 15px; + } + /* Prefixed with .dm-article-body so these beat the theme's global + ".logico-front-end ul li:before" fontello-glyph bullet (specificity 0,1,3), + which otherwise replaces our clean red dot with a misaligned checkmark glyph + and adds its own 1.7em indent. */ + .dm-article-body .dm-article-ul li, .dm-article-body .dm-article-ol li { + position: relative; padding-left: 34px; + font-size: 17px; line-height: 1.65; color: #334155; font-weight: 450; + } + .dm-article-body .dm-article-ul li::before { + content: ""; position: absolute; left: 7px; top: 10px; + width: 8px; height: 8px; border-radius: 50%; background: var(--dm-red); + /* kill any inherited fontello glyph from the global rule */ + font-size: 0; line-height: 0; + } + .dm-article-ol { counter-reset: dm-li; } + .dm-article-body .dm-article-ol li { counter-increment: dm-li; } + .dm-article-body .dm-article-ol li::before { + content: counter(dm-li); position: absolute; left: 0; top: 0; + width: 24px; height: 24px; border-radius: 7px; + background: rgba(192,18,39,0.10); color: var(--dm-red); + font-size: 12px; font-weight: 800; display: flex; align-items: center; justify-content: center; + } + + /* ── Quote ── */ + .dm-article-quote { + position: relative; margin: var(--dm-space-quote) 0; padding: 30px 32px 30px 64px; + background: linear-gradient(135deg, #fbf2f3 0%, #fdf7f8 100%); + border-left: 4px solid var(--dm-red); border-radius: 0 18px 18px 0; + box-shadow: 0 8px 28px rgba(192, 18, 39, 0.06); + } + .dm-article-quote::before { + content: "\201C"; position: absolute; left: 22px; top: 8px; + font-family: Georgia, "Times New Roman", serif; + font-size: 64px; line-height: 1; color: rgba(192, 18, 39, 0.28); font-weight: 700; + } + .dm-article-quote p { + font-size: clamp(19px, 2vw, 23px); line-height: 1.5; font-weight: 600; + font-style: italic; color: #1e293b; margin: 0; + } + .dm-article-quote cite { + display: block; margin-top: 16px; font-size: 13px; font-weight: 700; + font-style: normal; color: var(--dm-red); text-transform: uppercase; letter-spacing: .6px; + } + @media (max-width: 600px) { .dm-article-quote { padding: 26px 22px; } .dm-article-quote::before { display: none; } } + + /* ── Images ── */ + .dm-article-figure { margin: var(--dm-space-img) 0; } + .dm-article-figure-img { + position: relative; display: block; width: 100%; aspect-ratio: 16 / 9; + border-radius: var(--dm-radius-img); overflow: hidden; box-shadow: 0 14px 34px rgba(15,23,42,0.10); + } + .dm-article-figure figcaption { + margin-top: 14px; font-size: 13.5px; color: #94a3b8; font-weight: 500; + text-align: center; font-style: italic; + } + + /* ── Sidebar ── */ + .dm-blog-aside-wrap { position: relative; } + .dm-blog-sidebar { + display: flex; flex-direction: column; gap: 18px; + position: sticky; top: var(--dm-sticky-top); + } + @media (max-width: 1024px) { .dm-blog-sidebar { position: static; gap: 20px; } } + + .dm-blog-widget { + background: #fff; border: var(--dm-border); border-radius: var(--dm-radius-card); + padding: 20px; box-shadow: var(--dm-shadow-card); + } + .dm-blog-widget-title { + font-size: 13px !important; font-weight: 700 !important; text-transform: uppercase !important; + letter-spacing: .8px !important; line-height: 1.35 !important; color: #0f172a !important; + margin: 0 0 15px; padding: 0 0 12px; + border-bottom: 1px solid rgba(15,23,42,0.08); + overflow: visible; white-space: normal; word-break: normal; + } + + /* Search */ + .dm-sr-only { + position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; + overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; + } + .dm-blog-search { position: relative; } + .dm-blog-search-form { position: relative; } + .dm-blog-search-input { + width: 100%; height: 46px; border: 1.5px solid #e2e8f0; border-radius: 12px; + padding: 0 42px 0 15px; font-size: 14px; font-family: inherit; color: #0f172a; + background: #f8fafc; transition: border-color .2s ease, box-shadow .2s ease, background .2s ease; + } + .dm-blog-search-input::placeholder { color: #9c9c9c; } + .dm-blog-search-input:focus { + outline: none; border-color: var(--dm-red); background: #fff; + box-shadow: 0 0 0 3px rgba(192,18,39,0.11); + } + .dm-blog-search-icon { + position: absolute; right: 14px; top: 50%; transform: translateY(-50%); + color: #94a3b8; pointer-events: none; display: flex; + } + .dm-blog-search-results { + position: absolute; z-index: 20; top: calc(100% + 8px); left: 0; right: 0; + background: #fff; border: 1px solid rgba(15,23,42,0.10); border-radius: 14px; + box-shadow: 0 18px 42px rgba(15,23,42,0.14); overflow: hidden; + } + .dm-blog-search-results ul { list-style: none; margin: 0; padding: 6px; } + .dm-blog-search-result { + display: flex; flex-direction: column; gap: 3px; padding: 10px 12px; + border-radius: 10px; text-decoration: none; transition: background .15s ease; + } + .dm-blog-search-result:hover { background: #f8fafc; } + .dm-blog-search-result-cat { + font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .8px; color: var(--dm-red); + } + .dm-blog-search-result-title { font-size: 13.5px; font-weight: 600; color: #1e293b; line-height: 1.35; } + .dm-blog-search-empty { margin: 0; padding: 14px 12px; font-size: 13px; color: #64748b; } + + /* Recent posts */ + .dm-blog-recent { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 15px; } + .dm-blog-recent-item { display: flex; gap: 13px; align-items: center; text-decoration: none; } + .dm-blog-recent-thumb { + position: relative; flex: 0 0 62px; width: 62px; height: 62px; + border-radius: 13px; overflow: hidden; background: #f1f5f9; + } + .dm-blog-recent-meta { display: flex; flex-direction: column; gap: 4px; min-width: 0; } + .dm-blog-recent-title { + font-size: 13.5px; font-weight: 700; color: #1e293b; line-height: 1.35; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-blog-recent-item:hover .dm-blog-recent-title { color: var(--dm-red); } + .dm-blog-recent-date { font-size: 11.5px; font-weight: 600; color: #94a3b8; } + + /* Categories */ + .dm-blog-categories { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; } + .dm-blog-category-item { + display: flex; align-items: center; justify-content: space-between; gap: 10px; + padding: 11px 2px; text-decoration: none; font-size: 14px; font-weight: 600; color: #334155 !important; + border-bottom: 1px solid rgba(15,23,42,0.06); transition: color .2s ease, padding-left .2s ease; + } + .dm-blog-categories li:last-child .dm-blog-category-item { border-bottom: none; } + .dm-blog-category-item:hover { color: var(--dm-red); padding-left: 6px; } + .dm-blog-category-item > span:first-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } + .dm-blog-category-count { + flex: 0 0 auto; font-size: 11px; font-weight: 800; color: #94a3b8; background: #f1f5f9; + min-width: 24px; height: 22px; border-radius: 7px; display: inline-flex; + align-items: center; justify-content: center; padding: 0 7px; + } + + /* CTA card */ + .dm-blog-cta-card { background: #1f1f1f; border-color: #1f1f1f; } + .dm-blog-cta-title { font-size: 18px !important; font-weight: 800 !important; color: #fff !important; line-height: 1.32 !important; margin: 0 0 10px; letter-spacing: -.2px !important; } + .dm-blog-cta-text { font-size: 13.5px; line-height: 1.6; color: #c7c7c7; margin: 0 0 20px; font-weight: 450; } + .dm-blog-cta-btn { + display: inline-flex; align-items: center; gap: 8px; + background: var(--dm-red); color: #fff !important; font-size: 13.5px; font-weight: 700; + padding: 12px 22px; border-radius: 12px; text-decoration: none; + transition: background .2s ease, transform .2s ease; + } + .dm-blog-cta-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } +c:["$","div",null,{"className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"Article\",\"headline\":\"How Better Planning Improves Last-Mile EV Delivery\",\"description\":\"A practical look at how EV fleets can plan routes, manage charging, and keep delivery promises without adding unnecessary vehicles.\",\"image\":[\"https://www.doormile.com/images/blog-post-pic-17.webp\"],\"datePublished\":\"2025-10-02T00:00:00.000Z\",\"dateModified\":\"2025-10-02T00:00:00.000Z\",\"author\":{\"@type\":\"Organization\",\"name\":\"Doormile Team\",\"url\":\"https://www.doormile.com\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Doormile\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://www.doormile.com/images/cropped-image-2.png\"}},\"mainEntityOfPage\":{\"@type\":\"WebPage\",\"@id\":\"https://www.doormile.com/blog/how-ai-is-transforming-last-mile-ev-delivery\"},\"articleSection\":\"Technology\"}"}}],["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https://www.doormile.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https://www.doormile.com/blog\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"How Better Planning Improves Last-Mile EV Delivery\",\"item\":\"https://www.doormile.com/blog/how-ai-is-transforming-last-mile-ev-delivery\"}]}"}}],["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":[["$","article",null,{"className":"dm-single-blog","children":[["$","link",null,{"rel":"preload","as":"image","href":"/images/blog-post-pic-17.webp"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$17"}}],"$L18","$L19"]}],"$L1a"]}]}]]}] +1b:I[22016,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],""] +1c:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"ScrollReveal"] +18:["$","div",null,{"className":"custom-standard-hero-container","children":["$","div",null,{"className":"custom-standard-hero-card dm-banner-card","style":{"backgroundImage":"url(/images/blog-post-pic-17.webp)","--hero-overlay":"linear-gradient(180deg, rgba(0,0,0,0.38) 0%, rgba(0,0,0,0.46) 55%, rgba(0,0,0,0.60) 100%)"},"children":["$","div",null,{"className":"e-con-inner dm-banner-inner","children":[["$","span",null,{"className":"dm-banner-category","children":"Technology"}],["$","h1",null,{"className":"dm-banner-title","children":"How Better Planning Improves Last-Mile EV Delivery"}]]}]}]}] +19:["$","div",null,{"className":"dm-blog-wrap","children":[["$","div",null,{"className":"dm-meta-bar","children":[["$","nav",null,{"className":"dm-meta-breadcrumb","aria-label":"Breadcrumb","children":["$","ol",null,{"children":[["$","li",null,{"children":["$","$L1b",null,{"href":"/","children":"Home"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"children":["$","$L1b",null,{"href":"/blog","children":"Blog"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"aria-current":"page","className":"dm-meta-current","children":"How Better Planning Improves Last-Mile EV Delivery"}]]}]}],["$","div",null,{"className":"dm-meta-items","children":[["$","span",null,{"className":"dm-meta-item dm-meta-author","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","path",null,{"d":"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"}],["$","circle",null,{"cx":"12","cy":"7","r":"4"}]]}],"Doormile Team"]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","rect",null,{"x":"3","y":"4","width":"18","height":"18","rx":"2"}],["$","line",null,{"x1":"16","y1":"2","x2":"16","y2":"6"}],["$","line",null,{"x1":"8","y1":"2","x2":"8","y2":"6"}],["$","line",null,{"x1":"3","y1":"10","x2":"21","y2":"10"}]]}],["$","time",null,{"dateTime":"2025-10-02","children":"Oct 2, 2025"}]]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","circle",null,{"cx":"12","cy":"12","r":"9"}],["$","polyline",null,{"points":"12 7 12 12 15 14"}]]}],2," min read"]}]]}]]}],["$","div",null,{"className":"dm-blog-layout","children":[["$","div",null,{"className":"dm-blog-main","children":[["$","p",null,{"className":"dm-blog-intro","children":"The last mile is already difficult to plan. With electric vehicles, the team also has to think about battery range, charging time, rider load, traffic, and delivery windows. Good planning turns those moving parts into a workable dispatch plan."}],["$","div",null,{"className":"dm-article-body","children":[["$","$L1c","0",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"For a long time, last-mile planning depended on dispatchers, spreadsheets, and local experience. That experience still matters. The problem is that it gets stretched thin when order volume rises and the fleet includes EVs."}]}],["$","$L1c","1",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"The shift from fixed rules to daily planning"}]}],["$","$L1c","2",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"A fixed-zone plan may look clean in the morning, but the road rarely follows the plan. A rider may get delayed near Hitec City, a gated community may hold a vehicle for ten extra minutes, or a battery may drain faster because the load is heavier than usual."}]}],["$","$L1c","3",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ul",null,{"className":"dm-article-ul","children":[["$","li","0",{"children":"Order volumes by area, time slot, and customer type"}],["$","li","1",{"children":"Travel times based on the city's actual traffic patterns"}],["$","li","2",{"children":"Battery use by vehicle type, rider load, and route length"}],["$","li","3",{"children":"Feedback from completed deliveries, failed attempts, and late arrivals"}]]}]}],["$","$L1c","4",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h3",null,{"className":"dm-article-h3","children":"Adjusting during the day"}]}],["$","$L1c","5",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"The first plan is only the starting point. By 11 a.m., traffic may change, a high-priority order may arrive, or one vehicle may return with less charge than expected. The dispatch team needs a way to adjust without rebuilding the whole day by hand."}]}],"$L1d","$L1e","$L1f","$L20","$L21","$L22","$L23"]}]]}],"$L24"]}]]}] +25:T2021, + .dm-blog-footer { + font-family: var(--font-manrope), sans-serif; --dm-red: #c01227; --dm-red-hover: #e31d32; + /* The global theme applies 72px top/bottom section padding — strip it so the + inner container is the single source of vertical rhythm (no double gap). */ + padding: 0 !important; + } + /* Neutralize the global theme's 120/80/60px UPPERCASE heading rules */ + .dm-blog-footer :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline) */ + .dm-blog-footer a { text-decoration: none !important; } + /* Shared content container — mirrors SingleBlog's .dm-blog-wrap (same 1280px + max-width + 20→40px horizontal padding) so Prev/Next, Related and the CTA + align to the exact same left/right edges as the article body above. + Vertical rhythm: ~64px from the article end to the Prev/Next divider, then a + consistent ~64–72px section→section gap (no 120px+ voids). */ + .dm-blog-footer-inner { + max-width: 1280px; margin: 0 auto; + /* Compact vertical rhythm on an 8px system. Top padding sets the + article→Prev/Next gap (~24–32px); the inter-section gap sets the + Prev/Next→Related gap (~32–48px). No large arbitrary voids. */ + /* Minimal bottom padding — the global site footer already contributes its + own 20px top inset, so the CTA banner sits close to it without a void. */ + padding: clamp(24px, 3vw, 32px) clamp(20px, 4vw, 40px) clamp(8px, 1.5vw, 16px); + display: flex; flex-direction: column; gap: clamp(32px, 4vw, 48px); + } + @media (max-width: 767px) { + .dm-blog-footer-inner { + padding-left: 16px; + padding-right: 16px; + } + } + + /* Prev / Next */ + .dm-prevnext { + display: grid; grid-template-columns: 1fr 1fr; gap: 20px; + /* Halved from 40px: tight divider→cards spacing without crowding. */ + padding-top: clamp(16px, 2vw, 24px); border-top: 1px solid rgba(15,23,42,0.08); + } + @media (max-width: 640px) { .dm-prevnext { grid-template-columns: 1fr; } } + .dm-prevnext-placeholder { display: block; } + .dm-prevnext-card { + display: flex; gap: 16px; align-items: center; padding: 16px; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + text-decoration: none; transition: transform .3s ease, box-shadow .3s ease, border-color .3s ease; + } + .dm-prevnext-card:hover { + transform: translateY(-4px); border-color: rgba(192,18,39,0.2); + box-shadow: 0 16px 34px rgba(192,18,39,0.10); + } + .dm-prevnext-thumb { + position: relative; flex: 0 0 80px; width: 80px; height: 80px; + border-radius: 16px; overflow: hidden; background: #f1f5f9; + } + .dm-prevnext-text { display: flex; flex-direction: column; gap: 5px; min-width: 0; } + .dm-prevnext-next { text-align: right; } + .dm-prevnext-next .dm-prevnext-text { align-items: flex-end; } + .dm-prevnext-label { + display: inline-flex; align-items: center; gap: 6px; + font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: 1px; color: var(--dm-red); + } + .dm-prevnext-cat { font-size: 11px; font-weight: 700; color: #94a3b8; text-transform: uppercase; letter-spacing: .5px; } + .dm-prevnext-title { + font-size: 15.5px; font-weight: 700; color: #1e293b; line-height: 1.4; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-prevnext-card:hover .dm-prevnext-title { color: var(--dm-red); } + + /* Related */ + .dm-related-heading { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 850 !important; letter-spacing: -.4px !important; + line-height: 1.25 !important; color: #0f172a !important; margin: 0 0 24px; + } + .dm-related-grid { + display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; + } + @media (max-width: 1024px) { .dm-related-grid { grid-template-columns: repeat(2, 1fr); } } + @media (max-width: 700px) { .dm-related-grid { grid-template-columns: 1fr; gap: 24px; } } + + .dm-related-card { + display: flex; flex-direction: column; height: 100%; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + overflow: hidden; box-shadow: 0 4px 24px rgba(15,23,42,0.05); text-decoration: none; + transition: transform .4s cubic-bezier(0.2,0.8,0.2,1), box-shadow .4s ease, border-color .4s ease; + } + .dm-related-card:hover { + transform: translateY(-8px); box-shadow: 0 22px 44px rgba(192,18,39,0.13); + border-color: rgba(192,18,39,0.2); + } + .dm-related-img { + position: relative; width: 100%; aspect-ratio: 16 / 10; overflow: hidden; background: #f1f5f9; + } + .dm-related-img img { transition: transform .5s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-img img { transform: scale(1.05); } + .dm-related-badge { + position: absolute; top: 14px; left: 14px; z-index: 5; background: var(--dm-red); color: #fff; + font-size: 9px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.2px; + padding: 5px 11px; border-radius: 8px; box-shadow: 0 4px 12px rgba(192,18,39,0.25); + } + .dm-related-body { display: flex; flex-direction: column; flex: 1; padding: 22px; } + .dm-related-card-title { + font-size: 17px !important; font-weight: 800 !important; color: #1e293b !important; line-height: 1.4 !important; + letter-spacing: -.2px !important; margin: 0 0 10px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-related-card:hover .dm-related-card-title { color: var(--dm-red); } + .dm-related-card-excerpt { + font-size: 13.5px; font-weight: 500; color: #64748b; line-height: 1.6; margin: 0 0 18px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + } + .dm-related-readmore { + margin-top: auto; display: inline-flex; align-items: center; gap: 7px; + font-size: 12.5px; font-weight: 800; color: var(--dm-red); + text-transform: uppercase; letter-spacing: .6px; + } + .dm-related-readmore-arrow { transition: transform .3s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-readmore-arrow { transform: translateX(5px); } + + /* Contact CTA banner */ + .dm-blog-contact-cta { + display: flex; align-items: center; justify-content: space-between; gap: 32px; + flex-wrap: wrap; + background: linear-gradient(135deg, #1a1a1a 0%, #2d1417 100%); + border-radius: 30px; padding: clamp(32px, 4vw, 56px); + position: relative; overflow: hidden; + } + .dm-blog-contact-cta::after { + content: ""; position: absolute; right: -80px; top: -80px; width: 300px; height: 300px; + background: radial-gradient(circle, rgba(192,18,39,0.40), transparent 70%); + pointer-events: none; + } + .dm-blog-contact-cta-content { position: relative; z-index: 1; max-width: 640px; } + .dm-blog-contact-eyebrow { + display: inline-block; font-size: 12px; font-weight: 800; text-transform: uppercase; + letter-spacing: 1.4px; color: #ff8088; margin-bottom: 14px; + } + .dm-blog-contact-title { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 800 !important; line-height: 1.25 !important; + letter-spacing: -.3px !important; color: #ffffff !important; margin: 0 0 12px; text-wrap: balance; + } + .dm-blog-contact-sub { + font-size: 15.5px; line-height: 1.65; color: #e2e2e2; margin: 0; font-weight: 450; + } + .dm-blog-contact-btn { + position: relative; z-index: 1; flex-shrink: 0; + display: inline-flex; align-items: center; justify-content: center; gap: 10px; + background: var(--dm-red); color: #fff !important; font-size: 15px; font-weight: 700; + padding: 16px 32px; border-radius: 16px; text-decoration: none; + box-shadow: 0 10px 26px rgba(192,18,39,0.34); + transition: background .2s ease, transform .2s ease; + } + .dm-blog-contact-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } + @media (max-width: 720px) { + .dm-blog-contact-cta { flex-direction: column; align-items: flex-start; gap: 26px; } + .dm-blog-contact-btn { width: 100%; } + } +1a:["$","section",null,{"className":"dm-blog-footer","aria-label":"More articles","children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$25"}}],"$L26"]}] +27:I[5500,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"Image"] +28:I[23096,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"default"] +1d:["$","$L1c","6",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"During peak traffic hours in Hyderabad, some vehicles were arriving 20 to 30 minutes later than planned. By adjusting routes based on live traffic and battery levels, the hub reduced missed delivery windows and improved on-time performance."}]}] +1e:["$","$L1c","7",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","figure",null,{"className":"dm-article-figure","children":[["$","span",null,{"className":"dm-article-figure-img","children":["$","$L27",null,{"src":"/images/ev-paradox.webp","alt":"Electric delivery vehicle routing visualisation","fill":true,"sizes":"(max-width: 768px) 100vw, 760px","style":{"objectFit":"cover"}}]}],["$","figcaption",null,{"children":"EV route plans need to account for range, load, traffic, and charging time before riders leave the hub."}]]}]}] +1f:["$","$L1c","8",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","blockquote",null,{"className":"dm-article-quote","children":[["$","p",null,{"children":"With EVs, a route is only useful if the vehicle can finish it and still return safely."}],["$","cite",null,{"children":"Doormile Operations"}]]}]}] +20:["$","$L1c","9",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"What this means for operators"}]}] +21:["$","$L1c","10",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"For a fleet manager, this is not about fancy software. It is about fewer emergency calls, fewer mid-route swaps, and fewer customers asking why their delivery missed the promised window."}]}] +22:["$","$L1c","11",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ol",null,{"className":"dm-article-ol","children":[["$","li","0",{"children":"Record delivery times, failed attempts, traffic delays, and charging cycles."}],["$","li","1",{"children":"Build travel-time estimates from the areas your riders actually serve."}],["$","li","2",{"children":"Check every route against battery capacity before dispatch."}],["$","li","3",{"children":"Replan when traffic, orders, or vehicle availability changes."}]]}]}] +23:["$","$L1c","12",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"The fleets that improve fastest are usually not the ones adding vehicles first. They are the ones removing wasted distance, planning charging properly, and giving riders routes they can complete on time."}]}] +24:["$","div",null,{"className":"dm-blog-aside-wrap","children":["$","aside",null,{"className":"dm-blog-sidebar","aria-label":"Blog sidebar","children":[["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Search"}],["$","$L28",null,{}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Recent Posts"}],["$","ul",null,{"className":"dm-blog-recent","children":[["$","li","42-less-distance-insights-from-our-hyderabad-hub",{"children":["$","$L1b",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}],["$","time",null,{"dateTime":"2025-09-18","className":"dm-blog-recent-date","children":"Sep 18, 2025"}]]}]]}]}],["$","li","miletruth-ai-10-stages-to-smarter-dispatch",{"children":["$","$L1b",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","time",null,{"dateTime":"2025-09-05","className":"dm-blog-recent-date","children":"Sep 5, 2025"}]]}]]}]}],["$","li","the-ev-paradox-solving-range-anxiety-for-urban-fleets",{"children":["$","$L1b",null,{"href":"/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/ev-paradox.webp","alt":"The EV Paradox: Solving Range Anxiety for Urban Fleets","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}],["$","time",null,{"dateTime":"2025-08-21","className":"dm-blog-recent-date","children":"Aug 21, 2025"}]]}]]}]}],["$","li","why-mathematical-precision-beats-heuristics-in-routing",{"children":["$","$L1b",null,{"href":"/blog/why-mathematical-precision-beats-heuristics-in-routing","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-14.webp","alt":"Why Mathematical Precision Beats Heuristics in Routing","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"Why Mathematical Precision Beats Heuristics in Routing"}],["$","time",null,{"dateTime":"2025-08-07","className":"dm-blog-recent-date","children":"Aug 7, 2025"}]]}]]}]}]]}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Categories"}],["$","ul",null,{"className":"dm-blog-categories","children":[["$","li","Case Study",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Case Study"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","EV Fleet",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"EV Fleet"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}],["$","li","Fleet Management",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Fleet Management"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","MileTruth",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"MileTruth"}],"$L29"]}]}],"$L2a","$L2b","$L2c"]}]]}],"$L2d"]}]}] +26:["$","div",null,{"className":"dm-blog-footer-inner","children":[["$","nav",null,{"className":"dm-prevnext","aria-label":"Article navigation","children":[["$","span",null,{"className":"dm-prevnext-placeholder"}],["$","$L1b",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-prevnext-card dm-prevnext-next","children":[["$","span",null,{"className":"dm-prevnext-text","children":[["$","span",null,{"className":"dm-prevnext-label","children":["Next",["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","span",null,{"className":"dm-prevnext-cat","children":"Case Study"}],["$","span",null,{"className":"dm-prevnext-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}]]}],["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"80px","style":{"objectFit":"cover"}}]}]]}]]}],["$","div",null,{"className":"dm-related","children":[["$","h2",null,{"className":"dm-related-heading","children":"Related Articles"}],["$","div",null,{"className":"dm-related-grid","children":[["$","$L1c","why-mathematical-precision-beats-heuristics-in-routing",{"delay":0,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/why-mathematical-precision-beats-heuristics-in-routing","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L27",null,{"src":"/images/blog-post-pic-14.webp","alt":"Why Mathematical Precision Beats Heuristics in Routing","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Technology"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"Why Mathematical Precision Beats Heuristics in Routing"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"Fixed routing rules are easy to start with, but they often miss better stop sequences as order volume grows."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}],["$","$L1c","42-less-distance-insights-from-our-hyderabad-hub",{"delay":0.08,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L27",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Case Study"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"A practical look at how one Hyderabad hub reduced distance, used fewer vehicles, and protected delivery windows with better route planning."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}],["$","$L1c","miletruth-ai-10-stages-to-smarter-dispatch",{"delay":0.16,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-related-card","children":["$L2e","$L2f"]}]}]]}]]}],"$L30"]}] +29:["$","span",null,{"className":"dm-blog-category-count","children":1}] +2a:["$","li","Operations",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Operations"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +2b:["$","li","Sustainability",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Sustainability"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +2c:["$","li","Technology",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Technology"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}] +2d:["$","section",null,{"className":"dm-blog-widget dm-blog-cta-card","children":[["$","h2",null,{"className":"dm-blog-cta-title","children":"Planning delivery routes?"}],["$","p",null,{"className":"dm-blog-cta-text","children":"Talk to us about reducing wasted distance, missed windows, and avoidable vehicle time."}],["$","$L1b",null,{"href":"/contact","className":"dm-blog-cta-btn","children":["Contact Us",["$","svg",null,{"width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] +2e:["$","div",null,{"className":"dm-related-img","children":[["$","$L27",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"MileTruth"}]]}] +2f:["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"From order intake to final route output, here is how a dispatch plan is checked before riders leave the hub."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] +30:["$","div",null,{"className":"dm-blog-contact-cta","children":[["$","div",null,{"className":"dm-blog-contact-cta-content","children":[["$","span",null,{"className":"dm-blog-contact-eyebrow","children":"Let's talk logistics"}],["$","h2",null,{"className":"dm-blog-contact-title","children":"Ready to move smarter with Doormile?"}],["$","p",null,{"className":"dm-blog-contact-sub","children":"Tell us about your fleet and routes — we'll show you where the distance, vehicles and emissions are hiding."}]]}],["$","$L1b",null,{"href":"/contact","className":"dm-blog-contact-btn","children":["Get in Touch",["$","svg",null,{"width":"20","height":"20","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] +12:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] +31:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +f:null +14:[["$","title","0",{"children":"How Better Planning Improves Last-Mile EV Delivery – Doormile"}],["$","meta","1",{"name":"description","content":"A practical look at how EV fleets can plan routes, manage charging, and keep delivery promises without adding unnecessary vehicles."}],["$","meta","2",{"name":"author","content":"Doormile Team"}],["$","meta","3",{"name":"keywords","content":"Technology,last-mile logistics,EV fleet,MileTruth,route optimisation"}],["$","meta","4",{"name":"robots","content":"index, follow"}],["$","link","5",{"rel":"canonical","href":"https://www.doormile.com/blog/how-ai-is-transforming-last-mile-ev-delivery"}],["$","meta","6",{"property":"og:title","content":"How Better Planning Improves Last-Mile EV Delivery"}],["$","meta","7",{"property":"og:description","content":"A practical look at how EV fleets can plan routes, manage charging, and keep delivery promises without adding unnecessary vehicles."}],["$","meta","8",{"property":"og:url","content":"https://www.doormile.com/blog/how-ai-is-transforming-last-mile-ev-delivery"}],["$","meta","9",{"property":"og:site_name","content":"Doormile"}],["$","meta","10",{"property":"og:image","content":"https://www.doormile.com/images/blog-post-pic-17.webp"}],["$","meta","11",{"property":"og:image:alt","content":"How Better Planning Improves Last-Mile EV Delivery"}],["$","meta","12",{"property":"og:type","content":"article"}],["$","meta","13",{"property":"article:published_time","content":"2025-10-02T00:00:00.000Z"}],["$","meta","14",{"property":"article:author","content":"Doormile Team"}],["$","meta","15",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","16",{"name":"twitter:title","content":"How Better Planning Improves Last-Mile EV Delivery"}],["$","meta","17",{"name":"twitter:description","content":"A practical look at how EV fleets can plan routes, manage charging, and keep delivery promises without adding unnecessary vehicles."}],["$","meta","18",{"name":"twitter:image","content":"https://www.doormile.com/images/blog-post-pic-17.webp"}],["$","link","19",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","20",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","21",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","22",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L31","23",{}]] diff --git a/build/blog/how-ai-is-transforming-last-mile-ev-delivery/__next._head.txt b/build/blog/how-ai-is-transforming-last-mile-ev-delivery/__next._head.txt new file mode 100644 index 0000000..23b2374 --- /dev/null +++ b/build/blog/how-ai-is-transforming-last-mile-ev-delivery/__next._head.txt @@ -0,0 +1,6 @@ +1:"$Sreact.fragment" +2:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +3:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +4:"$Sreact.suspense" +5:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +0:{"rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"How Better Planning Improves Last-Mile EV Delivery – Doormile"}],["$","meta","1",{"name":"description","content":"A practical look at how EV fleets can plan routes, manage charging, and keep delivery promises without adding unnecessary vehicles."}],["$","meta","2",{"name":"author","content":"Doormile Team"}],["$","meta","3",{"name":"keywords","content":"Technology,last-mile logistics,EV fleet,MileTruth,route optimisation"}],["$","meta","4",{"name":"robots","content":"index, follow"}],["$","link","5",{"rel":"canonical","href":"https://www.doormile.com/blog/how-ai-is-transforming-last-mile-ev-delivery"}],["$","meta","6",{"property":"og:title","content":"How Better Planning Improves Last-Mile EV Delivery"}],["$","meta","7",{"property":"og:description","content":"A practical look at how EV fleets can plan routes, manage charging, and keep delivery promises without adding unnecessary vehicles."}],["$","meta","8",{"property":"og:url","content":"https://www.doormile.com/blog/how-ai-is-transforming-last-mile-ev-delivery"}],["$","meta","9",{"property":"og:site_name","content":"Doormile"}],["$","meta","10",{"property":"og:image","content":"https://www.doormile.com/images/blog-post-pic-17.webp"}],["$","meta","11",{"property":"og:image:alt","content":"How Better Planning Improves Last-Mile EV Delivery"}],["$","meta","12",{"property":"og:type","content":"article"}],["$","meta","13",{"property":"article:published_time","content":"2025-10-02T00:00:00.000Z"}],["$","meta","14",{"property":"article:author","content":"Doormile Team"}],["$","meta","15",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","16",{"name":"twitter:title","content":"How Better Planning Improves Last-Mile EV Delivery"}],["$","meta","17",{"name":"twitter:description","content":"A practical look at how EV fleets can plan routes, manage charging, and keep delivery promises without adding unnecessary vehicles."}],["$","meta","18",{"name":"twitter:image","content":"https://www.doormile.com/images/blog-post-pic-17.webp"}],["$","link","19",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","20",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","21",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","22",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L5","23",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/blog/how-ai-is-transforming-last-mile-ev-delivery/__next._index.txt b/build/blog/how-ai-is-transforming-last-mile-ev-delivery/__next._index.txt new file mode 100644 index 0000000..d0b3355 --- /dev/null +++ b/build/blog/how-ai-is-transforming-last-mile-ev-delivery/__next._index.txt @@ -0,0 +1,15 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","template":["$","$La",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/blog/how-ai-is-transforming-last-mile-ev-delivery/__next._tree.txt b/build/blog/how-ai-is-transforming-last-mile-ev-delivery/__next._tree.txt new file mode 100644 index 0000000..1bdf87d --- /dev/null +++ b/build/blog/how-ai-is-transforming-last-mile-ev-delivery/__next._tree.txt @@ -0,0 +1,10 @@ +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +:HL["/images/blog-post-pic-17.webp","image"] +0:{"tree":{"name":"","param":null,"prefetchHints":16,"slots":{"children":{"name":"blog","param":null,"prefetchHints":0,"slots":{"children":{"name":"slug","param":{"type":"d","key":"how-ai-is-transforming-last-mile-ev-delivery","siblings":null},"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}}}}}},"staleTime":300,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/blog/how-ai-is-transforming-last-mile-ev-delivery/__next.blog.$d$slug.__PAGE__.txt b/build/blog/how-ai-is-transforming-last-mile-ev-delivery/__next.blog.$d$slug.__PAGE__.txt new file mode 100644 index 0000000..725c261 --- /dev/null +++ b/build/blog/how-ai-is-transforming-last-mile-ev-delivery/__next.blog.$d$slug.__PAGE__.txt @@ -0,0 +1,520 @@ +1:"$Sreact.fragment" +8:I[22016,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],""] +9:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"ScrollReveal"] +14:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +15:"$Sreact.suspense" +17:I[5500,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"Image"] +18:I[23096,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"default"] +:HL["/images/blog-post-pic-17.webp","image"] +2:T3d6f, + .dm-single-blog { + --dm-red: #c01227; + --dm-red-hover: #e31d32; + --dm-radius-card: 22px; + --dm-radius-img: 20px; + --dm-radius-badge: 8px; + --dm-shadow-card: 0 4px 24px rgba(15, 23, 42, 0.05); + --dm-border: 1px solid rgba(15, 23, 42, 0.09); + --dm-space-p: 24px; + --dm-space-h: 32px; + --dm-space-img: 32px; + --dm-space-quote: 40px; + --dm-sticky-top: 138px; + --dm-measure: min(1100px, 100%); + font-family: var(--font-manrope), sans-serif; + } + + /* Heading normalization. Beat the global theme's .elementor-kit-5 h1-h6 + (120/80/60px UPPERCASE) rules with !important on our own classes. */ + .dm-single-blog :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline, + specificity 0-1-1) so blog links keep our colors and never get underlined. */ + .dm-single-blog a { text-decoration: none !important; } + + /* Page banner: tall homepage-scale frame with only badge + title inside */ + /* Compound selector (specificity 20) + !important beats the global 800px + single-class height rules so the blog banner can use viewport heights. */ + .custom-standard-hero-card.dm-banner-card { + height: 90vh !important; + min-height: 85vh !important; + } + @media (max-width: 1024px) { + .custom-standard-hero-card.dm-banner-card { height: 80vh !important; min-height: 75vh !important; } + } + @media (max-width: 600px) { + .custom-standard-hero-card.dm-banner-card { height: 78vh !important; min-height: 72vh !important; } + } + + .dm-banner-inner { + position: relative; width: 100%; height: 100%; + display: flex; flex-direction: column; align-items: center; justify-content: center; + text-align: center; gap: clamp(22px, 2.6vw, 34px); + padding: clamp(48px, 8vh, 96px) clamp(20px, 5vw, 48px); + } + + .dm-banner-category { + display: inline-block; background: var(--dm-red); color: #fff; + font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.6px; + padding: 9px 18px; border-radius: 999px; box-shadow: 0 8px 22px rgba(192,18,39,0.45); + } + .dm-banner-title { + font-family: var(--font-manrope), sans-serif !important; + font-size: clamp(34px, 5vw, 60px) !important; font-weight: 850 !important; + line-height: 1.16 !important; letter-spacing: -1.2px !important; + color: #ffffff !important; margin: 0; max-width: 820px; + text-wrap: balance; text-shadow: 0 2px 30px rgba(0,0,0,0.38); + } + @media (max-width: 1024px) { .dm-banner-title { font-size: clamp(32px, 6vw, 48px) !important; max-width: 90%; } } + @media (max-width: 600px) { .dm-banner-title { font-size: clamp(28px, 8vw, 38px) !important; max-width: 90%; } } + + /* Content wrap begins immediately below the banner */ + /* Shared content container: the SAME max-width + horizontal padding is used + by BlogPostFooter (.dm-blog-footer-inner) so the article body, headings, + images, Prev/Next, Related Articles and the CTA banner all align to one + grid with identical left/right edges. Keep both in sync. */ + .dm-blog-wrap { + max-width: 1280px; margin: 0 auto; + /* 20px mobile padding floor → 40px on desktop; matches the footer container. */ + padding: clamp(14px, 2vw, 26px) clamp(20px, 4vw, 40px) 0; + } + @media (max-width: 767px) { + .dm-blog-wrap { + padding-left: 16px; + padding-right: 16px; + } + } + + /* ── Article meta bar (directly under the hero) ── */ + .dm-meta-bar { + display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 14px 24px; + padding: clamp(20px, 2.6vw, 30px) 0; margin-bottom: clamp(26px, 3vw, 44px); + border-bottom: 1px solid rgba(15,23,42,0.10); + } + .dm-meta-breadcrumb ol { + list-style: none; display: flex; flex-wrap: wrap; align-items: center; + gap: 8px; margin: 0; padding: 0; font-size: 13px; font-weight: 600; color: #64748b; + } + .dm-meta-breadcrumb a { color: #64748b !important; text-decoration: none; transition: color .2s ease; } + .dm-meta-breadcrumb a:hover { color: var(--dm-red) !important; } + .dm-meta-sep { color: #cbd5e1; } + .dm-meta-current { + color: #0f172a; font-weight: 700; + max-width: min(40ch, 46vw); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; + } + @media (max-width: 600px) { .dm-meta-current { max-width: 56vw; } } + .dm-meta-items { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 20px; } + .dm-meta-item { + display: inline-flex; align-items: center; gap: 7px; + font-size: 13.5px; font-weight: 600; color: #475569; + } + .dm-meta-item svg { color: var(--dm-red); flex: 0 0 auto; } + .dm-meta-author { color: #0f172a; font-weight: 700; } + @media (max-width: 600px) { .dm-meta-bar { gap: 12px; } } + .dm-blog-layout { + display: grid; grid-template-columns: minmax(0,1fr) 320px; + /* Tighter gap gives the reading column more room next to the 320px sidebar. */ + gap: clamp(28px, 3vw, 56px); align-items: start; + } + @media (max-width: 1024px) { + .dm-blog-layout { grid-template-columns: 1fr; gap: 48px; } + /* Single-column (tablet/mobile): cap the reading column and centre it so the + article never sits left-aligned with a large empty right gutter. */ + .dm-blog-main { max-width: 900px; margin-inline: auto; } + } + .dm-blog-main { min-width: 0; } + + /* ── Intro lead ── */ + .dm-blog-intro { + max-width: var(--dm-measure); + font-size: clamp(18px, 1.5vw, 20px); line-height: 1.65; font-weight: 500; + color: #475569; margin: 0 0 clamp(26px, 3vw, 38px); padding-left: 20px; + border-left: 3px solid var(--dm-red); + } + + /* ── Article body ── */ + .dm-article-body { max-width: var(--dm-measure); } + .dm-article-p { + font-size: 18px !important; line-height: 1.8 !important; color: #334155; font-weight: 450; + margin: 0 0 var(--dm-space-p); + } + .dm-article-h2 { + font-size: clamp(23px, 2vw, 30px) !important; font-weight: 800 !important; letter-spacing: -.3px !important; + color: #0f172a !important; line-height: 1.3 !important; margin: 48px 0 var(--dm-space-h); + text-wrap: balance; + } + /* Each article block is wrapped in its OWN ScrollReveal
    , so a bare + :first-child rule matched every heading (each is the only child of its + wrapper) and zeroed its top margin, collapsing the gap above every + section heading. Scope the reset to only the article body's first block. */ + .dm-article-body > :first-child :where(.dm-article-h2, .dm-article-h3), + .dm-article-body > .dm-article-h2:first-child, + .dm-article-body > .dm-article-h3:first-child { margin-top: 0; } + .dm-article-h3 { + font-size: clamp(19px, 1.5vw, 23px) !important; font-weight: 800 !important; letter-spacing: -.2px !important; + color: #1e293b !important; line-height: 1.34 !important; margin: 40px 0 18px; + text-wrap: balance; + } + @media (max-width: 600px) { + .dm-article-p { font-size: 16px !important; } + .dm-article-ul li, .dm-article-ol li { font-size: 15.5px; } + .dm-article-h2 { font-size: clamp(22px, 6vw, 28px) !important; margin-top: 38px; } + .dm-article-h3 { font-size: clamp(18px, 5vw, 22px) !important; } + } + + .dm-article-ul, .dm-article-ol { + /* Top margin (was 0) separates the list from the paragraph above it; + matching bottom margin keeps it clear of the next heading/paragraph. + Slightly larger than --dm-space-p so the list reads as its own block. */ + margin: clamp(26px, 2.4vw, 32px) 0 clamp(26px, 2.4vw, 32px); + padding-left: 2px; list-style: none; + display: flex; flex-direction: column; gap: 15px; + } + /* Prefixed with .dm-article-body so these beat the theme's global + ".logico-front-end ul li:before" fontello-glyph bullet (specificity 0,1,3), + which otherwise replaces our clean red dot with a misaligned checkmark glyph + and adds its own 1.7em indent. */ + .dm-article-body .dm-article-ul li, .dm-article-body .dm-article-ol li { + position: relative; padding-left: 34px; + font-size: 17px; line-height: 1.65; color: #334155; font-weight: 450; + } + .dm-article-body .dm-article-ul li::before { + content: ""; position: absolute; left: 7px; top: 10px; + width: 8px; height: 8px; border-radius: 50%; background: var(--dm-red); + /* kill any inherited fontello glyph from the global rule */ + font-size: 0; line-height: 0; + } + .dm-article-ol { counter-reset: dm-li; } + .dm-article-body .dm-article-ol li { counter-increment: dm-li; } + .dm-article-body .dm-article-ol li::before { + content: counter(dm-li); position: absolute; left: 0; top: 0; + width: 24px; height: 24px; border-radius: 7px; + background: rgba(192,18,39,0.10); color: var(--dm-red); + font-size: 12px; font-weight: 800; display: flex; align-items: center; justify-content: center; + } + + /* ── Quote ── */ + .dm-article-quote { + position: relative; margin: var(--dm-space-quote) 0; padding: 30px 32px 30px 64px; + background: linear-gradient(135deg, #fbf2f3 0%, #fdf7f8 100%); + border-left: 4px solid var(--dm-red); border-radius: 0 18px 18px 0; + box-shadow: 0 8px 28px rgba(192, 18, 39, 0.06); + } + .dm-article-quote::before { + content: "\201C"; position: absolute; left: 22px; top: 8px; + font-family: Georgia, "Times New Roman", serif; + font-size: 64px; line-height: 1; color: rgba(192, 18, 39, 0.28); font-weight: 700; + } + .dm-article-quote p { + font-size: clamp(19px, 2vw, 23px); line-height: 1.5; font-weight: 600; + font-style: italic; color: #1e293b; margin: 0; + } + .dm-article-quote cite { + display: block; margin-top: 16px; font-size: 13px; font-weight: 700; + font-style: normal; color: var(--dm-red); text-transform: uppercase; letter-spacing: .6px; + } + @media (max-width: 600px) { .dm-article-quote { padding: 26px 22px; } .dm-article-quote::before { display: none; } } + + /* ── Images ── */ + .dm-article-figure { margin: var(--dm-space-img) 0; } + .dm-article-figure-img { + position: relative; display: block; width: 100%; aspect-ratio: 16 / 9; + border-radius: var(--dm-radius-img); overflow: hidden; box-shadow: 0 14px 34px rgba(15,23,42,0.10); + } + .dm-article-figure figcaption { + margin-top: 14px; font-size: 13.5px; color: #94a3b8; font-weight: 500; + text-align: center; font-style: italic; + } + + /* ── Sidebar ── */ + .dm-blog-aside-wrap { position: relative; } + .dm-blog-sidebar { + display: flex; flex-direction: column; gap: 18px; + position: sticky; top: var(--dm-sticky-top); + } + @media (max-width: 1024px) { .dm-blog-sidebar { position: static; gap: 20px; } } + + .dm-blog-widget { + background: #fff; border: var(--dm-border); border-radius: var(--dm-radius-card); + padding: 20px; box-shadow: var(--dm-shadow-card); + } + .dm-blog-widget-title { + font-size: 13px !important; font-weight: 700 !important; text-transform: uppercase !important; + letter-spacing: .8px !important; line-height: 1.35 !important; color: #0f172a !important; + margin: 0 0 15px; padding: 0 0 12px; + border-bottom: 1px solid rgba(15,23,42,0.08); + overflow: visible; white-space: normal; word-break: normal; + } + + /* Search */ + .dm-sr-only { + position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; + overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; + } + .dm-blog-search { position: relative; } + .dm-blog-search-form { position: relative; } + .dm-blog-search-input { + width: 100%; height: 46px; border: 1.5px solid #e2e8f0; border-radius: 12px; + padding: 0 42px 0 15px; font-size: 14px; font-family: inherit; color: #0f172a; + background: #f8fafc; transition: border-color .2s ease, box-shadow .2s ease, background .2s ease; + } + .dm-blog-search-input::placeholder { color: #9c9c9c; } + .dm-blog-search-input:focus { + outline: none; border-color: var(--dm-red); background: #fff; + box-shadow: 0 0 0 3px rgba(192,18,39,0.11); + } + .dm-blog-search-icon { + position: absolute; right: 14px; top: 50%; transform: translateY(-50%); + color: #94a3b8; pointer-events: none; display: flex; + } + .dm-blog-search-results { + position: absolute; z-index: 20; top: calc(100% + 8px); left: 0; right: 0; + background: #fff; border: 1px solid rgba(15,23,42,0.10); border-radius: 14px; + box-shadow: 0 18px 42px rgba(15,23,42,0.14); overflow: hidden; + } + .dm-blog-search-results ul { list-style: none; margin: 0; padding: 6px; } + .dm-blog-search-result { + display: flex; flex-direction: column; gap: 3px; padding: 10px 12px; + border-radius: 10px; text-decoration: none; transition: background .15s ease; + } + .dm-blog-search-result:hover { background: #f8fafc; } + .dm-blog-search-result-cat { + font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .8px; color: var(--dm-red); + } + .dm-blog-search-result-title { font-size: 13.5px; font-weight: 600; color: #1e293b; line-height: 1.35; } + .dm-blog-search-empty { margin: 0; padding: 14px 12px; font-size: 13px; color: #64748b; } + + /* Recent posts */ + .dm-blog-recent { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 15px; } + .dm-blog-recent-item { display: flex; gap: 13px; align-items: center; text-decoration: none; } + .dm-blog-recent-thumb { + position: relative; flex: 0 0 62px; width: 62px; height: 62px; + border-radius: 13px; overflow: hidden; background: #f1f5f9; + } + .dm-blog-recent-meta { display: flex; flex-direction: column; gap: 4px; min-width: 0; } + .dm-blog-recent-title { + font-size: 13.5px; font-weight: 700; color: #1e293b; line-height: 1.35; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-blog-recent-item:hover .dm-blog-recent-title { color: var(--dm-red); } + .dm-blog-recent-date { font-size: 11.5px; font-weight: 600; color: #94a3b8; } + + /* Categories */ + .dm-blog-categories { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; } + .dm-blog-category-item { + display: flex; align-items: center; justify-content: space-between; gap: 10px; + padding: 11px 2px; text-decoration: none; font-size: 14px; font-weight: 600; color: #334155 !important; + border-bottom: 1px solid rgba(15,23,42,0.06); transition: color .2s ease, padding-left .2s ease; + } + .dm-blog-categories li:last-child .dm-blog-category-item { border-bottom: none; } + .dm-blog-category-item:hover { color: var(--dm-red); padding-left: 6px; } + .dm-blog-category-item > span:first-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } + .dm-blog-category-count { + flex: 0 0 auto; font-size: 11px; font-weight: 800; color: #94a3b8; background: #f1f5f9; + min-width: 24px; height: 22px; border-radius: 7px; display: inline-flex; + align-items: center; justify-content: center; padding: 0 7px; + } + + /* CTA card */ + .dm-blog-cta-card { background: #1f1f1f; border-color: #1f1f1f; } + .dm-blog-cta-title { font-size: 18px !important; font-weight: 800 !important; color: #fff !important; line-height: 1.32 !important; margin: 0 0 10px; letter-spacing: -.2px !important; } + .dm-blog-cta-text { font-size: 13.5px; line-height: 1.6; color: #c7c7c7; margin: 0 0 20px; font-weight: 450; } + .dm-blog-cta-btn { + display: inline-flex; align-items: center; gap: 8px; + background: var(--dm-red); color: #fff !important; font-size: 13.5px; font-weight: 700; + padding: 12px 22px; border-radius: 12px; text-decoration: none; + transition: background .2s ease, transform .2s ease; + } + .dm-blog-cta-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } +0:{"rsc":["$","$1","c",{"children":[["$","div",null,{"className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"Article\",\"headline\":\"How Better Planning Improves Last-Mile EV Delivery\",\"description\":\"A practical look at how EV fleets can plan routes, manage charging, and keep delivery promises without adding unnecessary vehicles.\",\"image\":[\"https://www.doormile.com/images/blog-post-pic-17.webp\"],\"datePublished\":\"2025-10-02T00:00:00.000Z\",\"dateModified\":\"2025-10-02T00:00:00.000Z\",\"author\":{\"@type\":\"Organization\",\"name\":\"Doormile Team\",\"url\":\"https://www.doormile.com\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Doormile\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://www.doormile.com/images/cropped-image-2.png\"}},\"mainEntityOfPage\":{\"@type\":\"WebPage\",\"@id\":\"https://www.doormile.com/blog/how-ai-is-transforming-last-mile-ev-delivery\"},\"articleSection\":\"Technology\"}"}}],["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https://www.doormile.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https://www.doormile.com/blog\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"How Better Planning Improves Last-Mile EV Delivery\",\"item\":\"https://www.doormile.com/blog/how-ai-is-transforming-last-mile-ev-delivery\"}]}"}}],["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":[["$","article",null,{"className":"dm-single-blog","children":[["$","link",null,{"rel":"preload","as":"image","href":"/images/blog-post-pic-17.webp"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$2"}}],"$L3","$L4"]}],"$L5"]}]}]]}],["$L6"],"$L7"]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} +3:["$","div",null,{"className":"custom-standard-hero-container","children":["$","div",null,{"className":"custom-standard-hero-card dm-banner-card","style":{"backgroundImage":"url(/images/blog-post-pic-17.webp)","--hero-overlay":"linear-gradient(180deg, rgba(0,0,0,0.38) 0%, rgba(0,0,0,0.46) 55%, rgba(0,0,0,0.60) 100%)"},"children":["$","div",null,{"className":"e-con-inner dm-banner-inner","children":[["$","span",null,{"className":"dm-banner-category","children":"Technology"}],["$","h1",null,{"className":"dm-banner-title","children":"How Better Planning Improves Last-Mile EV Delivery"}]]}]}]}] +4:["$","div",null,{"className":"dm-blog-wrap","children":[["$","div",null,{"className":"dm-meta-bar","children":[["$","nav",null,{"className":"dm-meta-breadcrumb","aria-label":"Breadcrumb","children":["$","ol",null,{"children":[["$","li",null,{"children":["$","$L8",null,{"href":"/","children":"Home"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"children":["$","$L8",null,{"href":"/blog","children":"Blog"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"aria-current":"page","className":"dm-meta-current","children":"How Better Planning Improves Last-Mile EV Delivery"}]]}]}],["$","div",null,{"className":"dm-meta-items","children":[["$","span",null,{"className":"dm-meta-item dm-meta-author","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","path",null,{"d":"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"}],["$","circle",null,{"cx":"12","cy":"7","r":"4"}]]}],"Doormile Team"]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","rect",null,{"x":"3","y":"4","width":"18","height":"18","rx":"2"}],["$","line",null,{"x1":"16","y1":"2","x2":"16","y2":"6"}],["$","line",null,{"x1":"8","y1":"2","x2":"8","y2":"6"}],["$","line",null,{"x1":"3","y1":"10","x2":"21","y2":"10"}]]}],["$","time",null,{"dateTime":"2025-10-02","children":"Oct 2, 2025"}]]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","circle",null,{"cx":"12","cy":"12","r":"9"}],["$","polyline",null,{"points":"12 7 12 12 15 14"}]]}],2," min read"]}]]}]]}],["$","div",null,{"className":"dm-blog-layout","children":[["$","div",null,{"className":"dm-blog-main","children":[["$","p",null,{"className":"dm-blog-intro","children":"The last mile is already difficult to plan. With electric vehicles, the team also has to think about battery range, charging time, rider load, traffic, and delivery windows. Good planning turns those moving parts into a workable dispatch plan."}],["$","div",null,{"className":"dm-article-body","children":[["$","$L9","0",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"For a long time, last-mile planning depended on dispatchers, spreadsheets, and local experience. That experience still matters. The problem is that it gets stretched thin when order volume rises and the fleet includes EVs."}]}],["$","$L9","1",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"The shift from fixed rules to daily planning"}]}],["$","$L9","2",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"A fixed-zone plan may look clean in the morning, but the road rarely follows the plan. A rider may get delayed near Hitec City, a gated community may hold a vehicle for ten extra minutes, or a battery may drain faster because the load is heavier than usual."}]}],["$","$L9","3",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ul",null,{"className":"dm-article-ul","children":[["$","li","0",{"children":"Order volumes by area, time slot, and customer type"}],["$","li","1",{"children":"Travel times based on the city's actual traffic patterns"}],["$","li","2",{"children":"Battery use by vehicle type, rider load, and route length"}],["$","li","3",{"children":"Feedback from completed deliveries, failed attempts, and late arrivals"}]]}]}],["$","$L9","4",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h3",null,{"className":"dm-article-h3","children":"Adjusting during the day"}]}],["$","$L9","5",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"The first plan is only the starting point. By 11 a.m., traffic may change, a high-priority order may arrive, or one vehicle may return with less charge than expected. The dispatch team needs a way to adjust without rebuilding the whole day by hand."}]}],"$La","$Lb","$Lc","$Ld","$Le","$Lf","$L10"]}]]}],"$L11"]}]]}] +12:T2021, + .dm-blog-footer { + font-family: var(--font-manrope), sans-serif; --dm-red: #c01227; --dm-red-hover: #e31d32; + /* The global theme applies 72px top/bottom section padding — strip it so the + inner container is the single source of vertical rhythm (no double gap). */ + padding: 0 !important; + } + /* Neutralize the global theme's 120/80/60px UPPERCASE heading rules */ + .dm-blog-footer :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline) */ + .dm-blog-footer a { text-decoration: none !important; } + /* Shared content container — mirrors SingleBlog's .dm-blog-wrap (same 1280px + max-width + 20→40px horizontal padding) so Prev/Next, Related and the CTA + align to the exact same left/right edges as the article body above. + Vertical rhythm: ~64px from the article end to the Prev/Next divider, then a + consistent ~64–72px section→section gap (no 120px+ voids). */ + .dm-blog-footer-inner { + max-width: 1280px; margin: 0 auto; + /* Compact vertical rhythm on an 8px system. Top padding sets the + article→Prev/Next gap (~24–32px); the inter-section gap sets the + Prev/Next→Related gap (~32–48px). No large arbitrary voids. */ + /* Minimal bottom padding — the global site footer already contributes its + own 20px top inset, so the CTA banner sits close to it without a void. */ + padding: clamp(24px, 3vw, 32px) clamp(20px, 4vw, 40px) clamp(8px, 1.5vw, 16px); + display: flex; flex-direction: column; gap: clamp(32px, 4vw, 48px); + } + @media (max-width: 767px) { + .dm-blog-footer-inner { + padding-left: 16px; + padding-right: 16px; + } + } + + /* Prev / Next */ + .dm-prevnext { + display: grid; grid-template-columns: 1fr 1fr; gap: 20px; + /* Halved from 40px: tight divider→cards spacing without crowding. */ + padding-top: clamp(16px, 2vw, 24px); border-top: 1px solid rgba(15,23,42,0.08); + } + @media (max-width: 640px) { .dm-prevnext { grid-template-columns: 1fr; } } + .dm-prevnext-placeholder { display: block; } + .dm-prevnext-card { + display: flex; gap: 16px; align-items: center; padding: 16px; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + text-decoration: none; transition: transform .3s ease, box-shadow .3s ease, border-color .3s ease; + } + .dm-prevnext-card:hover { + transform: translateY(-4px); border-color: rgba(192,18,39,0.2); + box-shadow: 0 16px 34px rgba(192,18,39,0.10); + } + .dm-prevnext-thumb { + position: relative; flex: 0 0 80px; width: 80px; height: 80px; + border-radius: 16px; overflow: hidden; background: #f1f5f9; + } + .dm-prevnext-text { display: flex; flex-direction: column; gap: 5px; min-width: 0; } + .dm-prevnext-next { text-align: right; } + .dm-prevnext-next .dm-prevnext-text { align-items: flex-end; } + .dm-prevnext-label { + display: inline-flex; align-items: center; gap: 6px; + font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: 1px; color: var(--dm-red); + } + .dm-prevnext-cat { font-size: 11px; font-weight: 700; color: #94a3b8; text-transform: uppercase; letter-spacing: .5px; } + .dm-prevnext-title { + font-size: 15.5px; font-weight: 700; color: #1e293b; line-height: 1.4; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-prevnext-card:hover .dm-prevnext-title { color: var(--dm-red); } + + /* Related */ + .dm-related-heading { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 850 !important; letter-spacing: -.4px !important; + line-height: 1.25 !important; color: #0f172a !important; margin: 0 0 24px; + } + .dm-related-grid { + display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; + } + @media (max-width: 1024px) { .dm-related-grid { grid-template-columns: repeat(2, 1fr); } } + @media (max-width: 700px) { .dm-related-grid { grid-template-columns: 1fr; gap: 24px; } } + + .dm-related-card { + display: flex; flex-direction: column; height: 100%; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + overflow: hidden; box-shadow: 0 4px 24px rgba(15,23,42,0.05); text-decoration: none; + transition: transform .4s cubic-bezier(0.2,0.8,0.2,1), box-shadow .4s ease, border-color .4s ease; + } + .dm-related-card:hover { + transform: translateY(-8px); box-shadow: 0 22px 44px rgba(192,18,39,0.13); + border-color: rgba(192,18,39,0.2); + } + .dm-related-img { + position: relative; width: 100%; aspect-ratio: 16 / 10; overflow: hidden; background: #f1f5f9; + } + .dm-related-img img { transition: transform .5s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-img img { transform: scale(1.05); } + .dm-related-badge { + position: absolute; top: 14px; left: 14px; z-index: 5; background: var(--dm-red); color: #fff; + font-size: 9px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.2px; + padding: 5px 11px; border-radius: 8px; box-shadow: 0 4px 12px rgba(192,18,39,0.25); + } + .dm-related-body { display: flex; flex-direction: column; flex: 1; padding: 22px; } + .dm-related-card-title { + font-size: 17px !important; font-weight: 800 !important; color: #1e293b !important; line-height: 1.4 !important; + letter-spacing: -.2px !important; margin: 0 0 10px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-related-card:hover .dm-related-card-title { color: var(--dm-red); } + .dm-related-card-excerpt { + font-size: 13.5px; font-weight: 500; color: #64748b; line-height: 1.6; margin: 0 0 18px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + } + .dm-related-readmore { + margin-top: auto; display: inline-flex; align-items: center; gap: 7px; + font-size: 12.5px; font-weight: 800; color: var(--dm-red); + text-transform: uppercase; letter-spacing: .6px; + } + .dm-related-readmore-arrow { transition: transform .3s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-readmore-arrow { transform: translateX(5px); } + + /* Contact CTA banner */ + .dm-blog-contact-cta { + display: flex; align-items: center; justify-content: space-between; gap: 32px; + flex-wrap: wrap; + background: linear-gradient(135deg, #1a1a1a 0%, #2d1417 100%); + border-radius: 30px; padding: clamp(32px, 4vw, 56px); + position: relative; overflow: hidden; + } + .dm-blog-contact-cta::after { + content: ""; position: absolute; right: -80px; top: -80px; width: 300px; height: 300px; + background: radial-gradient(circle, rgba(192,18,39,0.40), transparent 70%); + pointer-events: none; + } + .dm-blog-contact-cta-content { position: relative; z-index: 1; max-width: 640px; } + .dm-blog-contact-eyebrow { + display: inline-block; font-size: 12px; font-weight: 800; text-transform: uppercase; + letter-spacing: 1.4px; color: #ff8088; margin-bottom: 14px; + } + .dm-blog-contact-title { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 800 !important; line-height: 1.25 !important; + letter-spacing: -.3px !important; color: #ffffff !important; margin: 0 0 12px; text-wrap: balance; + } + .dm-blog-contact-sub { + font-size: 15.5px; line-height: 1.65; color: #e2e2e2; margin: 0; font-weight: 450; + } + .dm-blog-contact-btn { + position: relative; z-index: 1; flex-shrink: 0; + display: inline-flex; align-items: center; justify-content: center; gap: 10px; + background: var(--dm-red); color: #fff !important; font-size: 15px; font-weight: 700; + padding: 16px 32px; border-radius: 16px; text-decoration: none; + box-shadow: 0 10px 26px rgba(192,18,39,0.34); + transition: background .2s ease, transform .2s ease; + } + .dm-blog-contact-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } + @media (max-width: 720px) { + .dm-blog-contact-cta { flex-direction: column; align-items: flex-start; gap: 26px; } + .dm-blog-contact-btn { width: 100%; } + } +5:["$","section",null,{"className":"dm-blog-footer","aria-label":"More articles","children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$12"}}],"$L13"]}] +6:["$","script","script-0",{"src":"/_next/static/chunks/0yvxf3ok9gcp_.js","async":true}] +7:["$","$L14",null,{"children":["$","$15",null,{"name":"Next.MetadataOutlet","children":"$@16"}]}] +a:["$","$L9","6",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"During peak traffic hours in Hyderabad, some vehicles were arriving 20 to 30 minutes later than planned. By adjusting routes based on live traffic and battery levels, the hub reduced missed delivery windows and improved on-time performance."}]}] +b:["$","$L9","7",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","figure",null,{"className":"dm-article-figure","children":[["$","span",null,{"className":"dm-article-figure-img","children":["$","$L17",null,{"src":"/images/ev-paradox.webp","alt":"Electric delivery vehicle routing visualisation","fill":true,"sizes":"(max-width: 768px) 100vw, 760px","style":{"objectFit":"cover"}}]}],["$","figcaption",null,{"children":"EV route plans need to account for range, load, traffic, and charging time before riders leave the hub."}]]}]}] +c:["$","$L9","8",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","blockquote",null,{"className":"dm-article-quote","children":[["$","p",null,{"children":"With EVs, a route is only useful if the vehicle can finish it and still return safely."}],["$","cite",null,{"children":"Doormile Operations"}]]}]}] +d:["$","$L9","9",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"What this means for operators"}]}] +e:["$","$L9","10",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"For a fleet manager, this is not about fancy software. It is about fewer emergency calls, fewer mid-route swaps, and fewer customers asking why their delivery missed the promised window."}]}] +f:["$","$L9","11",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ol",null,{"className":"dm-article-ol","children":[["$","li","0",{"children":"Record delivery times, failed attempts, traffic delays, and charging cycles."}],["$","li","1",{"children":"Build travel-time estimates from the areas your riders actually serve."}],["$","li","2",{"children":"Check every route against battery capacity before dispatch."}],["$","li","3",{"children":"Replan when traffic, orders, or vehicle availability changes."}]]}]}] +10:["$","$L9","12",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"The fleets that improve fastest are usually not the ones adding vehicles first. They are the ones removing wasted distance, planning charging properly, and giving riders routes they can complete on time."}]}] +11:["$","div",null,{"className":"dm-blog-aside-wrap","children":["$","aside",null,{"className":"dm-blog-sidebar","aria-label":"Blog sidebar","children":[["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Search"}],["$","$L18",null,{}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Recent Posts"}],["$","ul",null,{"className":"dm-blog-recent","children":[["$","li","42-less-distance-insights-from-our-hyderabad-hub",{"children":["$","$L8",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L17",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}],["$","time",null,{"dateTime":"2025-09-18","className":"dm-blog-recent-date","children":"Sep 18, 2025"}]]}]]}]}],["$","li","miletruth-ai-10-stages-to-smarter-dispatch",{"children":["$","$L8",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L17",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","time",null,{"dateTime":"2025-09-05","className":"dm-blog-recent-date","children":"Sep 5, 2025"}]]}]]}]}],["$","li","the-ev-paradox-solving-range-anxiety-for-urban-fleets",{"children":["$","$L8",null,{"href":"/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L17",null,{"src":"/images/ev-paradox.webp","alt":"The EV Paradox: Solving Range Anxiety for Urban Fleets","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}],["$","time",null,{"dateTime":"2025-08-21","className":"dm-blog-recent-date","children":"Aug 21, 2025"}]]}]]}]}],["$","li","why-mathematical-precision-beats-heuristics-in-routing",{"children":["$","$L8",null,{"href":"/blog/why-mathematical-precision-beats-heuristics-in-routing","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L17",null,{"src":"/images/blog-post-pic-14.webp","alt":"Why Mathematical Precision Beats Heuristics in Routing","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"Why Mathematical Precision Beats Heuristics in Routing"}],["$","time",null,{"dateTime":"2025-08-07","className":"dm-blog-recent-date","children":"Aug 7, 2025"}]]}]]}]}]]}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Categories"}],["$","ul",null,{"className":"dm-blog-categories","children":[["$","li","Case Study",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Case Study"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","EV Fleet",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"EV Fleet"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}],["$","li","Fleet Management",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Fleet Management"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","MileTruth",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"MileTruth"}],"$L19"]}]}],"$L1a","$L1b","$L1c"]}]]}],"$L1d"]}]}] +13:["$","div",null,{"className":"dm-blog-footer-inner","children":[["$","nav",null,{"className":"dm-prevnext","aria-label":"Article navigation","children":[["$","span",null,{"className":"dm-prevnext-placeholder"}],["$","$L8",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-prevnext-card dm-prevnext-next","children":[["$","span",null,{"className":"dm-prevnext-text","children":[["$","span",null,{"className":"dm-prevnext-label","children":["Next",["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","span",null,{"className":"dm-prevnext-cat","children":"Case Study"}],["$","span",null,{"className":"dm-prevnext-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}]]}],["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L17",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"80px","style":{"objectFit":"cover"}}]}]]}]]}],["$","div",null,{"className":"dm-related","children":[["$","h2",null,{"className":"dm-related-heading","children":"Related Articles"}],["$","div",null,{"className":"dm-related-grid","children":[["$","$L9","why-mathematical-precision-beats-heuristics-in-routing",{"delay":0,"duration":0.7,"yOffset":30,"children":["$","$L8",null,{"href":"/blog/why-mathematical-precision-beats-heuristics-in-routing","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L17",null,{"src":"/images/blog-post-pic-14.webp","alt":"Why Mathematical Precision Beats Heuristics in Routing","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Technology"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"Why Mathematical Precision Beats Heuristics in Routing"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"Fixed routing rules are easy to start with, but they often miss better stop sequences as order volume grows."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}],["$","$L9","42-less-distance-insights-from-our-hyderabad-hub",{"delay":0.08,"duration":0.7,"yOffset":30,"children":["$","$L8",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L17",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Case Study"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"A practical look at how one Hyderabad hub reduced distance, used fewer vehicles, and protected delivery windows with better route planning."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}],["$","$L9","miletruth-ai-10-stages-to-smarter-dispatch",{"delay":0.16,"duration":0.7,"yOffset":30,"children":["$","$L8",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-related-card","children":["$L1e","$L1f"]}]}]]}]]}],"$L20"]}] +16:null +19:["$","span",null,{"className":"dm-blog-category-count","children":1}] +1a:["$","li","Operations",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Operations"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +1b:["$","li","Sustainability",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Sustainability"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +1c:["$","li","Technology",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Technology"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}] +1d:["$","section",null,{"className":"dm-blog-widget dm-blog-cta-card","children":[["$","h2",null,{"className":"dm-blog-cta-title","children":"Planning delivery routes?"}],["$","p",null,{"className":"dm-blog-cta-text","children":"Talk to us about reducing wasted distance, missed windows, and avoidable vehicle time."}],["$","$L8",null,{"href":"/contact","className":"dm-blog-cta-btn","children":["Contact Us",["$","svg",null,{"width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] +1e:["$","div",null,{"className":"dm-related-img","children":[["$","$L17",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"MileTruth"}]]}] +1f:["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"From order intake to final route output, here is how a dispatch plan is checked before riders leave the hub."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] +20:["$","div",null,{"className":"dm-blog-contact-cta","children":[["$","div",null,{"className":"dm-blog-contact-cta-content","children":[["$","span",null,{"className":"dm-blog-contact-eyebrow","children":"Let's talk logistics"}],["$","h2",null,{"className":"dm-blog-contact-title","children":"Ready to move smarter with Doormile?"}],["$","p",null,{"className":"dm-blog-contact-sub","children":"Tell us about your fleet and routes — we'll show you where the distance, vehicles and emissions are hiding."}]]}],["$","$L8",null,{"href":"/contact","className":"dm-blog-contact-btn","children":["Get in Touch",["$","svg",null,{"width":"20","height":"20","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] diff --git a/build/blog/how-ai-is-transforming-last-mile-ev-delivery/__next.blog.$d$slug.txt b/build/blog/how-ai-is-transforming-last-mile-ev-delivery/__next.blog.$d$slug.txt new file mode 100644 index 0000000..e0935ae --- /dev/null +++ b/build/blog/how-ai-is-transforming-last-mile-ev-delivery/__next.blog.$d$slug.txt @@ -0,0 +1,5 @@ +1:"$Sreact.fragment" +2:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:[] +0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/blog/how-ai-is-transforming-last-mile-ev-delivery/__next.blog.txt b/build/blog/how-ai-is-transforming-last-mile-ev-delivery/__next.blog.txt new file mode 100644 index 0000000..e0935ae --- /dev/null +++ b/build/blog/how-ai-is-transforming-last-mile-ev-delivery/__next.blog.txt @@ -0,0 +1,5 @@ +1:"$Sreact.fragment" +2:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:[] +0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/blog/how-doormile-maintains-99-9-sla-compliance-at-scale.html b/build/blog/how-doormile-maintains-99-9-sla-compliance-at-scale.html new file mode 100644 index 0000000..937906b --- /dev/null +++ b/build/blog/how-doormile-maintains-99-9-sla-compliance-at-scale.html @@ -0,0 +1,1168 @@ +How Doormile Maintains 99.9% SLA Compliance at Scale – Doormile

    Doormile

    Doormile logo
    Address
    Hyderabad

    5th Floor, Vision Ultima,
    Street No.3, Jayabheri Enclave,
    Gachibowli, Hyderabad,
    Telangana 500032.

    Coimbatore

    Mayflower Valencia,
    Near Nava India Bus Stop,
    Avinashi Road,
    Udayampalayam,
    Tamil Nadu 641037.

    Bengaluru

    C612, 6th Floor,
    Trifecta Starlight,
    ITPL Road,
    Garudacharapalya,
    Mahadevapura,
    Bangalore 560048,
    Karnataka, India.

    Contact Us

    Tel : +91 86886 97941

    Email

    care@doormile.com

    Operations

    How Doormile Maintains 99.9% SLA Compliance at Scale

    Doormile Team2 min read

    Strong SLA performance is not luck. It comes from planning the day so late deliveries are the exception, not the expected risk.

    In last-mile logistics, a missed SLA is rarely caused by one big failure. It usually comes from small delays adding up across a route. How Doormile Maintains 99.9% SLA Compliance at Scale looks at how delivery teams can spot those delays early and plan around them before vehicles leave the hub.

    Why this matters for fleet teams

    Every extra kilometre costs money. It uses fuel or charge, adds rider time, wears down vehicles, and increases the chance of a late delivery. When routes are built from fixed zones or old habits, those costs repeat every day.

    • Fewer vehicles needed for the same number of drops
    • Lower cost per drop through better stop sequencing
    • ETAs that match traffic, distance, and delivery windows
    • Less fuel or charge used per completed order

    From orders to dispatch

    A good dispatch plan starts with the basics: order locations, promised delivery windows, rider capacity, vehicle range, and known traffic trouble spots. MileTruth™ checks those inputs before dispatch so the team is not fixing avoidable mistakes on the road.

    How Doormile Maintains 99.9% SLA Compliance at Scale
    Operations: route planning decisions made before dispatch.

    A route should be checked before the rider leaves, not explained after the customer calls.

    Doormile Operations

    Putting it into practice

    The best improvements usually start with simple measurements. Track distance per route, failed delivery windows, rider idle time, and orders moved between vehicles after dispatch. Those numbers show where the operation is leaking time.

    1. Benchmark today's distance, fleet size, and on-time rate.
    2. Include vehicle capacity, delivery windows, rider shifts, and battery charge.
    3. Check routes against traffic and customer commitments before dispatch.
    4. Compare the next dispatch cycle against the old plan.

    Better routing is not about pushing riders harder. It is about giving them a plan that already accounts for the real day ahead.

    \ No newline at end of file diff --git a/build/blog/how-doormile-maintains-99-9-sla-compliance-at-scale.txt b/build/blog/how-doormile-maintains-99-9-sla-compliance-at-scale.txt new file mode 100644 index 0000000..2e8a0a9 --- /dev/null +++ b/build/blog/how-doormile-maintains-99-9-sla-compliance-at-scale.txt @@ -0,0 +1,546 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +d:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +e:"$Sreact.suspense" +11:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +13:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +15:I[68027,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"P":null,"c":["","blog","how-doormile-maintains-99-9-sla-compliance-at-scale"],"q":"","i":false,"f":[[["",{"children":["blog",{"children":[["slug","how-doormile-maintains-99-9-sla-compliance-at-scale","d",null],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":["$Lc",[["$","script","script-0",{"src":"/_next/static/chunks/0yvxf3ok9gcp_.js","async":true,"nonce":"$undefined"}]],["$","$Ld",null,{"children":["$","$e",null,{"name":"Next.MetadataOutlet","children":"$@f"}]}]]}],{},null,false,null]},null,false,"$@10"]},null,false,"$@10"]},null,false,null],["$","$1","h",{"children":[null,["$","$L11",null,{"children":"$L12"}],["$","div",null,{"hidden":true,"children":["$","$L13",null,{"children":["$","$e",null,{"name":"Next.Metadata","children":"$L14"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$15",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"kmSVPuUqY3Rhw5xy4D2nn"} +16:[] +10:"$W16" +:HL["/images/last-mile-approach.webp","image"] +17:T3d6f, + .dm-single-blog { + --dm-red: #c01227; + --dm-red-hover: #e31d32; + --dm-radius-card: 22px; + --dm-radius-img: 20px; + --dm-radius-badge: 8px; + --dm-shadow-card: 0 4px 24px rgba(15, 23, 42, 0.05); + --dm-border: 1px solid rgba(15, 23, 42, 0.09); + --dm-space-p: 24px; + --dm-space-h: 32px; + --dm-space-img: 32px; + --dm-space-quote: 40px; + --dm-sticky-top: 138px; + --dm-measure: min(1100px, 100%); + font-family: var(--font-manrope), sans-serif; + } + + /* Heading normalization. Beat the global theme's .elementor-kit-5 h1-h6 + (120/80/60px UPPERCASE) rules with !important on our own classes. */ + .dm-single-blog :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline, + specificity 0-1-1) so blog links keep our colors and never get underlined. */ + .dm-single-blog a { text-decoration: none !important; } + + /* Page banner: tall homepage-scale frame with only badge + title inside */ + /* Compound selector (specificity 20) + !important beats the global 800px + single-class height rules so the blog banner can use viewport heights. */ + .custom-standard-hero-card.dm-banner-card { + height: 90vh !important; + min-height: 85vh !important; + } + @media (max-width: 1024px) { + .custom-standard-hero-card.dm-banner-card { height: 80vh !important; min-height: 75vh !important; } + } + @media (max-width: 600px) { + .custom-standard-hero-card.dm-banner-card { height: 78vh !important; min-height: 72vh !important; } + } + + .dm-banner-inner { + position: relative; width: 100%; height: 100%; + display: flex; flex-direction: column; align-items: center; justify-content: center; + text-align: center; gap: clamp(22px, 2.6vw, 34px); + padding: clamp(48px, 8vh, 96px) clamp(20px, 5vw, 48px); + } + + .dm-banner-category { + display: inline-block; background: var(--dm-red); color: #fff; + font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.6px; + padding: 9px 18px; border-radius: 999px; box-shadow: 0 8px 22px rgba(192,18,39,0.45); + } + .dm-banner-title { + font-family: var(--font-manrope), sans-serif !important; + font-size: clamp(34px, 5vw, 60px) !important; font-weight: 850 !important; + line-height: 1.16 !important; letter-spacing: -1.2px !important; + color: #ffffff !important; margin: 0; max-width: 820px; + text-wrap: balance; text-shadow: 0 2px 30px rgba(0,0,0,0.38); + } + @media (max-width: 1024px) { .dm-banner-title { font-size: clamp(32px, 6vw, 48px) !important; max-width: 90%; } } + @media (max-width: 600px) { .dm-banner-title { font-size: clamp(28px, 8vw, 38px) !important; max-width: 90%; } } + + /* Content wrap begins immediately below the banner */ + /* Shared content container: the SAME max-width + horizontal padding is used + by BlogPostFooter (.dm-blog-footer-inner) so the article body, headings, + images, Prev/Next, Related Articles and the CTA banner all align to one + grid with identical left/right edges. Keep both in sync. */ + .dm-blog-wrap { + max-width: 1280px; margin: 0 auto; + /* 20px mobile padding floor → 40px on desktop; matches the footer container. */ + padding: clamp(14px, 2vw, 26px) clamp(20px, 4vw, 40px) 0; + } + @media (max-width: 767px) { + .dm-blog-wrap { + padding-left: 16px; + padding-right: 16px; + } + } + + /* ── Article meta bar (directly under the hero) ── */ + .dm-meta-bar { + display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 14px 24px; + padding: clamp(20px, 2.6vw, 30px) 0; margin-bottom: clamp(26px, 3vw, 44px); + border-bottom: 1px solid rgba(15,23,42,0.10); + } + .dm-meta-breadcrumb ol { + list-style: none; display: flex; flex-wrap: wrap; align-items: center; + gap: 8px; margin: 0; padding: 0; font-size: 13px; font-weight: 600; color: #64748b; + } + .dm-meta-breadcrumb a { color: #64748b !important; text-decoration: none; transition: color .2s ease; } + .dm-meta-breadcrumb a:hover { color: var(--dm-red) !important; } + .dm-meta-sep { color: #cbd5e1; } + .dm-meta-current { + color: #0f172a; font-weight: 700; + max-width: min(40ch, 46vw); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; + } + @media (max-width: 600px) { .dm-meta-current { max-width: 56vw; } } + .dm-meta-items { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 20px; } + .dm-meta-item { + display: inline-flex; align-items: center; gap: 7px; + font-size: 13.5px; font-weight: 600; color: #475569; + } + .dm-meta-item svg { color: var(--dm-red); flex: 0 0 auto; } + .dm-meta-author { color: #0f172a; font-weight: 700; } + @media (max-width: 600px) { .dm-meta-bar { gap: 12px; } } + .dm-blog-layout { + display: grid; grid-template-columns: minmax(0,1fr) 320px; + /* Tighter gap gives the reading column more room next to the 320px sidebar. */ + gap: clamp(28px, 3vw, 56px); align-items: start; + } + @media (max-width: 1024px) { + .dm-blog-layout { grid-template-columns: 1fr; gap: 48px; } + /* Single-column (tablet/mobile): cap the reading column and centre it so the + article never sits left-aligned with a large empty right gutter. */ + .dm-blog-main { max-width: 900px; margin-inline: auto; } + } + .dm-blog-main { min-width: 0; } + + /* ── Intro lead ── */ + .dm-blog-intro { + max-width: var(--dm-measure); + font-size: clamp(18px, 1.5vw, 20px); line-height: 1.65; font-weight: 500; + color: #475569; margin: 0 0 clamp(26px, 3vw, 38px); padding-left: 20px; + border-left: 3px solid var(--dm-red); + } + + /* ── Article body ── */ + .dm-article-body { max-width: var(--dm-measure); } + .dm-article-p { + font-size: 18px !important; line-height: 1.8 !important; color: #334155; font-weight: 450; + margin: 0 0 var(--dm-space-p); + } + .dm-article-h2 { + font-size: clamp(23px, 2vw, 30px) !important; font-weight: 800 !important; letter-spacing: -.3px !important; + color: #0f172a !important; line-height: 1.3 !important; margin: 48px 0 var(--dm-space-h); + text-wrap: balance; + } + /* Each article block is wrapped in its OWN ScrollReveal
    , so a bare + :first-child rule matched every heading (each is the only child of its + wrapper) and zeroed its top margin, collapsing the gap above every + section heading. Scope the reset to only the article body's first block. */ + .dm-article-body > :first-child :where(.dm-article-h2, .dm-article-h3), + .dm-article-body > .dm-article-h2:first-child, + .dm-article-body > .dm-article-h3:first-child { margin-top: 0; } + .dm-article-h3 { + font-size: clamp(19px, 1.5vw, 23px) !important; font-weight: 800 !important; letter-spacing: -.2px !important; + color: #1e293b !important; line-height: 1.34 !important; margin: 40px 0 18px; + text-wrap: balance; + } + @media (max-width: 600px) { + .dm-article-p { font-size: 16px !important; } + .dm-article-ul li, .dm-article-ol li { font-size: 15.5px; } + .dm-article-h2 { font-size: clamp(22px, 6vw, 28px) !important; margin-top: 38px; } + .dm-article-h3 { font-size: clamp(18px, 5vw, 22px) !important; } + } + + .dm-article-ul, .dm-article-ol { + /* Top margin (was 0) separates the list from the paragraph above it; + matching bottom margin keeps it clear of the next heading/paragraph. + Slightly larger than --dm-space-p so the list reads as its own block. */ + margin: clamp(26px, 2.4vw, 32px) 0 clamp(26px, 2.4vw, 32px); + padding-left: 2px; list-style: none; + display: flex; flex-direction: column; gap: 15px; + } + /* Prefixed with .dm-article-body so these beat the theme's global + ".logico-front-end ul li:before" fontello-glyph bullet (specificity 0,1,3), + which otherwise replaces our clean red dot with a misaligned checkmark glyph + and adds its own 1.7em indent. */ + .dm-article-body .dm-article-ul li, .dm-article-body .dm-article-ol li { + position: relative; padding-left: 34px; + font-size: 17px; line-height: 1.65; color: #334155; font-weight: 450; + } + .dm-article-body .dm-article-ul li::before { + content: ""; position: absolute; left: 7px; top: 10px; + width: 8px; height: 8px; border-radius: 50%; background: var(--dm-red); + /* kill any inherited fontello glyph from the global rule */ + font-size: 0; line-height: 0; + } + .dm-article-ol { counter-reset: dm-li; } + .dm-article-body .dm-article-ol li { counter-increment: dm-li; } + .dm-article-body .dm-article-ol li::before { + content: counter(dm-li); position: absolute; left: 0; top: 0; + width: 24px; height: 24px; border-radius: 7px; + background: rgba(192,18,39,0.10); color: var(--dm-red); + font-size: 12px; font-weight: 800; display: flex; align-items: center; justify-content: center; + } + + /* ── Quote ── */ + .dm-article-quote { + position: relative; margin: var(--dm-space-quote) 0; padding: 30px 32px 30px 64px; + background: linear-gradient(135deg, #fbf2f3 0%, #fdf7f8 100%); + border-left: 4px solid var(--dm-red); border-radius: 0 18px 18px 0; + box-shadow: 0 8px 28px rgba(192, 18, 39, 0.06); + } + .dm-article-quote::before { + content: "\201C"; position: absolute; left: 22px; top: 8px; + font-family: Georgia, "Times New Roman", serif; + font-size: 64px; line-height: 1; color: rgba(192, 18, 39, 0.28); font-weight: 700; + } + .dm-article-quote p { + font-size: clamp(19px, 2vw, 23px); line-height: 1.5; font-weight: 600; + font-style: italic; color: #1e293b; margin: 0; + } + .dm-article-quote cite { + display: block; margin-top: 16px; font-size: 13px; font-weight: 700; + font-style: normal; color: var(--dm-red); text-transform: uppercase; letter-spacing: .6px; + } + @media (max-width: 600px) { .dm-article-quote { padding: 26px 22px; } .dm-article-quote::before { display: none; } } + + /* ── Images ── */ + .dm-article-figure { margin: var(--dm-space-img) 0; } + .dm-article-figure-img { + position: relative; display: block; width: 100%; aspect-ratio: 16 / 9; + border-radius: var(--dm-radius-img); overflow: hidden; box-shadow: 0 14px 34px rgba(15,23,42,0.10); + } + .dm-article-figure figcaption { + margin-top: 14px; font-size: 13.5px; color: #94a3b8; font-weight: 500; + text-align: center; font-style: italic; + } + + /* ── Sidebar ── */ + .dm-blog-aside-wrap { position: relative; } + .dm-blog-sidebar { + display: flex; flex-direction: column; gap: 18px; + position: sticky; top: var(--dm-sticky-top); + } + @media (max-width: 1024px) { .dm-blog-sidebar { position: static; gap: 20px; } } + + .dm-blog-widget { + background: #fff; border: var(--dm-border); border-radius: var(--dm-radius-card); + padding: 20px; box-shadow: var(--dm-shadow-card); + } + .dm-blog-widget-title { + font-size: 13px !important; font-weight: 700 !important; text-transform: uppercase !important; + letter-spacing: .8px !important; line-height: 1.35 !important; color: #0f172a !important; + margin: 0 0 15px; padding: 0 0 12px; + border-bottom: 1px solid rgba(15,23,42,0.08); + overflow: visible; white-space: normal; word-break: normal; + } + + /* Search */ + .dm-sr-only { + position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; + overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; + } + .dm-blog-search { position: relative; } + .dm-blog-search-form { position: relative; } + .dm-blog-search-input { + width: 100%; height: 46px; border: 1.5px solid #e2e8f0; border-radius: 12px; + padding: 0 42px 0 15px; font-size: 14px; font-family: inherit; color: #0f172a; + background: #f8fafc; transition: border-color .2s ease, box-shadow .2s ease, background .2s ease; + } + .dm-blog-search-input::placeholder { color: #9c9c9c; } + .dm-blog-search-input:focus { + outline: none; border-color: var(--dm-red); background: #fff; + box-shadow: 0 0 0 3px rgba(192,18,39,0.11); + } + .dm-blog-search-icon { + position: absolute; right: 14px; top: 50%; transform: translateY(-50%); + color: #94a3b8; pointer-events: none; display: flex; + } + .dm-blog-search-results { + position: absolute; z-index: 20; top: calc(100% + 8px); left: 0; right: 0; + background: #fff; border: 1px solid rgba(15,23,42,0.10); border-radius: 14px; + box-shadow: 0 18px 42px rgba(15,23,42,0.14); overflow: hidden; + } + .dm-blog-search-results ul { list-style: none; margin: 0; padding: 6px; } + .dm-blog-search-result { + display: flex; flex-direction: column; gap: 3px; padding: 10px 12px; + border-radius: 10px; text-decoration: none; transition: background .15s ease; + } + .dm-blog-search-result:hover { background: #f8fafc; } + .dm-blog-search-result-cat { + font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .8px; color: var(--dm-red); + } + .dm-blog-search-result-title { font-size: 13.5px; font-weight: 600; color: #1e293b; line-height: 1.35; } + .dm-blog-search-empty { margin: 0; padding: 14px 12px; font-size: 13px; color: #64748b; } + + /* Recent posts */ + .dm-blog-recent { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 15px; } + .dm-blog-recent-item { display: flex; gap: 13px; align-items: center; text-decoration: none; } + .dm-blog-recent-thumb { + position: relative; flex: 0 0 62px; width: 62px; height: 62px; + border-radius: 13px; overflow: hidden; background: #f1f5f9; + } + .dm-blog-recent-meta { display: flex; flex-direction: column; gap: 4px; min-width: 0; } + .dm-blog-recent-title { + font-size: 13.5px; font-weight: 700; color: #1e293b; line-height: 1.35; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-blog-recent-item:hover .dm-blog-recent-title { color: var(--dm-red); } + .dm-blog-recent-date { font-size: 11.5px; font-weight: 600; color: #94a3b8; } + + /* Categories */ + .dm-blog-categories { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; } + .dm-blog-category-item { + display: flex; align-items: center; justify-content: space-between; gap: 10px; + padding: 11px 2px; text-decoration: none; font-size: 14px; font-weight: 600; color: #334155 !important; + border-bottom: 1px solid rgba(15,23,42,0.06); transition: color .2s ease, padding-left .2s ease; + } + .dm-blog-categories li:last-child .dm-blog-category-item { border-bottom: none; } + .dm-blog-category-item:hover { color: var(--dm-red); padding-left: 6px; } + .dm-blog-category-item > span:first-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } + .dm-blog-category-count { + flex: 0 0 auto; font-size: 11px; font-weight: 800; color: #94a3b8; background: #f1f5f9; + min-width: 24px; height: 22px; border-radius: 7px; display: inline-flex; + align-items: center; justify-content: center; padding: 0 7px; + } + + /* CTA card */ + .dm-blog-cta-card { background: #1f1f1f; border-color: #1f1f1f; } + .dm-blog-cta-title { font-size: 18px !important; font-weight: 800 !important; color: #fff !important; line-height: 1.32 !important; margin: 0 0 10px; letter-spacing: -.2px !important; } + .dm-blog-cta-text { font-size: 13.5px; line-height: 1.6; color: #c7c7c7; margin: 0 0 20px; font-weight: 450; } + .dm-blog-cta-btn { + display: inline-flex; align-items: center; gap: 8px; + background: var(--dm-red); color: #fff !important; font-size: 13.5px; font-weight: 700; + padding: 12px 22px; border-radius: 12px; text-decoration: none; + transition: background .2s ease, transform .2s ease; + } + .dm-blog-cta-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } +c:["$","div",null,{"className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"Article\",\"headline\":\"How Doormile Maintains 99.9% SLA Compliance at Scale\",\"description\":\"High SLA performance comes from checking ETAs before dispatch, reacting early to delays, and keeping customer commitments visible throughout the day.\",\"image\":[\"https://www.doormile.com/images/last-mile-approach.webp\"],\"datePublished\":\"2025-06-26T00:00:00.000Z\",\"dateModified\":\"2025-06-26T00:00:00.000Z\",\"author\":{\"@type\":\"Organization\",\"name\":\"Doormile Team\",\"url\":\"https://www.doormile.com\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Doormile\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://www.doormile.com/images/cropped-image-2.png\"}},\"mainEntityOfPage\":{\"@type\":\"WebPage\",\"@id\":\"https://www.doormile.com/blog/how-doormile-maintains-99-9-sla-compliance-at-scale\"},\"articleSection\":\"Operations\"}"}}],["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https://www.doormile.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https://www.doormile.com/blog\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"How Doormile Maintains 99.9% SLA Compliance at Scale\",\"item\":\"https://www.doormile.com/blog/how-doormile-maintains-99-9-sla-compliance-at-scale\"}]}"}}],["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":[["$","article",null,{"className":"dm-single-blog","children":[["$","link",null,{"rel":"preload","as":"image","href":"/images/last-mile-approach.webp"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$17"}}],"$L18","$L19"]}],"$L1a"]}]}]]}] +1b:I[22016,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],""] +1c:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"ScrollReveal"] +18:["$","div",null,{"className":"custom-standard-hero-container","children":["$","div",null,{"className":"custom-standard-hero-card dm-banner-card","style":{"backgroundImage":"url(/images/last-mile-approach.webp)","--hero-overlay":"linear-gradient(180deg, rgba(0,0,0,0.38) 0%, rgba(0,0,0,0.46) 55%, rgba(0,0,0,0.60) 100%)"},"children":["$","div",null,{"className":"e-con-inner dm-banner-inner","children":[["$","span",null,{"className":"dm-banner-category","children":"Operations"}],["$","h1",null,{"className":"dm-banner-title","children":"How Doormile Maintains 99.9% SLA Compliance at Scale"}]]}]}]}] +19:["$","div",null,{"className":"dm-blog-wrap","children":[["$","div",null,{"className":"dm-meta-bar","children":[["$","nav",null,{"className":"dm-meta-breadcrumb","aria-label":"Breadcrumb","children":["$","ol",null,{"children":[["$","li",null,{"children":["$","$L1b",null,{"href":"/","children":"Home"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"children":["$","$L1b",null,{"href":"/blog","children":"Blog"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"aria-current":"page","className":"dm-meta-current","children":"How Doormile Maintains 99.9% SLA Compliance at Scale"}]]}]}],["$","div",null,{"className":"dm-meta-items","children":[["$","span",null,{"className":"dm-meta-item dm-meta-author","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","path",null,{"d":"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"}],["$","circle",null,{"cx":"12","cy":"7","r":"4"}]]}],"Doormile Team"]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","rect",null,{"x":"3","y":"4","width":"18","height":"18","rx":"2"}],["$","line",null,{"x1":"16","y1":"2","x2":"16","y2":"6"}],["$","line",null,{"x1":"8","y1":"2","x2":"8","y2":"6"}],["$","line",null,{"x1":"3","y1":"10","x2":"21","y2":"10"}]]}],["$","time",null,{"dateTime":"2025-06-26","children":"Jun 26, 2025"}]]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","circle",null,{"cx":"12","cy":"12","r":"9"}],["$","polyline",null,{"points":"12 7 12 12 15 14"}]]}],2," min read"]}]]}]]}],["$","div",null,{"className":"dm-blog-layout","children":[["$","div",null,{"className":"dm-blog-main","children":[["$","p",null,{"className":"dm-blog-intro","children":"Strong SLA performance is not luck. It comes from planning the day so late deliveries are the exception, not the expected risk."}],["$","div",null,{"className":"dm-article-body","children":[["$","$L1c","0",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"In last-mile logistics, a missed SLA is rarely caused by one big failure. It usually comes from small delays adding up across a route. How Doormile Maintains 99.9% SLA Compliance at Scale looks at how delivery teams can spot those delays early and plan around them before vehicles leave the hub."}]}],["$","$L1c","1",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"Why this matters for fleet teams"}]}],["$","$L1c","2",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"Every extra kilometre costs money. It uses fuel or charge, adds rider time, wears down vehicles, and increases the chance of a late delivery. When routes are built from fixed zones or old habits, those costs repeat every day."}]}],["$","$L1c","3",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ul",null,{"className":"dm-article-ul","children":[["$","li","0",{"children":"Fewer vehicles needed for the same number of drops"}],["$","li","1",{"children":"Lower cost per drop through better stop sequencing"}],["$","li","2",{"children":"ETAs that match traffic, distance, and delivery windows"}],["$","li","3",{"children":"Less fuel or charge used per completed order"}]]}]}],["$","$L1c","4",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h3",null,{"className":"dm-article-h3","children":"From orders to dispatch"}]}],["$","$L1c","5",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"A good dispatch plan starts with the basics: order locations, promised delivery windows, rider capacity, vehicle range, and known traffic trouble spots. MileTruth™ checks those inputs before dispatch so the team is not fixing avoidable mistakes on the road."}]}],["$","$L1c","6",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","figure",null,{"className":"dm-article-figure","children":[["$","span",null,{"className":"dm-article-figure-img","children":"$L1d"}],"$L1e"]}]}],"$L1f","$L20","$L21","$L22","$L23"]}]]}],"$L24"]}]]}] +25:T2021, + .dm-blog-footer { + font-family: var(--font-manrope), sans-serif; --dm-red: #c01227; --dm-red-hover: #e31d32; + /* The global theme applies 72px top/bottom section padding — strip it so the + inner container is the single source of vertical rhythm (no double gap). */ + padding: 0 !important; + } + /* Neutralize the global theme's 120/80/60px UPPERCASE heading rules */ + .dm-blog-footer :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline) */ + .dm-blog-footer a { text-decoration: none !important; } + /* Shared content container — mirrors SingleBlog's .dm-blog-wrap (same 1280px + max-width + 20→40px horizontal padding) so Prev/Next, Related and the CTA + align to the exact same left/right edges as the article body above. + Vertical rhythm: ~64px from the article end to the Prev/Next divider, then a + consistent ~64–72px section→section gap (no 120px+ voids). */ + .dm-blog-footer-inner { + max-width: 1280px; margin: 0 auto; + /* Compact vertical rhythm on an 8px system. Top padding sets the + article→Prev/Next gap (~24–32px); the inter-section gap sets the + Prev/Next→Related gap (~32–48px). No large arbitrary voids. */ + /* Minimal bottom padding — the global site footer already contributes its + own 20px top inset, so the CTA banner sits close to it without a void. */ + padding: clamp(24px, 3vw, 32px) clamp(20px, 4vw, 40px) clamp(8px, 1.5vw, 16px); + display: flex; flex-direction: column; gap: clamp(32px, 4vw, 48px); + } + @media (max-width: 767px) { + .dm-blog-footer-inner { + padding-left: 16px; + padding-right: 16px; + } + } + + /* Prev / Next */ + .dm-prevnext { + display: grid; grid-template-columns: 1fr 1fr; gap: 20px; + /* Halved from 40px: tight divider→cards spacing without crowding. */ + padding-top: clamp(16px, 2vw, 24px); border-top: 1px solid rgba(15,23,42,0.08); + } + @media (max-width: 640px) { .dm-prevnext { grid-template-columns: 1fr; } } + .dm-prevnext-placeholder { display: block; } + .dm-prevnext-card { + display: flex; gap: 16px; align-items: center; padding: 16px; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + text-decoration: none; transition: transform .3s ease, box-shadow .3s ease, border-color .3s ease; + } + .dm-prevnext-card:hover { + transform: translateY(-4px); border-color: rgba(192,18,39,0.2); + box-shadow: 0 16px 34px rgba(192,18,39,0.10); + } + .dm-prevnext-thumb { + position: relative; flex: 0 0 80px; width: 80px; height: 80px; + border-radius: 16px; overflow: hidden; background: #f1f5f9; + } + .dm-prevnext-text { display: flex; flex-direction: column; gap: 5px; min-width: 0; } + .dm-prevnext-next { text-align: right; } + .dm-prevnext-next .dm-prevnext-text { align-items: flex-end; } + .dm-prevnext-label { + display: inline-flex; align-items: center; gap: 6px; + font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: 1px; color: var(--dm-red); + } + .dm-prevnext-cat { font-size: 11px; font-weight: 700; color: #94a3b8; text-transform: uppercase; letter-spacing: .5px; } + .dm-prevnext-title { + font-size: 15.5px; font-weight: 700; color: #1e293b; line-height: 1.4; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-prevnext-card:hover .dm-prevnext-title { color: var(--dm-red); } + + /* Related */ + .dm-related-heading { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 850 !important; letter-spacing: -.4px !important; + line-height: 1.25 !important; color: #0f172a !important; margin: 0 0 24px; + } + .dm-related-grid { + display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; + } + @media (max-width: 1024px) { .dm-related-grid { grid-template-columns: repeat(2, 1fr); } } + @media (max-width: 700px) { .dm-related-grid { grid-template-columns: 1fr; gap: 24px; } } + + .dm-related-card { + display: flex; flex-direction: column; height: 100%; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + overflow: hidden; box-shadow: 0 4px 24px rgba(15,23,42,0.05); text-decoration: none; + transition: transform .4s cubic-bezier(0.2,0.8,0.2,1), box-shadow .4s ease, border-color .4s ease; + } + .dm-related-card:hover { + transform: translateY(-8px); box-shadow: 0 22px 44px rgba(192,18,39,0.13); + border-color: rgba(192,18,39,0.2); + } + .dm-related-img { + position: relative; width: 100%; aspect-ratio: 16 / 10; overflow: hidden; background: #f1f5f9; + } + .dm-related-img img { transition: transform .5s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-img img { transform: scale(1.05); } + .dm-related-badge { + position: absolute; top: 14px; left: 14px; z-index: 5; background: var(--dm-red); color: #fff; + font-size: 9px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.2px; + padding: 5px 11px; border-radius: 8px; box-shadow: 0 4px 12px rgba(192,18,39,0.25); + } + .dm-related-body { display: flex; flex-direction: column; flex: 1; padding: 22px; } + .dm-related-card-title { + font-size: 17px !important; font-weight: 800 !important; color: #1e293b !important; line-height: 1.4 !important; + letter-spacing: -.2px !important; margin: 0 0 10px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-related-card:hover .dm-related-card-title { color: var(--dm-red); } + .dm-related-card-excerpt { + font-size: 13.5px; font-weight: 500; color: #64748b; line-height: 1.6; margin: 0 0 18px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + } + .dm-related-readmore { + margin-top: auto; display: inline-flex; align-items: center; gap: 7px; + font-size: 12.5px; font-weight: 800; color: var(--dm-red); + text-transform: uppercase; letter-spacing: .6px; + } + .dm-related-readmore-arrow { transition: transform .3s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-readmore-arrow { transform: translateX(5px); } + + /* Contact CTA banner */ + .dm-blog-contact-cta { + display: flex; align-items: center; justify-content: space-between; gap: 32px; + flex-wrap: wrap; + background: linear-gradient(135deg, #1a1a1a 0%, #2d1417 100%); + border-radius: 30px; padding: clamp(32px, 4vw, 56px); + position: relative; overflow: hidden; + } + .dm-blog-contact-cta::after { + content: ""; position: absolute; right: -80px; top: -80px; width: 300px; height: 300px; + background: radial-gradient(circle, rgba(192,18,39,0.40), transparent 70%); + pointer-events: none; + } + .dm-blog-contact-cta-content { position: relative; z-index: 1; max-width: 640px; } + .dm-blog-contact-eyebrow { + display: inline-block; font-size: 12px; font-weight: 800; text-transform: uppercase; + letter-spacing: 1.4px; color: #ff8088; margin-bottom: 14px; + } + .dm-blog-contact-title { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 800 !important; line-height: 1.25 !important; + letter-spacing: -.3px !important; color: #ffffff !important; margin: 0 0 12px; text-wrap: balance; + } + .dm-blog-contact-sub { + font-size: 15.5px; line-height: 1.65; color: #e2e2e2; margin: 0; font-weight: 450; + } + .dm-blog-contact-btn { + position: relative; z-index: 1; flex-shrink: 0; + display: inline-flex; align-items: center; justify-content: center; gap: 10px; + background: var(--dm-red); color: #fff !important; font-size: 15px; font-weight: 700; + padding: 16px 32px; border-radius: 16px; text-decoration: none; + box-shadow: 0 10px 26px rgba(192,18,39,0.34); + transition: background .2s ease, transform .2s ease; + } + .dm-blog-contact-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } + @media (max-width: 720px) { + .dm-blog-contact-cta { flex-direction: column; align-items: flex-start; gap: 26px; } + .dm-blog-contact-btn { width: 100%; } + } +1a:["$","section",null,{"className":"dm-blog-footer","aria-label":"More articles","children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$25"}}],"$L26"]}] +27:I[5500,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"Image"] +28:I[23096,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"default"] +1d:["$","$L27",null,{"src":"/images/last-mile-approach.webp","alt":"How Doormile Maintains 99.9% SLA Compliance at Scale","fill":true,"sizes":"(max-width: 768px) 100vw, 760px","style":{"objectFit":"cover"}}] +1e:["$","figcaption",null,{"children":"Operations: route planning decisions made before dispatch."}] +1f:["$","$L1c","7",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","blockquote",null,{"className":"dm-article-quote","children":[["$","p",null,{"children":"A route should be checked before the rider leaves, not explained after the customer calls."}],["$","cite",null,{"children":"Doormile Operations"}]]}]}] +20:["$","$L1c","8",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"Putting it into practice"}]}] +21:["$","$L1c","9",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"The best improvements usually start with simple measurements. Track distance per route, failed delivery windows, rider idle time, and orders moved between vehicles after dispatch. Those numbers show where the operation is leaking time."}]}] +22:["$","$L1c","10",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ol",null,{"className":"dm-article-ol","children":[["$","li","0",{"children":"Benchmark today's distance, fleet size, and on-time rate."}],["$","li","1",{"children":"Include vehicle capacity, delivery windows, rider shifts, and battery charge."}],["$","li","2",{"children":"Check routes against traffic and customer commitments before dispatch."}],["$","li","3",{"children":"Compare the next dispatch cycle against the old plan."}]]}]}] +23:["$","$L1c","11",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"Better routing is not about pushing riders harder. It is about giving them a plan that already accounts for the real day ahead."}]}] +24:["$","div",null,{"className":"dm-blog-aside-wrap","children":["$","aside",null,{"className":"dm-blog-sidebar","aria-label":"Blog sidebar","children":[["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Search"}],["$","$L28",null,{}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Recent Posts"}],["$","ul",null,{"className":"dm-blog-recent","children":[["$","li","how-ai-is-transforming-last-mile-ev-delivery",{"children":["$","$L1b",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"How Better Planning Improves Last-Mile EV Delivery"}],["$","time",null,{"dateTime":"2025-10-02","className":"dm-blog-recent-date","children":"Oct 2, 2025"}]]}]]}]}],["$","li","42-less-distance-insights-from-our-hyderabad-hub",{"children":["$","$L1b",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}],["$","time",null,{"dateTime":"2025-09-18","className":"dm-blog-recent-date","children":"Sep 18, 2025"}]]}]]}]}],["$","li","miletruth-ai-10-stages-to-smarter-dispatch",{"children":["$","$L1b",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","time",null,{"dateTime":"2025-09-05","className":"dm-blog-recent-date","children":"Sep 5, 2025"}]]}]]}]}],["$","li","the-ev-paradox-solving-range-anxiety-for-urban-fleets",{"children":["$","$L1b",null,{"href":"/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/ev-paradox.webp","alt":"The EV Paradox: Solving Range Anxiety for Urban Fleets","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}],["$","time",null,{"dateTime":"2025-08-21","className":"dm-blog-recent-date","children":"Aug 21, 2025"}]]}]]}]}]]}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Categories"}],["$","ul",null,{"className":"dm-blog-categories","children":[["$","li","Case Study",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Case Study"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","EV Fleet",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"EV Fleet"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}],["$","li","Fleet Management",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Fleet Management"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","MileTruth",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"MileTruth"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],"$L29","$L2a","$L2b"]}]]}],"$L2c"]}]}] +26:["$","div",null,{"className":"dm-blog-footer-inner","children":[["$","nav",null,{"className":"dm-prevnext","aria-label":"Article navigation","children":[["$","$L1b",null,{"href":"/blog/building-a-greener-city-the-future-of-urban-logistics","className":"dm-prevnext-card dm-prevnext-prev","children":[["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-6.webp","alt":"Building a Greener City: The Future of Urban Logistics","fill":true,"sizes":"80px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-prevnext-text","children":[["$","span",null,{"className":"dm-prevnext-label","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"19","y1":"12","x2":"5","y2":"12"}],["$","polyline",null,{"points":"12 19 5 12 12 5"}]]}],"Previous"]}],["$","span",null,{"className":"dm-prevnext-cat","children":"Sustainability"}],["$","span",null,{"className":"dm-prevnext-title","children":"Building a Greener City: The Future of Urban Logistics"}]]}]]}],["$","$L1b",null,{"href":"/blog/battery-simulation-the-secret-to-ev-route-pre-validation","className":"dm-prevnext-card dm-prevnext-next","children":[["$","span",null,{"className":"dm-prevnext-text","children":[["$","span",null,{"className":"dm-prevnext-label","children":["Next",["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","span",null,{"className":"dm-prevnext-cat","children":"EV Fleet"}],["$","span",null,{"className":"dm-prevnext-title","children":"Battery Simulation: The Secret to EV Route Pre-Validation"}]]}],["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-3.webp","alt":"Battery Simulation: The Secret to EV Route Pre-Validation","fill":true,"sizes":"80px","style":{"objectFit":"cover"}}]}]]}]]}],["$","div",null,{"className":"dm-related","children":[["$","h2",null,{"className":"dm-related-heading","children":"Related Articles"}],["$","div",null,{"className":"dm-related-grid","children":[["$","$L1c","how-ai-is-transforming-last-mile-ev-delivery",{"delay":0,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L27",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Technology"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"How Better Planning Improves Last-Mile EV Delivery"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"A practical look at how EV fleets can plan routes, manage charging, and keep delivery promises without adding unnecessary vehicles."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}],["$","$L1c","42-less-distance-insights-from-our-hyderabad-hub",{"delay":0.08,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L27",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Case Study"}]]}],["$","div",null,{"className":"dm-related-body","children":["$L2d","$L2e","$L2f"]}]]}]}],"$L30"]}]]}],"$L31"]}] +29:["$","li","Operations",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Operations"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +2a:["$","li","Sustainability",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Sustainability"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +2b:["$","li","Technology",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Technology"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}] +2c:["$","section",null,{"className":"dm-blog-widget dm-blog-cta-card","children":[["$","h2",null,{"className":"dm-blog-cta-title","children":"Planning delivery routes?"}],["$","p",null,{"className":"dm-blog-cta-text","children":"Talk to us about reducing wasted distance, missed windows, and avoidable vehicle time."}],["$","$L1b",null,{"href":"/contact","className":"dm-blog-cta-btn","children":["Contact Us",["$","svg",null,{"width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] +2d:["$","h3",null,{"className":"dm-related-card-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}] +2e:["$","p",null,{"className":"dm-related-card-excerpt","children":"A practical look at how one Hyderabad hub reduced distance, used fewer vehicles, and protected delivery windows with better route planning."}] +2f:["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}] +30:["$","$L1c","miletruth-ai-10-stages-to-smarter-dispatch",{"delay":0.16,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L27",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"MileTruth"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"From order intake to final route output, here is how a dispatch plan is checked before riders leave the hub."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}] +31:["$","div",null,{"className":"dm-blog-contact-cta","children":[["$","div",null,{"className":"dm-blog-contact-cta-content","children":[["$","span",null,{"className":"dm-blog-contact-eyebrow","children":"Let's talk logistics"}],["$","h2",null,{"className":"dm-blog-contact-title","children":"Ready to move smarter with Doormile?"}],["$","p",null,{"className":"dm-blog-contact-sub","children":"Tell us about your fleet and routes — we'll show you where the distance, vehicles and emissions are hiding."}]]}],["$","$L1b",null,{"href":"/contact","className":"dm-blog-contact-btn","children":["Get in Touch",["$","svg",null,{"width":"20","height":"20","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] +12:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] +32:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +f:null +14:[["$","title","0",{"children":"How Doormile Maintains 99.9% SLA Compliance at Scale – Doormile"}],["$","meta","1",{"name":"description","content":"High SLA performance comes from checking ETAs before dispatch, reacting early to delays, and keeping customer commitments visible throughout the day."}],["$","meta","2",{"name":"author","content":"Doormile Team"}],["$","meta","3",{"name":"keywords","content":"Operations,last-mile logistics,EV fleet,MileTruth,route optimisation"}],["$","meta","4",{"name":"robots","content":"index, follow"}],["$","link","5",{"rel":"canonical","href":"https://www.doormile.com/blog/how-doormile-maintains-99-9-sla-compliance-at-scale"}],["$","meta","6",{"property":"og:title","content":"How Doormile Maintains 99.9% SLA Compliance at Scale"}],["$","meta","7",{"property":"og:description","content":"High SLA performance comes from checking ETAs before dispatch, reacting early to delays, and keeping customer commitments visible throughout the day."}],["$","meta","8",{"property":"og:url","content":"https://www.doormile.com/blog/how-doormile-maintains-99-9-sla-compliance-at-scale"}],["$","meta","9",{"property":"og:site_name","content":"Doormile"}],["$","meta","10",{"property":"og:image","content":"https://www.doormile.com/images/last-mile-approach.webp"}],["$","meta","11",{"property":"og:image:alt","content":"How Doormile Maintains 99.9% SLA Compliance at Scale"}],["$","meta","12",{"property":"og:type","content":"article"}],["$","meta","13",{"property":"article:published_time","content":"2025-06-26T00:00:00.000Z"}],["$","meta","14",{"property":"article:author","content":"Doormile Team"}],["$","meta","15",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","16",{"name":"twitter:title","content":"How Doormile Maintains 99.9% SLA Compliance at Scale"}],["$","meta","17",{"name":"twitter:description","content":"High SLA performance comes from checking ETAs before dispatch, reacting early to delays, and keeping customer commitments visible throughout the day."}],["$","meta","18",{"name":"twitter:image","content":"https://www.doormile.com/images/last-mile-approach.webp"}],["$","link","19",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","20",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","21",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","22",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L32","23",{}]] diff --git a/build/blog/how-doormile-maintains-99-9-sla-compliance-at-scale/__next._full.txt b/build/blog/how-doormile-maintains-99-9-sla-compliance-at-scale/__next._full.txt new file mode 100644 index 0000000..2e8a0a9 --- /dev/null +++ b/build/blog/how-doormile-maintains-99-9-sla-compliance-at-scale/__next._full.txt @@ -0,0 +1,546 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +d:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +e:"$Sreact.suspense" +11:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +13:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +15:I[68027,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"P":null,"c":["","blog","how-doormile-maintains-99-9-sla-compliance-at-scale"],"q":"","i":false,"f":[[["",{"children":["blog",{"children":[["slug","how-doormile-maintains-99-9-sla-compliance-at-scale","d",null],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":["$Lc",[["$","script","script-0",{"src":"/_next/static/chunks/0yvxf3ok9gcp_.js","async":true,"nonce":"$undefined"}]],["$","$Ld",null,{"children":["$","$e",null,{"name":"Next.MetadataOutlet","children":"$@f"}]}]]}],{},null,false,null]},null,false,"$@10"]},null,false,"$@10"]},null,false,null],["$","$1","h",{"children":[null,["$","$L11",null,{"children":"$L12"}],["$","div",null,{"hidden":true,"children":["$","$L13",null,{"children":["$","$e",null,{"name":"Next.Metadata","children":"$L14"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$15",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"kmSVPuUqY3Rhw5xy4D2nn"} +16:[] +10:"$W16" +:HL["/images/last-mile-approach.webp","image"] +17:T3d6f, + .dm-single-blog { + --dm-red: #c01227; + --dm-red-hover: #e31d32; + --dm-radius-card: 22px; + --dm-radius-img: 20px; + --dm-radius-badge: 8px; + --dm-shadow-card: 0 4px 24px rgba(15, 23, 42, 0.05); + --dm-border: 1px solid rgba(15, 23, 42, 0.09); + --dm-space-p: 24px; + --dm-space-h: 32px; + --dm-space-img: 32px; + --dm-space-quote: 40px; + --dm-sticky-top: 138px; + --dm-measure: min(1100px, 100%); + font-family: var(--font-manrope), sans-serif; + } + + /* Heading normalization. Beat the global theme's .elementor-kit-5 h1-h6 + (120/80/60px UPPERCASE) rules with !important on our own classes. */ + .dm-single-blog :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline, + specificity 0-1-1) so blog links keep our colors and never get underlined. */ + .dm-single-blog a { text-decoration: none !important; } + + /* Page banner: tall homepage-scale frame with only badge + title inside */ + /* Compound selector (specificity 20) + !important beats the global 800px + single-class height rules so the blog banner can use viewport heights. */ + .custom-standard-hero-card.dm-banner-card { + height: 90vh !important; + min-height: 85vh !important; + } + @media (max-width: 1024px) { + .custom-standard-hero-card.dm-banner-card { height: 80vh !important; min-height: 75vh !important; } + } + @media (max-width: 600px) { + .custom-standard-hero-card.dm-banner-card { height: 78vh !important; min-height: 72vh !important; } + } + + .dm-banner-inner { + position: relative; width: 100%; height: 100%; + display: flex; flex-direction: column; align-items: center; justify-content: center; + text-align: center; gap: clamp(22px, 2.6vw, 34px); + padding: clamp(48px, 8vh, 96px) clamp(20px, 5vw, 48px); + } + + .dm-banner-category { + display: inline-block; background: var(--dm-red); color: #fff; + font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.6px; + padding: 9px 18px; border-radius: 999px; box-shadow: 0 8px 22px rgba(192,18,39,0.45); + } + .dm-banner-title { + font-family: var(--font-manrope), sans-serif !important; + font-size: clamp(34px, 5vw, 60px) !important; font-weight: 850 !important; + line-height: 1.16 !important; letter-spacing: -1.2px !important; + color: #ffffff !important; margin: 0; max-width: 820px; + text-wrap: balance; text-shadow: 0 2px 30px rgba(0,0,0,0.38); + } + @media (max-width: 1024px) { .dm-banner-title { font-size: clamp(32px, 6vw, 48px) !important; max-width: 90%; } } + @media (max-width: 600px) { .dm-banner-title { font-size: clamp(28px, 8vw, 38px) !important; max-width: 90%; } } + + /* Content wrap begins immediately below the banner */ + /* Shared content container: the SAME max-width + horizontal padding is used + by BlogPostFooter (.dm-blog-footer-inner) so the article body, headings, + images, Prev/Next, Related Articles and the CTA banner all align to one + grid with identical left/right edges. Keep both in sync. */ + .dm-blog-wrap { + max-width: 1280px; margin: 0 auto; + /* 20px mobile padding floor → 40px on desktop; matches the footer container. */ + padding: clamp(14px, 2vw, 26px) clamp(20px, 4vw, 40px) 0; + } + @media (max-width: 767px) { + .dm-blog-wrap { + padding-left: 16px; + padding-right: 16px; + } + } + + /* ── Article meta bar (directly under the hero) ── */ + .dm-meta-bar { + display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 14px 24px; + padding: clamp(20px, 2.6vw, 30px) 0; margin-bottom: clamp(26px, 3vw, 44px); + border-bottom: 1px solid rgba(15,23,42,0.10); + } + .dm-meta-breadcrumb ol { + list-style: none; display: flex; flex-wrap: wrap; align-items: center; + gap: 8px; margin: 0; padding: 0; font-size: 13px; font-weight: 600; color: #64748b; + } + .dm-meta-breadcrumb a { color: #64748b !important; text-decoration: none; transition: color .2s ease; } + .dm-meta-breadcrumb a:hover { color: var(--dm-red) !important; } + .dm-meta-sep { color: #cbd5e1; } + .dm-meta-current { + color: #0f172a; font-weight: 700; + max-width: min(40ch, 46vw); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; + } + @media (max-width: 600px) { .dm-meta-current { max-width: 56vw; } } + .dm-meta-items { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 20px; } + .dm-meta-item { + display: inline-flex; align-items: center; gap: 7px; + font-size: 13.5px; font-weight: 600; color: #475569; + } + .dm-meta-item svg { color: var(--dm-red); flex: 0 0 auto; } + .dm-meta-author { color: #0f172a; font-weight: 700; } + @media (max-width: 600px) { .dm-meta-bar { gap: 12px; } } + .dm-blog-layout { + display: grid; grid-template-columns: minmax(0,1fr) 320px; + /* Tighter gap gives the reading column more room next to the 320px sidebar. */ + gap: clamp(28px, 3vw, 56px); align-items: start; + } + @media (max-width: 1024px) { + .dm-blog-layout { grid-template-columns: 1fr; gap: 48px; } + /* Single-column (tablet/mobile): cap the reading column and centre it so the + article never sits left-aligned with a large empty right gutter. */ + .dm-blog-main { max-width: 900px; margin-inline: auto; } + } + .dm-blog-main { min-width: 0; } + + /* ── Intro lead ── */ + .dm-blog-intro { + max-width: var(--dm-measure); + font-size: clamp(18px, 1.5vw, 20px); line-height: 1.65; font-weight: 500; + color: #475569; margin: 0 0 clamp(26px, 3vw, 38px); padding-left: 20px; + border-left: 3px solid var(--dm-red); + } + + /* ── Article body ── */ + .dm-article-body { max-width: var(--dm-measure); } + .dm-article-p { + font-size: 18px !important; line-height: 1.8 !important; color: #334155; font-weight: 450; + margin: 0 0 var(--dm-space-p); + } + .dm-article-h2 { + font-size: clamp(23px, 2vw, 30px) !important; font-weight: 800 !important; letter-spacing: -.3px !important; + color: #0f172a !important; line-height: 1.3 !important; margin: 48px 0 var(--dm-space-h); + text-wrap: balance; + } + /* Each article block is wrapped in its OWN ScrollReveal
    , so a bare + :first-child rule matched every heading (each is the only child of its + wrapper) and zeroed its top margin, collapsing the gap above every + section heading. Scope the reset to only the article body's first block. */ + .dm-article-body > :first-child :where(.dm-article-h2, .dm-article-h3), + .dm-article-body > .dm-article-h2:first-child, + .dm-article-body > .dm-article-h3:first-child { margin-top: 0; } + .dm-article-h3 { + font-size: clamp(19px, 1.5vw, 23px) !important; font-weight: 800 !important; letter-spacing: -.2px !important; + color: #1e293b !important; line-height: 1.34 !important; margin: 40px 0 18px; + text-wrap: balance; + } + @media (max-width: 600px) { + .dm-article-p { font-size: 16px !important; } + .dm-article-ul li, .dm-article-ol li { font-size: 15.5px; } + .dm-article-h2 { font-size: clamp(22px, 6vw, 28px) !important; margin-top: 38px; } + .dm-article-h3 { font-size: clamp(18px, 5vw, 22px) !important; } + } + + .dm-article-ul, .dm-article-ol { + /* Top margin (was 0) separates the list from the paragraph above it; + matching bottom margin keeps it clear of the next heading/paragraph. + Slightly larger than --dm-space-p so the list reads as its own block. */ + margin: clamp(26px, 2.4vw, 32px) 0 clamp(26px, 2.4vw, 32px); + padding-left: 2px; list-style: none; + display: flex; flex-direction: column; gap: 15px; + } + /* Prefixed with .dm-article-body so these beat the theme's global + ".logico-front-end ul li:before" fontello-glyph bullet (specificity 0,1,3), + which otherwise replaces our clean red dot with a misaligned checkmark glyph + and adds its own 1.7em indent. */ + .dm-article-body .dm-article-ul li, .dm-article-body .dm-article-ol li { + position: relative; padding-left: 34px; + font-size: 17px; line-height: 1.65; color: #334155; font-weight: 450; + } + .dm-article-body .dm-article-ul li::before { + content: ""; position: absolute; left: 7px; top: 10px; + width: 8px; height: 8px; border-radius: 50%; background: var(--dm-red); + /* kill any inherited fontello glyph from the global rule */ + font-size: 0; line-height: 0; + } + .dm-article-ol { counter-reset: dm-li; } + .dm-article-body .dm-article-ol li { counter-increment: dm-li; } + .dm-article-body .dm-article-ol li::before { + content: counter(dm-li); position: absolute; left: 0; top: 0; + width: 24px; height: 24px; border-radius: 7px; + background: rgba(192,18,39,0.10); color: var(--dm-red); + font-size: 12px; font-weight: 800; display: flex; align-items: center; justify-content: center; + } + + /* ── Quote ── */ + .dm-article-quote { + position: relative; margin: var(--dm-space-quote) 0; padding: 30px 32px 30px 64px; + background: linear-gradient(135deg, #fbf2f3 0%, #fdf7f8 100%); + border-left: 4px solid var(--dm-red); border-radius: 0 18px 18px 0; + box-shadow: 0 8px 28px rgba(192, 18, 39, 0.06); + } + .dm-article-quote::before { + content: "\201C"; position: absolute; left: 22px; top: 8px; + font-family: Georgia, "Times New Roman", serif; + font-size: 64px; line-height: 1; color: rgba(192, 18, 39, 0.28); font-weight: 700; + } + .dm-article-quote p { + font-size: clamp(19px, 2vw, 23px); line-height: 1.5; font-weight: 600; + font-style: italic; color: #1e293b; margin: 0; + } + .dm-article-quote cite { + display: block; margin-top: 16px; font-size: 13px; font-weight: 700; + font-style: normal; color: var(--dm-red); text-transform: uppercase; letter-spacing: .6px; + } + @media (max-width: 600px) { .dm-article-quote { padding: 26px 22px; } .dm-article-quote::before { display: none; } } + + /* ── Images ── */ + .dm-article-figure { margin: var(--dm-space-img) 0; } + .dm-article-figure-img { + position: relative; display: block; width: 100%; aspect-ratio: 16 / 9; + border-radius: var(--dm-radius-img); overflow: hidden; box-shadow: 0 14px 34px rgba(15,23,42,0.10); + } + .dm-article-figure figcaption { + margin-top: 14px; font-size: 13.5px; color: #94a3b8; font-weight: 500; + text-align: center; font-style: italic; + } + + /* ── Sidebar ── */ + .dm-blog-aside-wrap { position: relative; } + .dm-blog-sidebar { + display: flex; flex-direction: column; gap: 18px; + position: sticky; top: var(--dm-sticky-top); + } + @media (max-width: 1024px) { .dm-blog-sidebar { position: static; gap: 20px; } } + + .dm-blog-widget { + background: #fff; border: var(--dm-border); border-radius: var(--dm-radius-card); + padding: 20px; box-shadow: var(--dm-shadow-card); + } + .dm-blog-widget-title { + font-size: 13px !important; font-weight: 700 !important; text-transform: uppercase !important; + letter-spacing: .8px !important; line-height: 1.35 !important; color: #0f172a !important; + margin: 0 0 15px; padding: 0 0 12px; + border-bottom: 1px solid rgba(15,23,42,0.08); + overflow: visible; white-space: normal; word-break: normal; + } + + /* Search */ + .dm-sr-only { + position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; + overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; + } + .dm-blog-search { position: relative; } + .dm-blog-search-form { position: relative; } + .dm-blog-search-input { + width: 100%; height: 46px; border: 1.5px solid #e2e8f0; border-radius: 12px; + padding: 0 42px 0 15px; font-size: 14px; font-family: inherit; color: #0f172a; + background: #f8fafc; transition: border-color .2s ease, box-shadow .2s ease, background .2s ease; + } + .dm-blog-search-input::placeholder { color: #9c9c9c; } + .dm-blog-search-input:focus { + outline: none; border-color: var(--dm-red); background: #fff; + box-shadow: 0 0 0 3px rgba(192,18,39,0.11); + } + .dm-blog-search-icon { + position: absolute; right: 14px; top: 50%; transform: translateY(-50%); + color: #94a3b8; pointer-events: none; display: flex; + } + .dm-blog-search-results { + position: absolute; z-index: 20; top: calc(100% + 8px); left: 0; right: 0; + background: #fff; border: 1px solid rgba(15,23,42,0.10); border-radius: 14px; + box-shadow: 0 18px 42px rgba(15,23,42,0.14); overflow: hidden; + } + .dm-blog-search-results ul { list-style: none; margin: 0; padding: 6px; } + .dm-blog-search-result { + display: flex; flex-direction: column; gap: 3px; padding: 10px 12px; + border-radius: 10px; text-decoration: none; transition: background .15s ease; + } + .dm-blog-search-result:hover { background: #f8fafc; } + .dm-blog-search-result-cat { + font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .8px; color: var(--dm-red); + } + .dm-blog-search-result-title { font-size: 13.5px; font-weight: 600; color: #1e293b; line-height: 1.35; } + .dm-blog-search-empty { margin: 0; padding: 14px 12px; font-size: 13px; color: #64748b; } + + /* Recent posts */ + .dm-blog-recent { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 15px; } + .dm-blog-recent-item { display: flex; gap: 13px; align-items: center; text-decoration: none; } + .dm-blog-recent-thumb { + position: relative; flex: 0 0 62px; width: 62px; height: 62px; + border-radius: 13px; overflow: hidden; background: #f1f5f9; + } + .dm-blog-recent-meta { display: flex; flex-direction: column; gap: 4px; min-width: 0; } + .dm-blog-recent-title { + font-size: 13.5px; font-weight: 700; color: #1e293b; line-height: 1.35; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-blog-recent-item:hover .dm-blog-recent-title { color: var(--dm-red); } + .dm-blog-recent-date { font-size: 11.5px; font-weight: 600; color: #94a3b8; } + + /* Categories */ + .dm-blog-categories { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; } + .dm-blog-category-item { + display: flex; align-items: center; justify-content: space-between; gap: 10px; + padding: 11px 2px; text-decoration: none; font-size: 14px; font-weight: 600; color: #334155 !important; + border-bottom: 1px solid rgba(15,23,42,0.06); transition: color .2s ease, padding-left .2s ease; + } + .dm-blog-categories li:last-child .dm-blog-category-item { border-bottom: none; } + .dm-blog-category-item:hover { color: var(--dm-red); padding-left: 6px; } + .dm-blog-category-item > span:first-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } + .dm-blog-category-count { + flex: 0 0 auto; font-size: 11px; font-weight: 800; color: #94a3b8; background: #f1f5f9; + min-width: 24px; height: 22px; border-radius: 7px; display: inline-flex; + align-items: center; justify-content: center; padding: 0 7px; + } + + /* CTA card */ + .dm-blog-cta-card { background: #1f1f1f; border-color: #1f1f1f; } + .dm-blog-cta-title { font-size: 18px !important; font-weight: 800 !important; color: #fff !important; line-height: 1.32 !important; margin: 0 0 10px; letter-spacing: -.2px !important; } + .dm-blog-cta-text { font-size: 13.5px; line-height: 1.6; color: #c7c7c7; margin: 0 0 20px; font-weight: 450; } + .dm-blog-cta-btn { + display: inline-flex; align-items: center; gap: 8px; + background: var(--dm-red); color: #fff !important; font-size: 13.5px; font-weight: 700; + padding: 12px 22px; border-radius: 12px; text-decoration: none; + transition: background .2s ease, transform .2s ease; + } + .dm-blog-cta-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } +c:["$","div",null,{"className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"Article\",\"headline\":\"How Doormile Maintains 99.9% SLA Compliance at Scale\",\"description\":\"High SLA performance comes from checking ETAs before dispatch, reacting early to delays, and keeping customer commitments visible throughout the day.\",\"image\":[\"https://www.doormile.com/images/last-mile-approach.webp\"],\"datePublished\":\"2025-06-26T00:00:00.000Z\",\"dateModified\":\"2025-06-26T00:00:00.000Z\",\"author\":{\"@type\":\"Organization\",\"name\":\"Doormile Team\",\"url\":\"https://www.doormile.com\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Doormile\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://www.doormile.com/images/cropped-image-2.png\"}},\"mainEntityOfPage\":{\"@type\":\"WebPage\",\"@id\":\"https://www.doormile.com/blog/how-doormile-maintains-99-9-sla-compliance-at-scale\"},\"articleSection\":\"Operations\"}"}}],["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https://www.doormile.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https://www.doormile.com/blog\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"How Doormile Maintains 99.9% SLA Compliance at Scale\",\"item\":\"https://www.doormile.com/blog/how-doormile-maintains-99-9-sla-compliance-at-scale\"}]}"}}],["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":[["$","article",null,{"className":"dm-single-blog","children":[["$","link",null,{"rel":"preload","as":"image","href":"/images/last-mile-approach.webp"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$17"}}],"$L18","$L19"]}],"$L1a"]}]}]]}] +1b:I[22016,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],""] +1c:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"ScrollReveal"] +18:["$","div",null,{"className":"custom-standard-hero-container","children":["$","div",null,{"className":"custom-standard-hero-card dm-banner-card","style":{"backgroundImage":"url(/images/last-mile-approach.webp)","--hero-overlay":"linear-gradient(180deg, rgba(0,0,0,0.38) 0%, rgba(0,0,0,0.46) 55%, rgba(0,0,0,0.60) 100%)"},"children":["$","div",null,{"className":"e-con-inner dm-banner-inner","children":[["$","span",null,{"className":"dm-banner-category","children":"Operations"}],["$","h1",null,{"className":"dm-banner-title","children":"How Doormile Maintains 99.9% SLA Compliance at Scale"}]]}]}]}] +19:["$","div",null,{"className":"dm-blog-wrap","children":[["$","div",null,{"className":"dm-meta-bar","children":[["$","nav",null,{"className":"dm-meta-breadcrumb","aria-label":"Breadcrumb","children":["$","ol",null,{"children":[["$","li",null,{"children":["$","$L1b",null,{"href":"/","children":"Home"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"children":["$","$L1b",null,{"href":"/blog","children":"Blog"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"aria-current":"page","className":"dm-meta-current","children":"How Doormile Maintains 99.9% SLA Compliance at Scale"}]]}]}],["$","div",null,{"className":"dm-meta-items","children":[["$","span",null,{"className":"dm-meta-item dm-meta-author","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","path",null,{"d":"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"}],["$","circle",null,{"cx":"12","cy":"7","r":"4"}]]}],"Doormile Team"]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","rect",null,{"x":"3","y":"4","width":"18","height":"18","rx":"2"}],["$","line",null,{"x1":"16","y1":"2","x2":"16","y2":"6"}],["$","line",null,{"x1":"8","y1":"2","x2":"8","y2":"6"}],["$","line",null,{"x1":"3","y1":"10","x2":"21","y2":"10"}]]}],["$","time",null,{"dateTime":"2025-06-26","children":"Jun 26, 2025"}]]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","circle",null,{"cx":"12","cy":"12","r":"9"}],["$","polyline",null,{"points":"12 7 12 12 15 14"}]]}],2," min read"]}]]}]]}],["$","div",null,{"className":"dm-blog-layout","children":[["$","div",null,{"className":"dm-blog-main","children":[["$","p",null,{"className":"dm-blog-intro","children":"Strong SLA performance is not luck. It comes from planning the day so late deliveries are the exception, not the expected risk."}],["$","div",null,{"className":"dm-article-body","children":[["$","$L1c","0",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"In last-mile logistics, a missed SLA is rarely caused by one big failure. It usually comes from small delays adding up across a route. How Doormile Maintains 99.9% SLA Compliance at Scale looks at how delivery teams can spot those delays early and plan around them before vehicles leave the hub."}]}],["$","$L1c","1",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"Why this matters for fleet teams"}]}],["$","$L1c","2",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"Every extra kilometre costs money. It uses fuel or charge, adds rider time, wears down vehicles, and increases the chance of a late delivery. When routes are built from fixed zones or old habits, those costs repeat every day."}]}],["$","$L1c","3",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ul",null,{"className":"dm-article-ul","children":[["$","li","0",{"children":"Fewer vehicles needed for the same number of drops"}],["$","li","1",{"children":"Lower cost per drop through better stop sequencing"}],["$","li","2",{"children":"ETAs that match traffic, distance, and delivery windows"}],["$","li","3",{"children":"Less fuel or charge used per completed order"}]]}]}],["$","$L1c","4",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h3",null,{"className":"dm-article-h3","children":"From orders to dispatch"}]}],["$","$L1c","5",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"A good dispatch plan starts with the basics: order locations, promised delivery windows, rider capacity, vehicle range, and known traffic trouble spots. MileTruth™ checks those inputs before dispatch so the team is not fixing avoidable mistakes on the road."}]}],["$","$L1c","6",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","figure",null,{"className":"dm-article-figure","children":[["$","span",null,{"className":"dm-article-figure-img","children":"$L1d"}],"$L1e"]}]}],"$L1f","$L20","$L21","$L22","$L23"]}]]}],"$L24"]}]]}] +25:T2021, + .dm-blog-footer { + font-family: var(--font-manrope), sans-serif; --dm-red: #c01227; --dm-red-hover: #e31d32; + /* The global theme applies 72px top/bottom section padding — strip it so the + inner container is the single source of vertical rhythm (no double gap). */ + padding: 0 !important; + } + /* Neutralize the global theme's 120/80/60px UPPERCASE heading rules */ + .dm-blog-footer :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline) */ + .dm-blog-footer a { text-decoration: none !important; } + /* Shared content container — mirrors SingleBlog's .dm-blog-wrap (same 1280px + max-width + 20→40px horizontal padding) so Prev/Next, Related and the CTA + align to the exact same left/right edges as the article body above. + Vertical rhythm: ~64px from the article end to the Prev/Next divider, then a + consistent ~64–72px section→section gap (no 120px+ voids). */ + .dm-blog-footer-inner { + max-width: 1280px; margin: 0 auto; + /* Compact vertical rhythm on an 8px system. Top padding sets the + article→Prev/Next gap (~24–32px); the inter-section gap sets the + Prev/Next→Related gap (~32–48px). No large arbitrary voids. */ + /* Minimal bottom padding — the global site footer already contributes its + own 20px top inset, so the CTA banner sits close to it without a void. */ + padding: clamp(24px, 3vw, 32px) clamp(20px, 4vw, 40px) clamp(8px, 1.5vw, 16px); + display: flex; flex-direction: column; gap: clamp(32px, 4vw, 48px); + } + @media (max-width: 767px) { + .dm-blog-footer-inner { + padding-left: 16px; + padding-right: 16px; + } + } + + /* Prev / Next */ + .dm-prevnext { + display: grid; grid-template-columns: 1fr 1fr; gap: 20px; + /* Halved from 40px: tight divider→cards spacing without crowding. */ + padding-top: clamp(16px, 2vw, 24px); border-top: 1px solid rgba(15,23,42,0.08); + } + @media (max-width: 640px) { .dm-prevnext { grid-template-columns: 1fr; } } + .dm-prevnext-placeholder { display: block; } + .dm-prevnext-card { + display: flex; gap: 16px; align-items: center; padding: 16px; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + text-decoration: none; transition: transform .3s ease, box-shadow .3s ease, border-color .3s ease; + } + .dm-prevnext-card:hover { + transform: translateY(-4px); border-color: rgba(192,18,39,0.2); + box-shadow: 0 16px 34px rgba(192,18,39,0.10); + } + .dm-prevnext-thumb { + position: relative; flex: 0 0 80px; width: 80px; height: 80px; + border-radius: 16px; overflow: hidden; background: #f1f5f9; + } + .dm-prevnext-text { display: flex; flex-direction: column; gap: 5px; min-width: 0; } + .dm-prevnext-next { text-align: right; } + .dm-prevnext-next .dm-prevnext-text { align-items: flex-end; } + .dm-prevnext-label { + display: inline-flex; align-items: center; gap: 6px; + font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: 1px; color: var(--dm-red); + } + .dm-prevnext-cat { font-size: 11px; font-weight: 700; color: #94a3b8; text-transform: uppercase; letter-spacing: .5px; } + .dm-prevnext-title { + font-size: 15.5px; font-weight: 700; color: #1e293b; line-height: 1.4; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-prevnext-card:hover .dm-prevnext-title { color: var(--dm-red); } + + /* Related */ + .dm-related-heading { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 850 !important; letter-spacing: -.4px !important; + line-height: 1.25 !important; color: #0f172a !important; margin: 0 0 24px; + } + .dm-related-grid { + display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; + } + @media (max-width: 1024px) { .dm-related-grid { grid-template-columns: repeat(2, 1fr); } } + @media (max-width: 700px) { .dm-related-grid { grid-template-columns: 1fr; gap: 24px; } } + + .dm-related-card { + display: flex; flex-direction: column; height: 100%; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + overflow: hidden; box-shadow: 0 4px 24px rgba(15,23,42,0.05); text-decoration: none; + transition: transform .4s cubic-bezier(0.2,0.8,0.2,1), box-shadow .4s ease, border-color .4s ease; + } + .dm-related-card:hover { + transform: translateY(-8px); box-shadow: 0 22px 44px rgba(192,18,39,0.13); + border-color: rgba(192,18,39,0.2); + } + .dm-related-img { + position: relative; width: 100%; aspect-ratio: 16 / 10; overflow: hidden; background: #f1f5f9; + } + .dm-related-img img { transition: transform .5s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-img img { transform: scale(1.05); } + .dm-related-badge { + position: absolute; top: 14px; left: 14px; z-index: 5; background: var(--dm-red); color: #fff; + font-size: 9px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.2px; + padding: 5px 11px; border-radius: 8px; box-shadow: 0 4px 12px rgba(192,18,39,0.25); + } + .dm-related-body { display: flex; flex-direction: column; flex: 1; padding: 22px; } + .dm-related-card-title { + font-size: 17px !important; font-weight: 800 !important; color: #1e293b !important; line-height: 1.4 !important; + letter-spacing: -.2px !important; margin: 0 0 10px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-related-card:hover .dm-related-card-title { color: var(--dm-red); } + .dm-related-card-excerpt { + font-size: 13.5px; font-weight: 500; color: #64748b; line-height: 1.6; margin: 0 0 18px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + } + .dm-related-readmore { + margin-top: auto; display: inline-flex; align-items: center; gap: 7px; + font-size: 12.5px; font-weight: 800; color: var(--dm-red); + text-transform: uppercase; letter-spacing: .6px; + } + .dm-related-readmore-arrow { transition: transform .3s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-readmore-arrow { transform: translateX(5px); } + + /* Contact CTA banner */ + .dm-blog-contact-cta { + display: flex; align-items: center; justify-content: space-between; gap: 32px; + flex-wrap: wrap; + background: linear-gradient(135deg, #1a1a1a 0%, #2d1417 100%); + border-radius: 30px; padding: clamp(32px, 4vw, 56px); + position: relative; overflow: hidden; + } + .dm-blog-contact-cta::after { + content: ""; position: absolute; right: -80px; top: -80px; width: 300px; height: 300px; + background: radial-gradient(circle, rgba(192,18,39,0.40), transparent 70%); + pointer-events: none; + } + .dm-blog-contact-cta-content { position: relative; z-index: 1; max-width: 640px; } + .dm-blog-contact-eyebrow { + display: inline-block; font-size: 12px; font-weight: 800; text-transform: uppercase; + letter-spacing: 1.4px; color: #ff8088; margin-bottom: 14px; + } + .dm-blog-contact-title { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 800 !important; line-height: 1.25 !important; + letter-spacing: -.3px !important; color: #ffffff !important; margin: 0 0 12px; text-wrap: balance; + } + .dm-blog-contact-sub { + font-size: 15.5px; line-height: 1.65; color: #e2e2e2; margin: 0; font-weight: 450; + } + .dm-blog-contact-btn { + position: relative; z-index: 1; flex-shrink: 0; + display: inline-flex; align-items: center; justify-content: center; gap: 10px; + background: var(--dm-red); color: #fff !important; font-size: 15px; font-weight: 700; + padding: 16px 32px; border-radius: 16px; text-decoration: none; + box-shadow: 0 10px 26px rgba(192,18,39,0.34); + transition: background .2s ease, transform .2s ease; + } + .dm-blog-contact-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } + @media (max-width: 720px) { + .dm-blog-contact-cta { flex-direction: column; align-items: flex-start; gap: 26px; } + .dm-blog-contact-btn { width: 100%; } + } +1a:["$","section",null,{"className":"dm-blog-footer","aria-label":"More articles","children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$25"}}],"$L26"]}] +27:I[5500,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"Image"] +28:I[23096,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"default"] +1d:["$","$L27",null,{"src":"/images/last-mile-approach.webp","alt":"How Doormile Maintains 99.9% SLA Compliance at Scale","fill":true,"sizes":"(max-width: 768px) 100vw, 760px","style":{"objectFit":"cover"}}] +1e:["$","figcaption",null,{"children":"Operations: route planning decisions made before dispatch."}] +1f:["$","$L1c","7",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","blockquote",null,{"className":"dm-article-quote","children":[["$","p",null,{"children":"A route should be checked before the rider leaves, not explained after the customer calls."}],["$","cite",null,{"children":"Doormile Operations"}]]}]}] +20:["$","$L1c","8",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"Putting it into practice"}]}] +21:["$","$L1c","9",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"The best improvements usually start with simple measurements. Track distance per route, failed delivery windows, rider idle time, and orders moved between vehicles after dispatch. Those numbers show where the operation is leaking time."}]}] +22:["$","$L1c","10",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ol",null,{"className":"dm-article-ol","children":[["$","li","0",{"children":"Benchmark today's distance, fleet size, and on-time rate."}],["$","li","1",{"children":"Include vehicle capacity, delivery windows, rider shifts, and battery charge."}],["$","li","2",{"children":"Check routes against traffic and customer commitments before dispatch."}],["$","li","3",{"children":"Compare the next dispatch cycle against the old plan."}]]}]}] +23:["$","$L1c","11",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"Better routing is not about pushing riders harder. It is about giving them a plan that already accounts for the real day ahead."}]}] +24:["$","div",null,{"className":"dm-blog-aside-wrap","children":["$","aside",null,{"className":"dm-blog-sidebar","aria-label":"Blog sidebar","children":[["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Search"}],["$","$L28",null,{}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Recent Posts"}],["$","ul",null,{"className":"dm-blog-recent","children":[["$","li","how-ai-is-transforming-last-mile-ev-delivery",{"children":["$","$L1b",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"How Better Planning Improves Last-Mile EV Delivery"}],["$","time",null,{"dateTime":"2025-10-02","className":"dm-blog-recent-date","children":"Oct 2, 2025"}]]}]]}]}],["$","li","42-less-distance-insights-from-our-hyderabad-hub",{"children":["$","$L1b",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}],["$","time",null,{"dateTime":"2025-09-18","className":"dm-blog-recent-date","children":"Sep 18, 2025"}]]}]]}]}],["$","li","miletruth-ai-10-stages-to-smarter-dispatch",{"children":["$","$L1b",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","time",null,{"dateTime":"2025-09-05","className":"dm-blog-recent-date","children":"Sep 5, 2025"}]]}]]}]}],["$","li","the-ev-paradox-solving-range-anxiety-for-urban-fleets",{"children":["$","$L1b",null,{"href":"/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/ev-paradox.webp","alt":"The EV Paradox: Solving Range Anxiety for Urban Fleets","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}],["$","time",null,{"dateTime":"2025-08-21","className":"dm-blog-recent-date","children":"Aug 21, 2025"}]]}]]}]}]]}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Categories"}],["$","ul",null,{"className":"dm-blog-categories","children":[["$","li","Case Study",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Case Study"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","EV Fleet",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"EV Fleet"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}],["$","li","Fleet Management",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Fleet Management"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","MileTruth",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"MileTruth"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],"$L29","$L2a","$L2b"]}]]}],"$L2c"]}]}] +26:["$","div",null,{"className":"dm-blog-footer-inner","children":[["$","nav",null,{"className":"dm-prevnext","aria-label":"Article navigation","children":[["$","$L1b",null,{"href":"/blog/building-a-greener-city-the-future-of-urban-logistics","className":"dm-prevnext-card dm-prevnext-prev","children":[["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-6.webp","alt":"Building a Greener City: The Future of Urban Logistics","fill":true,"sizes":"80px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-prevnext-text","children":[["$","span",null,{"className":"dm-prevnext-label","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"19","y1":"12","x2":"5","y2":"12"}],["$","polyline",null,{"points":"12 19 5 12 12 5"}]]}],"Previous"]}],["$","span",null,{"className":"dm-prevnext-cat","children":"Sustainability"}],["$","span",null,{"className":"dm-prevnext-title","children":"Building a Greener City: The Future of Urban Logistics"}]]}]]}],["$","$L1b",null,{"href":"/blog/battery-simulation-the-secret-to-ev-route-pre-validation","className":"dm-prevnext-card dm-prevnext-next","children":[["$","span",null,{"className":"dm-prevnext-text","children":[["$","span",null,{"className":"dm-prevnext-label","children":["Next",["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","span",null,{"className":"dm-prevnext-cat","children":"EV Fleet"}],["$","span",null,{"className":"dm-prevnext-title","children":"Battery Simulation: The Secret to EV Route Pre-Validation"}]]}],["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-3.webp","alt":"Battery Simulation: The Secret to EV Route Pre-Validation","fill":true,"sizes":"80px","style":{"objectFit":"cover"}}]}]]}]]}],["$","div",null,{"className":"dm-related","children":[["$","h2",null,{"className":"dm-related-heading","children":"Related Articles"}],["$","div",null,{"className":"dm-related-grid","children":[["$","$L1c","how-ai-is-transforming-last-mile-ev-delivery",{"delay":0,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L27",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Technology"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"How Better Planning Improves Last-Mile EV Delivery"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"A practical look at how EV fleets can plan routes, manage charging, and keep delivery promises without adding unnecessary vehicles."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}],["$","$L1c","42-less-distance-insights-from-our-hyderabad-hub",{"delay":0.08,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L27",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Case Study"}]]}],["$","div",null,{"className":"dm-related-body","children":["$L2d","$L2e","$L2f"]}]]}]}],"$L30"]}]]}],"$L31"]}] +29:["$","li","Operations",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Operations"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +2a:["$","li","Sustainability",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Sustainability"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +2b:["$","li","Technology",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Technology"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}] +2c:["$","section",null,{"className":"dm-blog-widget dm-blog-cta-card","children":[["$","h2",null,{"className":"dm-blog-cta-title","children":"Planning delivery routes?"}],["$","p",null,{"className":"dm-blog-cta-text","children":"Talk to us about reducing wasted distance, missed windows, and avoidable vehicle time."}],["$","$L1b",null,{"href":"/contact","className":"dm-blog-cta-btn","children":["Contact Us",["$","svg",null,{"width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] +2d:["$","h3",null,{"className":"dm-related-card-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}] +2e:["$","p",null,{"className":"dm-related-card-excerpt","children":"A practical look at how one Hyderabad hub reduced distance, used fewer vehicles, and protected delivery windows with better route planning."}] +2f:["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}] +30:["$","$L1c","miletruth-ai-10-stages-to-smarter-dispatch",{"delay":0.16,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L27",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"MileTruth"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"From order intake to final route output, here is how a dispatch plan is checked before riders leave the hub."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}] +31:["$","div",null,{"className":"dm-blog-contact-cta","children":[["$","div",null,{"className":"dm-blog-contact-cta-content","children":[["$","span",null,{"className":"dm-blog-contact-eyebrow","children":"Let's talk logistics"}],["$","h2",null,{"className":"dm-blog-contact-title","children":"Ready to move smarter with Doormile?"}],["$","p",null,{"className":"dm-blog-contact-sub","children":"Tell us about your fleet and routes — we'll show you where the distance, vehicles and emissions are hiding."}]]}],["$","$L1b",null,{"href":"/contact","className":"dm-blog-contact-btn","children":["Get in Touch",["$","svg",null,{"width":"20","height":"20","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] +12:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] +32:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +f:null +14:[["$","title","0",{"children":"How Doormile Maintains 99.9% SLA Compliance at Scale – Doormile"}],["$","meta","1",{"name":"description","content":"High SLA performance comes from checking ETAs before dispatch, reacting early to delays, and keeping customer commitments visible throughout the day."}],["$","meta","2",{"name":"author","content":"Doormile Team"}],["$","meta","3",{"name":"keywords","content":"Operations,last-mile logistics,EV fleet,MileTruth,route optimisation"}],["$","meta","4",{"name":"robots","content":"index, follow"}],["$","link","5",{"rel":"canonical","href":"https://www.doormile.com/blog/how-doormile-maintains-99-9-sla-compliance-at-scale"}],["$","meta","6",{"property":"og:title","content":"How Doormile Maintains 99.9% SLA Compliance at Scale"}],["$","meta","7",{"property":"og:description","content":"High SLA performance comes from checking ETAs before dispatch, reacting early to delays, and keeping customer commitments visible throughout the day."}],["$","meta","8",{"property":"og:url","content":"https://www.doormile.com/blog/how-doormile-maintains-99-9-sla-compliance-at-scale"}],["$","meta","9",{"property":"og:site_name","content":"Doormile"}],["$","meta","10",{"property":"og:image","content":"https://www.doormile.com/images/last-mile-approach.webp"}],["$","meta","11",{"property":"og:image:alt","content":"How Doormile Maintains 99.9% SLA Compliance at Scale"}],["$","meta","12",{"property":"og:type","content":"article"}],["$","meta","13",{"property":"article:published_time","content":"2025-06-26T00:00:00.000Z"}],["$","meta","14",{"property":"article:author","content":"Doormile Team"}],["$","meta","15",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","16",{"name":"twitter:title","content":"How Doormile Maintains 99.9% SLA Compliance at Scale"}],["$","meta","17",{"name":"twitter:description","content":"High SLA performance comes from checking ETAs before dispatch, reacting early to delays, and keeping customer commitments visible throughout the day."}],["$","meta","18",{"name":"twitter:image","content":"https://www.doormile.com/images/last-mile-approach.webp"}],["$","link","19",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","20",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","21",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","22",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L32","23",{}]] diff --git a/build/blog/how-doormile-maintains-99-9-sla-compliance-at-scale/__next._head.txt b/build/blog/how-doormile-maintains-99-9-sla-compliance-at-scale/__next._head.txt new file mode 100644 index 0000000..6be6839 --- /dev/null +++ b/build/blog/how-doormile-maintains-99-9-sla-compliance-at-scale/__next._head.txt @@ -0,0 +1,6 @@ +1:"$Sreact.fragment" +2:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +3:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +4:"$Sreact.suspense" +5:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +0:{"rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"How Doormile Maintains 99.9% SLA Compliance at Scale – Doormile"}],["$","meta","1",{"name":"description","content":"High SLA performance comes from checking ETAs before dispatch, reacting early to delays, and keeping customer commitments visible throughout the day."}],["$","meta","2",{"name":"author","content":"Doormile Team"}],["$","meta","3",{"name":"keywords","content":"Operations,last-mile logistics,EV fleet,MileTruth,route optimisation"}],["$","meta","4",{"name":"robots","content":"index, follow"}],["$","link","5",{"rel":"canonical","href":"https://www.doormile.com/blog/how-doormile-maintains-99-9-sla-compliance-at-scale"}],["$","meta","6",{"property":"og:title","content":"How Doormile Maintains 99.9% SLA Compliance at Scale"}],["$","meta","7",{"property":"og:description","content":"High SLA performance comes from checking ETAs before dispatch, reacting early to delays, and keeping customer commitments visible throughout the day."}],["$","meta","8",{"property":"og:url","content":"https://www.doormile.com/blog/how-doormile-maintains-99-9-sla-compliance-at-scale"}],["$","meta","9",{"property":"og:site_name","content":"Doormile"}],["$","meta","10",{"property":"og:image","content":"https://www.doormile.com/images/last-mile-approach.webp"}],["$","meta","11",{"property":"og:image:alt","content":"How Doormile Maintains 99.9% SLA Compliance at Scale"}],["$","meta","12",{"property":"og:type","content":"article"}],["$","meta","13",{"property":"article:published_time","content":"2025-06-26T00:00:00.000Z"}],["$","meta","14",{"property":"article:author","content":"Doormile Team"}],["$","meta","15",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","16",{"name":"twitter:title","content":"How Doormile Maintains 99.9% SLA Compliance at Scale"}],["$","meta","17",{"name":"twitter:description","content":"High SLA performance comes from checking ETAs before dispatch, reacting early to delays, and keeping customer commitments visible throughout the day."}],["$","meta","18",{"name":"twitter:image","content":"https://www.doormile.com/images/last-mile-approach.webp"}],["$","link","19",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","20",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","21",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","22",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L5","23",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/blog/how-doormile-maintains-99-9-sla-compliance-at-scale/__next._index.txt b/build/blog/how-doormile-maintains-99-9-sla-compliance-at-scale/__next._index.txt new file mode 100644 index 0000000..d0b3355 --- /dev/null +++ b/build/blog/how-doormile-maintains-99-9-sla-compliance-at-scale/__next._index.txt @@ -0,0 +1,15 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","template":["$","$La",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/blog/how-doormile-maintains-99-9-sla-compliance-at-scale/__next._tree.txt b/build/blog/how-doormile-maintains-99-9-sla-compliance-at-scale/__next._tree.txt new file mode 100644 index 0000000..9ae97a2 --- /dev/null +++ b/build/blog/how-doormile-maintains-99-9-sla-compliance-at-scale/__next._tree.txt @@ -0,0 +1,10 @@ +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +:HL["/images/last-mile-approach.webp","image"] +0:{"tree":{"name":"","param":null,"prefetchHints":16,"slots":{"children":{"name":"blog","param":null,"prefetchHints":0,"slots":{"children":{"name":"slug","param":{"type":"d","key":"how-doormile-maintains-99-9-sla-compliance-at-scale","siblings":null},"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}}}}}},"staleTime":300,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/blog/how-doormile-maintains-99-9-sla-compliance-at-scale/__next.blog.$d$slug.__PAGE__.txt b/build/blog/how-doormile-maintains-99-9-sla-compliance-at-scale/__next.blog.$d$slug.__PAGE__.txt new file mode 100644 index 0000000..a7c822f --- /dev/null +++ b/build/blog/how-doormile-maintains-99-9-sla-compliance-at-scale/__next.blog.$d$slug.__PAGE__.txt @@ -0,0 +1,521 @@ +1:"$Sreact.fragment" +8:I[22016,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],""] +9:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"ScrollReveal"] +14:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +15:"$Sreact.suspense" +17:I[5500,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"Image"] +18:I[23096,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"default"] +:HL["/images/last-mile-approach.webp","image"] +2:T3d6f, + .dm-single-blog { + --dm-red: #c01227; + --dm-red-hover: #e31d32; + --dm-radius-card: 22px; + --dm-radius-img: 20px; + --dm-radius-badge: 8px; + --dm-shadow-card: 0 4px 24px rgba(15, 23, 42, 0.05); + --dm-border: 1px solid rgba(15, 23, 42, 0.09); + --dm-space-p: 24px; + --dm-space-h: 32px; + --dm-space-img: 32px; + --dm-space-quote: 40px; + --dm-sticky-top: 138px; + --dm-measure: min(1100px, 100%); + font-family: var(--font-manrope), sans-serif; + } + + /* Heading normalization. Beat the global theme's .elementor-kit-5 h1-h6 + (120/80/60px UPPERCASE) rules with !important on our own classes. */ + .dm-single-blog :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline, + specificity 0-1-1) so blog links keep our colors and never get underlined. */ + .dm-single-blog a { text-decoration: none !important; } + + /* Page banner: tall homepage-scale frame with only badge + title inside */ + /* Compound selector (specificity 20) + !important beats the global 800px + single-class height rules so the blog banner can use viewport heights. */ + .custom-standard-hero-card.dm-banner-card { + height: 90vh !important; + min-height: 85vh !important; + } + @media (max-width: 1024px) { + .custom-standard-hero-card.dm-banner-card { height: 80vh !important; min-height: 75vh !important; } + } + @media (max-width: 600px) { + .custom-standard-hero-card.dm-banner-card { height: 78vh !important; min-height: 72vh !important; } + } + + .dm-banner-inner { + position: relative; width: 100%; height: 100%; + display: flex; flex-direction: column; align-items: center; justify-content: center; + text-align: center; gap: clamp(22px, 2.6vw, 34px); + padding: clamp(48px, 8vh, 96px) clamp(20px, 5vw, 48px); + } + + .dm-banner-category { + display: inline-block; background: var(--dm-red); color: #fff; + font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.6px; + padding: 9px 18px; border-radius: 999px; box-shadow: 0 8px 22px rgba(192,18,39,0.45); + } + .dm-banner-title { + font-family: var(--font-manrope), sans-serif !important; + font-size: clamp(34px, 5vw, 60px) !important; font-weight: 850 !important; + line-height: 1.16 !important; letter-spacing: -1.2px !important; + color: #ffffff !important; margin: 0; max-width: 820px; + text-wrap: balance; text-shadow: 0 2px 30px rgba(0,0,0,0.38); + } + @media (max-width: 1024px) { .dm-banner-title { font-size: clamp(32px, 6vw, 48px) !important; max-width: 90%; } } + @media (max-width: 600px) { .dm-banner-title { font-size: clamp(28px, 8vw, 38px) !important; max-width: 90%; } } + + /* Content wrap begins immediately below the banner */ + /* Shared content container: the SAME max-width + horizontal padding is used + by BlogPostFooter (.dm-blog-footer-inner) so the article body, headings, + images, Prev/Next, Related Articles and the CTA banner all align to one + grid with identical left/right edges. Keep both in sync. */ + .dm-blog-wrap { + max-width: 1280px; margin: 0 auto; + /* 20px mobile padding floor → 40px on desktop; matches the footer container. */ + padding: clamp(14px, 2vw, 26px) clamp(20px, 4vw, 40px) 0; + } + @media (max-width: 767px) { + .dm-blog-wrap { + padding-left: 16px; + padding-right: 16px; + } + } + + /* ── Article meta bar (directly under the hero) ── */ + .dm-meta-bar { + display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 14px 24px; + padding: clamp(20px, 2.6vw, 30px) 0; margin-bottom: clamp(26px, 3vw, 44px); + border-bottom: 1px solid rgba(15,23,42,0.10); + } + .dm-meta-breadcrumb ol { + list-style: none; display: flex; flex-wrap: wrap; align-items: center; + gap: 8px; margin: 0; padding: 0; font-size: 13px; font-weight: 600; color: #64748b; + } + .dm-meta-breadcrumb a { color: #64748b !important; text-decoration: none; transition: color .2s ease; } + .dm-meta-breadcrumb a:hover { color: var(--dm-red) !important; } + .dm-meta-sep { color: #cbd5e1; } + .dm-meta-current { + color: #0f172a; font-weight: 700; + max-width: min(40ch, 46vw); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; + } + @media (max-width: 600px) { .dm-meta-current { max-width: 56vw; } } + .dm-meta-items { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 20px; } + .dm-meta-item { + display: inline-flex; align-items: center; gap: 7px; + font-size: 13.5px; font-weight: 600; color: #475569; + } + .dm-meta-item svg { color: var(--dm-red); flex: 0 0 auto; } + .dm-meta-author { color: #0f172a; font-weight: 700; } + @media (max-width: 600px) { .dm-meta-bar { gap: 12px; } } + .dm-blog-layout { + display: grid; grid-template-columns: minmax(0,1fr) 320px; + /* Tighter gap gives the reading column more room next to the 320px sidebar. */ + gap: clamp(28px, 3vw, 56px); align-items: start; + } + @media (max-width: 1024px) { + .dm-blog-layout { grid-template-columns: 1fr; gap: 48px; } + /* Single-column (tablet/mobile): cap the reading column and centre it so the + article never sits left-aligned with a large empty right gutter. */ + .dm-blog-main { max-width: 900px; margin-inline: auto; } + } + .dm-blog-main { min-width: 0; } + + /* ── Intro lead ── */ + .dm-blog-intro { + max-width: var(--dm-measure); + font-size: clamp(18px, 1.5vw, 20px); line-height: 1.65; font-weight: 500; + color: #475569; margin: 0 0 clamp(26px, 3vw, 38px); padding-left: 20px; + border-left: 3px solid var(--dm-red); + } + + /* ── Article body ── */ + .dm-article-body { max-width: var(--dm-measure); } + .dm-article-p { + font-size: 18px !important; line-height: 1.8 !important; color: #334155; font-weight: 450; + margin: 0 0 var(--dm-space-p); + } + .dm-article-h2 { + font-size: clamp(23px, 2vw, 30px) !important; font-weight: 800 !important; letter-spacing: -.3px !important; + color: #0f172a !important; line-height: 1.3 !important; margin: 48px 0 var(--dm-space-h); + text-wrap: balance; + } + /* Each article block is wrapped in its OWN ScrollReveal
    , so a bare + :first-child rule matched every heading (each is the only child of its + wrapper) and zeroed its top margin, collapsing the gap above every + section heading. Scope the reset to only the article body's first block. */ + .dm-article-body > :first-child :where(.dm-article-h2, .dm-article-h3), + .dm-article-body > .dm-article-h2:first-child, + .dm-article-body > .dm-article-h3:first-child { margin-top: 0; } + .dm-article-h3 { + font-size: clamp(19px, 1.5vw, 23px) !important; font-weight: 800 !important; letter-spacing: -.2px !important; + color: #1e293b !important; line-height: 1.34 !important; margin: 40px 0 18px; + text-wrap: balance; + } + @media (max-width: 600px) { + .dm-article-p { font-size: 16px !important; } + .dm-article-ul li, .dm-article-ol li { font-size: 15.5px; } + .dm-article-h2 { font-size: clamp(22px, 6vw, 28px) !important; margin-top: 38px; } + .dm-article-h3 { font-size: clamp(18px, 5vw, 22px) !important; } + } + + .dm-article-ul, .dm-article-ol { + /* Top margin (was 0) separates the list from the paragraph above it; + matching bottom margin keeps it clear of the next heading/paragraph. + Slightly larger than --dm-space-p so the list reads as its own block. */ + margin: clamp(26px, 2.4vw, 32px) 0 clamp(26px, 2.4vw, 32px); + padding-left: 2px; list-style: none; + display: flex; flex-direction: column; gap: 15px; + } + /* Prefixed with .dm-article-body so these beat the theme's global + ".logico-front-end ul li:before" fontello-glyph bullet (specificity 0,1,3), + which otherwise replaces our clean red dot with a misaligned checkmark glyph + and adds its own 1.7em indent. */ + .dm-article-body .dm-article-ul li, .dm-article-body .dm-article-ol li { + position: relative; padding-left: 34px; + font-size: 17px; line-height: 1.65; color: #334155; font-weight: 450; + } + .dm-article-body .dm-article-ul li::before { + content: ""; position: absolute; left: 7px; top: 10px; + width: 8px; height: 8px; border-radius: 50%; background: var(--dm-red); + /* kill any inherited fontello glyph from the global rule */ + font-size: 0; line-height: 0; + } + .dm-article-ol { counter-reset: dm-li; } + .dm-article-body .dm-article-ol li { counter-increment: dm-li; } + .dm-article-body .dm-article-ol li::before { + content: counter(dm-li); position: absolute; left: 0; top: 0; + width: 24px; height: 24px; border-radius: 7px; + background: rgba(192,18,39,0.10); color: var(--dm-red); + font-size: 12px; font-weight: 800; display: flex; align-items: center; justify-content: center; + } + + /* ── Quote ── */ + .dm-article-quote { + position: relative; margin: var(--dm-space-quote) 0; padding: 30px 32px 30px 64px; + background: linear-gradient(135deg, #fbf2f3 0%, #fdf7f8 100%); + border-left: 4px solid var(--dm-red); border-radius: 0 18px 18px 0; + box-shadow: 0 8px 28px rgba(192, 18, 39, 0.06); + } + .dm-article-quote::before { + content: "\201C"; position: absolute; left: 22px; top: 8px; + font-family: Georgia, "Times New Roman", serif; + font-size: 64px; line-height: 1; color: rgba(192, 18, 39, 0.28); font-weight: 700; + } + .dm-article-quote p { + font-size: clamp(19px, 2vw, 23px); line-height: 1.5; font-weight: 600; + font-style: italic; color: #1e293b; margin: 0; + } + .dm-article-quote cite { + display: block; margin-top: 16px; font-size: 13px; font-weight: 700; + font-style: normal; color: var(--dm-red); text-transform: uppercase; letter-spacing: .6px; + } + @media (max-width: 600px) { .dm-article-quote { padding: 26px 22px; } .dm-article-quote::before { display: none; } } + + /* ── Images ── */ + .dm-article-figure { margin: var(--dm-space-img) 0; } + .dm-article-figure-img { + position: relative; display: block; width: 100%; aspect-ratio: 16 / 9; + border-radius: var(--dm-radius-img); overflow: hidden; box-shadow: 0 14px 34px rgba(15,23,42,0.10); + } + .dm-article-figure figcaption { + margin-top: 14px; font-size: 13.5px; color: #94a3b8; font-weight: 500; + text-align: center; font-style: italic; + } + + /* ── Sidebar ── */ + .dm-blog-aside-wrap { position: relative; } + .dm-blog-sidebar { + display: flex; flex-direction: column; gap: 18px; + position: sticky; top: var(--dm-sticky-top); + } + @media (max-width: 1024px) { .dm-blog-sidebar { position: static; gap: 20px; } } + + .dm-blog-widget { + background: #fff; border: var(--dm-border); border-radius: var(--dm-radius-card); + padding: 20px; box-shadow: var(--dm-shadow-card); + } + .dm-blog-widget-title { + font-size: 13px !important; font-weight: 700 !important; text-transform: uppercase !important; + letter-spacing: .8px !important; line-height: 1.35 !important; color: #0f172a !important; + margin: 0 0 15px; padding: 0 0 12px; + border-bottom: 1px solid rgba(15,23,42,0.08); + overflow: visible; white-space: normal; word-break: normal; + } + + /* Search */ + .dm-sr-only { + position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; + overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; + } + .dm-blog-search { position: relative; } + .dm-blog-search-form { position: relative; } + .dm-blog-search-input { + width: 100%; height: 46px; border: 1.5px solid #e2e8f0; border-radius: 12px; + padding: 0 42px 0 15px; font-size: 14px; font-family: inherit; color: #0f172a; + background: #f8fafc; transition: border-color .2s ease, box-shadow .2s ease, background .2s ease; + } + .dm-blog-search-input::placeholder { color: #9c9c9c; } + .dm-blog-search-input:focus { + outline: none; border-color: var(--dm-red); background: #fff; + box-shadow: 0 0 0 3px rgba(192,18,39,0.11); + } + .dm-blog-search-icon { + position: absolute; right: 14px; top: 50%; transform: translateY(-50%); + color: #94a3b8; pointer-events: none; display: flex; + } + .dm-blog-search-results { + position: absolute; z-index: 20; top: calc(100% + 8px); left: 0; right: 0; + background: #fff; border: 1px solid rgba(15,23,42,0.10); border-radius: 14px; + box-shadow: 0 18px 42px rgba(15,23,42,0.14); overflow: hidden; + } + .dm-blog-search-results ul { list-style: none; margin: 0; padding: 6px; } + .dm-blog-search-result { + display: flex; flex-direction: column; gap: 3px; padding: 10px 12px; + border-radius: 10px; text-decoration: none; transition: background .15s ease; + } + .dm-blog-search-result:hover { background: #f8fafc; } + .dm-blog-search-result-cat { + font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .8px; color: var(--dm-red); + } + .dm-blog-search-result-title { font-size: 13.5px; font-weight: 600; color: #1e293b; line-height: 1.35; } + .dm-blog-search-empty { margin: 0; padding: 14px 12px; font-size: 13px; color: #64748b; } + + /* Recent posts */ + .dm-blog-recent { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 15px; } + .dm-blog-recent-item { display: flex; gap: 13px; align-items: center; text-decoration: none; } + .dm-blog-recent-thumb { + position: relative; flex: 0 0 62px; width: 62px; height: 62px; + border-radius: 13px; overflow: hidden; background: #f1f5f9; + } + .dm-blog-recent-meta { display: flex; flex-direction: column; gap: 4px; min-width: 0; } + .dm-blog-recent-title { + font-size: 13.5px; font-weight: 700; color: #1e293b; line-height: 1.35; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-blog-recent-item:hover .dm-blog-recent-title { color: var(--dm-red); } + .dm-blog-recent-date { font-size: 11.5px; font-weight: 600; color: #94a3b8; } + + /* Categories */ + .dm-blog-categories { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; } + .dm-blog-category-item { + display: flex; align-items: center; justify-content: space-between; gap: 10px; + padding: 11px 2px; text-decoration: none; font-size: 14px; font-weight: 600; color: #334155 !important; + border-bottom: 1px solid rgba(15,23,42,0.06); transition: color .2s ease, padding-left .2s ease; + } + .dm-blog-categories li:last-child .dm-blog-category-item { border-bottom: none; } + .dm-blog-category-item:hover { color: var(--dm-red); padding-left: 6px; } + .dm-blog-category-item > span:first-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } + .dm-blog-category-count { + flex: 0 0 auto; font-size: 11px; font-weight: 800; color: #94a3b8; background: #f1f5f9; + min-width: 24px; height: 22px; border-radius: 7px; display: inline-flex; + align-items: center; justify-content: center; padding: 0 7px; + } + + /* CTA card */ + .dm-blog-cta-card { background: #1f1f1f; border-color: #1f1f1f; } + .dm-blog-cta-title { font-size: 18px !important; font-weight: 800 !important; color: #fff !important; line-height: 1.32 !important; margin: 0 0 10px; letter-spacing: -.2px !important; } + .dm-blog-cta-text { font-size: 13.5px; line-height: 1.6; color: #c7c7c7; margin: 0 0 20px; font-weight: 450; } + .dm-blog-cta-btn { + display: inline-flex; align-items: center; gap: 8px; + background: var(--dm-red); color: #fff !important; font-size: 13.5px; font-weight: 700; + padding: 12px 22px; border-radius: 12px; text-decoration: none; + transition: background .2s ease, transform .2s ease; + } + .dm-blog-cta-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } +0:{"rsc":["$","$1","c",{"children":[["$","div",null,{"className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"Article\",\"headline\":\"How Doormile Maintains 99.9% SLA Compliance at Scale\",\"description\":\"High SLA performance comes from checking ETAs before dispatch, reacting early to delays, and keeping customer commitments visible throughout the day.\",\"image\":[\"https://www.doormile.com/images/last-mile-approach.webp\"],\"datePublished\":\"2025-06-26T00:00:00.000Z\",\"dateModified\":\"2025-06-26T00:00:00.000Z\",\"author\":{\"@type\":\"Organization\",\"name\":\"Doormile Team\",\"url\":\"https://www.doormile.com\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Doormile\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://www.doormile.com/images/cropped-image-2.png\"}},\"mainEntityOfPage\":{\"@type\":\"WebPage\",\"@id\":\"https://www.doormile.com/blog/how-doormile-maintains-99-9-sla-compliance-at-scale\"},\"articleSection\":\"Operations\"}"}}],["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https://www.doormile.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https://www.doormile.com/blog\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"How Doormile Maintains 99.9% SLA Compliance at Scale\",\"item\":\"https://www.doormile.com/blog/how-doormile-maintains-99-9-sla-compliance-at-scale\"}]}"}}],["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":[["$","article",null,{"className":"dm-single-blog","children":[["$","link",null,{"rel":"preload","as":"image","href":"/images/last-mile-approach.webp"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$2"}}],"$L3","$L4"]}],"$L5"]}]}]]}],["$L6"],"$L7"]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} +3:["$","div",null,{"className":"custom-standard-hero-container","children":["$","div",null,{"className":"custom-standard-hero-card dm-banner-card","style":{"backgroundImage":"url(/images/last-mile-approach.webp)","--hero-overlay":"linear-gradient(180deg, rgba(0,0,0,0.38) 0%, rgba(0,0,0,0.46) 55%, rgba(0,0,0,0.60) 100%)"},"children":["$","div",null,{"className":"e-con-inner dm-banner-inner","children":[["$","span",null,{"className":"dm-banner-category","children":"Operations"}],["$","h1",null,{"className":"dm-banner-title","children":"How Doormile Maintains 99.9% SLA Compliance at Scale"}]]}]}]}] +4:["$","div",null,{"className":"dm-blog-wrap","children":[["$","div",null,{"className":"dm-meta-bar","children":[["$","nav",null,{"className":"dm-meta-breadcrumb","aria-label":"Breadcrumb","children":["$","ol",null,{"children":[["$","li",null,{"children":["$","$L8",null,{"href":"/","children":"Home"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"children":["$","$L8",null,{"href":"/blog","children":"Blog"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"aria-current":"page","className":"dm-meta-current","children":"How Doormile Maintains 99.9% SLA Compliance at Scale"}]]}]}],["$","div",null,{"className":"dm-meta-items","children":[["$","span",null,{"className":"dm-meta-item dm-meta-author","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","path",null,{"d":"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"}],["$","circle",null,{"cx":"12","cy":"7","r":"4"}]]}],"Doormile Team"]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","rect",null,{"x":"3","y":"4","width":"18","height":"18","rx":"2"}],["$","line",null,{"x1":"16","y1":"2","x2":"16","y2":"6"}],["$","line",null,{"x1":"8","y1":"2","x2":"8","y2":"6"}],["$","line",null,{"x1":"3","y1":"10","x2":"21","y2":"10"}]]}],["$","time",null,{"dateTime":"2025-06-26","children":"Jun 26, 2025"}]]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","circle",null,{"cx":"12","cy":"12","r":"9"}],["$","polyline",null,{"points":"12 7 12 12 15 14"}]]}],2," min read"]}]]}]]}],["$","div",null,{"className":"dm-blog-layout","children":[["$","div",null,{"className":"dm-blog-main","children":[["$","p",null,{"className":"dm-blog-intro","children":"Strong SLA performance is not luck. It comes from planning the day so late deliveries are the exception, not the expected risk."}],["$","div",null,{"className":"dm-article-body","children":[["$","$L9","0",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"In last-mile logistics, a missed SLA is rarely caused by one big failure. It usually comes from small delays adding up across a route. How Doormile Maintains 99.9% SLA Compliance at Scale looks at how delivery teams can spot those delays early and plan around them before vehicles leave the hub."}]}],["$","$L9","1",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"Why this matters for fleet teams"}]}],["$","$L9","2",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"Every extra kilometre costs money. It uses fuel or charge, adds rider time, wears down vehicles, and increases the chance of a late delivery. When routes are built from fixed zones or old habits, those costs repeat every day."}]}],["$","$L9","3",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ul",null,{"className":"dm-article-ul","children":[["$","li","0",{"children":"Fewer vehicles needed for the same number of drops"}],["$","li","1",{"children":"Lower cost per drop through better stop sequencing"}],["$","li","2",{"children":"ETAs that match traffic, distance, and delivery windows"}],["$","li","3",{"children":"Less fuel or charge used per completed order"}]]}]}],["$","$L9","4",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h3",null,{"className":"dm-article-h3","children":"From orders to dispatch"}]}],["$","$L9","5",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"A good dispatch plan starts with the basics: order locations, promised delivery windows, rider capacity, vehicle range, and known traffic trouble spots. MileTruth™ checks those inputs before dispatch so the team is not fixing avoidable mistakes on the road."}]}],["$","$L9","6",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","figure",null,{"className":"dm-article-figure","children":[["$","span",null,{"className":"dm-article-figure-img","children":"$La"}],"$Lb"]}]}],"$Lc","$Ld","$Le","$Lf","$L10"]}]]}],"$L11"]}]]}] +12:T2021, + .dm-blog-footer { + font-family: var(--font-manrope), sans-serif; --dm-red: #c01227; --dm-red-hover: #e31d32; + /* The global theme applies 72px top/bottom section padding — strip it so the + inner container is the single source of vertical rhythm (no double gap). */ + padding: 0 !important; + } + /* Neutralize the global theme's 120/80/60px UPPERCASE heading rules */ + .dm-blog-footer :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline) */ + .dm-blog-footer a { text-decoration: none !important; } + /* Shared content container — mirrors SingleBlog's .dm-blog-wrap (same 1280px + max-width + 20→40px horizontal padding) so Prev/Next, Related and the CTA + align to the exact same left/right edges as the article body above. + Vertical rhythm: ~64px from the article end to the Prev/Next divider, then a + consistent ~64–72px section→section gap (no 120px+ voids). */ + .dm-blog-footer-inner { + max-width: 1280px; margin: 0 auto; + /* Compact vertical rhythm on an 8px system. Top padding sets the + article→Prev/Next gap (~24–32px); the inter-section gap sets the + Prev/Next→Related gap (~32–48px). No large arbitrary voids. */ + /* Minimal bottom padding — the global site footer already contributes its + own 20px top inset, so the CTA banner sits close to it without a void. */ + padding: clamp(24px, 3vw, 32px) clamp(20px, 4vw, 40px) clamp(8px, 1.5vw, 16px); + display: flex; flex-direction: column; gap: clamp(32px, 4vw, 48px); + } + @media (max-width: 767px) { + .dm-blog-footer-inner { + padding-left: 16px; + padding-right: 16px; + } + } + + /* Prev / Next */ + .dm-prevnext { + display: grid; grid-template-columns: 1fr 1fr; gap: 20px; + /* Halved from 40px: tight divider→cards spacing without crowding. */ + padding-top: clamp(16px, 2vw, 24px); border-top: 1px solid rgba(15,23,42,0.08); + } + @media (max-width: 640px) { .dm-prevnext { grid-template-columns: 1fr; } } + .dm-prevnext-placeholder { display: block; } + .dm-prevnext-card { + display: flex; gap: 16px; align-items: center; padding: 16px; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + text-decoration: none; transition: transform .3s ease, box-shadow .3s ease, border-color .3s ease; + } + .dm-prevnext-card:hover { + transform: translateY(-4px); border-color: rgba(192,18,39,0.2); + box-shadow: 0 16px 34px rgba(192,18,39,0.10); + } + .dm-prevnext-thumb { + position: relative; flex: 0 0 80px; width: 80px; height: 80px; + border-radius: 16px; overflow: hidden; background: #f1f5f9; + } + .dm-prevnext-text { display: flex; flex-direction: column; gap: 5px; min-width: 0; } + .dm-prevnext-next { text-align: right; } + .dm-prevnext-next .dm-prevnext-text { align-items: flex-end; } + .dm-prevnext-label { + display: inline-flex; align-items: center; gap: 6px; + font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: 1px; color: var(--dm-red); + } + .dm-prevnext-cat { font-size: 11px; font-weight: 700; color: #94a3b8; text-transform: uppercase; letter-spacing: .5px; } + .dm-prevnext-title { + font-size: 15.5px; font-weight: 700; color: #1e293b; line-height: 1.4; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-prevnext-card:hover .dm-prevnext-title { color: var(--dm-red); } + + /* Related */ + .dm-related-heading { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 850 !important; letter-spacing: -.4px !important; + line-height: 1.25 !important; color: #0f172a !important; margin: 0 0 24px; + } + .dm-related-grid { + display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; + } + @media (max-width: 1024px) { .dm-related-grid { grid-template-columns: repeat(2, 1fr); } } + @media (max-width: 700px) { .dm-related-grid { grid-template-columns: 1fr; gap: 24px; } } + + .dm-related-card { + display: flex; flex-direction: column; height: 100%; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + overflow: hidden; box-shadow: 0 4px 24px rgba(15,23,42,0.05); text-decoration: none; + transition: transform .4s cubic-bezier(0.2,0.8,0.2,1), box-shadow .4s ease, border-color .4s ease; + } + .dm-related-card:hover { + transform: translateY(-8px); box-shadow: 0 22px 44px rgba(192,18,39,0.13); + border-color: rgba(192,18,39,0.2); + } + .dm-related-img { + position: relative; width: 100%; aspect-ratio: 16 / 10; overflow: hidden; background: #f1f5f9; + } + .dm-related-img img { transition: transform .5s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-img img { transform: scale(1.05); } + .dm-related-badge { + position: absolute; top: 14px; left: 14px; z-index: 5; background: var(--dm-red); color: #fff; + font-size: 9px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.2px; + padding: 5px 11px; border-radius: 8px; box-shadow: 0 4px 12px rgba(192,18,39,0.25); + } + .dm-related-body { display: flex; flex-direction: column; flex: 1; padding: 22px; } + .dm-related-card-title { + font-size: 17px !important; font-weight: 800 !important; color: #1e293b !important; line-height: 1.4 !important; + letter-spacing: -.2px !important; margin: 0 0 10px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-related-card:hover .dm-related-card-title { color: var(--dm-red); } + .dm-related-card-excerpt { + font-size: 13.5px; font-weight: 500; color: #64748b; line-height: 1.6; margin: 0 0 18px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + } + .dm-related-readmore { + margin-top: auto; display: inline-flex; align-items: center; gap: 7px; + font-size: 12.5px; font-weight: 800; color: var(--dm-red); + text-transform: uppercase; letter-spacing: .6px; + } + .dm-related-readmore-arrow { transition: transform .3s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-readmore-arrow { transform: translateX(5px); } + + /* Contact CTA banner */ + .dm-blog-contact-cta { + display: flex; align-items: center; justify-content: space-between; gap: 32px; + flex-wrap: wrap; + background: linear-gradient(135deg, #1a1a1a 0%, #2d1417 100%); + border-radius: 30px; padding: clamp(32px, 4vw, 56px); + position: relative; overflow: hidden; + } + .dm-blog-contact-cta::after { + content: ""; position: absolute; right: -80px; top: -80px; width: 300px; height: 300px; + background: radial-gradient(circle, rgba(192,18,39,0.40), transparent 70%); + pointer-events: none; + } + .dm-blog-contact-cta-content { position: relative; z-index: 1; max-width: 640px; } + .dm-blog-contact-eyebrow { + display: inline-block; font-size: 12px; font-weight: 800; text-transform: uppercase; + letter-spacing: 1.4px; color: #ff8088; margin-bottom: 14px; + } + .dm-blog-contact-title { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 800 !important; line-height: 1.25 !important; + letter-spacing: -.3px !important; color: #ffffff !important; margin: 0 0 12px; text-wrap: balance; + } + .dm-blog-contact-sub { + font-size: 15.5px; line-height: 1.65; color: #e2e2e2; margin: 0; font-weight: 450; + } + .dm-blog-contact-btn { + position: relative; z-index: 1; flex-shrink: 0; + display: inline-flex; align-items: center; justify-content: center; gap: 10px; + background: var(--dm-red); color: #fff !important; font-size: 15px; font-weight: 700; + padding: 16px 32px; border-radius: 16px; text-decoration: none; + box-shadow: 0 10px 26px rgba(192,18,39,0.34); + transition: background .2s ease, transform .2s ease; + } + .dm-blog-contact-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } + @media (max-width: 720px) { + .dm-blog-contact-cta { flex-direction: column; align-items: flex-start; gap: 26px; } + .dm-blog-contact-btn { width: 100%; } + } +5:["$","section",null,{"className":"dm-blog-footer","aria-label":"More articles","children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$12"}}],"$L13"]}] +6:["$","script","script-0",{"src":"/_next/static/chunks/0yvxf3ok9gcp_.js","async":true}] +7:["$","$L14",null,{"children":["$","$15",null,{"name":"Next.MetadataOutlet","children":"$@16"}]}] +a:["$","$L17",null,{"src":"/images/last-mile-approach.webp","alt":"How Doormile Maintains 99.9% SLA Compliance at Scale","fill":true,"sizes":"(max-width: 768px) 100vw, 760px","style":{"objectFit":"cover"}}] +b:["$","figcaption",null,{"children":"Operations: route planning decisions made before dispatch."}] +c:["$","$L9","7",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","blockquote",null,{"className":"dm-article-quote","children":[["$","p",null,{"children":"A route should be checked before the rider leaves, not explained after the customer calls."}],["$","cite",null,{"children":"Doormile Operations"}]]}]}] +d:["$","$L9","8",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"Putting it into practice"}]}] +e:["$","$L9","9",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"The best improvements usually start with simple measurements. Track distance per route, failed delivery windows, rider idle time, and orders moved between vehicles after dispatch. Those numbers show where the operation is leaking time."}]}] +f:["$","$L9","10",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ol",null,{"className":"dm-article-ol","children":[["$","li","0",{"children":"Benchmark today's distance, fleet size, and on-time rate."}],["$","li","1",{"children":"Include vehicle capacity, delivery windows, rider shifts, and battery charge."}],["$","li","2",{"children":"Check routes against traffic and customer commitments before dispatch."}],["$","li","3",{"children":"Compare the next dispatch cycle against the old plan."}]]}]}] +10:["$","$L9","11",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"Better routing is not about pushing riders harder. It is about giving them a plan that already accounts for the real day ahead."}]}] +11:["$","div",null,{"className":"dm-blog-aside-wrap","children":["$","aside",null,{"className":"dm-blog-sidebar","aria-label":"Blog sidebar","children":[["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Search"}],["$","$L18",null,{}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Recent Posts"}],["$","ul",null,{"className":"dm-blog-recent","children":[["$","li","how-ai-is-transforming-last-mile-ev-delivery",{"children":["$","$L8",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L17",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"How Better Planning Improves Last-Mile EV Delivery"}],["$","time",null,{"dateTime":"2025-10-02","className":"dm-blog-recent-date","children":"Oct 2, 2025"}]]}]]}]}],["$","li","42-less-distance-insights-from-our-hyderabad-hub",{"children":["$","$L8",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L17",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}],["$","time",null,{"dateTime":"2025-09-18","className":"dm-blog-recent-date","children":"Sep 18, 2025"}]]}]]}]}],["$","li","miletruth-ai-10-stages-to-smarter-dispatch",{"children":["$","$L8",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L17",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","time",null,{"dateTime":"2025-09-05","className":"dm-blog-recent-date","children":"Sep 5, 2025"}]]}]]}]}],["$","li","the-ev-paradox-solving-range-anxiety-for-urban-fleets",{"children":["$","$L8",null,{"href":"/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L17",null,{"src":"/images/ev-paradox.webp","alt":"The EV Paradox: Solving Range Anxiety for Urban Fleets","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}],["$","time",null,{"dateTime":"2025-08-21","className":"dm-blog-recent-date","children":"Aug 21, 2025"}]]}]]}]}]]}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Categories"}],["$","ul",null,{"className":"dm-blog-categories","children":[["$","li","Case Study",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Case Study"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","EV Fleet",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"EV Fleet"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}],["$","li","Fleet Management",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Fleet Management"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","MileTruth",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"MileTruth"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],"$L19","$L1a","$L1b"]}]]}],"$L1c"]}]}] +13:["$","div",null,{"className":"dm-blog-footer-inner","children":[["$","nav",null,{"className":"dm-prevnext","aria-label":"Article navigation","children":[["$","$L8",null,{"href":"/blog/building-a-greener-city-the-future-of-urban-logistics","className":"dm-prevnext-card dm-prevnext-prev","children":[["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L17",null,{"src":"/images/blog-post-pic-6.webp","alt":"Building a Greener City: The Future of Urban Logistics","fill":true,"sizes":"80px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-prevnext-text","children":[["$","span",null,{"className":"dm-prevnext-label","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"19","y1":"12","x2":"5","y2":"12"}],["$","polyline",null,{"points":"12 19 5 12 12 5"}]]}],"Previous"]}],["$","span",null,{"className":"dm-prevnext-cat","children":"Sustainability"}],["$","span",null,{"className":"dm-prevnext-title","children":"Building a Greener City: The Future of Urban Logistics"}]]}]]}],["$","$L8",null,{"href":"/blog/battery-simulation-the-secret-to-ev-route-pre-validation","className":"dm-prevnext-card dm-prevnext-next","children":[["$","span",null,{"className":"dm-prevnext-text","children":[["$","span",null,{"className":"dm-prevnext-label","children":["Next",["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","span",null,{"className":"dm-prevnext-cat","children":"EV Fleet"}],["$","span",null,{"className":"dm-prevnext-title","children":"Battery Simulation: The Secret to EV Route Pre-Validation"}]]}],["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L17",null,{"src":"/images/blog-post-pic-3.webp","alt":"Battery Simulation: The Secret to EV Route Pre-Validation","fill":true,"sizes":"80px","style":{"objectFit":"cover"}}]}]]}]]}],["$","div",null,{"className":"dm-related","children":[["$","h2",null,{"className":"dm-related-heading","children":"Related Articles"}],["$","div",null,{"className":"dm-related-grid","children":[["$","$L9","how-ai-is-transforming-last-mile-ev-delivery",{"delay":0,"duration":0.7,"yOffset":30,"children":["$","$L8",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L17",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Technology"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"How Better Planning Improves Last-Mile EV Delivery"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"A practical look at how EV fleets can plan routes, manage charging, and keep delivery promises without adding unnecessary vehicles."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}],["$","$L9","42-less-distance-insights-from-our-hyderabad-hub",{"delay":0.08,"duration":0.7,"yOffset":30,"children":["$","$L8",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L17",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Case Study"}]]}],["$","div",null,{"className":"dm-related-body","children":["$L1d","$L1e","$L1f"]}]]}]}],"$L20"]}]]}],"$L21"]}] +16:null +19:["$","li","Operations",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Operations"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +1a:["$","li","Sustainability",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Sustainability"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +1b:["$","li","Technology",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Technology"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}] +1c:["$","section",null,{"className":"dm-blog-widget dm-blog-cta-card","children":[["$","h2",null,{"className":"dm-blog-cta-title","children":"Planning delivery routes?"}],["$","p",null,{"className":"dm-blog-cta-text","children":"Talk to us about reducing wasted distance, missed windows, and avoidable vehicle time."}],["$","$L8",null,{"href":"/contact","className":"dm-blog-cta-btn","children":["Contact Us",["$","svg",null,{"width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] +1d:["$","h3",null,{"className":"dm-related-card-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}] +1e:["$","p",null,{"className":"dm-related-card-excerpt","children":"A practical look at how one Hyderabad hub reduced distance, used fewer vehicles, and protected delivery windows with better route planning."}] +1f:["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}] +20:["$","$L9","miletruth-ai-10-stages-to-smarter-dispatch",{"delay":0.16,"duration":0.7,"yOffset":30,"children":["$","$L8",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L17",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"MileTruth"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"From order intake to final route output, here is how a dispatch plan is checked before riders leave the hub."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}] +21:["$","div",null,{"className":"dm-blog-contact-cta","children":[["$","div",null,{"className":"dm-blog-contact-cta-content","children":[["$","span",null,{"className":"dm-blog-contact-eyebrow","children":"Let's talk logistics"}],["$","h2",null,{"className":"dm-blog-contact-title","children":"Ready to move smarter with Doormile?"}],["$","p",null,{"className":"dm-blog-contact-sub","children":"Tell us about your fleet and routes — we'll show you where the distance, vehicles and emissions are hiding."}]]}],["$","$L8",null,{"href":"/contact","className":"dm-blog-contact-btn","children":["Get in Touch",["$","svg",null,{"width":"20","height":"20","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] diff --git a/build/blog/how-doormile-maintains-99-9-sla-compliance-at-scale/__next.blog.$d$slug.txt b/build/blog/how-doormile-maintains-99-9-sla-compliance-at-scale/__next.blog.$d$slug.txt new file mode 100644 index 0000000..e0935ae --- /dev/null +++ b/build/blog/how-doormile-maintains-99-9-sla-compliance-at-scale/__next.blog.$d$slug.txt @@ -0,0 +1,5 @@ +1:"$Sreact.fragment" +2:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:[] +0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/blog/how-doormile-maintains-99-9-sla-compliance-at-scale/__next.blog.txt b/build/blog/how-doormile-maintains-99-9-sla-compliance-at-scale/__next.blog.txt new file mode 100644 index 0000000..e0935ae --- /dev/null +++ b/build/blog/how-doormile-maintains-99-9-sla-compliance-at-scale/__next.blog.txt @@ -0,0 +1,5 @@ +1:"$Sreact.fragment" +2:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:[] +0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/blog/miletruth-ai-10-stages-to-smarter-dispatch.html b/build/blog/miletruth-ai-10-stages-to-smarter-dispatch.html new file mode 100644 index 0000000..8b89543 --- /dev/null +++ b/build/blog/miletruth-ai-10-stages-to-smarter-dispatch.html @@ -0,0 +1,1168 @@ +MileTruth™: 10 Stages to Smarter Dispatch – Doormile

    Doormile

    Doormile logo
    Address
    Hyderabad

    5th Floor, Vision Ultima,
    Street No.3, Jayabheri Enclave,
    Gachibowli, Hyderabad,
    Telangana 500032.

    Coimbatore

    Mayflower Valencia,
    Near Nava India Bus Stop,
    Avinashi Road,
    Udayampalayam,
    Tamil Nadu 641037.

    Bengaluru

    C612, 6th Floor,
    Trifecta Starlight,
    ITPL Road,
    Garudacharapalya,
    Mahadevapura,
    Bangalore 560048,
    Karnataka, India.

    Contact Us

    Tel : +91 86886 97941

    Email

    care@doormile.com

    MileTruth

    MileTruth™: 10 Stages to Smarter Dispatch

    Doormile Team2 min read

    Behind every Doormile dispatch is a step-by-step route planning process. Each stage removes a common source of error before the plan reaches the rider.

    A dispatch plan has to be fast, but it also has to be usable. A quick route that ignores a bad address, low battery, or tight delivery window creates problems later in the day.

    The ten stages

    1. Order intake: new orders, rider availability, and vehicle status are collected.
    2. Address check: delivery points, time windows, and service notes are verified.
    3. Stop planning: each stop gets an expected service time and delivery priority.
    4. Travel-time check: routes are compared against time-of-day traffic.
    5. Constraint check: capacity, shift time, customer windows, and range are applied.
    6. Route options: several possible plans are built for the same order set.
    7. Plan selection: the lowest-cost workable route plan is selected.
    8. Battery check: EV routes are checked against real charge capacity.
    9. ETA check: promised delivery times are verified before dispatch.
    10. Dispatch output: the final route is sent to the operations team.

    Why staging matters

    When everything is checked in one step, small errors slip through. A wrong pin, a missing apartment note, or a low battery warning can reach the rider and become a customer issue.

    MileTruth routing pipeline diagram
    A staged dispatch process catches address, range, and ETA issues before riders leave.

    Each stage should remove one kind of mistake. By dispatch time, the route should already be practical.

    MileTruth Engineering

    Comparing route options

    The useful part is not only building one route. It is comparing a few workable route options before choosing the plan. One option may save distance, another may protect a tight delivery window, and another may keep an EV closer to a charger.

    • Several route plans checked before dispatch
    • Distance, time windows, capacity, and range considered together
    • Range and ETA checked before the route reaches the rider
    • Fast output that still leaves room for dispatcher review

    The goal is simple: give the dispatch team a route plan they can trust before the first vehicle leaves the hub.

    \ No newline at end of file diff --git a/build/blog/miletruth-ai-10-stages-to-smarter-dispatch.txt b/build/blog/miletruth-ai-10-stages-to-smarter-dispatch.txt new file mode 100644 index 0000000..baf8ed9 --- /dev/null +++ b/build/blog/miletruth-ai-10-stages-to-smarter-dispatch.txt @@ -0,0 +1,546 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +d:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +e:"$Sreact.suspense" +11:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +13:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +15:I[68027,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"P":null,"c":["","blog","miletruth-ai-10-stages-to-smarter-dispatch"],"q":"","i":false,"f":[[["",{"children":["blog",{"children":[["slug","miletruth-ai-10-stages-to-smarter-dispatch","d",null],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":["$Lc",[["$","script","script-0",{"src":"/_next/static/chunks/0yvxf3ok9gcp_.js","async":true,"nonce":"$undefined"}]],["$","$Ld",null,{"children":["$","$e",null,{"name":"Next.MetadataOutlet","children":"$@f"}]}]]}],{},null,false,null]},null,false,"$@10"]},null,false,"$@10"]},null,false,null],["$","$1","h",{"children":[null,["$","$L11",null,{"children":"$L12"}],["$","div",null,{"hidden":true,"children":["$","$L13",null,{"children":["$","$e",null,{"name":"Next.Metadata","children":"$L14"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$15",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"kmSVPuUqY3Rhw5xy4D2nn"} +16:[] +10:"$W16" +:HL["/images/blog-post-pic-31.webp","image"] +17:T3d6f, + .dm-single-blog { + --dm-red: #c01227; + --dm-red-hover: #e31d32; + --dm-radius-card: 22px; + --dm-radius-img: 20px; + --dm-radius-badge: 8px; + --dm-shadow-card: 0 4px 24px rgba(15, 23, 42, 0.05); + --dm-border: 1px solid rgba(15, 23, 42, 0.09); + --dm-space-p: 24px; + --dm-space-h: 32px; + --dm-space-img: 32px; + --dm-space-quote: 40px; + --dm-sticky-top: 138px; + --dm-measure: min(1100px, 100%); + font-family: var(--font-manrope), sans-serif; + } + + /* Heading normalization. Beat the global theme's .elementor-kit-5 h1-h6 + (120/80/60px UPPERCASE) rules with !important on our own classes. */ + .dm-single-blog :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline, + specificity 0-1-1) so blog links keep our colors and never get underlined. */ + .dm-single-blog a { text-decoration: none !important; } + + /* Page banner: tall homepage-scale frame with only badge + title inside */ + /* Compound selector (specificity 20) + !important beats the global 800px + single-class height rules so the blog banner can use viewport heights. */ + .custom-standard-hero-card.dm-banner-card { + height: 90vh !important; + min-height: 85vh !important; + } + @media (max-width: 1024px) { + .custom-standard-hero-card.dm-banner-card { height: 80vh !important; min-height: 75vh !important; } + } + @media (max-width: 600px) { + .custom-standard-hero-card.dm-banner-card { height: 78vh !important; min-height: 72vh !important; } + } + + .dm-banner-inner { + position: relative; width: 100%; height: 100%; + display: flex; flex-direction: column; align-items: center; justify-content: center; + text-align: center; gap: clamp(22px, 2.6vw, 34px); + padding: clamp(48px, 8vh, 96px) clamp(20px, 5vw, 48px); + } + + .dm-banner-category { + display: inline-block; background: var(--dm-red); color: #fff; + font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.6px; + padding: 9px 18px; border-radius: 999px; box-shadow: 0 8px 22px rgba(192,18,39,0.45); + } + .dm-banner-title { + font-family: var(--font-manrope), sans-serif !important; + font-size: clamp(34px, 5vw, 60px) !important; font-weight: 850 !important; + line-height: 1.16 !important; letter-spacing: -1.2px !important; + color: #ffffff !important; margin: 0; max-width: 820px; + text-wrap: balance; text-shadow: 0 2px 30px rgba(0,0,0,0.38); + } + @media (max-width: 1024px) { .dm-banner-title { font-size: clamp(32px, 6vw, 48px) !important; max-width: 90%; } } + @media (max-width: 600px) { .dm-banner-title { font-size: clamp(28px, 8vw, 38px) !important; max-width: 90%; } } + + /* Content wrap begins immediately below the banner */ + /* Shared content container: the SAME max-width + horizontal padding is used + by BlogPostFooter (.dm-blog-footer-inner) so the article body, headings, + images, Prev/Next, Related Articles and the CTA banner all align to one + grid with identical left/right edges. Keep both in sync. */ + .dm-blog-wrap { + max-width: 1280px; margin: 0 auto; + /* 20px mobile padding floor → 40px on desktop; matches the footer container. */ + padding: clamp(14px, 2vw, 26px) clamp(20px, 4vw, 40px) 0; + } + @media (max-width: 767px) { + .dm-blog-wrap { + padding-left: 16px; + padding-right: 16px; + } + } + + /* ── Article meta bar (directly under the hero) ── */ + .dm-meta-bar { + display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 14px 24px; + padding: clamp(20px, 2.6vw, 30px) 0; margin-bottom: clamp(26px, 3vw, 44px); + border-bottom: 1px solid rgba(15,23,42,0.10); + } + .dm-meta-breadcrumb ol { + list-style: none; display: flex; flex-wrap: wrap; align-items: center; + gap: 8px; margin: 0; padding: 0; font-size: 13px; font-weight: 600; color: #64748b; + } + .dm-meta-breadcrumb a { color: #64748b !important; text-decoration: none; transition: color .2s ease; } + .dm-meta-breadcrumb a:hover { color: var(--dm-red) !important; } + .dm-meta-sep { color: #cbd5e1; } + .dm-meta-current { + color: #0f172a; font-weight: 700; + max-width: min(40ch, 46vw); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; + } + @media (max-width: 600px) { .dm-meta-current { max-width: 56vw; } } + .dm-meta-items { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 20px; } + .dm-meta-item { + display: inline-flex; align-items: center; gap: 7px; + font-size: 13.5px; font-weight: 600; color: #475569; + } + .dm-meta-item svg { color: var(--dm-red); flex: 0 0 auto; } + .dm-meta-author { color: #0f172a; font-weight: 700; } + @media (max-width: 600px) { .dm-meta-bar { gap: 12px; } } + .dm-blog-layout { + display: grid; grid-template-columns: minmax(0,1fr) 320px; + /* Tighter gap gives the reading column more room next to the 320px sidebar. */ + gap: clamp(28px, 3vw, 56px); align-items: start; + } + @media (max-width: 1024px) { + .dm-blog-layout { grid-template-columns: 1fr; gap: 48px; } + /* Single-column (tablet/mobile): cap the reading column and centre it so the + article never sits left-aligned with a large empty right gutter. */ + .dm-blog-main { max-width: 900px; margin-inline: auto; } + } + .dm-blog-main { min-width: 0; } + + /* ── Intro lead ── */ + .dm-blog-intro { + max-width: var(--dm-measure); + font-size: clamp(18px, 1.5vw, 20px); line-height: 1.65; font-weight: 500; + color: #475569; margin: 0 0 clamp(26px, 3vw, 38px); padding-left: 20px; + border-left: 3px solid var(--dm-red); + } + + /* ── Article body ── */ + .dm-article-body { max-width: var(--dm-measure); } + .dm-article-p { + font-size: 18px !important; line-height: 1.8 !important; color: #334155; font-weight: 450; + margin: 0 0 var(--dm-space-p); + } + .dm-article-h2 { + font-size: clamp(23px, 2vw, 30px) !important; font-weight: 800 !important; letter-spacing: -.3px !important; + color: #0f172a !important; line-height: 1.3 !important; margin: 48px 0 var(--dm-space-h); + text-wrap: balance; + } + /* Each article block is wrapped in its OWN ScrollReveal
    , so a bare + :first-child rule matched every heading (each is the only child of its + wrapper) and zeroed its top margin, collapsing the gap above every + section heading. Scope the reset to only the article body's first block. */ + .dm-article-body > :first-child :where(.dm-article-h2, .dm-article-h3), + .dm-article-body > .dm-article-h2:first-child, + .dm-article-body > .dm-article-h3:first-child { margin-top: 0; } + .dm-article-h3 { + font-size: clamp(19px, 1.5vw, 23px) !important; font-weight: 800 !important; letter-spacing: -.2px !important; + color: #1e293b !important; line-height: 1.34 !important; margin: 40px 0 18px; + text-wrap: balance; + } + @media (max-width: 600px) { + .dm-article-p { font-size: 16px !important; } + .dm-article-ul li, .dm-article-ol li { font-size: 15.5px; } + .dm-article-h2 { font-size: clamp(22px, 6vw, 28px) !important; margin-top: 38px; } + .dm-article-h3 { font-size: clamp(18px, 5vw, 22px) !important; } + } + + .dm-article-ul, .dm-article-ol { + /* Top margin (was 0) separates the list from the paragraph above it; + matching bottom margin keeps it clear of the next heading/paragraph. + Slightly larger than --dm-space-p so the list reads as its own block. */ + margin: clamp(26px, 2.4vw, 32px) 0 clamp(26px, 2.4vw, 32px); + padding-left: 2px; list-style: none; + display: flex; flex-direction: column; gap: 15px; + } + /* Prefixed with .dm-article-body so these beat the theme's global + ".logico-front-end ul li:before" fontello-glyph bullet (specificity 0,1,3), + which otherwise replaces our clean red dot with a misaligned checkmark glyph + and adds its own 1.7em indent. */ + .dm-article-body .dm-article-ul li, .dm-article-body .dm-article-ol li { + position: relative; padding-left: 34px; + font-size: 17px; line-height: 1.65; color: #334155; font-weight: 450; + } + .dm-article-body .dm-article-ul li::before { + content: ""; position: absolute; left: 7px; top: 10px; + width: 8px; height: 8px; border-radius: 50%; background: var(--dm-red); + /* kill any inherited fontello glyph from the global rule */ + font-size: 0; line-height: 0; + } + .dm-article-ol { counter-reset: dm-li; } + .dm-article-body .dm-article-ol li { counter-increment: dm-li; } + .dm-article-body .dm-article-ol li::before { + content: counter(dm-li); position: absolute; left: 0; top: 0; + width: 24px; height: 24px; border-radius: 7px; + background: rgba(192,18,39,0.10); color: var(--dm-red); + font-size: 12px; font-weight: 800; display: flex; align-items: center; justify-content: center; + } + + /* ── Quote ── */ + .dm-article-quote { + position: relative; margin: var(--dm-space-quote) 0; padding: 30px 32px 30px 64px; + background: linear-gradient(135deg, #fbf2f3 0%, #fdf7f8 100%); + border-left: 4px solid var(--dm-red); border-radius: 0 18px 18px 0; + box-shadow: 0 8px 28px rgba(192, 18, 39, 0.06); + } + .dm-article-quote::before { + content: "\201C"; position: absolute; left: 22px; top: 8px; + font-family: Georgia, "Times New Roman", serif; + font-size: 64px; line-height: 1; color: rgba(192, 18, 39, 0.28); font-weight: 700; + } + .dm-article-quote p { + font-size: clamp(19px, 2vw, 23px); line-height: 1.5; font-weight: 600; + font-style: italic; color: #1e293b; margin: 0; + } + .dm-article-quote cite { + display: block; margin-top: 16px; font-size: 13px; font-weight: 700; + font-style: normal; color: var(--dm-red); text-transform: uppercase; letter-spacing: .6px; + } + @media (max-width: 600px) { .dm-article-quote { padding: 26px 22px; } .dm-article-quote::before { display: none; } } + + /* ── Images ── */ + .dm-article-figure { margin: var(--dm-space-img) 0; } + .dm-article-figure-img { + position: relative; display: block; width: 100%; aspect-ratio: 16 / 9; + border-radius: var(--dm-radius-img); overflow: hidden; box-shadow: 0 14px 34px rgba(15,23,42,0.10); + } + .dm-article-figure figcaption { + margin-top: 14px; font-size: 13.5px; color: #94a3b8; font-weight: 500; + text-align: center; font-style: italic; + } + + /* ── Sidebar ── */ + .dm-blog-aside-wrap { position: relative; } + .dm-blog-sidebar { + display: flex; flex-direction: column; gap: 18px; + position: sticky; top: var(--dm-sticky-top); + } + @media (max-width: 1024px) { .dm-blog-sidebar { position: static; gap: 20px; } } + + .dm-blog-widget { + background: #fff; border: var(--dm-border); border-radius: var(--dm-radius-card); + padding: 20px; box-shadow: var(--dm-shadow-card); + } + .dm-blog-widget-title { + font-size: 13px !important; font-weight: 700 !important; text-transform: uppercase !important; + letter-spacing: .8px !important; line-height: 1.35 !important; color: #0f172a !important; + margin: 0 0 15px; padding: 0 0 12px; + border-bottom: 1px solid rgba(15,23,42,0.08); + overflow: visible; white-space: normal; word-break: normal; + } + + /* Search */ + .dm-sr-only { + position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; + overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; + } + .dm-blog-search { position: relative; } + .dm-blog-search-form { position: relative; } + .dm-blog-search-input { + width: 100%; height: 46px; border: 1.5px solid #e2e8f0; border-radius: 12px; + padding: 0 42px 0 15px; font-size: 14px; font-family: inherit; color: #0f172a; + background: #f8fafc; transition: border-color .2s ease, box-shadow .2s ease, background .2s ease; + } + .dm-blog-search-input::placeholder { color: #9c9c9c; } + .dm-blog-search-input:focus { + outline: none; border-color: var(--dm-red); background: #fff; + box-shadow: 0 0 0 3px rgba(192,18,39,0.11); + } + .dm-blog-search-icon { + position: absolute; right: 14px; top: 50%; transform: translateY(-50%); + color: #94a3b8; pointer-events: none; display: flex; + } + .dm-blog-search-results { + position: absolute; z-index: 20; top: calc(100% + 8px); left: 0; right: 0; + background: #fff; border: 1px solid rgba(15,23,42,0.10); border-radius: 14px; + box-shadow: 0 18px 42px rgba(15,23,42,0.14); overflow: hidden; + } + .dm-blog-search-results ul { list-style: none; margin: 0; padding: 6px; } + .dm-blog-search-result { + display: flex; flex-direction: column; gap: 3px; padding: 10px 12px; + border-radius: 10px; text-decoration: none; transition: background .15s ease; + } + .dm-blog-search-result:hover { background: #f8fafc; } + .dm-blog-search-result-cat { + font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .8px; color: var(--dm-red); + } + .dm-blog-search-result-title { font-size: 13.5px; font-weight: 600; color: #1e293b; line-height: 1.35; } + .dm-blog-search-empty { margin: 0; padding: 14px 12px; font-size: 13px; color: #64748b; } + + /* Recent posts */ + .dm-blog-recent { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 15px; } + .dm-blog-recent-item { display: flex; gap: 13px; align-items: center; text-decoration: none; } + .dm-blog-recent-thumb { + position: relative; flex: 0 0 62px; width: 62px; height: 62px; + border-radius: 13px; overflow: hidden; background: #f1f5f9; + } + .dm-blog-recent-meta { display: flex; flex-direction: column; gap: 4px; min-width: 0; } + .dm-blog-recent-title { + font-size: 13.5px; font-weight: 700; color: #1e293b; line-height: 1.35; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-blog-recent-item:hover .dm-blog-recent-title { color: var(--dm-red); } + .dm-blog-recent-date { font-size: 11.5px; font-weight: 600; color: #94a3b8; } + + /* Categories */ + .dm-blog-categories { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; } + .dm-blog-category-item { + display: flex; align-items: center; justify-content: space-between; gap: 10px; + padding: 11px 2px; text-decoration: none; font-size: 14px; font-weight: 600; color: #334155 !important; + border-bottom: 1px solid rgba(15,23,42,0.06); transition: color .2s ease, padding-left .2s ease; + } + .dm-blog-categories li:last-child .dm-blog-category-item { border-bottom: none; } + .dm-blog-category-item:hover { color: var(--dm-red); padding-left: 6px; } + .dm-blog-category-item > span:first-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } + .dm-blog-category-count { + flex: 0 0 auto; font-size: 11px; font-weight: 800; color: #94a3b8; background: #f1f5f9; + min-width: 24px; height: 22px; border-radius: 7px; display: inline-flex; + align-items: center; justify-content: center; padding: 0 7px; + } + + /* CTA card */ + .dm-blog-cta-card { background: #1f1f1f; border-color: #1f1f1f; } + .dm-blog-cta-title { font-size: 18px !important; font-weight: 800 !important; color: #fff !important; line-height: 1.32 !important; margin: 0 0 10px; letter-spacing: -.2px !important; } + .dm-blog-cta-text { font-size: 13.5px; line-height: 1.6; color: #c7c7c7; margin: 0 0 20px; font-weight: 450; } + .dm-blog-cta-btn { + display: inline-flex; align-items: center; gap: 8px; + background: var(--dm-red); color: #fff !important; font-size: 13.5px; font-weight: 700; + padding: 12px 22px; border-radius: 12px; text-decoration: none; + transition: background .2s ease, transform .2s ease; + } + .dm-blog-cta-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } +c:["$","div",null,{"className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"Article\",\"headline\":\"MileTruth™: 10 Stages to Smarter Dispatch\",\"description\":\"From order intake to final route output, here is how a dispatch plan is checked before riders leave the hub.\",\"image\":[\"https://www.doormile.com/images/blog-post-pic-31.webp\"],\"datePublished\":\"2025-09-05T00:00:00.000Z\",\"dateModified\":\"2025-09-05T00:00:00.000Z\",\"author\":{\"@type\":\"Organization\",\"name\":\"Doormile Team\",\"url\":\"https://www.doormile.com\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Doormile\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://www.doormile.com/images/cropped-image-2.png\"}},\"mainEntityOfPage\":{\"@type\":\"WebPage\",\"@id\":\"https://www.doormile.com/blog/miletruth-ai-10-stages-to-smarter-dispatch\"},\"articleSection\":\"MileTruth\"}"}}],["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https://www.doormile.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https://www.doormile.com/blog\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"MileTruth™: 10 Stages to Smarter Dispatch\",\"item\":\"https://www.doormile.com/blog/miletruth-ai-10-stages-to-smarter-dispatch\"}]}"}}],["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":[["$","article",null,{"className":"dm-single-blog","children":[["$","link",null,{"rel":"preload","as":"image","href":"/images/blog-post-pic-31.webp"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$17"}}],"$L18","$L19"]}],"$L1a"]}]}]]}] +1b:I[22016,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],""] +1c:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"ScrollReveal"] +18:["$","div",null,{"className":"custom-standard-hero-container","children":["$","div",null,{"className":"custom-standard-hero-card dm-banner-card","style":{"backgroundImage":"url(/images/blog-post-pic-31.webp)","--hero-overlay":"linear-gradient(180deg, rgba(0,0,0,0.38) 0%, rgba(0,0,0,0.46) 55%, rgba(0,0,0,0.60) 100%)"},"children":["$","div",null,{"className":"e-con-inner dm-banner-inner","children":[["$","span",null,{"className":"dm-banner-category","children":"MileTruth"}],["$","h1",null,{"className":"dm-banner-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}]]}]}]}] +19:["$","div",null,{"className":"dm-blog-wrap","children":[["$","div",null,{"className":"dm-meta-bar","children":[["$","nav",null,{"className":"dm-meta-breadcrumb","aria-label":"Breadcrumb","children":["$","ol",null,{"children":[["$","li",null,{"children":["$","$L1b",null,{"href":"/","children":"Home"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"children":["$","$L1b",null,{"href":"/blog","children":"Blog"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"aria-current":"page","className":"dm-meta-current","children":"MileTruth™: 10 Stages to Smarter Dispatch"}]]}]}],["$","div",null,{"className":"dm-meta-items","children":[["$","span",null,{"className":"dm-meta-item dm-meta-author","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","path",null,{"d":"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"}],["$","circle",null,{"cx":"12","cy":"7","r":"4"}]]}],"Doormile Team"]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","rect",null,{"x":"3","y":"4","width":"18","height":"18","rx":"2"}],["$","line",null,{"x1":"16","y1":"2","x2":"16","y2":"6"}],["$","line",null,{"x1":"8","y1":"2","x2":"8","y2":"6"}],["$","line",null,{"x1":"3","y1":"10","x2":"21","y2":"10"}]]}],["$","time",null,{"dateTime":"2025-09-05","children":"Sep 5, 2025"}]]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","circle",null,{"cx":"12","cy":"12","r":"9"}],["$","polyline",null,{"points":"12 7 12 12 15 14"}]]}],2," min read"]}]]}]]}],["$","div",null,{"className":"dm-blog-layout","children":[["$","div",null,{"className":"dm-blog-main","children":[["$","p",null,{"className":"dm-blog-intro","children":"Behind every Doormile dispatch is a step-by-step route planning process. Each stage removes a common source of error before the plan reaches the rider."}],["$","div",null,{"className":"dm-article-body","children":[["$","$L1c","0",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"A dispatch plan has to be fast, but it also has to be usable. A quick route that ignores a bad address, low battery, or tight delivery window creates problems later in the day."}]}],["$","$L1c","1",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"The ten stages"}]}],["$","$L1c","2",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ol",null,{"className":"dm-article-ol","children":[["$","li","0",{"children":"Order intake: new orders, rider availability, and vehicle status are collected."}],["$","li","1",{"children":"Address check: delivery points, time windows, and service notes are verified."}],["$","li","2",{"children":"Stop planning: each stop gets an expected service time and delivery priority."}],["$","li","3",{"children":"Travel-time check: routes are compared against time-of-day traffic."}],["$","li","4",{"children":"Constraint check: capacity, shift time, customer windows, and range are applied."}],["$","li","5",{"children":"Route options: several possible plans are built for the same order set."}],["$","li","6",{"children":"Plan selection: the lowest-cost workable route plan is selected."}],["$","li","7",{"children":"Battery check: EV routes are checked against real charge capacity."}],["$","li","8",{"children":"ETA check: promised delivery times are verified before dispatch."}],["$","li","9",{"children":"Dispatch output: the final route is sent to the operations team."}]]}]}],["$","$L1c","3",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h3",null,{"className":"dm-article-h3","children":"Why staging matters"}]}],["$","$L1c","4",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"When everything is checked in one step, small errors slip through. A wrong pin, a missing apartment note, or a low battery warning can reach the rider and become a customer issue."}]}],"$L1d","$L1e","$L1f","$L20","$L21","$L22"]}]]}],"$L23"]}]]}] +24:T2021, + .dm-blog-footer { + font-family: var(--font-manrope), sans-serif; --dm-red: #c01227; --dm-red-hover: #e31d32; + /* The global theme applies 72px top/bottom section padding — strip it so the + inner container is the single source of vertical rhythm (no double gap). */ + padding: 0 !important; + } + /* Neutralize the global theme's 120/80/60px UPPERCASE heading rules */ + .dm-blog-footer :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline) */ + .dm-blog-footer a { text-decoration: none !important; } + /* Shared content container — mirrors SingleBlog's .dm-blog-wrap (same 1280px + max-width + 20→40px horizontal padding) so Prev/Next, Related and the CTA + align to the exact same left/right edges as the article body above. + Vertical rhythm: ~64px from the article end to the Prev/Next divider, then a + consistent ~64–72px section→section gap (no 120px+ voids). */ + .dm-blog-footer-inner { + max-width: 1280px; margin: 0 auto; + /* Compact vertical rhythm on an 8px system. Top padding sets the + article→Prev/Next gap (~24–32px); the inter-section gap sets the + Prev/Next→Related gap (~32–48px). No large arbitrary voids. */ + /* Minimal bottom padding — the global site footer already contributes its + own 20px top inset, so the CTA banner sits close to it without a void. */ + padding: clamp(24px, 3vw, 32px) clamp(20px, 4vw, 40px) clamp(8px, 1.5vw, 16px); + display: flex; flex-direction: column; gap: clamp(32px, 4vw, 48px); + } + @media (max-width: 767px) { + .dm-blog-footer-inner { + padding-left: 16px; + padding-right: 16px; + } + } + + /* Prev / Next */ + .dm-prevnext { + display: grid; grid-template-columns: 1fr 1fr; gap: 20px; + /* Halved from 40px: tight divider→cards spacing without crowding. */ + padding-top: clamp(16px, 2vw, 24px); border-top: 1px solid rgba(15,23,42,0.08); + } + @media (max-width: 640px) { .dm-prevnext { grid-template-columns: 1fr; } } + .dm-prevnext-placeholder { display: block; } + .dm-prevnext-card { + display: flex; gap: 16px; align-items: center; padding: 16px; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + text-decoration: none; transition: transform .3s ease, box-shadow .3s ease, border-color .3s ease; + } + .dm-prevnext-card:hover { + transform: translateY(-4px); border-color: rgba(192,18,39,0.2); + box-shadow: 0 16px 34px rgba(192,18,39,0.10); + } + .dm-prevnext-thumb { + position: relative; flex: 0 0 80px; width: 80px; height: 80px; + border-radius: 16px; overflow: hidden; background: #f1f5f9; + } + .dm-prevnext-text { display: flex; flex-direction: column; gap: 5px; min-width: 0; } + .dm-prevnext-next { text-align: right; } + .dm-prevnext-next .dm-prevnext-text { align-items: flex-end; } + .dm-prevnext-label { + display: inline-flex; align-items: center; gap: 6px; + font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: 1px; color: var(--dm-red); + } + .dm-prevnext-cat { font-size: 11px; font-weight: 700; color: #94a3b8; text-transform: uppercase; letter-spacing: .5px; } + .dm-prevnext-title { + font-size: 15.5px; font-weight: 700; color: #1e293b; line-height: 1.4; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-prevnext-card:hover .dm-prevnext-title { color: var(--dm-red); } + + /* Related */ + .dm-related-heading { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 850 !important; letter-spacing: -.4px !important; + line-height: 1.25 !important; color: #0f172a !important; margin: 0 0 24px; + } + .dm-related-grid { + display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; + } + @media (max-width: 1024px) { .dm-related-grid { grid-template-columns: repeat(2, 1fr); } } + @media (max-width: 700px) { .dm-related-grid { grid-template-columns: 1fr; gap: 24px; } } + + .dm-related-card { + display: flex; flex-direction: column; height: 100%; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + overflow: hidden; box-shadow: 0 4px 24px rgba(15,23,42,0.05); text-decoration: none; + transition: transform .4s cubic-bezier(0.2,0.8,0.2,1), box-shadow .4s ease, border-color .4s ease; + } + .dm-related-card:hover { + transform: translateY(-8px); box-shadow: 0 22px 44px rgba(192,18,39,0.13); + border-color: rgba(192,18,39,0.2); + } + .dm-related-img { + position: relative; width: 100%; aspect-ratio: 16 / 10; overflow: hidden; background: #f1f5f9; + } + .dm-related-img img { transition: transform .5s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-img img { transform: scale(1.05); } + .dm-related-badge { + position: absolute; top: 14px; left: 14px; z-index: 5; background: var(--dm-red); color: #fff; + font-size: 9px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.2px; + padding: 5px 11px; border-radius: 8px; box-shadow: 0 4px 12px rgba(192,18,39,0.25); + } + .dm-related-body { display: flex; flex-direction: column; flex: 1; padding: 22px; } + .dm-related-card-title { + font-size: 17px !important; font-weight: 800 !important; color: #1e293b !important; line-height: 1.4 !important; + letter-spacing: -.2px !important; margin: 0 0 10px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-related-card:hover .dm-related-card-title { color: var(--dm-red); } + .dm-related-card-excerpt { + font-size: 13.5px; font-weight: 500; color: #64748b; line-height: 1.6; margin: 0 0 18px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + } + .dm-related-readmore { + margin-top: auto; display: inline-flex; align-items: center; gap: 7px; + font-size: 12.5px; font-weight: 800; color: var(--dm-red); + text-transform: uppercase; letter-spacing: .6px; + } + .dm-related-readmore-arrow { transition: transform .3s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-readmore-arrow { transform: translateX(5px); } + + /* Contact CTA banner */ + .dm-blog-contact-cta { + display: flex; align-items: center; justify-content: space-between; gap: 32px; + flex-wrap: wrap; + background: linear-gradient(135deg, #1a1a1a 0%, #2d1417 100%); + border-radius: 30px; padding: clamp(32px, 4vw, 56px); + position: relative; overflow: hidden; + } + .dm-blog-contact-cta::after { + content: ""; position: absolute; right: -80px; top: -80px; width: 300px; height: 300px; + background: radial-gradient(circle, rgba(192,18,39,0.40), transparent 70%); + pointer-events: none; + } + .dm-blog-contact-cta-content { position: relative; z-index: 1; max-width: 640px; } + .dm-blog-contact-eyebrow { + display: inline-block; font-size: 12px; font-weight: 800; text-transform: uppercase; + letter-spacing: 1.4px; color: #ff8088; margin-bottom: 14px; + } + .dm-blog-contact-title { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 800 !important; line-height: 1.25 !important; + letter-spacing: -.3px !important; color: #ffffff !important; margin: 0 0 12px; text-wrap: balance; + } + .dm-blog-contact-sub { + font-size: 15.5px; line-height: 1.65; color: #e2e2e2; margin: 0; font-weight: 450; + } + .dm-blog-contact-btn { + position: relative; z-index: 1; flex-shrink: 0; + display: inline-flex; align-items: center; justify-content: center; gap: 10px; + background: var(--dm-red); color: #fff !important; font-size: 15px; font-weight: 700; + padding: 16px 32px; border-radius: 16px; text-decoration: none; + box-shadow: 0 10px 26px rgba(192,18,39,0.34); + transition: background .2s ease, transform .2s ease; + } + .dm-blog-contact-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } + @media (max-width: 720px) { + .dm-blog-contact-cta { flex-direction: column; align-items: flex-start; gap: 26px; } + .dm-blog-contact-btn { width: 100%; } + } +1a:["$","section",null,{"className":"dm-blog-footer","aria-label":"More articles","children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$24"}}],"$L25"]}] +26:I[5500,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"Image"] +27:I[23096,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"default"] +1d:["$","$L1c","5",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","figure",null,{"className":"dm-article-figure","children":[["$","span",null,{"className":"dm-article-figure-img","children":["$","$L26",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth routing pipeline diagram","fill":true,"sizes":"(max-width: 768px) 100vw, 760px","style":{"objectFit":"cover"}}]}],["$","figcaption",null,{"children":"A staged dispatch process catches address, range, and ETA issues before riders leave."}]]}]}] +1e:["$","$L1c","6",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","blockquote",null,{"className":"dm-article-quote","children":[["$","p",null,{"children":"Each stage should remove one kind of mistake. By dispatch time, the route should already be practical."}],["$","cite",null,{"children":"MileTruth Engineering"}]]}]}] +1f:["$","$L1c","7",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"Comparing route options"}]}] +20:["$","$L1c","8",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"The useful part is not only building one route. It is comparing a few workable route options before choosing the plan. One option may save distance, another may protect a tight delivery window, and another may keep an EV closer to a charger."}]}] +21:["$","$L1c","9",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ul",null,{"className":"dm-article-ul","children":[["$","li","0",{"children":"Several route plans checked before dispatch"}],["$","li","1",{"children":"Distance, time windows, capacity, and range considered together"}],["$","li","2",{"children":"Range and ETA checked before the route reaches the rider"}],["$","li","3",{"children":"Fast output that still leaves room for dispatcher review"}]]}]}] +22:["$","$L1c","10",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"The goal is simple: give the dispatch team a route plan they can trust before the first vehicle leaves the hub."}]}] +23:["$","div",null,{"className":"dm-blog-aside-wrap","children":["$","aside",null,{"className":"dm-blog-sidebar","aria-label":"Blog sidebar","children":[["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Search"}],["$","$L27",null,{}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Recent Posts"}],["$","ul",null,{"className":"dm-blog-recent","children":[["$","li","how-ai-is-transforming-last-mile-ev-delivery",{"children":["$","$L1b",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L26",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"How Better Planning Improves Last-Mile EV Delivery"}],["$","time",null,{"dateTime":"2025-10-02","className":"dm-blog-recent-date","children":"Oct 2, 2025"}]]}]]}]}],["$","li","42-less-distance-insights-from-our-hyderabad-hub",{"children":["$","$L1b",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L26",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}],["$","time",null,{"dateTime":"2025-09-18","className":"dm-blog-recent-date","children":"Sep 18, 2025"}]]}]]}]}],["$","li","the-ev-paradox-solving-range-anxiety-for-urban-fleets",{"children":["$","$L1b",null,{"href":"/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L26",null,{"src":"/images/ev-paradox.webp","alt":"The EV Paradox: Solving Range Anxiety for Urban Fleets","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}],["$","time",null,{"dateTime":"2025-08-21","className":"dm-blog-recent-date","children":"Aug 21, 2025"}]]}]]}]}],["$","li","why-mathematical-precision-beats-heuristics-in-routing",{"children":["$","$L1b",null,{"href":"/blog/why-mathematical-precision-beats-heuristics-in-routing","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L26",null,{"src":"/images/blog-post-pic-14.webp","alt":"Why Mathematical Precision Beats Heuristics in Routing","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"Why Mathematical Precision Beats Heuristics in Routing"}],["$","time",null,{"dateTime":"2025-08-07","className":"dm-blog-recent-date","children":"Aug 7, 2025"}]]}]]}]}]]}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Categories"}],["$","ul",null,{"className":"dm-blog-categories","children":[["$","li","Case Study",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Case Study"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","EV Fleet",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"EV Fleet"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}],["$","li","Fleet Management",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Fleet Management"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","MileTruth",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":["$L28","$L29"]}]}],"$L2a","$L2b","$L2c"]}]]}],"$L2d"]}]}] +25:["$","div",null,{"className":"dm-blog-footer-inner","children":[["$","nav",null,{"className":"dm-prevnext","aria-label":"Article navigation","children":[["$","$L1b",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-prevnext-card dm-prevnext-prev","children":[["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L26",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"80px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-prevnext-text","children":[["$","span",null,{"className":"dm-prevnext-label","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"19","y1":"12","x2":"5","y2":"12"}],["$","polyline",null,{"points":"12 19 5 12 12 5"}]]}],"Previous"]}],["$","span",null,{"className":"dm-prevnext-cat","children":"Case Study"}],["$","span",null,{"className":"dm-prevnext-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}]]}]]}],["$","$L1b",null,{"href":"/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets","className":"dm-prevnext-card dm-prevnext-next","children":[["$","span",null,{"className":"dm-prevnext-text","children":[["$","span",null,{"className":"dm-prevnext-label","children":["Next",["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","span",null,{"className":"dm-prevnext-cat","children":"EV Fleet"}],["$","span",null,{"className":"dm-prevnext-title","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}]]}],["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L26",null,{"src":"/images/ev-paradox.webp","alt":"The EV Paradox: Solving Range Anxiety for Urban Fleets","fill":true,"sizes":"80px","style":{"objectFit":"cover"}}]}]]}]]}],["$","div",null,{"className":"dm-related","children":[["$","h2",null,{"className":"dm-related-heading","children":"Related Articles"}],["$","div",null,{"className":"dm-related-grid","children":[["$","$L1c","how-ai-is-transforming-last-mile-ev-delivery",{"delay":0,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L26",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Technology"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"How Better Planning Improves Last-Mile EV Delivery"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"A practical look at how EV fleets can plan routes, manage charging, and keep delivery promises without adding unnecessary vehicles."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}],["$","$L1c","42-less-distance-insights-from-our-hyderabad-hub",{"delay":0.08,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L26",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Case Study"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}],"$L2e","$L2f"]}]]}]}],"$L30"]}]]}],"$L31"]}] +28:["$","span",null,{"children":"MileTruth"}] +29:["$","span",null,{"className":"dm-blog-category-count","children":1}] +2a:["$","li","Operations",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Operations"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +2b:["$","li","Sustainability",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Sustainability"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +2c:["$","li","Technology",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Technology"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}] +2d:["$","section",null,{"className":"dm-blog-widget dm-blog-cta-card","children":[["$","h2",null,{"className":"dm-blog-cta-title","children":"Planning delivery routes?"}],["$","p",null,{"className":"dm-blog-cta-text","children":"Talk to us about reducing wasted distance, missed windows, and avoidable vehicle time."}],["$","$L1b",null,{"href":"/contact","className":"dm-blog-cta-btn","children":["Contact Us",["$","svg",null,{"width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] +2e:["$","p",null,{"className":"dm-related-card-excerpt","children":"A practical look at how one Hyderabad hub reduced distance, used fewer vehicles, and protected delivery windows with better route planning."}] +2f:["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}] +30:["$","$L1c","the-ev-paradox-solving-range-anxiety-for-urban-fleets",{"delay":0.16,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L26",null,{"src":"/images/ev-paradox.webp","alt":"The EV Paradox: Solving Range Anxiety for Urban Fleets","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"EV Fleet"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"Electric vehicles lower running costs, but battery range changes how routes must be planned before dispatch."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}] +31:["$","div",null,{"className":"dm-blog-contact-cta","children":[["$","div",null,{"className":"dm-blog-contact-cta-content","children":[["$","span",null,{"className":"dm-blog-contact-eyebrow","children":"Let's talk logistics"}],["$","h2",null,{"className":"dm-blog-contact-title","children":"Ready to move smarter with Doormile?"}],["$","p",null,{"className":"dm-blog-contact-sub","children":"Tell us about your fleet and routes — we'll show you where the distance, vehicles and emissions are hiding."}]]}],["$","$L1b",null,{"href":"/contact","className":"dm-blog-contact-btn","children":["Get in Touch",["$","svg",null,{"width":"20","height":"20","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] +12:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] +32:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +f:null +14:[["$","title","0",{"children":"MileTruth™: 10 Stages to Smarter Dispatch – Doormile"}],["$","meta","1",{"name":"description","content":"From order intake to final route output, here is how a dispatch plan is checked before riders leave the hub."}],["$","meta","2",{"name":"author","content":"Doormile Team"}],["$","meta","3",{"name":"keywords","content":"MileTruth,last-mile logistics,EV fleet,MileTruth,route optimisation"}],["$","meta","4",{"name":"robots","content":"index, follow"}],["$","link","5",{"rel":"canonical","href":"https://www.doormile.com/blog/miletruth-ai-10-stages-to-smarter-dispatch"}],["$","meta","6",{"property":"og:title","content":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","meta","7",{"property":"og:description","content":"From order intake to final route output, here is how a dispatch plan is checked before riders leave the hub."}],["$","meta","8",{"property":"og:url","content":"https://www.doormile.com/blog/miletruth-ai-10-stages-to-smarter-dispatch"}],["$","meta","9",{"property":"og:site_name","content":"Doormile"}],["$","meta","10",{"property":"og:image","content":"https://www.doormile.com/images/blog-post-pic-31.webp"}],["$","meta","11",{"property":"og:image:alt","content":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","meta","12",{"property":"og:type","content":"article"}],["$","meta","13",{"property":"article:published_time","content":"2025-09-05T00:00:00.000Z"}],["$","meta","14",{"property":"article:author","content":"Doormile Team"}],["$","meta","15",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","16",{"name":"twitter:title","content":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","meta","17",{"name":"twitter:description","content":"From order intake to final route output, here is how a dispatch plan is checked before riders leave the hub."}],["$","meta","18",{"name":"twitter:image","content":"https://www.doormile.com/images/blog-post-pic-31.webp"}],["$","link","19",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","20",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","21",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","22",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L32","23",{}]] diff --git a/build/blog/miletruth-ai-10-stages-to-smarter-dispatch/__next._full.txt b/build/blog/miletruth-ai-10-stages-to-smarter-dispatch/__next._full.txt new file mode 100644 index 0000000..baf8ed9 --- /dev/null +++ b/build/blog/miletruth-ai-10-stages-to-smarter-dispatch/__next._full.txt @@ -0,0 +1,546 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +d:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +e:"$Sreact.suspense" +11:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +13:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +15:I[68027,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"P":null,"c":["","blog","miletruth-ai-10-stages-to-smarter-dispatch"],"q":"","i":false,"f":[[["",{"children":["blog",{"children":[["slug","miletruth-ai-10-stages-to-smarter-dispatch","d",null],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":["$Lc",[["$","script","script-0",{"src":"/_next/static/chunks/0yvxf3ok9gcp_.js","async":true,"nonce":"$undefined"}]],["$","$Ld",null,{"children":["$","$e",null,{"name":"Next.MetadataOutlet","children":"$@f"}]}]]}],{},null,false,null]},null,false,"$@10"]},null,false,"$@10"]},null,false,null],["$","$1","h",{"children":[null,["$","$L11",null,{"children":"$L12"}],["$","div",null,{"hidden":true,"children":["$","$L13",null,{"children":["$","$e",null,{"name":"Next.Metadata","children":"$L14"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$15",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"kmSVPuUqY3Rhw5xy4D2nn"} +16:[] +10:"$W16" +:HL["/images/blog-post-pic-31.webp","image"] +17:T3d6f, + .dm-single-blog { + --dm-red: #c01227; + --dm-red-hover: #e31d32; + --dm-radius-card: 22px; + --dm-radius-img: 20px; + --dm-radius-badge: 8px; + --dm-shadow-card: 0 4px 24px rgba(15, 23, 42, 0.05); + --dm-border: 1px solid rgba(15, 23, 42, 0.09); + --dm-space-p: 24px; + --dm-space-h: 32px; + --dm-space-img: 32px; + --dm-space-quote: 40px; + --dm-sticky-top: 138px; + --dm-measure: min(1100px, 100%); + font-family: var(--font-manrope), sans-serif; + } + + /* Heading normalization. Beat the global theme's .elementor-kit-5 h1-h6 + (120/80/60px UPPERCASE) rules with !important on our own classes. */ + .dm-single-blog :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline, + specificity 0-1-1) so blog links keep our colors and never get underlined. */ + .dm-single-blog a { text-decoration: none !important; } + + /* Page banner: tall homepage-scale frame with only badge + title inside */ + /* Compound selector (specificity 20) + !important beats the global 800px + single-class height rules so the blog banner can use viewport heights. */ + .custom-standard-hero-card.dm-banner-card { + height: 90vh !important; + min-height: 85vh !important; + } + @media (max-width: 1024px) { + .custom-standard-hero-card.dm-banner-card { height: 80vh !important; min-height: 75vh !important; } + } + @media (max-width: 600px) { + .custom-standard-hero-card.dm-banner-card { height: 78vh !important; min-height: 72vh !important; } + } + + .dm-banner-inner { + position: relative; width: 100%; height: 100%; + display: flex; flex-direction: column; align-items: center; justify-content: center; + text-align: center; gap: clamp(22px, 2.6vw, 34px); + padding: clamp(48px, 8vh, 96px) clamp(20px, 5vw, 48px); + } + + .dm-banner-category { + display: inline-block; background: var(--dm-red); color: #fff; + font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.6px; + padding: 9px 18px; border-radius: 999px; box-shadow: 0 8px 22px rgba(192,18,39,0.45); + } + .dm-banner-title { + font-family: var(--font-manrope), sans-serif !important; + font-size: clamp(34px, 5vw, 60px) !important; font-weight: 850 !important; + line-height: 1.16 !important; letter-spacing: -1.2px !important; + color: #ffffff !important; margin: 0; max-width: 820px; + text-wrap: balance; text-shadow: 0 2px 30px rgba(0,0,0,0.38); + } + @media (max-width: 1024px) { .dm-banner-title { font-size: clamp(32px, 6vw, 48px) !important; max-width: 90%; } } + @media (max-width: 600px) { .dm-banner-title { font-size: clamp(28px, 8vw, 38px) !important; max-width: 90%; } } + + /* Content wrap begins immediately below the banner */ + /* Shared content container: the SAME max-width + horizontal padding is used + by BlogPostFooter (.dm-blog-footer-inner) so the article body, headings, + images, Prev/Next, Related Articles and the CTA banner all align to one + grid with identical left/right edges. Keep both in sync. */ + .dm-blog-wrap { + max-width: 1280px; margin: 0 auto; + /* 20px mobile padding floor → 40px on desktop; matches the footer container. */ + padding: clamp(14px, 2vw, 26px) clamp(20px, 4vw, 40px) 0; + } + @media (max-width: 767px) { + .dm-blog-wrap { + padding-left: 16px; + padding-right: 16px; + } + } + + /* ── Article meta bar (directly under the hero) ── */ + .dm-meta-bar { + display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 14px 24px; + padding: clamp(20px, 2.6vw, 30px) 0; margin-bottom: clamp(26px, 3vw, 44px); + border-bottom: 1px solid rgba(15,23,42,0.10); + } + .dm-meta-breadcrumb ol { + list-style: none; display: flex; flex-wrap: wrap; align-items: center; + gap: 8px; margin: 0; padding: 0; font-size: 13px; font-weight: 600; color: #64748b; + } + .dm-meta-breadcrumb a { color: #64748b !important; text-decoration: none; transition: color .2s ease; } + .dm-meta-breadcrumb a:hover { color: var(--dm-red) !important; } + .dm-meta-sep { color: #cbd5e1; } + .dm-meta-current { + color: #0f172a; font-weight: 700; + max-width: min(40ch, 46vw); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; + } + @media (max-width: 600px) { .dm-meta-current { max-width: 56vw; } } + .dm-meta-items { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 20px; } + .dm-meta-item { + display: inline-flex; align-items: center; gap: 7px; + font-size: 13.5px; font-weight: 600; color: #475569; + } + .dm-meta-item svg { color: var(--dm-red); flex: 0 0 auto; } + .dm-meta-author { color: #0f172a; font-weight: 700; } + @media (max-width: 600px) { .dm-meta-bar { gap: 12px; } } + .dm-blog-layout { + display: grid; grid-template-columns: minmax(0,1fr) 320px; + /* Tighter gap gives the reading column more room next to the 320px sidebar. */ + gap: clamp(28px, 3vw, 56px); align-items: start; + } + @media (max-width: 1024px) { + .dm-blog-layout { grid-template-columns: 1fr; gap: 48px; } + /* Single-column (tablet/mobile): cap the reading column and centre it so the + article never sits left-aligned with a large empty right gutter. */ + .dm-blog-main { max-width: 900px; margin-inline: auto; } + } + .dm-blog-main { min-width: 0; } + + /* ── Intro lead ── */ + .dm-blog-intro { + max-width: var(--dm-measure); + font-size: clamp(18px, 1.5vw, 20px); line-height: 1.65; font-weight: 500; + color: #475569; margin: 0 0 clamp(26px, 3vw, 38px); padding-left: 20px; + border-left: 3px solid var(--dm-red); + } + + /* ── Article body ── */ + .dm-article-body { max-width: var(--dm-measure); } + .dm-article-p { + font-size: 18px !important; line-height: 1.8 !important; color: #334155; font-weight: 450; + margin: 0 0 var(--dm-space-p); + } + .dm-article-h2 { + font-size: clamp(23px, 2vw, 30px) !important; font-weight: 800 !important; letter-spacing: -.3px !important; + color: #0f172a !important; line-height: 1.3 !important; margin: 48px 0 var(--dm-space-h); + text-wrap: balance; + } + /* Each article block is wrapped in its OWN ScrollReveal
    , so a bare + :first-child rule matched every heading (each is the only child of its + wrapper) and zeroed its top margin, collapsing the gap above every + section heading. Scope the reset to only the article body's first block. */ + .dm-article-body > :first-child :where(.dm-article-h2, .dm-article-h3), + .dm-article-body > .dm-article-h2:first-child, + .dm-article-body > .dm-article-h3:first-child { margin-top: 0; } + .dm-article-h3 { + font-size: clamp(19px, 1.5vw, 23px) !important; font-weight: 800 !important; letter-spacing: -.2px !important; + color: #1e293b !important; line-height: 1.34 !important; margin: 40px 0 18px; + text-wrap: balance; + } + @media (max-width: 600px) { + .dm-article-p { font-size: 16px !important; } + .dm-article-ul li, .dm-article-ol li { font-size: 15.5px; } + .dm-article-h2 { font-size: clamp(22px, 6vw, 28px) !important; margin-top: 38px; } + .dm-article-h3 { font-size: clamp(18px, 5vw, 22px) !important; } + } + + .dm-article-ul, .dm-article-ol { + /* Top margin (was 0) separates the list from the paragraph above it; + matching bottom margin keeps it clear of the next heading/paragraph. + Slightly larger than --dm-space-p so the list reads as its own block. */ + margin: clamp(26px, 2.4vw, 32px) 0 clamp(26px, 2.4vw, 32px); + padding-left: 2px; list-style: none; + display: flex; flex-direction: column; gap: 15px; + } + /* Prefixed with .dm-article-body so these beat the theme's global + ".logico-front-end ul li:before" fontello-glyph bullet (specificity 0,1,3), + which otherwise replaces our clean red dot with a misaligned checkmark glyph + and adds its own 1.7em indent. */ + .dm-article-body .dm-article-ul li, .dm-article-body .dm-article-ol li { + position: relative; padding-left: 34px; + font-size: 17px; line-height: 1.65; color: #334155; font-weight: 450; + } + .dm-article-body .dm-article-ul li::before { + content: ""; position: absolute; left: 7px; top: 10px; + width: 8px; height: 8px; border-radius: 50%; background: var(--dm-red); + /* kill any inherited fontello glyph from the global rule */ + font-size: 0; line-height: 0; + } + .dm-article-ol { counter-reset: dm-li; } + .dm-article-body .dm-article-ol li { counter-increment: dm-li; } + .dm-article-body .dm-article-ol li::before { + content: counter(dm-li); position: absolute; left: 0; top: 0; + width: 24px; height: 24px; border-radius: 7px; + background: rgba(192,18,39,0.10); color: var(--dm-red); + font-size: 12px; font-weight: 800; display: flex; align-items: center; justify-content: center; + } + + /* ── Quote ── */ + .dm-article-quote { + position: relative; margin: var(--dm-space-quote) 0; padding: 30px 32px 30px 64px; + background: linear-gradient(135deg, #fbf2f3 0%, #fdf7f8 100%); + border-left: 4px solid var(--dm-red); border-radius: 0 18px 18px 0; + box-shadow: 0 8px 28px rgba(192, 18, 39, 0.06); + } + .dm-article-quote::before { + content: "\201C"; position: absolute; left: 22px; top: 8px; + font-family: Georgia, "Times New Roman", serif; + font-size: 64px; line-height: 1; color: rgba(192, 18, 39, 0.28); font-weight: 700; + } + .dm-article-quote p { + font-size: clamp(19px, 2vw, 23px); line-height: 1.5; font-weight: 600; + font-style: italic; color: #1e293b; margin: 0; + } + .dm-article-quote cite { + display: block; margin-top: 16px; font-size: 13px; font-weight: 700; + font-style: normal; color: var(--dm-red); text-transform: uppercase; letter-spacing: .6px; + } + @media (max-width: 600px) { .dm-article-quote { padding: 26px 22px; } .dm-article-quote::before { display: none; } } + + /* ── Images ── */ + .dm-article-figure { margin: var(--dm-space-img) 0; } + .dm-article-figure-img { + position: relative; display: block; width: 100%; aspect-ratio: 16 / 9; + border-radius: var(--dm-radius-img); overflow: hidden; box-shadow: 0 14px 34px rgba(15,23,42,0.10); + } + .dm-article-figure figcaption { + margin-top: 14px; font-size: 13.5px; color: #94a3b8; font-weight: 500; + text-align: center; font-style: italic; + } + + /* ── Sidebar ── */ + .dm-blog-aside-wrap { position: relative; } + .dm-blog-sidebar { + display: flex; flex-direction: column; gap: 18px; + position: sticky; top: var(--dm-sticky-top); + } + @media (max-width: 1024px) { .dm-blog-sidebar { position: static; gap: 20px; } } + + .dm-blog-widget { + background: #fff; border: var(--dm-border); border-radius: var(--dm-radius-card); + padding: 20px; box-shadow: var(--dm-shadow-card); + } + .dm-blog-widget-title { + font-size: 13px !important; font-weight: 700 !important; text-transform: uppercase !important; + letter-spacing: .8px !important; line-height: 1.35 !important; color: #0f172a !important; + margin: 0 0 15px; padding: 0 0 12px; + border-bottom: 1px solid rgba(15,23,42,0.08); + overflow: visible; white-space: normal; word-break: normal; + } + + /* Search */ + .dm-sr-only { + position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; + overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; + } + .dm-blog-search { position: relative; } + .dm-blog-search-form { position: relative; } + .dm-blog-search-input { + width: 100%; height: 46px; border: 1.5px solid #e2e8f0; border-radius: 12px; + padding: 0 42px 0 15px; font-size: 14px; font-family: inherit; color: #0f172a; + background: #f8fafc; transition: border-color .2s ease, box-shadow .2s ease, background .2s ease; + } + .dm-blog-search-input::placeholder { color: #9c9c9c; } + .dm-blog-search-input:focus { + outline: none; border-color: var(--dm-red); background: #fff; + box-shadow: 0 0 0 3px rgba(192,18,39,0.11); + } + .dm-blog-search-icon { + position: absolute; right: 14px; top: 50%; transform: translateY(-50%); + color: #94a3b8; pointer-events: none; display: flex; + } + .dm-blog-search-results { + position: absolute; z-index: 20; top: calc(100% + 8px); left: 0; right: 0; + background: #fff; border: 1px solid rgba(15,23,42,0.10); border-radius: 14px; + box-shadow: 0 18px 42px rgba(15,23,42,0.14); overflow: hidden; + } + .dm-blog-search-results ul { list-style: none; margin: 0; padding: 6px; } + .dm-blog-search-result { + display: flex; flex-direction: column; gap: 3px; padding: 10px 12px; + border-radius: 10px; text-decoration: none; transition: background .15s ease; + } + .dm-blog-search-result:hover { background: #f8fafc; } + .dm-blog-search-result-cat { + font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .8px; color: var(--dm-red); + } + .dm-blog-search-result-title { font-size: 13.5px; font-weight: 600; color: #1e293b; line-height: 1.35; } + .dm-blog-search-empty { margin: 0; padding: 14px 12px; font-size: 13px; color: #64748b; } + + /* Recent posts */ + .dm-blog-recent { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 15px; } + .dm-blog-recent-item { display: flex; gap: 13px; align-items: center; text-decoration: none; } + .dm-blog-recent-thumb { + position: relative; flex: 0 0 62px; width: 62px; height: 62px; + border-radius: 13px; overflow: hidden; background: #f1f5f9; + } + .dm-blog-recent-meta { display: flex; flex-direction: column; gap: 4px; min-width: 0; } + .dm-blog-recent-title { + font-size: 13.5px; font-weight: 700; color: #1e293b; line-height: 1.35; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-blog-recent-item:hover .dm-blog-recent-title { color: var(--dm-red); } + .dm-blog-recent-date { font-size: 11.5px; font-weight: 600; color: #94a3b8; } + + /* Categories */ + .dm-blog-categories { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; } + .dm-blog-category-item { + display: flex; align-items: center; justify-content: space-between; gap: 10px; + padding: 11px 2px; text-decoration: none; font-size: 14px; font-weight: 600; color: #334155 !important; + border-bottom: 1px solid rgba(15,23,42,0.06); transition: color .2s ease, padding-left .2s ease; + } + .dm-blog-categories li:last-child .dm-blog-category-item { border-bottom: none; } + .dm-blog-category-item:hover { color: var(--dm-red); padding-left: 6px; } + .dm-blog-category-item > span:first-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } + .dm-blog-category-count { + flex: 0 0 auto; font-size: 11px; font-weight: 800; color: #94a3b8; background: #f1f5f9; + min-width: 24px; height: 22px; border-radius: 7px; display: inline-flex; + align-items: center; justify-content: center; padding: 0 7px; + } + + /* CTA card */ + .dm-blog-cta-card { background: #1f1f1f; border-color: #1f1f1f; } + .dm-blog-cta-title { font-size: 18px !important; font-weight: 800 !important; color: #fff !important; line-height: 1.32 !important; margin: 0 0 10px; letter-spacing: -.2px !important; } + .dm-blog-cta-text { font-size: 13.5px; line-height: 1.6; color: #c7c7c7; margin: 0 0 20px; font-weight: 450; } + .dm-blog-cta-btn { + display: inline-flex; align-items: center; gap: 8px; + background: var(--dm-red); color: #fff !important; font-size: 13.5px; font-weight: 700; + padding: 12px 22px; border-radius: 12px; text-decoration: none; + transition: background .2s ease, transform .2s ease; + } + .dm-blog-cta-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } +c:["$","div",null,{"className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"Article\",\"headline\":\"MileTruth™: 10 Stages to Smarter Dispatch\",\"description\":\"From order intake to final route output, here is how a dispatch plan is checked before riders leave the hub.\",\"image\":[\"https://www.doormile.com/images/blog-post-pic-31.webp\"],\"datePublished\":\"2025-09-05T00:00:00.000Z\",\"dateModified\":\"2025-09-05T00:00:00.000Z\",\"author\":{\"@type\":\"Organization\",\"name\":\"Doormile Team\",\"url\":\"https://www.doormile.com\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Doormile\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://www.doormile.com/images/cropped-image-2.png\"}},\"mainEntityOfPage\":{\"@type\":\"WebPage\",\"@id\":\"https://www.doormile.com/blog/miletruth-ai-10-stages-to-smarter-dispatch\"},\"articleSection\":\"MileTruth\"}"}}],["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https://www.doormile.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https://www.doormile.com/blog\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"MileTruth™: 10 Stages to Smarter Dispatch\",\"item\":\"https://www.doormile.com/blog/miletruth-ai-10-stages-to-smarter-dispatch\"}]}"}}],["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":[["$","article",null,{"className":"dm-single-blog","children":[["$","link",null,{"rel":"preload","as":"image","href":"/images/blog-post-pic-31.webp"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$17"}}],"$L18","$L19"]}],"$L1a"]}]}]]}] +1b:I[22016,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],""] +1c:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"ScrollReveal"] +18:["$","div",null,{"className":"custom-standard-hero-container","children":["$","div",null,{"className":"custom-standard-hero-card dm-banner-card","style":{"backgroundImage":"url(/images/blog-post-pic-31.webp)","--hero-overlay":"linear-gradient(180deg, rgba(0,0,0,0.38) 0%, rgba(0,0,0,0.46) 55%, rgba(0,0,0,0.60) 100%)"},"children":["$","div",null,{"className":"e-con-inner dm-banner-inner","children":[["$","span",null,{"className":"dm-banner-category","children":"MileTruth"}],["$","h1",null,{"className":"dm-banner-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}]]}]}]}] +19:["$","div",null,{"className":"dm-blog-wrap","children":[["$","div",null,{"className":"dm-meta-bar","children":[["$","nav",null,{"className":"dm-meta-breadcrumb","aria-label":"Breadcrumb","children":["$","ol",null,{"children":[["$","li",null,{"children":["$","$L1b",null,{"href":"/","children":"Home"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"children":["$","$L1b",null,{"href":"/blog","children":"Blog"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"aria-current":"page","className":"dm-meta-current","children":"MileTruth™: 10 Stages to Smarter Dispatch"}]]}]}],["$","div",null,{"className":"dm-meta-items","children":[["$","span",null,{"className":"dm-meta-item dm-meta-author","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","path",null,{"d":"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"}],["$","circle",null,{"cx":"12","cy":"7","r":"4"}]]}],"Doormile Team"]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","rect",null,{"x":"3","y":"4","width":"18","height":"18","rx":"2"}],["$","line",null,{"x1":"16","y1":"2","x2":"16","y2":"6"}],["$","line",null,{"x1":"8","y1":"2","x2":"8","y2":"6"}],["$","line",null,{"x1":"3","y1":"10","x2":"21","y2":"10"}]]}],["$","time",null,{"dateTime":"2025-09-05","children":"Sep 5, 2025"}]]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","circle",null,{"cx":"12","cy":"12","r":"9"}],["$","polyline",null,{"points":"12 7 12 12 15 14"}]]}],2," min read"]}]]}]]}],["$","div",null,{"className":"dm-blog-layout","children":[["$","div",null,{"className":"dm-blog-main","children":[["$","p",null,{"className":"dm-blog-intro","children":"Behind every Doormile dispatch is a step-by-step route planning process. Each stage removes a common source of error before the plan reaches the rider."}],["$","div",null,{"className":"dm-article-body","children":[["$","$L1c","0",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"A dispatch plan has to be fast, but it also has to be usable. A quick route that ignores a bad address, low battery, or tight delivery window creates problems later in the day."}]}],["$","$L1c","1",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"The ten stages"}]}],["$","$L1c","2",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ol",null,{"className":"dm-article-ol","children":[["$","li","0",{"children":"Order intake: new orders, rider availability, and vehicle status are collected."}],["$","li","1",{"children":"Address check: delivery points, time windows, and service notes are verified."}],["$","li","2",{"children":"Stop planning: each stop gets an expected service time and delivery priority."}],["$","li","3",{"children":"Travel-time check: routes are compared against time-of-day traffic."}],["$","li","4",{"children":"Constraint check: capacity, shift time, customer windows, and range are applied."}],["$","li","5",{"children":"Route options: several possible plans are built for the same order set."}],["$","li","6",{"children":"Plan selection: the lowest-cost workable route plan is selected."}],["$","li","7",{"children":"Battery check: EV routes are checked against real charge capacity."}],["$","li","8",{"children":"ETA check: promised delivery times are verified before dispatch."}],["$","li","9",{"children":"Dispatch output: the final route is sent to the operations team."}]]}]}],["$","$L1c","3",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h3",null,{"className":"dm-article-h3","children":"Why staging matters"}]}],["$","$L1c","4",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"When everything is checked in one step, small errors slip through. A wrong pin, a missing apartment note, or a low battery warning can reach the rider and become a customer issue."}]}],"$L1d","$L1e","$L1f","$L20","$L21","$L22"]}]]}],"$L23"]}]]}] +24:T2021, + .dm-blog-footer { + font-family: var(--font-manrope), sans-serif; --dm-red: #c01227; --dm-red-hover: #e31d32; + /* The global theme applies 72px top/bottom section padding — strip it so the + inner container is the single source of vertical rhythm (no double gap). */ + padding: 0 !important; + } + /* Neutralize the global theme's 120/80/60px UPPERCASE heading rules */ + .dm-blog-footer :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline) */ + .dm-blog-footer a { text-decoration: none !important; } + /* Shared content container — mirrors SingleBlog's .dm-blog-wrap (same 1280px + max-width + 20→40px horizontal padding) so Prev/Next, Related and the CTA + align to the exact same left/right edges as the article body above. + Vertical rhythm: ~64px from the article end to the Prev/Next divider, then a + consistent ~64–72px section→section gap (no 120px+ voids). */ + .dm-blog-footer-inner { + max-width: 1280px; margin: 0 auto; + /* Compact vertical rhythm on an 8px system. Top padding sets the + article→Prev/Next gap (~24–32px); the inter-section gap sets the + Prev/Next→Related gap (~32–48px). No large arbitrary voids. */ + /* Minimal bottom padding — the global site footer already contributes its + own 20px top inset, so the CTA banner sits close to it without a void. */ + padding: clamp(24px, 3vw, 32px) clamp(20px, 4vw, 40px) clamp(8px, 1.5vw, 16px); + display: flex; flex-direction: column; gap: clamp(32px, 4vw, 48px); + } + @media (max-width: 767px) { + .dm-blog-footer-inner { + padding-left: 16px; + padding-right: 16px; + } + } + + /* Prev / Next */ + .dm-prevnext { + display: grid; grid-template-columns: 1fr 1fr; gap: 20px; + /* Halved from 40px: tight divider→cards spacing without crowding. */ + padding-top: clamp(16px, 2vw, 24px); border-top: 1px solid rgba(15,23,42,0.08); + } + @media (max-width: 640px) { .dm-prevnext { grid-template-columns: 1fr; } } + .dm-prevnext-placeholder { display: block; } + .dm-prevnext-card { + display: flex; gap: 16px; align-items: center; padding: 16px; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + text-decoration: none; transition: transform .3s ease, box-shadow .3s ease, border-color .3s ease; + } + .dm-prevnext-card:hover { + transform: translateY(-4px); border-color: rgba(192,18,39,0.2); + box-shadow: 0 16px 34px rgba(192,18,39,0.10); + } + .dm-prevnext-thumb { + position: relative; flex: 0 0 80px; width: 80px; height: 80px; + border-radius: 16px; overflow: hidden; background: #f1f5f9; + } + .dm-prevnext-text { display: flex; flex-direction: column; gap: 5px; min-width: 0; } + .dm-prevnext-next { text-align: right; } + .dm-prevnext-next .dm-prevnext-text { align-items: flex-end; } + .dm-prevnext-label { + display: inline-flex; align-items: center; gap: 6px; + font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: 1px; color: var(--dm-red); + } + .dm-prevnext-cat { font-size: 11px; font-weight: 700; color: #94a3b8; text-transform: uppercase; letter-spacing: .5px; } + .dm-prevnext-title { + font-size: 15.5px; font-weight: 700; color: #1e293b; line-height: 1.4; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-prevnext-card:hover .dm-prevnext-title { color: var(--dm-red); } + + /* Related */ + .dm-related-heading { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 850 !important; letter-spacing: -.4px !important; + line-height: 1.25 !important; color: #0f172a !important; margin: 0 0 24px; + } + .dm-related-grid { + display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; + } + @media (max-width: 1024px) { .dm-related-grid { grid-template-columns: repeat(2, 1fr); } } + @media (max-width: 700px) { .dm-related-grid { grid-template-columns: 1fr; gap: 24px; } } + + .dm-related-card { + display: flex; flex-direction: column; height: 100%; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + overflow: hidden; box-shadow: 0 4px 24px rgba(15,23,42,0.05); text-decoration: none; + transition: transform .4s cubic-bezier(0.2,0.8,0.2,1), box-shadow .4s ease, border-color .4s ease; + } + .dm-related-card:hover { + transform: translateY(-8px); box-shadow: 0 22px 44px rgba(192,18,39,0.13); + border-color: rgba(192,18,39,0.2); + } + .dm-related-img { + position: relative; width: 100%; aspect-ratio: 16 / 10; overflow: hidden; background: #f1f5f9; + } + .dm-related-img img { transition: transform .5s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-img img { transform: scale(1.05); } + .dm-related-badge { + position: absolute; top: 14px; left: 14px; z-index: 5; background: var(--dm-red); color: #fff; + font-size: 9px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.2px; + padding: 5px 11px; border-radius: 8px; box-shadow: 0 4px 12px rgba(192,18,39,0.25); + } + .dm-related-body { display: flex; flex-direction: column; flex: 1; padding: 22px; } + .dm-related-card-title { + font-size: 17px !important; font-weight: 800 !important; color: #1e293b !important; line-height: 1.4 !important; + letter-spacing: -.2px !important; margin: 0 0 10px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-related-card:hover .dm-related-card-title { color: var(--dm-red); } + .dm-related-card-excerpt { + font-size: 13.5px; font-weight: 500; color: #64748b; line-height: 1.6; margin: 0 0 18px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + } + .dm-related-readmore { + margin-top: auto; display: inline-flex; align-items: center; gap: 7px; + font-size: 12.5px; font-weight: 800; color: var(--dm-red); + text-transform: uppercase; letter-spacing: .6px; + } + .dm-related-readmore-arrow { transition: transform .3s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-readmore-arrow { transform: translateX(5px); } + + /* Contact CTA banner */ + .dm-blog-contact-cta { + display: flex; align-items: center; justify-content: space-between; gap: 32px; + flex-wrap: wrap; + background: linear-gradient(135deg, #1a1a1a 0%, #2d1417 100%); + border-radius: 30px; padding: clamp(32px, 4vw, 56px); + position: relative; overflow: hidden; + } + .dm-blog-contact-cta::after { + content: ""; position: absolute; right: -80px; top: -80px; width: 300px; height: 300px; + background: radial-gradient(circle, rgba(192,18,39,0.40), transparent 70%); + pointer-events: none; + } + .dm-blog-contact-cta-content { position: relative; z-index: 1; max-width: 640px; } + .dm-blog-contact-eyebrow { + display: inline-block; font-size: 12px; font-weight: 800; text-transform: uppercase; + letter-spacing: 1.4px; color: #ff8088; margin-bottom: 14px; + } + .dm-blog-contact-title { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 800 !important; line-height: 1.25 !important; + letter-spacing: -.3px !important; color: #ffffff !important; margin: 0 0 12px; text-wrap: balance; + } + .dm-blog-contact-sub { + font-size: 15.5px; line-height: 1.65; color: #e2e2e2; margin: 0; font-weight: 450; + } + .dm-blog-contact-btn { + position: relative; z-index: 1; flex-shrink: 0; + display: inline-flex; align-items: center; justify-content: center; gap: 10px; + background: var(--dm-red); color: #fff !important; font-size: 15px; font-weight: 700; + padding: 16px 32px; border-radius: 16px; text-decoration: none; + box-shadow: 0 10px 26px rgba(192,18,39,0.34); + transition: background .2s ease, transform .2s ease; + } + .dm-blog-contact-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } + @media (max-width: 720px) { + .dm-blog-contact-cta { flex-direction: column; align-items: flex-start; gap: 26px; } + .dm-blog-contact-btn { width: 100%; } + } +1a:["$","section",null,{"className":"dm-blog-footer","aria-label":"More articles","children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$24"}}],"$L25"]}] +26:I[5500,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"Image"] +27:I[23096,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"default"] +1d:["$","$L1c","5",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","figure",null,{"className":"dm-article-figure","children":[["$","span",null,{"className":"dm-article-figure-img","children":["$","$L26",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth routing pipeline diagram","fill":true,"sizes":"(max-width: 768px) 100vw, 760px","style":{"objectFit":"cover"}}]}],["$","figcaption",null,{"children":"A staged dispatch process catches address, range, and ETA issues before riders leave."}]]}]}] +1e:["$","$L1c","6",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","blockquote",null,{"className":"dm-article-quote","children":[["$","p",null,{"children":"Each stage should remove one kind of mistake. By dispatch time, the route should already be practical."}],["$","cite",null,{"children":"MileTruth Engineering"}]]}]}] +1f:["$","$L1c","7",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"Comparing route options"}]}] +20:["$","$L1c","8",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"The useful part is not only building one route. It is comparing a few workable route options before choosing the plan. One option may save distance, another may protect a tight delivery window, and another may keep an EV closer to a charger."}]}] +21:["$","$L1c","9",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ul",null,{"className":"dm-article-ul","children":[["$","li","0",{"children":"Several route plans checked before dispatch"}],["$","li","1",{"children":"Distance, time windows, capacity, and range considered together"}],["$","li","2",{"children":"Range and ETA checked before the route reaches the rider"}],["$","li","3",{"children":"Fast output that still leaves room for dispatcher review"}]]}]}] +22:["$","$L1c","10",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"The goal is simple: give the dispatch team a route plan they can trust before the first vehicle leaves the hub."}]}] +23:["$","div",null,{"className":"dm-blog-aside-wrap","children":["$","aside",null,{"className":"dm-blog-sidebar","aria-label":"Blog sidebar","children":[["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Search"}],["$","$L27",null,{}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Recent Posts"}],["$","ul",null,{"className":"dm-blog-recent","children":[["$","li","how-ai-is-transforming-last-mile-ev-delivery",{"children":["$","$L1b",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L26",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"How Better Planning Improves Last-Mile EV Delivery"}],["$","time",null,{"dateTime":"2025-10-02","className":"dm-blog-recent-date","children":"Oct 2, 2025"}]]}]]}]}],["$","li","42-less-distance-insights-from-our-hyderabad-hub",{"children":["$","$L1b",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L26",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}],["$","time",null,{"dateTime":"2025-09-18","className":"dm-blog-recent-date","children":"Sep 18, 2025"}]]}]]}]}],["$","li","the-ev-paradox-solving-range-anxiety-for-urban-fleets",{"children":["$","$L1b",null,{"href":"/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L26",null,{"src":"/images/ev-paradox.webp","alt":"The EV Paradox: Solving Range Anxiety for Urban Fleets","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}],["$","time",null,{"dateTime":"2025-08-21","className":"dm-blog-recent-date","children":"Aug 21, 2025"}]]}]]}]}],["$","li","why-mathematical-precision-beats-heuristics-in-routing",{"children":["$","$L1b",null,{"href":"/blog/why-mathematical-precision-beats-heuristics-in-routing","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L26",null,{"src":"/images/blog-post-pic-14.webp","alt":"Why Mathematical Precision Beats Heuristics in Routing","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"Why Mathematical Precision Beats Heuristics in Routing"}],["$","time",null,{"dateTime":"2025-08-07","className":"dm-blog-recent-date","children":"Aug 7, 2025"}]]}]]}]}]]}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Categories"}],["$","ul",null,{"className":"dm-blog-categories","children":[["$","li","Case Study",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Case Study"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","EV Fleet",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"EV Fleet"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}],["$","li","Fleet Management",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Fleet Management"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","MileTruth",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":["$L28","$L29"]}]}],"$L2a","$L2b","$L2c"]}]]}],"$L2d"]}]}] +25:["$","div",null,{"className":"dm-blog-footer-inner","children":[["$","nav",null,{"className":"dm-prevnext","aria-label":"Article navigation","children":[["$","$L1b",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-prevnext-card dm-prevnext-prev","children":[["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L26",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"80px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-prevnext-text","children":[["$","span",null,{"className":"dm-prevnext-label","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"19","y1":"12","x2":"5","y2":"12"}],["$","polyline",null,{"points":"12 19 5 12 12 5"}]]}],"Previous"]}],["$","span",null,{"className":"dm-prevnext-cat","children":"Case Study"}],["$","span",null,{"className":"dm-prevnext-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}]]}]]}],["$","$L1b",null,{"href":"/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets","className":"dm-prevnext-card dm-prevnext-next","children":[["$","span",null,{"className":"dm-prevnext-text","children":[["$","span",null,{"className":"dm-prevnext-label","children":["Next",["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","span",null,{"className":"dm-prevnext-cat","children":"EV Fleet"}],["$","span",null,{"className":"dm-prevnext-title","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}]]}],["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L26",null,{"src":"/images/ev-paradox.webp","alt":"The EV Paradox: Solving Range Anxiety for Urban Fleets","fill":true,"sizes":"80px","style":{"objectFit":"cover"}}]}]]}]]}],["$","div",null,{"className":"dm-related","children":[["$","h2",null,{"className":"dm-related-heading","children":"Related Articles"}],["$","div",null,{"className":"dm-related-grid","children":[["$","$L1c","how-ai-is-transforming-last-mile-ev-delivery",{"delay":0,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L26",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Technology"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"How Better Planning Improves Last-Mile EV Delivery"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"A practical look at how EV fleets can plan routes, manage charging, and keep delivery promises without adding unnecessary vehicles."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}],["$","$L1c","42-less-distance-insights-from-our-hyderabad-hub",{"delay":0.08,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L26",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Case Study"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}],"$L2e","$L2f"]}]]}]}],"$L30"]}]]}],"$L31"]}] +28:["$","span",null,{"children":"MileTruth"}] +29:["$","span",null,{"className":"dm-blog-category-count","children":1}] +2a:["$","li","Operations",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Operations"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +2b:["$","li","Sustainability",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Sustainability"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +2c:["$","li","Technology",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Technology"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}] +2d:["$","section",null,{"className":"dm-blog-widget dm-blog-cta-card","children":[["$","h2",null,{"className":"dm-blog-cta-title","children":"Planning delivery routes?"}],["$","p",null,{"className":"dm-blog-cta-text","children":"Talk to us about reducing wasted distance, missed windows, and avoidable vehicle time."}],["$","$L1b",null,{"href":"/contact","className":"dm-blog-cta-btn","children":["Contact Us",["$","svg",null,{"width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] +2e:["$","p",null,{"className":"dm-related-card-excerpt","children":"A practical look at how one Hyderabad hub reduced distance, used fewer vehicles, and protected delivery windows with better route planning."}] +2f:["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}] +30:["$","$L1c","the-ev-paradox-solving-range-anxiety-for-urban-fleets",{"delay":0.16,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L26",null,{"src":"/images/ev-paradox.webp","alt":"The EV Paradox: Solving Range Anxiety for Urban Fleets","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"EV Fleet"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"Electric vehicles lower running costs, but battery range changes how routes must be planned before dispatch."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}] +31:["$","div",null,{"className":"dm-blog-contact-cta","children":[["$","div",null,{"className":"dm-blog-contact-cta-content","children":[["$","span",null,{"className":"dm-blog-contact-eyebrow","children":"Let's talk logistics"}],["$","h2",null,{"className":"dm-blog-contact-title","children":"Ready to move smarter with Doormile?"}],["$","p",null,{"className":"dm-blog-contact-sub","children":"Tell us about your fleet and routes — we'll show you where the distance, vehicles and emissions are hiding."}]]}],["$","$L1b",null,{"href":"/contact","className":"dm-blog-contact-btn","children":["Get in Touch",["$","svg",null,{"width":"20","height":"20","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] +12:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] +32:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +f:null +14:[["$","title","0",{"children":"MileTruth™: 10 Stages to Smarter Dispatch – Doormile"}],["$","meta","1",{"name":"description","content":"From order intake to final route output, here is how a dispatch plan is checked before riders leave the hub."}],["$","meta","2",{"name":"author","content":"Doormile Team"}],["$","meta","3",{"name":"keywords","content":"MileTruth,last-mile logistics,EV fleet,MileTruth,route optimisation"}],["$","meta","4",{"name":"robots","content":"index, follow"}],["$","link","5",{"rel":"canonical","href":"https://www.doormile.com/blog/miletruth-ai-10-stages-to-smarter-dispatch"}],["$","meta","6",{"property":"og:title","content":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","meta","7",{"property":"og:description","content":"From order intake to final route output, here is how a dispatch plan is checked before riders leave the hub."}],["$","meta","8",{"property":"og:url","content":"https://www.doormile.com/blog/miletruth-ai-10-stages-to-smarter-dispatch"}],["$","meta","9",{"property":"og:site_name","content":"Doormile"}],["$","meta","10",{"property":"og:image","content":"https://www.doormile.com/images/blog-post-pic-31.webp"}],["$","meta","11",{"property":"og:image:alt","content":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","meta","12",{"property":"og:type","content":"article"}],["$","meta","13",{"property":"article:published_time","content":"2025-09-05T00:00:00.000Z"}],["$","meta","14",{"property":"article:author","content":"Doormile Team"}],["$","meta","15",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","16",{"name":"twitter:title","content":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","meta","17",{"name":"twitter:description","content":"From order intake to final route output, here is how a dispatch plan is checked before riders leave the hub."}],["$","meta","18",{"name":"twitter:image","content":"https://www.doormile.com/images/blog-post-pic-31.webp"}],["$","link","19",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","20",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","21",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","22",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L32","23",{}]] diff --git a/build/blog/miletruth-ai-10-stages-to-smarter-dispatch/__next._head.txt b/build/blog/miletruth-ai-10-stages-to-smarter-dispatch/__next._head.txt new file mode 100644 index 0000000..e1f7850 --- /dev/null +++ b/build/blog/miletruth-ai-10-stages-to-smarter-dispatch/__next._head.txt @@ -0,0 +1,6 @@ +1:"$Sreact.fragment" +2:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +3:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +4:"$Sreact.suspense" +5:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +0:{"rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"MileTruth™: 10 Stages to Smarter Dispatch – Doormile"}],["$","meta","1",{"name":"description","content":"From order intake to final route output, here is how a dispatch plan is checked before riders leave the hub."}],["$","meta","2",{"name":"author","content":"Doormile Team"}],["$","meta","3",{"name":"keywords","content":"MileTruth,last-mile logistics,EV fleet,MileTruth,route optimisation"}],["$","meta","4",{"name":"robots","content":"index, follow"}],["$","link","5",{"rel":"canonical","href":"https://www.doormile.com/blog/miletruth-ai-10-stages-to-smarter-dispatch"}],["$","meta","6",{"property":"og:title","content":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","meta","7",{"property":"og:description","content":"From order intake to final route output, here is how a dispatch plan is checked before riders leave the hub."}],["$","meta","8",{"property":"og:url","content":"https://www.doormile.com/blog/miletruth-ai-10-stages-to-smarter-dispatch"}],["$","meta","9",{"property":"og:site_name","content":"Doormile"}],["$","meta","10",{"property":"og:image","content":"https://www.doormile.com/images/blog-post-pic-31.webp"}],["$","meta","11",{"property":"og:image:alt","content":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","meta","12",{"property":"og:type","content":"article"}],["$","meta","13",{"property":"article:published_time","content":"2025-09-05T00:00:00.000Z"}],["$","meta","14",{"property":"article:author","content":"Doormile Team"}],["$","meta","15",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","16",{"name":"twitter:title","content":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","meta","17",{"name":"twitter:description","content":"From order intake to final route output, here is how a dispatch plan is checked before riders leave the hub."}],["$","meta","18",{"name":"twitter:image","content":"https://www.doormile.com/images/blog-post-pic-31.webp"}],["$","link","19",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","20",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","21",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","22",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L5","23",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/blog/miletruth-ai-10-stages-to-smarter-dispatch/__next._index.txt b/build/blog/miletruth-ai-10-stages-to-smarter-dispatch/__next._index.txt new file mode 100644 index 0000000..d0b3355 --- /dev/null +++ b/build/blog/miletruth-ai-10-stages-to-smarter-dispatch/__next._index.txt @@ -0,0 +1,15 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","template":["$","$La",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/blog/miletruth-ai-10-stages-to-smarter-dispatch/__next._tree.txt b/build/blog/miletruth-ai-10-stages-to-smarter-dispatch/__next._tree.txt new file mode 100644 index 0000000..c319922 --- /dev/null +++ b/build/blog/miletruth-ai-10-stages-to-smarter-dispatch/__next._tree.txt @@ -0,0 +1,10 @@ +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +:HL["/images/blog-post-pic-31.webp","image"] +0:{"tree":{"name":"","param":null,"prefetchHints":16,"slots":{"children":{"name":"blog","param":null,"prefetchHints":0,"slots":{"children":{"name":"slug","param":{"type":"d","key":"miletruth-ai-10-stages-to-smarter-dispatch","siblings":null},"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}}}}}},"staleTime":300,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/blog/miletruth-ai-10-stages-to-smarter-dispatch/__next.blog.$d$slug.__PAGE__.txt b/build/blog/miletruth-ai-10-stages-to-smarter-dispatch/__next.blog.$d$slug.__PAGE__.txt new file mode 100644 index 0000000..a7c77dc --- /dev/null +++ b/build/blog/miletruth-ai-10-stages-to-smarter-dispatch/__next.blog.$d$slug.__PAGE__.txt @@ -0,0 +1,521 @@ +1:"$Sreact.fragment" +8:I[22016,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],""] +9:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"ScrollReveal"] +13:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +14:"$Sreact.suspense" +16:I[5500,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"Image"] +17:I[23096,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"default"] +:HL["/images/blog-post-pic-31.webp","image"] +2:T3d6f, + .dm-single-blog { + --dm-red: #c01227; + --dm-red-hover: #e31d32; + --dm-radius-card: 22px; + --dm-radius-img: 20px; + --dm-radius-badge: 8px; + --dm-shadow-card: 0 4px 24px rgba(15, 23, 42, 0.05); + --dm-border: 1px solid rgba(15, 23, 42, 0.09); + --dm-space-p: 24px; + --dm-space-h: 32px; + --dm-space-img: 32px; + --dm-space-quote: 40px; + --dm-sticky-top: 138px; + --dm-measure: min(1100px, 100%); + font-family: var(--font-manrope), sans-serif; + } + + /* Heading normalization. Beat the global theme's .elementor-kit-5 h1-h6 + (120/80/60px UPPERCASE) rules with !important on our own classes. */ + .dm-single-blog :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline, + specificity 0-1-1) so blog links keep our colors and never get underlined. */ + .dm-single-blog a { text-decoration: none !important; } + + /* Page banner: tall homepage-scale frame with only badge + title inside */ + /* Compound selector (specificity 20) + !important beats the global 800px + single-class height rules so the blog banner can use viewport heights. */ + .custom-standard-hero-card.dm-banner-card { + height: 90vh !important; + min-height: 85vh !important; + } + @media (max-width: 1024px) { + .custom-standard-hero-card.dm-banner-card { height: 80vh !important; min-height: 75vh !important; } + } + @media (max-width: 600px) { + .custom-standard-hero-card.dm-banner-card { height: 78vh !important; min-height: 72vh !important; } + } + + .dm-banner-inner { + position: relative; width: 100%; height: 100%; + display: flex; flex-direction: column; align-items: center; justify-content: center; + text-align: center; gap: clamp(22px, 2.6vw, 34px); + padding: clamp(48px, 8vh, 96px) clamp(20px, 5vw, 48px); + } + + .dm-banner-category { + display: inline-block; background: var(--dm-red); color: #fff; + font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.6px; + padding: 9px 18px; border-radius: 999px; box-shadow: 0 8px 22px rgba(192,18,39,0.45); + } + .dm-banner-title { + font-family: var(--font-manrope), sans-serif !important; + font-size: clamp(34px, 5vw, 60px) !important; font-weight: 850 !important; + line-height: 1.16 !important; letter-spacing: -1.2px !important; + color: #ffffff !important; margin: 0; max-width: 820px; + text-wrap: balance; text-shadow: 0 2px 30px rgba(0,0,0,0.38); + } + @media (max-width: 1024px) { .dm-banner-title { font-size: clamp(32px, 6vw, 48px) !important; max-width: 90%; } } + @media (max-width: 600px) { .dm-banner-title { font-size: clamp(28px, 8vw, 38px) !important; max-width: 90%; } } + + /* Content wrap begins immediately below the banner */ + /* Shared content container: the SAME max-width + horizontal padding is used + by BlogPostFooter (.dm-blog-footer-inner) so the article body, headings, + images, Prev/Next, Related Articles and the CTA banner all align to one + grid with identical left/right edges. Keep both in sync. */ + .dm-blog-wrap { + max-width: 1280px; margin: 0 auto; + /* 20px mobile padding floor → 40px on desktop; matches the footer container. */ + padding: clamp(14px, 2vw, 26px) clamp(20px, 4vw, 40px) 0; + } + @media (max-width: 767px) { + .dm-blog-wrap { + padding-left: 16px; + padding-right: 16px; + } + } + + /* ── Article meta bar (directly under the hero) ── */ + .dm-meta-bar { + display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 14px 24px; + padding: clamp(20px, 2.6vw, 30px) 0; margin-bottom: clamp(26px, 3vw, 44px); + border-bottom: 1px solid rgba(15,23,42,0.10); + } + .dm-meta-breadcrumb ol { + list-style: none; display: flex; flex-wrap: wrap; align-items: center; + gap: 8px; margin: 0; padding: 0; font-size: 13px; font-weight: 600; color: #64748b; + } + .dm-meta-breadcrumb a { color: #64748b !important; text-decoration: none; transition: color .2s ease; } + .dm-meta-breadcrumb a:hover { color: var(--dm-red) !important; } + .dm-meta-sep { color: #cbd5e1; } + .dm-meta-current { + color: #0f172a; font-weight: 700; + max-width: min(40ch, 46vw); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; + } + @media (max-width: 600px) { .dm-meta-current { max-width: 56vw; } } + .dm-meta-items { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 20px; } + .dm-meta-item { + display: inline-flex; align-items: center; gap: 7px; + font-size: 13.5px; font-weight: 600; color: #475569; + } + .dm-meta-item svg { color: var(--dm-red); flex: 0 0 auto; } + .dm-meta-author { color: #0f172a; font-weight: 700; } + @media (max-width: 600px) { .dm-meta-bar { gap: 12px; } } + .dm-blog-layout { + display: grid; grid-template-columns: minmax(0,1fr) 320px; + /* Tighter gap gives the reading column more room next to the 320px sidebar. */ + gap: clamp(28px, 3vw, 56px); align-items: start; + } + @media (max-width: 1024px) { + .dm-blog-layout { grid-template-columns: 1fr; gap: 48px; } + /* Single-column (tablet/mobile): cap the reading column and centre it so the + article never sits left-aligned with a large empty right gutter. */ + .dm-blog-main { max-width: 900px; margin-inline: auto; } + } + .dm-blog-main { min-width: 0; } + + /* ── Intro lead ── */ + .dm-blog-intro { + max-width: var(--dm-measure); + font-size: clamp(18px, 1.5vw, 20px); line-height: 1.65; font-weight: 500; + color: #475569; margin: 0 0 clamp(26px, 3vw, 38px); padding-left: 20px; + border-left: 3px solid var(--dm-red); + } + + /* ── Article body ── */ + .dm-article-body { max-width: var(--dm-measure); } + .dm-article-p { + font-size: 18px !important; line-height: 1.8 !important; color: #334155; font-weight: 450; + margin: 0 0 var(--dm-space-p); + } + .dm-article-h2 { + font-size: clamp(23px, 2vw, 30px) !important; font-weight: 800 !important; letter-spacing: -.3px !important; + color: #0f172a !important; line-height: 1.3 !important; margin: 48px 0 var(--dm-space-h); + text-wrap: balance; + } + /* Each article block is wrapped in its OWN ScrollReveal
    , so a bare + :first-child rule matched every heading (each is the only child of its + wrapper) and zeroed its top margin, collapsing the gap above every + section heading. Scope the reset to only the article body's first block. */ + .dm-article-body > :first-child :where(.dm-article-h2, .dm-article-h3), + .dm-article-body > .dm-article-h2:first-child, + .dm-article-body > .dm-article-h3:first-child { margin-top: 0; } + .dm-article-h3 { + font-size: clamp(19px, 1.5vw, 23px) !important; font-weight: 800 !important; letter-spacing: -.2px !important; + color: #1e293b !important; line-height: 1.34 !important; margin: 40px 0 18px; + text-wrap: balance; + } + @media (max-width: 600px) { + .dm-article-p { font-size: 16px !important; } + .dm-article-ul li, .dm-article-ol li { font-size: 15.5px; } + .dm-article-h2 { font-size: clamp(22px, 6vw, 28px) !important; margin-top: 38px; } + .dm-article-h3 { font-size: clamp(18px, 5vw, 22px) !important; } + } + + .dm-article-ul, .dm-article-ol { + /* Top margin (was 0) separates the list from the paragraph above it; + matching bottom margin keeps it clear of the next heading/paragraph. + Slightly larger than --dm-space-p so the list reads as its own block. */ + margin: clamp(26px, 2.4vw, 32px) 0 clamp(26px, 2.4vw, 32px); + padding-left: 2px; list-style: none; + display: flex; flex-direction: column; gap: 15px; + } + /* Prefixed with .dm-article-body so these beat the theme's global + ".logico-front-end ul li:before" fontello-glyph bullet (specificity 0,1,3), + which otherwise replaces our clean red dot with a misaligned checkmark glyph + and adds its own 1.7em indent. */ + .dm-article-body .dm-article-ul li, .dm-article-body .dm-article-ol li { + position: relative; padding-left: 34px; + font-size: 17px; line-height: 1.65; color: #334155; font-weight: 450; + } + .dm-article-body .dm-article-ul li::before { + content: ""; position: absolute; left: 7px; top: 10px; + width: 8px; height: 8px; border-radius: 50%; background: var(--dm-red); + /* kill any inherited fontello glyph from the global rule */ + font-size: 0; line-height: 0; + } + .dm-article-ol { counter-reset: dm-li; } + .dm-article-body .dm-article-ol li { counter-increment: dm-li; } + .dm-article-body .dm-article-ol li::before { + content: counter(dm-li); position: absolute; left: 0; top: 0; + width: 24px; height: 24px; border-radius: 7px; + background: rgba(192,18,39,0.10); color: var(--dm-red); + font-size: 12px; font-weight: 800; display: flex; align-items: center; justify-content: center; + } + + /* ── Quote ── */ + .dm-article-quote { + position: relative; margin: var(--dm-space-quote) 0; padding: 30px 32px 30px 64px; + background: linear-gradient(135deg, #fbf2f3 0%, #fdf7f8 100%); + border-left: 4px solid var(--dm-red); border-radius: 0 18px 18px 0; + box-shadow: 0 8px 28px rgba(192, 18, 39, 0.06); + } + .dm-article-quote::before { + content: "\201C"; position: absolute; left: 22px; top: 8px; + font-family: Georgia, "Times New Roman", serif; + font-size: 64px; line-height: 1; color: rgba(192, 18, 39, 0.28); font-weight: 700; + } + .dm-article-quote p { + font-size: clamp(19px, 2vw, 23px); line-height: 1.5; font-weight: 600; + font-style: italic; color: #1e293b; margin: 0; + } + .dm-article-quote cite { + display: block; margin-top: 16px; font-size: 13px; font-weight: 700; + font-style: normal; color: var(--dm-red); text-transform: uppercase; letter-spacing: .6px; + } + @media (max-width: 600px) { .dm-article-quote { padding: 26px 22px; } .dm-article-quote::before { display: none; } } + + /* ── Images ── */ + .dm-article-figure { margin: var(--dm-space-img) 0; } + .dm-article-figure-img { + position: relative; display: block; width: 100%; aspect-ratio: 16 / 9; + border-radius: var(--dm-radius-img); overflow: hidden; box-shadow: 0 14px 34px rgba(15,23,42,0.10); + } + .dm-article-figure figcaption { + margin-top: 14px; font-size: 13.5px; color: #94a3b8; font-weight: 500; + text-align: center; font-style: italic; + } + + /* ── Sidebar ── */ + .dm-blog-aside-wrap { position: relative; } + .dm-blog-sidebar { + display: flex; flex-direction: column; gap: 18px; + position: sticky; top: var(--dm-sticky-top); + } + @media (max-width: 1024px) { .dm-blog-sidebar { position: static; gap: 20px; } } + + .dm-blog-widget { + background: #fff; border: var(--dm-border); border-radius: var(--dm-radius-card); + padding: 20px; box-shadow: var(--dm-shadow-card); + } + .dm-blog-widget-title { + font-size: 13px !important; font-weight: 700 !important; text-transform: uppercase !important; + letter-spacing: .8px !important; line-height: 1.35 !important; color: #0f172a !important; + margin: 0 0 15px; padding: 0 0 12px; + border-bottom: 1px solid rgba(15,23,42,0.08); + overflow: visible; white-space: normal; word-break: normal; + } + + /* Search */ + .dm-sr-only { + position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; + overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; + } + .dm-blog-search { position: relative; } + .dm-blog-search-form { position: relative; } + .dm-blog-search-input { + width: 100%; height: 46px; border: 1.5px solid #e2e8f0; border-radius: 12px; + padding: 0 42px 0 15px; font-size: 14px; font-family: inherit; color: #0f172a; + background: #f8fafc; transition: border-color .2s ease, box-shadow .2s ease, background .2s ease; + } + .dm-blog-search-input::placeholder { color: #9c9c9c; } + .dm-blog-search-input:focus { + outline: none; border-color: var(--dm-red); background: #fff; + box-shadow: 0 0 0 3px rgba(192,18,39,0.11); + } + .dm-blog-search-icon { + position: absolute; right: 14px; top: 50%; transform: translateY(-50%); + color: #94a3b8; pointer-events: none; display: flex; + } + .dm-blog-search-results { + position: absolute; z-index: 20; top: calc(100% + 8px); left: 0; right: 0; + background: #fff; border: 1px solid rgba(15,23,42,0.10); border-radius: 14px; + box-shadow: 0 18px 42px rgba(15,23,42,0.14); overflow: hidden; + } + .dm-blog-search-results ul { list-style: none; margin: 0; padding: 6px; } + .dm-blog-search-result { + display: flex; flex-direction: column; gap: 3px; padding: 10px 12px; + border-radius: 10px; text-decoration: none; transition: background .15s ease; + } + .dm-blog-search-result:hover { background: #f8fafc; } + .dm-blog-search-result-cat { + font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .8px; color: var(--dm-red); + } + .dm-blog-search-result-title { font-size: 13.5px; font-weight: 600; color: #1e293b; line-height: 1.35; } + .dm-blog-search-empty { margin: 0; padding: 14px 12px; font-size: 13px; color: #64748b; } + + /* Recent posts */ + .dm-blog-recent { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 15px; } + .dm-blog-recent-item { display: flex; gap: 13px; align-items: center; text-decoration: none; } + .dm-blog-recent-thumb { + position: relative; flex: 0 0 62px; width: 62px; height: 62px; + border-radius: 13px; overflow: hidden; background: #f1f5f9; + } + .dm-blog-recent-meta { display: flex; flex-direction: column; gap: 4px; min-width: 0; } + .dm-blog-recent-title { + font-size: 13.5px; font-weight: 700; color: #1e293b; line-height: 1.35; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-blog-recent-item:hover .dm-blog-recent-title { color: var(--dm-red); } + .dm-blog-recent-date { font-size: 11.5px; font-weight: 600; color: #94a3b8; } + + /* Categories */ + .dm-blog-categories { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; } + .dm-blog-category-item { + display: flex; align-items: center; justify-content: space-between; gap: 10px; + padding: 11px 2px; text-decoration: none; font-size: 14px; font-weight: 600; color: #334155 !important; + border-bottom: 1px solid rgba(15,23,42,0.06); transition: color .2s ease, padding-left .2s ease; + } + .dm-blog-categories li:last-child .dm-blog-category-item { border-bottom: none; } + .dm-blog-category-item:hover { color: var(--dm-red); padding-left: 6px; } + .dm-blog-category-item > span:first-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } + .dm-blog-category-count { + flex: 0 0 auto; font-size: 11px; font-weight: 800; color: #94a3b8; background: #f1f5f9; + min-width: 24px; height: 22px; border-radius: 7px; display: inline-flex; + align-items: center; justify-content: center; padding: 0 7px; + } + + /* CTA card */ + .dm-blog-cta-card { background: #1f1f1f; border-color: #1f1f1f; } + .dm-blog-cta-title { font-size: 18px !important; font-weight: 800 !important; color: #fff !important; line-height: 1.32 !important; margin: 0 0 10px; letter-spacing: -.2px !important; } + .dm-blog-cta-text { font-size: 13.5px; line-height: 1.6; color: #c7c7c7; margin: 0 0 20px; font-weight: 450; } + .dm-blog-cta-btn { + display: inline-flex; align-items: center; gap: 8px; + background: var(--dm-red); color: #fff !important; font-size: 13.5px; font-weight: 700; + padding: 12px 22px; border-radius: 12px; text-decoration: none; + transition: background .2s ease, transform .2s ease; + } + .dm-blog-cta-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } +0:{"rsc":["$","$1","c",{"children":[["$","div",null,{"className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"Article\",\"headline\":\"MileTruth™: 10 Stages to Smarter Dispatch\",\"description\":\"From order intake to final route output, here is how a dispatch plan is checked before riders leave the hub.\",\"image\":[\"https://www.doormile.com/images/blog-post-pic-31.webp\"],\"datePublished\":\"2025-09-05T00:00:00.000Z\",\"dateModified\":\"2025-09-05T00:00:00.000Z\",\"author\":{\"@type\":\"Organization\",\"name\":\"Doormile Team\",\"url\":\"https://www.doormile.com\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Doormile\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://www.doormile.com/images/cropped-image-2.png\"}},\"mainEntityOfPage\":{\"@type\":\"WebPage\",\"@id\":\"https://www.doormile.com/blog/miletruth-ai-10-stages-to-smarter-dispatch\"},\"articleSection\":\"MileTruth\"}"}}],["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https://www.doormile.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https://www.doormile.com/blog\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"MileTruth™: 10 Stages to Smarter Dispatch\",\"item\":\"https://www.doormile.com/blog/miletruth-ai-10-stages-to-smarter-dispatch\"}]}"}}],["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":[["$","article",null,{"className":"dm-single-blog","children":[["$","link",null,{"rel":"preload","as":"image","href":"/images/blog-post-pic-31.webp"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$2"}}],"$L3","$L4"]}],"$L5"]}]}]]}],["$L6"],"$L7"]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} +3:["$","div",null,{"className":"custom-standard-hero-container","children":["$","div",null,{"className":"custom-standard-hero-card dm-banner-card","style":{"backgroundImage":"url(/images/blog-post-pic-31.webp)","--hero-overlay":"linear-gradient(180deg, rgba(0,0,0,0.38) 0%, rgba(0,0,0,0.46) 55%, rgba(0,0,0,0.60) 100%)"},"children":["$","div",null,{"className":"e-con-inner dm-banner-inner","children":[["$","span",null,{"className":"dm-banner-category","children":"MileTruth"}],["$","h1",null,{"className":"dm-banner-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}]]}]}]}] +4:["$","div",null,{"className":"dm-blog-wrap","children":[["$","div",null,{"className":"dm-meta-bar","children":[["$","nav",null,{"className":"dm-meta-breadcrumb","aria-label":"Breadcrumb","children":["$","ol",null,{"children":[["$","li",null,{"children":["$","$L8",null,{"href":"/","children":"Home"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"children":["$","$L8",null,{"href":"/blog","children":"Blog"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"aria-current":"page","className":"dm-meta-current","children":"MileTruth™: 10 Stages to Smarter Dispatch"}]]}]}],["$","div",null,{"className":"dm-meta-items","children":[["$","span",null,{"className":"dm-meta-item dm-meta-author","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","path",null,{"d":"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"}],["$","circle",null,{"cx":"12","cy":"7","r":"4"}]]}],"Doormile Team"]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","rect",null,{"x":"3","y":"4","width":"18","height":"18","rx":"2"}],["$","line",null,{"x1":"16","y1":"2","x2":"16","y2":"6"}],["$","line",null,{"x1":"8","y1":"2","x2":"8","y2":"6"}],["$","line",null,{"x1":"3","y1":"10","x2":"21","y2":"10"}]]}],["$","time",null,{"dateTime":"2025-09-05","children":"Sep 5, 2025"}]]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","circle",null,{"cx":"12","cy":"12","r":"9"}],["$","polyline",null,{"points":"12 7 12 12 15 14"}]]}],2," min read"]}]]}]]}],["$","div",null,{"className":"dm-blog-layout","children":[["$","div",null,{"className":"dm-blog-main","children":[["$","p",null,{"className":"dm-blog-intro","children":"Behind every Doormile dispatch is a step-by-step route planning process. Each stage removes a common source of error before the plan reaches the rider."}],["$","div",null,{"className":"dm-article-body","children":[["$","$L9","0",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"A dispatch plan has to be fast, but it also has to be usable. A quick route that ignores a bad address, low battery, or tight delivery window creates problems later in the day."}]}],["$","$L9","1",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"The ten stages"}]}],["$","$L9","2",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ol",null,{"className":"dm-article-ol","children":[["$","li","0",{"children":"Order intake: new orders, rider availability, and vehicle status are collected."}],["$","li","1",{"children":"Address check: delivery points, time windows, and service notes are verified."}],["$","li","2",{"children":"Stop planning: each stop gets an expected service time and delivery priority."}],["$","li","3",{"children":"Travel-time check: routes are compared against time-of-day traffic."}],["$","li","4",{"children":"Constraint check: capacity, shift time, customer windows, and range are applied."}],["$","li","5",{"children":"Route options: several possible plans are built for the same order set."}],["$","li","6",{"children":"Plan selection: the lowest-cost workable route plan is selected."}],["$","li","7",{"children":"Battery check: EV routes are checked against real charge capacity."}],["$","li","8",{"children":"ETA check: promised delivery times are verified before dispatch."}],["$","li","9",{"children":"Dispatch output: the final route is sent to the operations team."}]]}]}],["$","$L9","3",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h3",null,{"className":"dm-article-h3","children":"Why staging matters"}]}],["$","$L9","4",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"When everything is checked in one step, small errors slip through. A wrong pin, a missing apartment note, or a low battery warning can reach the rider and become a customer issue."}]}],"$La","$Lb","$Lc","$Ld","$Le","$Lf"]}]]}],"$L10"]}]]}] +11:T2021, + .dm-blog-footer { + font-family: var(--font-manrope), sans-serif; --dm-red: #c01227; --dm-red-hover: #e31d32; + /* The global theme applies 72px top/bottom section padding — strip it so the + inner container is the single source of vertical rhythm (no double gap). */ + padding: 0 !important; + } + /* Neutralize the global theme's 120/80/60px UPPERCASE heading rules */ + .dm-blog-footer :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline) */ + .dm-blog-footer a { text-decoration: none !important; } + /* Shared content container — mirrors SingleBlog's .dm-blog-wrap (same 1280px + max-width + 20→40px horizontal padding) so Prev/Next, Related and the CTA + align to the exact same left/right edges as the article body above. + Vertical rhythm: ~64px from the article end to the Prev/Next divider, then a + consistent ~64–72px section→section gap (no 120px+ voids). */ + .dm-blog-footer-inner { + max-width: 1280px; margin: 0 auto; + /* Compact vertical rhythm on an 8px system. Top padding sets the + article→Prev/Next gap (~24–32px); the inter-section gap sets the + Prev/Next→Related gap (~32–48px). No large arbitrary voids. */ + /* Minimal bottom padding — the global site footer already contributes its + own 20px top inset, so the CTA banner sits close to it without a void. */ + padding: clamp(24px, 3vw, 32px) clamp(20px, 4vw, 40px) clamp(8px, 1.5vw, 16px); + display: flex; flex-direction: column; gap: clamp(32px, 4vw, 48px); + } + @media (max-width: 767px) { + .dm-blog-footer-inner { + padding-left: 16px; + padding-right: 16px; + } + } + + /* Prev / Next */ + .dm-prevnext { + display: grid; grid-template-columns: 1fr 1fr; gap: 20px; + /* Halved from 40px: tight divider→cards spacing without crowding. */ + padding-top: clamp(16px, 2vw, 24px); border-top: 1px solid rgba(15,23,42,0.08); + } + @media (max-width: 640px) { .dm-prevnext { grid-template-columns: 1fr; } } + .dm-prevnext-placeholder { display: block; } + .dm-prevnext-card { + display: flex; gap: 16px; align-items: center; padding: 16px; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + text-decoration: none; transition: transform .3s ease, box-shadow .3s ease, border-color .3s ease; + } + .dm-prevnext-card:hover { + transform: translateY(-4px); border-color: rgba(192,18,39,0.2); + box-shadow: 0 16px 34px rgba(192,18,39,0.10); + } + .dm-prevnext-thumb { + position: relative; flex: 0 0 80px; width: 80px; height: 80px; + border-radius: 16px; overflow: hidden; background: #f1f5f9; + } + .dm-prevnext-text { display: flex; flex-direction: column; gap: 5px; min-width: 0; } + .dm-prevnext-next { text-align: right; } + .dm-prevnext-next .dm-prevnext-text { align-items: flex-end; } + .dm-prevnext-label { + display: inline-flex; align-items: center; gap: 6px; + font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: 1px; color: var(--dm-red); + } + .dm-prevnext-cat { font-size: 11px; font-weight: 700; color: #94a3b8; text-transform: uppercase; letter-spacing: .5px; } + .dm-prevnext-title { + font-size: 15.5px; font-weight: 700; color: #1e293b; line-height: 1.4; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-prevnext-card:hover .dm-prevnext-title { color: var(--dm-red); } + + /* Related */ + .dm-related-heading { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 850 !important; letter-spacing: -.4px !important; + line-height: 1.25 !important; color: #0f172a !important; margin: 0 0 24px; + } + .dm-related-grid { + display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; + } + @media (max-width: 1024px) { .dm-related-grid { grid-template-columns: repeat(2, 1fr); } } + @media (max-width: 700px) { .dm-related-grid { grid-template-columns: 1fr; gap: 24px; } } + + .dm-related-card { + display: flex; flex-direction: column; height: 100%; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + overflow: hidden; box-shadow: 0 4px 24px rgba(15,23,42,0.05); text-decoration: none; + transition: transform .4s cubic-bezier(0.2,0.8,0.2,1), box-shadow .4s ease, border-color .4s ease; + } + .dm-related-card:hover { + transform: translateY(-8px); box-shadow: 0 22px 44px rgba(192,18,39,0.13); + border-color: rgba(192,18,39,0.2); + } + .dm-related-img { + position: relative; width: 100%; aspect-ratio: 16 / 10; overflow: hidden; background: #f1f5f9; + } + .dm-related-img img { transition: transform .5s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-img img { transform: scale(1.05); } + .dm-related-badge { + position: absolute; top: 14px; left: 14px; z-index: 5; background: var(--dm-red); color: #fff; + font-size: 9px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.2px; + padding: 5px 11px; border-radius: 8px; box-shadow: 0 4px 12px rgba(192,18,39,0.25); + } + .dm-related-body { display: flex; flex-direction: column; flex: 1; padding: 22px; } + .dm-related-card-title { + font-size: 17px !important; font-weight: 800 !important; color: #1e293b !important; line-height: 1.4 !important; + letter-spacing: -.2px !important; margin: 0 0 10px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-related-card:hover .dm-related-card-title { color: var(--dm-red); } + .dm-related-card-excerpt { + font-size: 13.5px; font-weight: 500; color: #64748b; line-height: 1.6; margin: 0 0 18px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + } + .dm-related-readmore { + margin-top: auto; display: inline-flex; align-items: center; gap: 7px; + font-size: 12.5px; font-weight: 800; color: var(--dm-red); + text-transform: uppercase; letter-spacing: .6px; + } + .dm-related-readmore-arrow { transition: transform .3s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-readmore-arrow { transform: translateX(5px); } + + /* Contact CTA banner */ + .dm-blog-contact-cta { + display: flex; align-items: center; justify-content: space-between; gap: 32px; + flex-wrap: wrap; + background: linear-gradient(135deg, #1a1a1a 0%, #2d1417 100%); + border-radius: 30px; padding: clamp(32px, 4vw, 56px); + position: relative; overflow: hidden; + } + .dm-blog-contact-cta::after { + content: ""; position: absolute; right: -80px; top: -80px; width: 300px; height: 300px; + background: radial-gradient(circle, rgba(192,18,39,0.40), transparent 70%); + pointer-events: none; + } + .dm-blog-contact-cta-content { position: relative; z-index: 1; max-width: 640px; } + .dm-blog-contact-eyebrow { + display: inline-block; font-size: 12px; font-weight: 800; text-transform: uppercase; + letter-spacing: 1.4px; color: #ff8088; margin-bottom: 14px; + } + .dm-blog-contact-title { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 800 !important; line-height: 1.25 !important; + letter-spacing: -.3px !important; color: #ffffff !important; margin: 0 0 12px; text-wrap: balance; + } + .dm-blog-contact-sub { + font-size: 15.5px; line-height: 1.65; color: #e2e2e2; margin: 0; font-weight: 450; + } + .dm-blog-contact-btn { + position: relative; z-index: 1; flex-shrink: 0; + display: inline-flex; align-items: center; justify-content: center; gap: 10px; + background: var(--dm-red); color: #fff !important; font-size: 15px; font-weight: 700; + padding: 16px 32px; border-radius: 16px; text-decoration: none; + box-shadow: 0 10px 26px rgba(192,18,39,0.34); + transition: background .2s ease, transform .2s ease; + } + .dm-blog-contact-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } + @media (max-width: 720px) { + .dm-blog-contact-cta { flex-direction: column; align-items: flex-start; gap: 26px; } + .dm-blog-contact-btn { width: 100%; } + } +5:["$","section",null,{"className":"dm-blog-footer","aria-label":"More articles","children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$11"}}],"$L12"]}] +6:["$","script","script-0",{"src":"/_next/static/chunks/0yvxf3ok9gcp_.js","async":true}] +7:["$","$L13",null,{"children":["$","$14",null,{"name":"Next.MetadataOutlet","children":"$@15"}]}] +a:["$","$L9","5",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","figure",null,{"className":"dm-article-figure","children":[["$","span",null,{"className":"dm-article-figure-img","children":["$","$L16",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth routing pipeline diagram","fill":true,"sizes":"(max-width: 768px) 100vw, 760px","style":{"objectFit":"cover"}}]}],["$","figcaption",null,{"children":"A staged dispatch process catches address, range, and ETA issues before riders leave."}]]}]}] +b:["$","$L9","6",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","blockquote",null,{"className":"dm-article-quote","children":[["$","p",null,{"children":"Each stage should remove one kind of mistake. By dispatch time, the route should already be practical."}],["$","cite",null,{"children":"MileTruth Engineering"}]]}]}] +c:["$","$L9","7",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"Comparing route options"}]}] +d:["$","$L9","8",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"The useful part is not only building one route. It is comparing a few workable route options before choosing the plan. One option may save distance, another may protect a tight delivery window, and another may keep an EV closer to a charger."}]}] +e:["$","$L9","9",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ul",null,{"className":"dm-article-ul","children":[["$","li","0",{"children":"Several route plans checked before dispatch"}],["$","li","1",{"children":"Distance, time windows, capacity, and range considered together"}],["$","li","2",{"children":"Range and ETA checked before the route reaches the rider"}],["$","li","3",{"children":"Fast output that still leaves room for dispatcher review"}]]}]}] +f:["$","$L9","10",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"The goal is simple: give the dispatch team a route plan they can trust before the first vehicle leaves the hub."}]}] +10:["$","div",null,{"className":"dm-blog-aside-wrap","children":["$","aside",null,{"className":"dm-blog-sidebar","aria-label":"Blog sidebar","children":[["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Search"}],["$","$L17",null,{}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Recent Posts"}],["$","ul",null,{"className":"dm-blog-recent","children":[["$","li","how-ai-is-transforming-last-mile-ev-delivery",{"children":["$","$L8",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L16",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"How Better Planning Improves Last-Mile EV Delivery"}],["$","time",null,{"dateTime":"2025-10-02","className":"dm-blog-recent-date","children":"Oct 2, 2025"}]]}]]}]}],["$","li","42-less-distance-insights-from-our-hyderabad-hub",{"children":["$","$L8",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L16",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}],["$","time",null,{"dateTime":"2025-09-18","className":"dm-blog-recent-date","children":"Sep 18, 2025"}]]}]]}]}],["$","li","the-ev-paradox-solving-range-anxiety-for-urban-fleets",{"children":["$","$L8",null,{"href":"/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L16",null,{"src":"/images/ev-paradox.webp","alt":"The EV Paradox: Solving Range Anxiety for Urban Fleets","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}],["$","time",null,{"dateTime":"2025-08-21","className":"dm-blog-recent-date","children":"Aug 21, 2025"}]]}]]}]}],["$","li","why-mathematical-precision-beats-heuristics-in-routing",{"children":["$","$L8",null,{"href":"/blog/why-mathematical-precision-beats-heuristics-in-routing","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L16",null,{"src":"/images/blog-post-pic-14.webp","alt":"Why Mathematical Precision Beats Heuristics in Routing","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"Why Mathematical Precision Beats Heuristics in Routing"}],["$","time",null,{"dateTime":"2025-08-07","className":"dm-blog-recent-date","children":"Aug 7, 2025"}]]}]]}]}]]}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Categories"}],["$","ul",null,{"className":"dm-blog-categories","children":[["$","li","Case Study",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Case Study"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","EV Fleet",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"EV Fleet"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}],["$","li","Fleet Management",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Fleet Management"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","MileTruth",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":["$L18","$L19"]}]}],"$L1a","$L1b","$L1c"]}]]}],"$L1d"]}]}] +12:["$","div",null,{"className":"dm-blog-footer-inner","children":[["$","nav",null,{"className":"dm-prevnext","aria-label":"Article navigation","children":[["$","$L8",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-prevnext-card dm-prevnext-prev","children":[["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L16",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"80px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-prevnext-text","children":[["$","span",null,{"className":"dm-prevnext-label","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"19","y1":"12","x2":"5","y2":"12"}],["$","polyline",null,{"points":"12 19 5 12 12 5"}]]}],"Previous"]}],["$","span",null,{"className":"dm-prevnext-cat","children":"Case Study"}],["$","span",null,{"className":"dm-prevnext-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}]]}]]}],["$","$L8",null,{"href":"/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets","className":"dm-prevnext-card dm-prevnext-next","children":[["$","span",null,{"className":"dm-prevnext-text","children":[["$","span",null,{"className":"dm-prevnext-label","children":["Next",["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","span",null,{"className":"dm-prevnext-cat","children":"EV Fleet"}],["$","span",null,{"className":"dm-prevnext-title","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}]]}],["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L16",null,{"src":"/images/ev-paradox.webp","alt":"The EV Paradox: Solving Range Anxiety for Urban Fleets","fill":true,"sizes":"80px","style":{"objectFit":"cover"}}]}]]}]]}],["$","div",null,{"className":"dm-related","children":[["$","h2",null,{"className":"dm-related-heading","children":"Related Articles"}],["$","div",null,{"className":"dm-related-grid","children":[["$","$L9","how-ai-is-transforming-last-mile-ev-delivery",{"delay":0,"duration":0.7,"yOffset":30,"children":["$","$L8",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L16",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Technology"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"How Better Planning Improves Last-Mile EV Delivery"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"A practical look at how EV fleets can plan routes, manage charging, and keep delivery promises without adding unnecessary vehicles."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}],["$","$L9","42-less-distance-insights-from-our-hyderabad-hub",{"delay":0.08,"duration":0.7,"yOffset":30,"children":["$","$L8",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L16",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Case Study"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}],"$L1e","$L1f"]}]]}]}],"$L20"]}]]}],"$L21"]}] +15:null +18:["$","span",null,{"children":"MileTruth"}] +19:["$","span",null,{"className":"dm-blog-category-count","children":1}] +1a:["$","li","Operations",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Operations"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +1b:["$","li","Sustainability",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Sustainability"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +1c:["$","li","Technology",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Technology"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}] +1d:["$","section",null,{"className":"dm-blog-widget dm-blog-cta-card","children":[["$","h2",null,{"className":"dm-blog-cta-title","children":"Planning delivery routes?"}],["$","p",null,{"className":"dm-blog-cta-text","children":"Talk to us about reducing wasted distance, missed windows, and avoidable vehicle time."}],["$","$L8",null,{"href":"/contact","className":"dm-blog-cta-btn","children":["Contact Us",["$","svg",null,{"width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] +1e:["$","p",null,{"className":"dm-related-card-excerpt","children":"A practical look at how one Hyderabad hub reduced distance, used fewer vehicles, and protected delivery windows with better route planning."}] +1f:["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}] +20:["$","$L9","the-ev-paradox-solving-range-anxiety-for-urban-fleets",{"delay":0.16,"duration":0.7,"yOffset":30,"children":["$","$L8",null,{"href":"/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L16",null,{"src":"/images/ev-paradox.webp","alt":"The EV Paradox: Solving Range Anxiety for Urban Fleets","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"EV Fleet"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"Electric vehicles lower running costs, but battery range changes how routes must be planned before dispatch."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}] +21:["$","div",null,{"className":"dm-blog-contact-cta","children":[["$","div",null,{"className":"dm-blog-contact-cta-content","children":[["$","span",null,{"className":"dm-blog-contact-eyebrow","children":"Let's talk logistics"}],["$","h2",null,{"className":"dm-blog-contact-title","children":"Ready to move smarter with Doormile?"}],["$","p",null,{"className":"dm-blog-contact-sub","children":"Tell us about your fleet and routes — we'll show you where the distance, vehicles and emissions are hiding."}]]}],["$","$L8",null,{"href":"/contact","className":"dm-blog-contact-btn","children":["Get in Touch",["$","svg",null,{"width":"20","height":"20","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] diff --git a/build/blog/miletruth-ai-10-stages-to-smarter-dispatch/__next.blog.$d$slug.txt b/build/blog/miletruth-ai-10-stages-to-smarter-dispatch/__next.blog.$d$slug.txt new file mode 100644 index 0000000..e0935ae --- /dev/null +++ b/build/blog/miletruth-ai-10-stages-to-smarter-dispatch/__next.blog.$d$slug.txt @@ -0,0 +1,5 @@ +1:"$Sreact.fragment" +2:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:[] +0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/blog/miletruth-ai-10-stages-to-smarter-dispatch/__next.blog.txt b/build/blog/miletruth-ai-10-stages-to-smarter-dispatch/__next.blog.txt new file mode 100644 index 0000000..e0935ae --- /dev/null +++ b/build/blog/miletruth-ai-10-stages-to-smarter-dispatch/__next.blog.txt @@ -0,0 +1,5 @@ +1:"$Sreact.fragment" +2:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:[] +0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets.html b/build/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets.html new file mode 100644 index 0000000..ce7eb8e --- /dev/null +++ b/build/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets.html @@ -0,0 +1,1168 @@ +The EV Paradox: Solving Range Anxiety for Urban Fleets – Doormile

    Doormile

    Doormile logo
    Address
    Hyderabad

    5th Floor, Vision Ultima,
    Street No.3, Jayabheri Enclave,
    Gachibowli, Hyderabad,
    Telangana 500032.

    Coimbatore

    Mayflower Valencia,
    Near Nava India Bus Stop,
    Avinashi Road,
    Udayampalayam,
    Tamil Nadu 641037.

    Bengaluru

    C612, 6th Floor,
    Trifecta Starlight,
    ITPL Road,
    Garudacharapalya,
    Mahadevapura,
    Bangalore 560048,
    Karnataka, India.

    Contact Us

    Tel : +91 86886 97941

    Email

    care@doormile.com

    EV Fleet

    The EV Paradox: Solving Range Anxiety for Urban Fleets

    Doormile Team2 min read

    Electric fleets can lower running costs, but range becomes a daily planning constraint. The route has to match the battery, the load, the traffic, and the return plan.

    In last-mile logistics, a missed SLA is rarely caused by one big failure. It usually comes from small delays adding up across a route. The EV Paradox: Solving Range Anxiety for Urban Fleets looks at how delivery teams can spot those delays early and plan around them before vehicles leave the hub.

    Why this matters for fleet teams

    Every extra kilometre costs money. It uses fuel or charge, adds rider time, wears down vehicles, and increases the chance of a late delivery. When routes are built from fixed zones or old habits, those costs repeat every day.

    • Fewer vehicles needed for the same number of drops
    • Lower cost per drop through better stop sequencing
    • ETAs that match traffic, distance, and delivery windows
    • Less fuel or charge used per completed order

    From orders to dispatch

    A good dispatch plan starts with the basics: order locations, promised delivery windows, rider capacity, vehicle range, and known traffic trouble spots. MileTruth™ checks those inputs before dispatch so the team is not fixing avoidable mistakes on the road.

    The EV Paradox: Solving Range Anxiety for Urban Fleets
    EV Fleet: route planning decisions made before dispatch.

    A route should be checked before the rider leaves, not explained after the customer calls.

    Doormile Operations

    Putting it into practice

    The best improvements usually start with simple measurements. Track distance per route, failed delivery windows, rider idle time, and orders moved between vehicles after dispatch. Those numbers show where the operation is leaking time.

    1. Benchmark today's distance, fleet size, and on-time rate.
    2. Include vehicle capacity, delivery windows, rider shifts, and battery charge.
    3. Check routes against traffic and customer commitments before dispatch.
    4. Compare the next dispatch cycle against the old plan.

    Better routing is not about pushing riders harder. It is about giving them a plan that already accounts for the real day ahead.

    \ No newline at end of file diff --git a/build/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets.txt b/build/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets.txt new file mode 100644 index 0000000..7d48a4a --- /dev/null +++ b/build/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets.txt @@ -0,0 +1,545 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +d:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +e:"$Sreact.suspense" +11:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +13:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +15:I[68027,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"P":null,"c":["","blog","the-ev-paradox-solving-range-anxiety-for-urban-fleets"],"q":"","i":false,"f":[[["",{"children":["blog",{"children":[["slug","the-ev-paradox-solving-range-anxiety-for-urban-fleets","d",null],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":["$Lc",[["$","script","script-0",{"src":"/_next/static/chunks/0yvxf3ok9gcp_.js","async":true,"nonce":"$undefined"}]],["$","$Ld",null,{"children":["$","$e",null,{"name":"Next.MetadataOutlet","children":"$@f"}]}]]}],{},null,false,null]},null,false,"$@10"]},null,false,"$@10"]},null,false,null],["$","$1","h",{"children":[null,["$","$L11",null,{"children":"$L12"}],["$","div",null,{"hidden":true,"children":["$","$L13",null,{"children":["$","$e",null,{"name":"Next.Metadata","children":"$L14"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$15",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"kmSVPuUqY3Rhw5xy4D2nn"} +16:[] +10:"$W16" +:HL["/images/ev-paradox.webp","image"] +17:T3d6f, + .dm-single-blog { + --dm-red: #c01227; + --dm-red-hover: #e31d32; + --dm-radius-card: 22px; + --dm-radius-img: 20px; + --dm-radius-badge: 8px; + --dm-shadow-card: 0 4px 24px rgba(15, 23, 42, 0.05); + --dm-border: 1px solid rgba(15, 23, 42, 0.09); + --dm-space-p: 24px; + --dm-space-h: 32px; + --dm-space-img: 32px; + --dm-space-quote: 40px; + --dm-sticky-top: 138px; + --dm-measure: min(1100px, 100%); + font-family: var(--font-manrope), sans-serif; + } + + /* Heading normalization. Beat the global theme's .elementor-kit-5 h1-h6 + (120/80/60px UPPERCASE) rules with !important on our own classes. */ + .dm-single-blog :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline, + specificity 0-1-1) so blog links keep our colors and never get underlined. */ + .dm-single-blog a { text-decoration: none !important; } + + /* Page banner: tall homepage-scale frame with only badge + title inside */ + /* Compound selector (specificity 20) + !important beats the global 800px + single-class height rules so the blog banner can use viewport heights. */ + .custom-standard-hero-card.dm-banner-card { + height: 90vh !important; + min-height: 85vh !important; + } + @media (max-width: 1024px) { + .custom-standard-hero-card.dm-banner-card { height: 80vh !important; min-height: 75vh !important; } + } + @media (max-width: 600px) { + .custom-standard-hero-card.dm-banner-card { height: 78vh !important; min-height: 72vh !important; } + } + + .dm-banner-inner { + position: relative; width: 100%; height: 100%; + display: flex; flex-direction: column; align-items: center; justify-content: center; + text-align: center; gap: clamp(22px, 2.6vw, 34px); + padding: clamp(48px, 8vh, 96px) clamp(20px, 5vw, 48px); + } + + .dm-banner-category { + display: inline-block; background: var(--dm-red); color: #fff; + font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.6px; + padding: 9px 18px; border-radius: 999px; box-shadow: 0 8px 22px rgba(192,18,39,0.45); + } + .dm-banner-title { + font-family: var(--font-manrope), sans-serif !important; + font-size: clamp(34px, 5vw, 60px) !important; font-weight: 850 !important; + line-height: 1.16 !important; letter-spacing: -1.2px !important; + color: #ffffff !important; margin: 0; max-width: 820px; + text-wrap: balance; text-shadow: 0 2px 30px rgba(0,0,0,0.38); + } + @media (max-width: 1024px) { .dm-banner-title { font-size: clamp(32px, 6vw, 48px) !important; max-width: 90%; } } + @media (max-width: 600px) { .dm-banner-title { font-size: clamp(28px, 8vw, 38px) !important; max-width: 90%; } } + + /* Content wrap begins immediately below the banner */ + /* Shared content container: the SAME max-width + horizontal padding is used + by BlogPostFooter (.dm-blog-footer-inner) so the article body, headings, + images, Prev/Next, Related Articles and the CTA banner all align to one + grid with identical left/right edges. Keep both in sync. */ + .dm-blog-wrap { + max-width: 1280px; margin: 0 auto; + /* 20px mobile padding floor → 40px on desktop; matches the footer container. */ + padding: clamp(14px, 2vw, 26px) clamp(20px, 4vw, 40px) 0; + } + @media (max-width: 767px) { + .dm-blog-wrap { + padding-left: 16px; + padding-right: 16px; + } + } + + /* ── Article meta bar (directly under the hero) ── */ + .dm-meta-bar { + display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 14px 24px; + padding: clamp(20px, 2.6vw, 30px) 0; margin-bottom: clamp(26px, 3vw, 44px); + border-bottom: 1px solid rgba(15,23,42,0.10); + } + .dm-meta-breadcrumb ol { + list-style: none; display: flex; flex-wrap: wrap; align-items: center; + gap: 8px; margin: 0; padding: 0; font-size: 13px; font-weight: 600; color: #64748b; + } + .dm-meta-breadcrumb a { color: #64748b !important; text-decoration: none; transition: color .2s ease; } + .dm-meta-breadcrumb a:hover { color: var(--dm-red) !important; } + .dm-meta-sep { color: #cbd5e1; } + .dm-meta-current { + color: #0f172a; font-weight: 700; + max-width: min(40ch, 46vw); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; + } + @media (max-width: 600px) { .dm-meta-current { max-width: 56vw; } } + .dm-meta-items { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 20px; } + .dm-meta-item { + display: inline-flex; align-items: center; gap: 7px; + font-size: 13.5px; font-weight: 600; color: #475569; + } + .dm-meta-item svg { color: var(--dm-red); flex: 0 0 auto; } + .dm-meta-author { color: #0f172a; font-weight: 700; } + @media (max-width: 600px) { .dm-meta-bar { gap: 12px; } } + .dm-blog-layout { + display: grid; grid-template-columns: minmax(0,1fr) 320px; + /* Tighter gap gives the reading column more room next to the 320px sidebar. */ + gap: clamp(28px, 3vw, 56px); align-items: start; + } + @media (max-width: 1024px) { + .dm-blog-layout { grid-template-columns: 1fr; gap: 48px; } + /* Single-column (tablet/mobile): cap the reading column and centre it so the + article never sits left-aligned with a large empty right gutter. */ + .dm-blog-main { max-width: 900px; margin-inline: auto; } + } + .dm-blog-main { min-width: 0; } + + /* ── Intro lead ── */ + .dm-blog-intro { + max-width: var(--dm-measure); + font-size: clamp(18px, 1.5vw, 20px); line-height: 1.65; font-weight: 500; + color: #475569; margin: 0 0 clamp(26px, 3vw, 38px); padding-left: 20px; + border-left: 3px solid var(--dm-red); + } + + /* ── Article body ── */ + .dm-article-body { max-width: var(--dm-measure); } + .dm-article-p { + font-size: 18px !important; line-height: 1.8 !important; color: #334155; font-weight: 450; + margin: 0 0 var(--dm-space-p); + } + .dm-article-h2 { + font-size: clamp(23px, 2vw, 30px) !important; font-weight: 800 !important; letter-spacing: -.3px !important; + color: #0f172a !important; line-height: 1.3 !important; margin: 48px 0 var(--dm-space-h); + text-wrap: balance; + } + /* Each article block is wrapped in its OWN ScrollReveal
    , so a bare + :first-child rule matched every heading (each is the only child of its + wrapper) and zeroed its top margin, collapsing the gap above every + section heading. Scope the reset to only the article body's first block. */ + .dm-article-body > :first-child :where(.dm-article-h2, .dm-article-h3), + .dm-article-body > .dm-article-h2:first-child, + .dm-article-body > .dm-article-h3:first-child { margin-top: 0; } + .dm-article-h3 { + font-size: clamp(19px, 1.5vw, 23px) !important; font-weight: 800 !important; letter-spacing: -.2px !important; + color: #1e293b !important; line-height: 1.34 !important; margin: 40px 0 18px; + text-wrap: balance; + } + @media (max-width: 600px) { + .dm-article-p { font-size: 16px !important; } + .dm-article-ul li, .dm-article-ol li { font-size: 15.5px; } + .dm-article-h2 { font-size: clamp(22px, 6vw, 28px) !important; margin-top: 38px; } + .dm-article-h3 { font-size: clamp(18px, 5vw, 22px) !important; } + } + + .dm-article-ul, .dm-article-ol { + /* Top margin (was 0) separates the list from the paragraph above it; + matching bottom margin keeps it clear of the next heading/paragraph. + Slightly larger than --dm-space-p so the list reads as its own block. */ + margin: clamp(26px, 2.4vw, 32px) 0 clamp(26px, 2.4vw, 32px); + padding-left: 2px; list-style: none; + display: flex; flex-direction: column; gap: 15px; + } + /* Prefixed with .dm-article-body so these beat the theme's global + ".logico-front-end ul li:before" fontello-glyph bullet (specificity 0,1,3), + which otherwise replaces our clean red dot with a misaligned checkmark glyph + and adds its own 1.7em indent. */ + .dm-article-body .dm-article-ul li, .dm-article-body .dm-article-ol li { + position: relative; padding-left: 34px; + font-size: 17px; line-height: 1.65; color: #334155; font-weight: 450; + } + .dm-article-body .dm-article-ul li::before { + content: ""; position: absolute; left: 7px; top: 10px; + width: 8px; height: 8px; border-radius: 50%; background: var(--dm-red); + /* kill any inherited fontello glyph from the global rule */ + font-size: 0; line-height: 0; + } + .dm-article-ol { counter-reset: dm-li; } + .dm-article-body .dm-article-ol li { counter-increment: dm-li; } + .dm-article-body .dm-article-ol li::before { + content: counter(dm-li); position: absolute; left: 0; top: 0; + width: 24px; height: 24px; border-radius: 7px; + background: rgba(192,18,39,0.10); color: var(--dm-red); + font-size: 12px; font-weight: 800; display: flex; align-items: center; justify-content: center; + } + + /* ── Quote ── */ + .dm-article-quote { + position: relative; margin: var(--dm-space-quote) 0; padding: 30px 32px 30px 64px; + background: linear-gradient(135deg, #fbf2f3 0%, #fdf7f8 100%); + border-left: 4px solid var(--dm-red); border-radius: 0 18px 18px 0; + box-shadow: 0 8px 28px rgba(192, 18, 39, 0.06); + } + .dm-article-quote::before { + content: "\201C"; position: absolute; left: 22px; top: 8px; + font-family: Georgia, "Times New Roman", serif; + font-size: 64px; line-height: 1; color: rgba(192, 18, 39, 0.28); font-weight: 700; + } + .dm-article-quote p { + font-size: clamp(19px, 2vw, 23px); line-height: 1.5; font-weight: 600; + font-style: italic; color: #1e293b; margin: 0; + } + .dm-article-quote cite { + display: block; margin-top: 16px; font-size: 13px; font-weight: 700; + font-style: normal; color: var(--dm-red); text-transform: uppercase; letter-spacing: .6px; + } + @media (max-width: 600px) { .dm-article-quote { padding: 26px 22px; } .dm-article-quote::before { display: none; } } + + /* ── Images ── */ + .dm-article-figure { margin: var(--dm-space-img) 0; } + .dm-article-figure-img { + position: relative; display: block; width: 100%; aspect-ratio: 16 / 9; + border-radius: var(--dm-radius-img); overflow: hidden; box-shadow: 0 14px 34px rgba(15,23,42,0.10); + } + .dm-article-figure figcaption { + margin-top: 14px; font-size: 13.5px; color: #94a3b8; font-weight: 500; + text-align: center; font-style: italic; + } + + /* ── Sidebar ── */ + .dm-blog-aside-wrap { position: relative; } + .dm-blog-sidebar { + display: flex; flex-direction: column; gap: 18px; + position: sticky; top: var(--dm-sticky-top); + } + @media (max-width: 1024px) { .dm-blog-sidebar { position: static; gap: 20px; } } + + .dm-blog-widget { + background: #fff; border: var(--dm-border); border-radius: var(--dm-radius-card); + padding: 20px; box-shadow: var(--dm-shadow-card); + } + .dm-blog-widget-title { + font-size: 13px !important; font-weight: 700 !important; text-transform: uppercase !important; + letter-spacing: .8px !important; line-height: 1.35 !important; color: #0f172a !important; + margin: 0 0 15px; padding: 0 0 12px; + border-bottom: 1px solid rgba(15,23,42,0.08); + overflow: visible; white-space: normal; word-break: normal; + } + + /* Search */ + .dm-sr-only { + position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; + overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; + } + .dm-blog-search { position: relative; } + .dm-blog-search-form { position: relative; } + .dm-blog-search-input { + width: 100%; height: 46px; border: 1.5px solid #e2e8f0; border-radius: 12px; + padding: 0 42px 0 15px; font-size: 14px; font-family: inherit; color: #0f172a; + background: #f8fafc; transition: border-color .2s ease, box-shadow .2s ease, background .2s ease; + } + .dm-blog-search-input::placeholder { color: #9c9c9c; } + .dm-blog-search-input:focus { + outline: none; border-color: var(--dm-red); background: #fff; + box-shadow: 0 0 0 3px rgba(192,18,39,0.11); + } + .dm-blog-search-icon { + position: absolute; right: 14px; top: 50%; transform: translateY(-50%); + color: #94a3b8; pointer-events: none; display: flex; + } + .dm-blog-search-results { + position: absolute; z-index: 20; top: calc(100% + 8px); left: 0; right: 0; + background: #fff; border: 1px solid rgba(15,23,42,0.10); border-radius: 14px; + box-shadow: 0 18px 42px rgba(15,23,42,0.14); overflow: hidden; + } + .dm-blog-search-results ul { list-style: none; margin: 0; padding: 6px; } + .dm-blog-search-result { + display: flex; flex-direction: column; gap: 3px; padding: 10px 12px; + border-radius: 10px; text-decoration: none; transition: background .15s ease; + } + .dm-blog-search-result:hover { background: #f8fafc; } + .dm-blog-search-result-cat { + font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .8px; color: var(--dm-red); + } + .dm-blog-search-result-title { font-size: 13.5px; font-weight: 600; color: #1e293b; line-height: 1.35; } + .dm-blog-search-empty { margin: 0; padding: 14px 12px; font-size: 13px; color: #64748b; } + + /* Recent posts */ + .dm-blog-recent { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 15px; } + .dm-blog-recent-item { display: flex; gap: 13px; align-items: center; text-decoration: none; } + .dm-blog-recent-thumb { + position: relative; flex: 0 0 62px; width: 62px; height: 62px; + border-radius: 13px; overflow: hidden; background: #f1f5f9; + } + .dm-blog-recent-meta { display: flex; flex-direction: column; gap: 4px; min-width: 0; } + .dm-blog-recent-title { + font-size: 13.5px; font-weight: 700; color: #1e293b; line-height: 1.35; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-blog-recent-item:hover .dm-blog-recent-title { color: var(--dm-red); } + .dm-blog-recent-date { font-size: 11.5px; font-weight: 600; color: #94a3b8; } + + /* Categories */ + .dm-blog-categories { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; } + .dm-blog-category-item { + display: flex; align-items: center; justify-content: space-between; gap: 10px; + padding: 11px 2px; text-decoration: none; font-size: 14px; font-weight: 600; color: #334155 !important; + border-bottom: 1px solid rgba(15,23,42,0.06); transition: color .2s ease, padding-left .2s ease; + } + .dm-blog-categories li:last-child .dm-blog-category-item { border-bottom: none; } + .dm-blog-category-item:hover { color: var(--dm-red); padding-left: 6px; } + .dm-blog-category-item > span:first-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } + .dm-blog-category-count { + flex: 0 0 auto; font-size: 11px; font-weight: 800; color: #94a3b8; background: #f1f5f9; + min-width: 24px; height: 22px; border-radius: 7px; display: inline-flex; + align-items: center; justify-content: center; padding: 0 7px; + } + + /* CTA card */ + .dm-blog-cta-card { background: #1f1f1f; border-color: #1f1f1f; } + .dm-blog-cta-title { font-size: 18px !important; font-weight: 800 !important; color: #fff !important; line-height: 1.32 !important; margin: 0 0 10px; letter-spacing: -.2px !important; } + .dm-blog-cta-text { font-size: 13.5px; line-height: 1.6; color: #c7c7c7; margin: 0 0 20px; font-weight: 450; } + .dm-blog-cta-btn { + display: inline-flex; align-items: center; gap: 8px; + background: var(--dm-red); color: #fff !important; font-size: 13.5px; font-weight: 700; + padding: 12px 22px; border-radius: 12px; text-decoration: none; + transition: background .2s ease, transform .2s ease; + } + .dm-blog-cta-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } +c:["$","div",null,{"className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"Article\",\"headline\":\"The EV Paradox: Solving Range Anxiety for Urban Fleets\",\"description\":\"Electric vehicles lower running costs, but battery range changes how routes must be planned before dispatch.\",\"image\":[\"https://www.doormile.com/images/ev-paradox.webp\"],\"datePublished\":\"2025-08-21T00:00:00.000Z\",\"dateModified\":\"2025-08-21T00:00:00.000Z\",\"author\":{\"@type\":\"Organization\",\"name\":\"Doormile Team\",\"url\":\"https://www.doormile.com\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Doormile\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://www.doormile.com/images/cropped-image-2.png\"}},\"mainEntityOfPage\":{\"@type\":\"WebPage\",\"@id\":\"https://www.doormile.com/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets\"},\"articleSection\":\"EV Fleet\"}"}}],["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https://www.doormile.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https://www.doormile.com/blog\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"The EV Paradox: Solving Range Anxiety for Urban Fleets\",\"item\":\"https://www.doormile.com/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets\"}]}"}}],["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":[["$","article",null,{"className":"dm-single-blog","children":[["$","link",null,{"rel":"preload","as":"image","href":"/images/ev-paradox.webp"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$17"}}],"$L18","$L19"]}],"$L1a"]}]}]]}] +1b:I[22016,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],""] +1c:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"ScrollReveal"] +18:["$","div",null,{"className":"custom-standard-hero-container","children":["$","div",null,{"className":"custom-standard-hero-card dm-banner-card","style":{"backgroundImage":"url(/images/ev-paradox.webp)","--hero-overlay":"linear-gradient(180deg, rgba(0,0,0,0.38) 0%, rgba(0,0,0,0.46) 55%, rgba(0,0,0,0.60) 100%)"},"children":["$","div",null,{"className":"e-con-inner dm-banner-inner","children":[["$","span",null,{"className":"dm-banner-category","children":"EV Fleet"}],["$","h1",null,{"className":"dm-banner-title","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}]]}]}]}] +19:["$","div",null,{"className":"dm-blog-wrap","children":[["$","div",null,{"className":"dm-meta-bar","children":[["$","nav",null,{"className":"dm-meta-breadcrumb","aria-label":"Breadcrumb","children":["$","ol",null,{"children":[["$","li",null,{"children":["$","$L1b",null,{"href":"/","children":"Home"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"children":["$","$L1b",null,{"href":"/blog","children":"Blog"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"aria-current":"page","className":"dm-meta-current","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}]]}]}],["$","div",null,{"className":"dm-meta-items","children":[["$","span",null,{"className":"dm-meta-item dm-meta-author","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","path",null,{"d":"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"}],["$","circle",null,{"cx":"12","cy":"7","r":"4"}]]}],"Doormile Team"]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","rect",null,{"x":"3","y":"4","width":"18","height":"18","rx":"2"}],["$","line",null,{"x1":"16","y1":"2","x2":"16","y2":"6"}],["$","line",null,{"x1":"8","y1":"2","x2":"8","y2":"6"}],["$","line",null,{"x1":"3","y1":"10","x2":"21","y2":"10"}]]}],["$","time",null,{"dateTime":"2025-08-21","children":"Aug 21, 2025"}]]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","circle",null,{"cx":"12","cy":"12","r":"9"}],["$","polyline",null,{"points":"12 7 12 12 15 14"}]]}],2," min read"]}]]}]]}],["$","div",null,{"className":"dm-blog-layout","children":[["$","div",null,{"className":"dm-blog-main","children":[["$","p",null,{"className":"dm-blog-intro","children":"Electric fleets can lower running costs, but range becomes a daily planning constraint. The route has to match the battery, the load, the traffic, and the return plan."}],["$","div",null,{"className":"dm-article-body","children":[["$","$L1c","0",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"In last-mile logistics, a missed SLA is rarely caused by one big failure. It usually comes from small delays adding up across a route. The EV Paradox: Solving Range Anxiety for Urban Fleets looks at how delivery teams can spot those delays early and plan around them before vehicles leave the hub."}]}],["$","$L1c","1",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"Why this matters for fleet teams"}]}],["$","$L1c","2",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"Every extra kilometre costs money. It uses fuel or charge, adds rider time, wears down vehicles, and increases the chance of a late delivery. When routes are built from fixed zones or old habits, those costs repeat every day."}]}],["$","$L1c","3",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ul",null,{"className":"dm-article-ul","children":[["$","li","0",{"children":"Fewer vehicles needed for the same number of drops"}],["$","li","1",{"children":"Lower cost per drop through better stop sequencing"}],["$","li","2",{"children":"ETAs that match traffic, distance, and delivery windows"}],["$","li","3",{"children":"Less fuel or charge used per completed order"}]]}]}],["$","$L1c","4",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h3",null,{"className":"dm-article-h3","children":"From orders to dispatch"}]}],["$","$L1c","5",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"A good dispatch plan starts with the basics: order locations, promised delivery windows, rider capacity, vehicle range, and known traffic trouble spots. MileTruth™ checks those inputs before dispatch so the team is not fixing avoidable mistakes on the road."}]}],["$","$L1c","6",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","figure",null,{"className":"dm-article-figure","children":["$L1d","$L1e"]}]}],"$L1f","$L20","$L21","$L22","$L23"]}]]}],"$L24"]}]]}] +25:T2021, + .dm-blog-footer { + font-family: var(--font-manrope), sans-serif; --dm-red: #c01227; --dm-red-hover: #e31d32; + /* The global theme applies 72px top/bottom section padding — strip it so the + inner container is the single source of vertical rhythm (no double gap). */ + padding: 0 !important; + } + /* Neutralize the global theme's 120/80/60px UPPERCASE heading rules */ + .dm-blog-footer :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline) */ + .dm-blog-footer a { text-decoration: none !important; } + /* Shared content container — mirrors SingleBlog's .dm-blog-wrap (same 1280px + max-width + 20→40px horizontal padding) so Prev/Next, Related and the CTA + align to the exact same left/right edges as the article body above. + Vertical rhythm: ~64px from the article end to the Prev/Next divider, then a + consistent ~64–72px section→section gap (no 120px+ voids). */ + .dm-blog-footer-inner { + max-width: 1280px; margin: 0 auto; + /* Compact vertical rhythm on an 8px system. Top padding sets the + article→Prev/Next gap (~24–32px); the inter-section gap sets the + Prev/Next→Related gap (~32–48px). No large arbitrary voids. */ + /* Minimal bottom padding — the global site footer already contributes its + own 20px top inset, so the CTA banner sits close to it without a void. */ + padding: clamp(24px, 3vw, 32px) clamp(20px, 4vw, 40px) clamp(8px, 1.5vw, 16px); + display: flex; flex-direction: column; gap: clamp(32px, 4vw, 48px); + } + @media (max-width: 767px) { + .dm-blog-footer-inner { + padding-left: 16px; + padding-right: 16px; + } + } + + /* Prev / Next */ + .dm-prevnext { + display: grid; grid-template-columns: 1fr 1fr; gap: 20px; + /* Halved from 40px: tight divider→cards spacing without crowding. */ + padding-top: clamp(16px, 2vw, 24px); border-top: 1px solid rgba(15,23,42,0.08); + } + @media (max-width: 640px) { .dm-prevnext { grid-template-columns: 1fr; } } + .dm-prevnext-placeholder { display: block; } + .dm-prevnext-card { + display: flex; gap: 16px; align-items: center; padding: 16px; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + text-decoration: none; transition: transform .3s ease, box-shadow .3s ease, border-color .3s ease; + } + .dm-prevnext-card:hover { + transform: translateY(-4px); border-color: rgba(192,18,39,0.2); + box-shadow: 0 16px 34px rgba(192,18,39,0.10); + } + .dm-prevnext-thumb { + position: relative; flex: 0 0 80px; width: 80px; height: 80px; + border-radius: 16px; overflow: hidden; background: #f1f5f9; + } + .dm-prevnext-text { display: flex; flex-direction: column; gap: 5px; min-width: 0; } + .dm-prevnext-next { text-align: right; } + .dm-prevnext-next .dm-prevnext-text { align-items: flex-end; } + .dm-prevnext-label { + display: inline-flex; align-items: center; gap: 6px; + font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: 1px; color: var(--dm-red); + } + .dm-prevnext-cat { font-size: 11px; font-weight: 700; color: #94a3b8; text-transform: uppercase; letter-spacing: .5px; } + .dm-prevnext-title { + font-size: 15.5px; font-weight: 700; color: #1e293b; line-height: 1.4; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-prevnext-card:hover .dm-prevnext-title { color: var(--dm-red); } + + /* Related */ + .dm-related-heading { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 850 !important; letter-spacing: -.4px !important; + line-height: 1.25 !important; color: #0f172a !important; margin: 0 0 24px; + } + .dm-related-grid { + display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; + } + @media (max-width: 1024px) { .dm-related-grid { grid-template-columns: repeat(2, 1fr); } } + @media (max-width: 700px) { .dm-related-grid { grid-template-columns: 1fr; gap: 24px; } } + + .dm-related-card { + display: flex; flex-direction: column; height: 100%; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + overflow: hidden; box-shadow: 0 4px 24px rgba(15,23,42,0.05); text-decoration: none; + transition: transform .4s cubic-bezier(0.2,0.8,0.2,1), box-shadow .4s ease, border-color .4s ease; + } + .dm-related-card:hover { + transform: translateY(-8px); box-shadow: 0 22px 44px rgba(192,18,39,0.13); + border-color: rgba(192,18,39,0.2); + } + .dm-related-img { + position: relative; width: 100%; aspect-ratio: 16 / 10; overflow: hidden; background: #f1f5f9; + } + .dm-related-img img { transition: transform .5s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-img img { transform: scale(1.05); } + .dm-related-badge { + position: absolute; top: 14px; left: 14px; z-index: 5; background: var(--dm-red); color: #fff; + font-size: 9px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.2px; + padding: 5px 11px; border-radius: 8px; box-shadow: 0 4px 12px rgba(192,18,39,0.25); + } + .dm-related-body { display: flex; flex-direction: column; flex: 1; padding: 22px; } + .dm-related-card-title { + font-size: 17px !important; font-weight: 800 !important; color: #1e293b !important; line-height: 1.4 !important; + letter-spacing: -.2px !important; margin: 0 0 10px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-related-card:hover .dm-related-card-title { color: var(--dm-red); } + .dm-related-card-excerpt { + font-size: 13.5px; font-weight: 500; color: #64748b; line-height: 1.6; margin: 0 0 18px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + } + .dm-related-readmore { + margin-top: auto; display: inline-flex; align-items: center; gap: 7px; + font-size: 12.5px; font-weight: 800; color: var(--dm-red); + text-transform: uppercase; letter-spacing: .6px; + } + .dm-related-readmore-arrow { transition: transform .3s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-readmore-arrow { transform: translateX(5px); } + + /* Contact CTA banner */ + .dm-blog-contact-cta { + display: flex; align-items: center; justify-content: space-between; gap: 32px; + flex-wrap: wrap; + background: linear-gradient(135deg, #1a1a1a 0%, #2d1417 100%); + border-radius: 30px; padding: clamp(32px, 4vw, 56px); + position: relative; overflow: hidden; + } + .dm-blog-contact-cta::after { + content: ""; position: absolute; right: -80px; top: -80px; width: 300px; height: 300px; + background: radial-gradient(circle, rgba(192,18,39,0.40), transparent 70%); + pointer-events: none; + } + .dm-blog-contact-cta-content { position: relative; z-index: 1; max-width: 640px; } + .dm-blog-contact-eyebrow { + display: inline-block; font-size: 12px; font-weight: 800; text-transform: uppercase; + letter-spacing: 1.4px; color: #ff8088; margin-bottom: 14px; + } + .dm-blog-contact-title { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 800 !important; line-height: 1.25 !important; + letter-spacing: -.3px !important; color: #ffffff !important; margin: 0 0 12px; text-wrap: balance; + } + .dm-blog-contact-sub { + font-size: 15.5px; line-height: 1.65; color: #e2e2e2; margin: 0; font-weight: 450; + } + .dm-blog-contact-btn { + position: relative; z-index: 1; flex-shrink: 0; + display: inline-flex; align-items: center; justify-content: center; gap: 10px; + background: var(--dm-red); color: #fff !important; font-size: 15px; font-weight: 700; + padding: 16px 32px; border-radius: 16px; text-decoration: none; + box-shadow: 0 10px 26px rgba(192,18,39,0.34); + transition: background .2s ease, transform .2s ease; + } + .dm-blog-contact-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } + @media (max-width: 720px) { + .dm-blog-contact-cta { flex-direction: column; align-items: flex-start; gap: 26px; } + .dm-blog-contact-btn { width: 100%; } + } +1a:["$","section",null,{"className":"dm-blog-footer","aria-label":"More articles","children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$25"}}],"$L26"]}] +27:I[5500,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"Image"] +28:I[23096,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"default"] +1d:["$","span",null,{"className":"dm-article-figure-img","children":["$","$L27",null,{"src":"/images/ev-paradox.webp","alt":"The EV Paradox: Solving Range Anxiety for Urban Fleets","fill":true,"sizes":"(max-width: 768px) 100vw, 760px","style":{"objectFit":"cover"}}]}] +1e:["$","figcaption",null,{"children":"EV Fleet: route planning decisions made before dispatch."}] +1f:["$","$L1c","7",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","blockquote",null,{"className":"dm-article-quote","children":[["$","p",null,{"children":"A route should be checked before the rider leaves, not explained after the customer calls."}],["$","cite",null,{"children":"Doormile Operations"}]]}]}] +20:["$","$L1c","8",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"Putting it into practice"}]}] +21:["$","$L1c","9",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"The best improvements usually start with simple measurements. Track distance per route, failed delivery windows, rider idle time, and orders moved between vehicles after dispatch. Those numbers show where the operation is leaking time."}]}] +22:["$","$L1c","10",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ol",null,{"className":"dm-article-ol","children":[["$","li","0",{"children":"Benchmark today's distance, fleet size, and on-time rate."}],["$","li","1",{"children":"Include vehicle capacity, delivery windows, rider shifts, and battery charge."}],["$","li","2",{"children":"Check routes against traffic and customer commitments before dispatch."}],["$","li","3",{"children":"Compare the next dispatch cycle against the old plan."}]]}]}] +23:["$","$L1c","11",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"Better routing is not about pushing riders harder. It is about giving them a plan that already accounts for the real day ahead."}]}] +24:["$","div",null,{"className":"dm-blog-aside-wrap","children":["$","aside",null,{"className":"dm-blog-sidebar","aria-label":"Blog sidebar","children":[["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Search"}],["$","$L28",null,{}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Recent Posts"}],["$","ul",null,{"className":"dm-blog-recent","children":[["$","li","how-ai-is-transforming-last-mile-ev-delivery",{"children":["$","$L1b",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"How Better Planning Improves Last-Mile EV Delivery"}],["$","time",null,{"dateTime":"2025-10-02","className":"dm-blog-recent-date","children":"Oct 2, 2025"}]]}]]}]}],["$","li","42-less-distance-insights-from-our-hyderabad-hub",{"children":["$","$L1b",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}],["$","time",null,{"dateTime":"2025-09-18","className":"dm-blog-recent-date","children":"Sep 18, 2025"}]]}]]}]}],["$","li","miletruth-ai-10-stages-to-smarter-dispatch",{"children":["$","$L1b",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","time",null,{"dateTime":"2025-09-05","className":"dm-blog-recent-date","children":"Sep 5, 2025"}]]}]]}]}],["$","li","why-mathematical-precision-beats-heuristics-in-routing",{"children":["$","$L1b",null,{"href":"/blog/why-mathematical-precision-beats-heuristics-in-routing","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-14.webp","alt":"Why Mathematical Precision Beats Heuristics in Routing","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"Why Mathematical Precision Beats Heuristics in Routing"}],["$","time",null,{"dateTime":"2025-08-07","className":"dm-blog-recent-date","children":"Aug 7, 2025"}]]}]]}]}]]}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Categories"}],["$","ul",null,{"className":"dm-blog-categories","children":[["$","li","Case Study",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Case Study"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","EV Fleet",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"EV Fleet"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}],["$","li","Fleet Management",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Fleet Management"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","MileTruth",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"MileTruth"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],"$L29","$L2a","$L2b"]}]]}],"$L2c"]}]}] +26:["$","div",null,{"className":"dm-blog-footer-inner","children":[["$","nav",null,{"className":"dm-prevnext","aria-label":"Article navigation","children":[["$","$L1b",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-prevnext-card dm-prevnext-prev","children":[["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"sizes":"80px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-prevnext-text","children":[["$","span",null,{"className":"dm-prevnext-label","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"19","y1":"12","x2":"5","y2":"12"}],["$","polyline",null,{"points":"12 19 5 12 12 5"}]]}],"Previous"]}],["$","span",null,{"className":"dm-prevnext-cat","children":"MileTruth"}],["$","span",null,{"className":"dm-prevnext-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}]]}]]}],["$","$L1b",null,{"href":"/blog/why-mathematical-precision-beats-heuristics-in-routing","className":"dm-prevnext-card dm-prevnext-next","children":[["$","span",null,{"className":"dm-prevnext-text","children":[["$","span",null,{"className":"dm-prevnext-label","children":["Next",["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","span",null,{"className":"dm-prevnext-cat","children":"Technology"}],["$","span",null,{"className":"dm-prevnext-title","children":"Why Mathematical Precision Beats Heuristics in Routing"}]]}],["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-14.webp","alt":"Why Mathematical Precision Beats Heuristics in Routing","fill":true,"sizes":"80px","style":{"objectFit":"cover"}}]}]]}]]}],["$","div",null,{"className":"dm-related","children":[["$","h2",null,{"className":"dm-related-heading","children":"Related Articles"}],["$","div",null,{"className":"dm-related-grid","children":[["$","$L1c","battery-simulation-the-secret-to-ev-route-pre-validation",{"delay":0,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/battery-simulation-the-secret-to-ev-route-pre-validation","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L27",null,{"src":"/images/blog-post-pic-3.webp","alt":"Battery Simulation: The Secret to EV Route Pre-Validation","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"EV Fleet"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"Battery Simulation: The Secret to EV Route Pre-Validation"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"Before a rider leaves the hub, every EV route should be checked against real charge capacity and the expected return plan."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}],["$","$L1c","how-ai-is-transforming-last-mile-ev-delivery",{"delay":0.08,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L27",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Technology"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"How Better Planning Improves Last-Mile EV Delivery"}],"$L2d","$L2e"]}]]}]}],"$L2f"]}]]}],"$L30"]}] +29:["$","li","Operations",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Operations"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +2a:["$","li","Sustainability",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Sustainability"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +2b:["$","li","Technology",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Technology"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}] +2c:["$","section",null,{"className":"dm-blog-widget dm-blog-cta-card","children":[["$","h2",null,{"className":"dm-blog-cta-title","children":"Planning delivery routes?"}],["$","p",null,{"className":"dm-blog-cta-text","children":"Talk to us about reducing wasted distance, missed windows, and avoidable vehicle time."}],["$","$L1b",null,{"href":"/contact","className":"dm-blog-cta-btn","children":["Contact Us",["$","svg",null,{"width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] +2d:["$","p",null,{"className":"dm-related-card-excerpt","children":"A practical look at how EV fleets can plan routes, manage charging, and keep delivery promises without adding unnecessary vehicles."}] +2e:["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}] +2f:["$","$L1c","42-less-distance-insights-from-our-hyderabad-hub",{"delay":0.16,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L27",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Case Study"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"A practical look at how one Hyderabad hub reduced distance, used fewer vehicles, and protected delivery windows with better route planning."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}] +30:["$","div",null,{"className":"dm-blog-contact-cta","children":[["$","div",null,{"className":"dm-blog-contact-cta-content","children":[["$","span",null,{"className":"dm-blog-contact-eyebrow","children":"Let's talk logistics"}],["$","h2",null,{"className":"dm-blog-contact-title","children":"Ready to move smarter with Doormile?"}],["$","p",null,{"className":"dm-blog-contact-sub","children":"Tell us about your fleet and routes — we'll show you where the distance, vehicles and emissions are hiding."}]]}],["$","$L1b",null,{"href":"/contact","className":"dm-blog-contact-btn","children":["Get in Touch",["$","svg",null,{"width":"20","height":"20","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] +12:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] +31:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +f:null +14:[["$","title","0",{"children":"The EV Paradox: Solving Range Anxiety for Urban Fleets – Doormile"}],["$","meta","1",{"name":"description","content":"Electric vehicles lower running costs, but battery range changes how routes must be planned before dispatch."}],["$","meta","2",{"name":"author","content":"Doormile Team"}],["$","meta","3",{"name":"keywords","content":"EV Fleet,last-mile logistics,EV fleet,MileTruth,route optimisation"}],["$","meta","4",{"name":"robots","content":"index, follow"}],["$","link","5",{"rel":"canonical","href":"https://www.doormile.com/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets"}],["$","meta","6",{"property":"og:title","content":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}],["$","meta","7",{"property":"og:description","content":"Electric vehicles lower running costs, but battery range changes how routes must be planned before dispatch."}],["$","meta","8",{"property":"og:url","content":"https://www.doormile.com/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets"}],["$","meta","9",{"property":"og:site_name","content":"Doormile"}],["$","meta","10",{"property":"og:image","content":"https://www.doormile.com/images/ev-paradox.webp"}],["$","meta","11",{"property":"og:image:alt","content":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}],["$","meta","12",{"property":"og:type","content":"article"}],["$","meta","13",{"property":"article:published_time","content":"2025-08-21T00:00:00.000Z"}],["$","meta","14",{"property":"article:author","content":"Doormile Team"}],["$","meta","15",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","16",{"name":"twitter:title","content":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}],["$","meta","17",{"name":"twitter:description","content":"Electric vehicles lower running costs, but battery range changes how routes must be planned before dispatch."}],["$","meta","18",{"name":"twitter:image","content":"https://www.doormile.com/images/ev-paradox.webp"}],["$","link","19",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","20",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","21",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","22",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L31","23",{}]] diff --git a/build/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets/__next._full.txt b/build/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets/__next._full.txt new file mode 100644 index 0000000..7d48a4a --- /dev/null +++ b/build/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets/__next._full.txt @@ -0,0 +1,545 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +d:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +e:"$Sreact.suspense" +11:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +13:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +15:I[68027,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"P":null,"c":["","blog","the-ev-paradox-solving-range-anxiety-for-urban-fleets"],"q":"","i":false,"f":[[["",{"children":["blog",{"children":[["slug","the-ev-paradox-solving-range-anxiety-for-urban-fleets","d",null],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":["$Lc",[["$","script","script-0",{"src":"/_next/static/chunks/0yvxf3ok9gcp_.js","async":true,"nonce":"$undefined"}]],["$","$Ld",null,{"children":["$","$e",null,{"name":"Next.MetadataOutlet","children":"$@f"}]}]]}],{},null,false,null]},null,false,"$@10"]},null,false,"$@10"]},null,false,null],["$","$1","h",{"children":[null,["$","$L11",null,{"children":"$L12"}],["$","div",null,{"hidden":true,"children":["$","$L13",null,{"children":["$","$e",null,{"name":"Next.Metadata","children":"$L14"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$15",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"kmSVPuUqY3Rhw5xy4D2nn"} +16:[] +10:"$W16" +:HL["/images/ev-paradox.webp","image"] +17:T3d6f, + .dm-single-blog { + --dm-red: #c01227; + --dm-red-hover: #e31d32; + --dm-radius-card: 22px; + --dm-radius-img: 20px; + --dm-radius-badge: 8px; + --dm-shadow-card: 0 4px 24px rgba(15, 23, 42, 0.05); + --dm-border: 1px solid rgba(15, 23, 42, 0.09); + --dm-space-p: 24px; + --dm-space-h: 32px; + --dm-space-img: 32px; + --dm-space-quote: 40px; + --dm-sticky-top: 138px; + --dm-measure: min(1100px, 100%); + font-family: var(--font-manrope), sans-serif; + } + + /* Heading normalization. Beat the global theme's .elementor-kit-5 h1-h6 + (120/80/60px UPPERCASE) rules with !important on our own classes. */ + .dm-single-blog :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline, + specificity 0-1-1) so blog links keep our colors and never get underlined. */ + .dm-single-blog a { text-decoration: none !important; } + + /* Page banner: tall homepage-scale frame with only badge + title inside */ + /* Compound selector (specificity 20) + !important beats the global 800px + single-class height rules so the blog banner can use viewport heights. */ + .custom-standard-hero-card.dm-banner-card { + height: 90vh !important; + min-height: 85vh !important; + } + @media (max-width: 1024px) { + .custom-standard-hero-card.dm-banner-card { height: 80vh !important; min-height: 75vh !important; } + } + @media (max-width: 600px) { + .custom-standard-hero-card.dm-banner-card { height: 78vh !important; min-height: 72vh !important; } + } + + .dm-banner-inner { + position: relative; width: 100%; height: 100%; + display: flex; flex-direction: column; align-items: center; justify-content: center; + text-align: center; gap: clamp(22px, 2.6vw, 34px); + padding: clamp(48px, 8vh, 96px) clamp(20px, 5vw, 48px); + } + + .dm-banner-category { + display: inline-block; background: var(--dm-red); color: #fff; + font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.6px; + padding: 9px 18px; border-radius: 999px; box-shadow: 0 8px 22px rgba(192,18,39,0.45); + } + .dm-banner-title { + font-family: var(--font-manrope), sans-serif !important; + font-size: clamp(34px, 5vw, 60px) !important; font-weight: 850 !important; + line-height: 1.16 !important; letter-spacing: -1.2px !important; + color: #ffffff !important; margin: 0; max-width: 820px; + text-wrap: balance; text-shadow: 0 2px 30px rgba(0,0,0,0.38); + } + @media (max-width: 1024px) { .dm-banner-title { font-size: clamp(32px, 6vw, 48px) !important; max-width: 90%; } } + @media (max-width: 600px) { .dm-banner-title { font-size: clamp(28px, 8vw, 38px) !important; max-width: 90%; } } + + /* Content wrap begins immediately below the banner */ + /* Shared content container: the SAME max-width + horizontal padding is used + by BlogPostFooter (.dm-blog-footer-inner) so the article body, headings, + images, Prev/Next, Related Articles and the CTA banner all align to one + grid with identical left/right edges. Keep both in sync. */ + .dm-blog-wrap { + max-width: 1280px; margin: 0 auto; + /* 20px mobile padding floor → 40px on desktop; matches the footer container. */ + padding: clamp(14px, 2vw, 26px) clamp(20px, 4vw, 40px) 0; + } + @media (max-width: 767px) { + .dm-blog-wrap { + padding-left: 16px; + padding-right: 16px; + } + } + + /* ── Article meta bar (directly under the hero) ── */ + .dm-meta-bar { + display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 14px 24px; + padding: clamp(20px, 2.6vw, 30px) 0; margin-bottom: clamp(26px, 3vw, 44px); + border-bottom: 1px solid rgba(15,23,42,0.10); + } + .dm-meta-breadcrumb ol { + list-style: none; display: flex; flex-wrap: wrap; align-items: center; + gap: 8px; margin: 0; padding: 0; font-size: 13px; font-weight: 600; color: #64748b; + } + .dm-meta-breadcrumb a { color: #64748b !important; text-decoration: none; transition: color .2s ease; } + .dm-meta-breadcrumb a:hover { color: var(--dm-red) !important; } + .dm-meta-sep { color: #cbd5e1; } + .dm-meta-current { + color: #0f172a; font-weight: 700; + max-width: min(40ch, 46vw); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; + } + @media (max-width: 600px) { .dm-meta-current { max-width: 56vw; } } + .dm-meta-items { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 20px; } + .dm-meta-item { + display: inline-flex; align-items: center; gap: 7px; + font-size: 13.5px; font-weight: 600; color: #475569; + } + .dm-meta-item svg { color: var(--dm-red); flex: 0 0 auto; } + .dm-meta-author { color: #0f172a; font-weight: 700; } + @media (max-width: 600px) { .dm-meta-bar { gap: 12px; } } + .dm-blog-layout { + display: grid; grid-template-columns: minmax(0,1fr) 320px; + /* Tighter gap gives the reading column more room next to the 320px sidebar. */ + gap: clamp(28px, 3vw, 56px); align-items: start; + } + @media (max-width: 1024px) { + .dm-blog-layout { grid-template-columns: 1fr; gap: 48px; } + /* Single-column (tablet/mobile): cap the reading column and centre it so the + article never sits left-aligned with a large empty right gutter. */ + .dm-blog-main { max-width: 900px; margin-inline: auto; } + } + .dm-blog-main { min-width: 0; } + + /* ── Intro lead ── */ + .dm-blog-intro { + max-width: var(--dm-measure); + font-size: clamp(18px, 1.5vw, 20px); line-height: 1.65; font-weight: 500; + color: #475569; margin: 0 0 clamp(26px, 3vw, 38px); padding-left: 20px; + border-left: 3px solid var(--dm-red); + } + + /* ── Article body ── */ + .dm-article-body { max-width: var(--dm-measure); } + .dm-article-p { + font-size: 18px !important; line-height: 1.8 !important; color: #334155; font-weight: 450; + margin: 0 0 var(--dm-space-p); + } + .dm-article-h2 { + font-size: clamp(23px, 2vw, 30px) !important; font-weight: 800 !important; letter-spacing: -.3px !important; + color: #0f172a !important; line-height: 1.3 !important; margin: 48px 0 var(--dm-space-h); + text-wrap: balance; + } + /* Each article block is wrapped in its OWN ScrollReveal
    , so a bare + :first-child rule matched every heading (each is the only child of its + wrapper) and zeroed its top margin, collapsing the gap above every + section heading. Scope the reset to only the article body's first block. */ + .dm-article-body > :first-child :where(.dm-article-h2, .dm-article-h3), + .dm-article-body > .dm-article-h2:first-child, + .dm-article-body > .dm-article-h3:first-child { margin-top: 0; } + .dm-article-h3 { + font-size: clamp(19px, 1.5vw, 23px) !important; font-weight: 800 !important; letter-spacing: -.2px !important; + color: #1e293b !important; line-height: 1.34 !important; margin: 40px 0 18px; + text-wrap: balance; + } + @media (max-width: 600px) { + .dm-article-p { font-size: 16px !important; } + .dm-article-ul li, .dm-article-ol li { font-size: 15.5px; } + .dm-article-h2 { font-size: clamp(22px, 6vw, 28px) !important; margin-top: 38px; } + .dm-article-h3 { font-size: clamp(18px, 5vw, 22px) !important; } + } + + .dm-article-ul, .dm-article-ol { + /* Top margin (was 0) separates the list from the paragraph above it; + matching bottom margin keeps it clear of the next heading/paragraph. + Slightly larger than --dm-space-p so the list reads as its own block. */ + margin: clamp(26px, 2.4vw, 32px) 0 clamp(26px, 2.4vw, 32px); + padding-left: 2px; list-style: none; + display: flex; flex-direction: column; gap: 15px; + } + /* Prefixed with .dm-article-body so these beat the theme's global + ".logico-front-end ul li:before" fontello-glyph bullet (specificity 0,1,3), + which otherwise replaces our clean red dot with a misaligned checkmark glyph + and adds its own 1.7em indent. */ + .dm-article-body .dm-article-ul li, .dm-article-body .dm-article-ol li { + position: relative; padding-left: 34px; + font-size: 17px; line-height: 1.65; color: #334155; font-weight: 450; + } + .dm-article-body .dm-article-ul li::before { + content: ""; position: absolute; left: 7px; top: 10px; + width: 8px; height: 8px; border-radius: 50%; background: var(--dm-red); + /* kill any inherited fontello glyph from the global rule */ + font-size: 0; line-height: 0; + } + .dm-article-ol { counter-reset: dm-li; } + .dm-article-body .dm-article-ol li { counter-increment: dm-li; } + .dm-article-body .dm-article-ol li::before { + content: counter(dm-li); position: absolute; left: 0; top: 0; + width: 24px; height: 24px; border-radius: 7px; + background: rgba(192,18,39,0.10); color: var(--dm-red); + font-size: 12px; font-weight: 800; display: flex; align-items: center; justify-content: center; + } + + /* ── Quote ── */ + .dm-article-quote { + position: relative; margin: var(--dm-space-quote) 0; padding: 30px 32px 30px 64px; + background: linear-gradient(135deg, #fbf2f3 0%, #fdf7f8 100%); + border-left: 4px solid var(--dm-red); border-radius: 0 18px 18px 0; + box-shadow: 0 8px 28px rgba(192, 18, 39, 0.06); + } + .dm-article-quote::before { + content: "\201C"; position: absolute; left: 22px; top: 8px; + font-family: Georgia, "Times New Roman", serif; + font-size: 64px; line-height: 1; color: rgba(192, 18, 39, 0.28); font-weight: 700; + } + .dm-article-quote p { + font-size: clamp(19px, 2vw, 23px); line-height: 1.5; font-weight: 600; + font-style: italic; color: #1e293b; margin: 0; + } + .dm-article-quote cite { + display: block; margin-top: 16px; font-size: 13px; font-weight: 700; + font-style: normal; color: var(--dm-red); text-transform: uppercase; letter-spacing: .6px; + } + @media (max-width: 600px) { .dm-article-quote { padding: 26px 22px; } .dm-article-quote::before { display: none; } } + + /* ── Images ── */ + .dm-article-figure { margin: var(--dm-space-img) 0; } + .dm-article-figure-img { + position: relative; display: block; width: 100%; aspect-ratio: 16 / 9; + border-radius: var(--dm-radius-img); overflow: hidden; box-shadow: 0 14px 34px rgba(15,23,42,0.10); + } + .dm-article-figure figcaption { + margin-top: 14px; font-size: 13.5px; color: #94a3b8; font-weight: 500; + text-align: center; font-style: italic; + } + + /* ── Sidebar ── */ + .dm-blog-aside-wrap { position: relative; } + .dm-blog-sidebar { + display: flex; flex-direction: column; gap: 18px; + position: sticky; top: var(--dm-sticky-top); + } + @media (max-width: 1024px) { .dm-blog-sidebar { position: static; gap: 20px; } } + + .dm-blog-widget { + background: #fff; border: var(--dm-border); border-radius: var(--dm-radius-card); + padding: 20px; box-shadow: var(--dm-shadow-card); + } + .dm-blog-widget-title { + font-size: 13px !important; font-weight: 700 !important; text-transform: uppercase !important; + letter-spacing: .8px !important; line-height: 1.35 !important; color: #0f172a !important; + margin: 0 0 15px; padding: 0 0 12px; + border-bottom: 1px solid rgba(15,23,42,0.08); + overflow: visible; white-space: normal; word-break: normal; + } + + /* Search */ + .dm-sr-only { + position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; + overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; + } + .dm-blog-search { position: relative; } + .dm-blog-search-form { position: relative; } + .dm-blog-search-input { + width: 100%; height: 46px; border: 1.5px solid #e2e8f0; border-radius: 12px; + padding: 0 42px 0 15px; font-size: 14px; font-family: inherit; color: #0f172a; + background: #f8fafc; transition: border-color .2s ease, box-shadow .2s ease, background .2s ease; + } + .dm-blog-search-input::placeholder { color: #9c9c9c; } + .dm-blog-search-input:focus { + outline: none; border-color: var(--dm-red); background: #fff; + box-shadow: 0 0 0 3px rgba(192,18,39,0.11); + } + .dm-blog-search-icon { + position: absolute; right: 14px; top: 50%; transform: translateY(-50%); + color: #94a3b8; pointer-events: none; display: flex; + } + .dm-blog-search-results { + position: absolute; z-index: 20; top: calc(100% + 8px); left: 0; right: 0; + background: #fff; border: 1px solid rgba(15,23,42,0.10); border-radius: 14px; + box-shadow: 0 18px 42px rgba(15,23,42,0.14); overflow: hidden; + } + .dm-blog-search-results ul { list-style: none; margin: 0; padding: 6px; } + .dm-blog-search-result { + display: flex; flex-direction: column; gap: 3px; padding: 10px 12px; + border-radius: 10px; text-decoration: none; transition: background .15s ease; + } + .dm-blog-search-result:hover { background: #f8fafc; } + .dm-blog-search-result-cat { + font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .8px; color: var(--dm-red); + } + .dm-blog-search-result-title { font-size: 13.5px; font-weight: 600; color: #1e293b; line-height: 1.35; } + .dm-blog-search-empty { margin: 0; padding: 14px 12px; font-size: 13px; color: #64748b; } + + /* Recent posts */ + .dm-blog-recent { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 15px; } + .dm-blog-recent-item { display: flex; gap: 13px; align-items: center; text-decoration: none; } + .dm-blog-recent-thumb { + position: relative; flex: 0 0 62px; width: 62px; height: 62px; + border-radius: 13px; overflow: hidden; background: #f1f5f9; + } + .dm-blog-recent-meta { display: flex; flex-direction: column; gap: 4px; min-width: 0; } + .dm-blog-recent-title { + font-size: 13.5px; font-weight: 700; color: #1e293b; line-height: 1.35; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-blog-recent-item:hover .dm-blog-recent-title { color: var(--dm-red); } + .dm-blog-recent-date { font-size: 11.5px; font-weight: 600; color: #94a3b8; } + + /* Categories */ + .dm-blog-categories { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; } + .dm-blog-category-item { + display: flex; align-items: center; justify-content: space-between; gap: 10px; + padding: 11px 2px; text-decoration: none; font-size: 14px; font-weight: 600; color: #334155 !important; + border-bottom: 1px solid rgba(15,23,42,0.06); transition: color .2s ease, padding-left .2s ease; + } + .dm-blog-categories li:last-child .dm-blog-category-item { border-bottom: none; } + .dm-blog-category-item:hover { color: var(--dm-red); padding-left: 6px; } + .dm-blog-category-item > span:first-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } + .dm-blog-category-count { + flex: 0 0 auto; font-size: 11px; font-weight: 800; color: #94a3b8; background: #f1f5f9; + min-width: 24px; height: 22px; border-radius: 7px; display: inline-flex; + align-items: center; justify-content: center; padding: 0 7px; + } + + /* CTA card */ + .dm-blog-cta-card { background: #1f1f1f; border-color: #1f1f1f; } + .dm-blog-cta-title { font-size: 18px !important; font-weight: 800 !important; color: #fff !important; line-height: 1.32 !important; margin: 0 0 10px; letter-spacing: -.2px !important; } + .dm-blog-cta-text { font-size: 13.5px; line-height: 1.6; color: #c7c7c7; margin: 0 0 20px; font-weight: 450; } + .dm-blog-cta-btn { + display: inline-flex; align-items: center; gap: 8px; + background: var(--dm-red); color: #fff !important; font-size: 13.5px; font-weight: 700; + padding: 12px 22px; border-radius: 12px; text-decoration: none; + transition: background .2s ease, transform .2s ease; + } + .dm-blog-cta-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } +c:["$","div",null,{"className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"Article\",\"headline\":\"The EV Paradox: Solving Range Anxiety for Urban Fleets\",\"description\":\"Electric vehicles lower running costs, but battery range changes how routes must be planned before dispatch.\",\"image\":[\"https://www.doormile.com/images/ev-paradox.webp\"],\"datePublished\":\"2025-08-21T00:00:00.000Z\",\"dateModified\":\"2025-08-21T00:00:00.000Z\",\"author\":{\"@type\":\"Organization\",\"name\":\"Doormile Team\",\"url\":\"https://www.doormile.com\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Doormile\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://www.doormile.com/images/cropped-image-2.png\"}},\"mainEntityOfPage\":{\"@type\":\"WebPage\",\"@id\":\"https://www.doormile.com/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets\"},\"articleSection\":\"EV Fleet\"}"}}],["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https://www.doormile.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https://www.doormile.com/blog\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"The EV Paradox: Solving Range Anxiety for Urban Fleets\",\"item\":\"https://www.doormile.com/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets\"}]}"}}],["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":[["$","article",null,{"className":"dm-single-blog","children":[["$","link",null,{"rel":"preload","as":"image","href":"/images/ev-paradox.webp"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$17"}}],"$L18","$L19"]}],"$L1a"]}]}]]}] +1b:I[22016,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],""] +1c:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"ScrollReveal"] +18:["$","div",null,{"className":"custom-standard-hero-container","children":["$","div",null,{"className":"custom-standard-hero-card dm-banner-card","style":{"backgroundImage":"url(/images/ev-paradox.webp)","--hero-overlay":"linear-gradient(180deg, rgba(0,0,0,0.38) 0%, rgba(0,0,0,0.46) 55%, rgba(0,0,0,0.60) 100%)"},"children":["$","div",null,{"className":"e-con-inner dm-banner-inner","children":[["$","span",null,{"className":"dm-banner-category","children":"EV Fleet"}],["$","h1",null,{"className":"dm-banner-title","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}]]}]}]}] +19:["$","div",null,{"className":"dm-blog-wrap","children":[["$","div",null,{"className":"dm-meta-bar","children":[["$","nav",null,{"className":"dm-meta-breadcrumb","aria-label":"Breadcrumb","children":["$","ol",null,{"children":[["$","li",null,{"children":["$","$L1b",null,{"href":"/","children":"Home"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"children":["$","$L1b",null,{"href":"/blog","children":"Blog"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"aria-current":"page","className":"dm-meta-current","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}]]}]}],["$","div",null,{"className":"dm-meta-items","children":[["$","span",null,{"className":"dm-meta-item dm-meta-author","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","path",null,{"d":"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"}],["$","circle",null,{"cx":"12","cy":"7","r":"4"}]]}],"Doormile Team"]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","rect",null,{"x":"3","y":"4","width":"18","height":"18","rx":"2"}],["$","line",null,{"x1":"16","y1":"2","x2":"16","y2":"6"}],["$","line",null,{"x1":"8","y1":"2","x2":"8","y2":"6"}],["$","line",null,{"x1":"3","y1":"10","x2":"21","y2":"10"}]]}],["$","time",null,{"dateTime":"2025-08-21","children":"Aug 21, 2025"}]]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","circle",null,{"cx":"12","cy":"12","r":"9"}],["$","polyline",null,{"points":"12 7 12 12 15 14"}]]}],2," min read"]}]]}]]}],["$","div",null,{"className":"dm-blog-layout","children":[["$","div",null,{"className":"dm-blog-main","children":[["$","p",null,{"className":"dm-blog-intro","children":"Electric fleets can lower running costs, but range becomes a daily planning constraint. The route has to match the battery, the load, the traffic, and the return plan."}],["$","div",null,{"className":"dm-article-body","children":[["$","$L1c","0",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"In last-mile logistics, a missed SLA is rarely caused by one big failure. It usually comes from small delays adding up across a route. The EV Paradox: Solving Range Anxiety for Urban Fleets looks at how delivery teams can spot those delays early and plan around them before vehicles leave the hub."}]}],["$","$L1c","1",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"Why this matters for fleet teams"}]}],["$","$L1c","2",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"Every extra kilometre costs money. It uses fuel or charge, adds rider time, wears down vehicles, and increases the chance of a late delivery. When routes are built from fixed zones or old habits, those costs repeat every day."}]}],["$","$L1c","3",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ul",null,{"className":"dm-article-ul","children":[["$","li","0",{"children":"Fewer vehicles needed for the same number of drops"}],["$","li","1",{"children":"Lower cost per drop through better stop sequencing"}],["$","li","2",{"children":"ETAs that match traffic, distance, and delivery windows"}],["$","li","3",{"children":"Less fuel or charge used per completed order"}]]}]}],["$","$L1c","4",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h3",null,{"className":"dm-article-h3","children":"From orders to dispatch"}]}],["$","$L1c","5",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"A good dispatch plan starts with the basics: order locations, promised delivery windows, rider capacity, vehicle range, and known traffic trouble spots. MileTruth™ checks those inputs before dispatch so the team is not fixing avoidable mistakes on the road."}]}],["$","$L1c","6",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","figure",null,{"className":"dm-article-figure","children":["$L1d","$L1e"]}]}],"$L1f","$L20","$L21","$L22","$L23"]}]]}],"$L24"]}]]}] +25:T2021, + .dm-blog-footer { + font-family: var(--font-manrope), sans-serif; --dm-red: #c01227; --dm-red-hover: #e31d32; + /* The global theme applies 72px top/bottom section padding — strip it so the + inner container is the single source of vertical rhythm (no double gap). */ + padding: 0 !important; + } + /* Neutralize the global theme's 120/80/60px UPPERCASE heading rules */ + .dm-blog-footer :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline) */ + .dm-blog-footer a { text-decoration: none !important; } + /* Shared content container — mirrors SingleBlog's .dm-blog-wrap (same 1280px + max-width + 20→40px horizontal padding) so Prev/Next, Related and the CTA + align to the exact same left/right edges as the article body above. + Vertical rhythm: ~64px from the article end to the Prev/Next divider, then a + consistent ~64–72px section→section gap (no 120px+ voids). */ + .dm-blog-footer-inner { + max-width: 1280px; margin: 0 auto; + /* Compact vertical rhythm on an 8px system. Top padding sets the + article→Prev/Next gap (~24–32px); the inter-section gap sets the + Prev/Next→Related gap (~32–48px). No large arbitrary voids. */ + /* Minimal bottom padding — the global site footer already contributes its + own 20px top inset, so the CTA banner sits close to it without a void. */ + padding: clamp(24px, 3vw, 32px) clamp(20px, 4vw, 40px) clamp(8px, 1.5vw, 16px); + display: flex; flex-direction: column; gap: clamp(32px, 4vw, 48px); + } + @media (max-width: 767px) { + .dm-blog-footer-inner { + padding-left: 16px; + padding-right: 16px; + } + } + + /* Prev / Next */ + .dm-prevnext { + display: grid; grid-template-columns: 1fr 1fr; gap: 20px; + /* Halved from 40px: tight divider→cards spacing without crowding. */ + padding-top: clamp(16px, 2vw, 24px); border-top: 1px solid rgba(15,23,42,0.08); + } + @media (max-width: 640px) { .dm-prevnext { grid-template-columns: 1fr; } } + .dm-prevnext-placeholder { display: block; } + .dm-prevnext-card { + display: flex; gap: 16px; align-items: center; padding: 16px; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + text-decoration: none; transition: transform .3s ease, box-shadow .3s ease, border-color .3s ease; + } + .dm-prevnext-card:hover { + transform: translateY(-4px); border-color: rgba(192,18,39,0.2); + box-shadow: 0 16px 34px rgba(192,18,39,0.10); + } + .dm-prevnext-thumb { + position: relative; flex: 0 0 80px; width: 80px; height: 80px; + border-radius: 16px; overflow: hidden; background: #f1f5f9; + } + .dm-prevnext-text { display: flex; flex-direction: column; gap: 5px; min-width: 0; } + .dm-prevnext-next { text-align: right; } + .dm-prevnext-next .dm-prevnext-text { align-items: flex-end; } + .dm-prevnext-label { + display: inline-flex; align-items: center; gap: 6px; + font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: 1px; color: var(--dm-red); + } + .dm-prevnext-cat { font-size: 11px; font-weight: 700; color: #94a3b8; text-transform: uppercase; letter-spacing: .5px; } + .dm-prevnext-title { + font-size: 15.5px; font-weight: 700; color: #1e293b; line-height: 1.4; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-prevnext-card:hover .dm-prevnext-title { color: var(--dm-red); } + + /* Related */ + .dm-related-heading { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 850 !important; letter-spacing: -.4px !important; + line-height: 1.25 !important; color: #0f172a !important; margin: 0 0 24px; + } + .dm-related-grid { + display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; + } + @media (max-width: 1024px) { .dm-related-grid { grid-template-columns: repeat(2, 1fr); } } + @media (max-width: 700px) { .dm-related-grid { grid-template-columns: 1fr; gap: 24px; } } + + .dm-related-card { + display: flex; flex-direction: column; height: 100%; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + overflow: hidden; box-shadow: 0 4px 24px rgba(15,23,42,0.05); text-decoration: none; + transition: transform .4s cubic-bezier(0.2,0.8,0.2,1), box-shadow .4s ease, border-color .4s ease; + } + .dm-related-card:hover { + transform: translateY(-8px); box-shadow: 0 22px 44px rgba(192,18,39,0.13); + border-color: rgba(192,18,39,0.2); + } + .dm-related-img { + position: relative; width: 100%; aspect-ratio: 16 / 10; overflow: hidden; background: #f1f5f9; + } + .dm-related-img img { transition: transform .5s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-img img { transform: scale(1.05); } + .dm-related-badge { + position: absolute; top: 14px; left: 14px; z-index: 5; background: var(--dm-red); color: #fff; + font-size: 9px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.2px; + padding: 5px 11px; border-radius: 8px; box-shadow: 0 4px 12px rgba(192,18,39,0.25); + } + .dm-related-body { display: flex; flex-direction: column; flex: 1; padding: 22px; } + .dm-related-card-title { + font-size: 17px !important; font-weight: 800 !important; color: #1e293b !important; line-height: 1.4 !important; + letter-spacing: -.2px !important; margin: 0 0 10px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-related-card:hover .dm-related-card-title { color: var(--dm-red); } + .dm-related-card-excerpt { + font-size: 13.5px; font-weight: 500; color: #64748b; line-height: 1.6; margin: 0 0 18px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + } + .dm-related-readmore { + margin-top: auto; display: inline-flex; align-items: center; gap: 7px; + font-size: 12.5px; font-weight: 800; color: var(--dm-red); + text-transform: uppercase; letter-spacing: .6px; + } + .dm-related-readmore-arrow { transition: transform .3s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-readmore-arrow { transform: translateX(5px); } + + /* Contact CTA banner */ + .dm-blog-contact-cta { + display: flex; align-items: center; justify-content: space-between; gap: 32px; + flex-wrap: wrap; + background: linear-gradient(135deg, #1a1a1a 0%, #2d1417 100%); + border-radius: 30px; padding: clamp(32px, 4vw, 56px); + position: relative; overflow: hidden; + } + .dm-blog-contact-cta::after { + content: ""; position: absolute; right: -80px; top: -80px; width: 300px; height: 300px; + background: radial-gradient(circle, rgba(192,18,39,0.40), transparent 70%); + pointer-events: none; + } + .dm-blog-contact-cta-content { position: relative; z-index: 1; max-width: 640px; } + .dm-blog-contact-eyebrow { + display: inline-block; font-size: 12px; font-weight: 800; text-transform: uppercase; + letter-spacing: 1.4px; color: #ff8088; margin-bottom: 14px; + } + .dm-blog-contact-title { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 800 !important; line-height: 1.25 !important; + letter-spacing: -.3px !important; color: #ffffff !important; margin: 0 0 12px; text-wrap: balance; + } + .dm-blog-contact-sub { + font-size: 15.5px; line-height: 1.65; color: #e2e2e2; margin: 0; font-weight: 450; + } + .dm-blog-contact-btn { + position: relative; z-index: 1; flex-shrink: 0; + display: inline-flex; align-items: center; justify-content: center; gap: 10px; + background: var(--dm-red); color: #fff !important; font-size: 15px; font-weight: 700; + padding: 16px 32px; border-radius: 16px; text-decoration: none; + box-shadow: 0 10px 26px rgba(192,18,39,0.34); + transition: background .2s ease, transform .2s ease; + } + .dm-blog-contact-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } + @media (max-width: 720px) { + .dm-blog-contact-cta { flex-direction: column; align-items: flex-start; gap: 26px; } + .dm-blog-contact-btn { width: 100%; } + } +1a:["$","section",null,{"className":"dm-blog-footer","aria-label":"More articles","children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$25"}}],"$L26"]}] +27:I[5500,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"Image"] +28:I[23096,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"default"] +1d:["$","span",null,{"className":"dm-article-figure-img","children":["$","$L27",null,{"src":"/images/ev-paradox.webp","alt":"The EV Paradox: Solving Range Anxiety for Urban Fleets","fill":true,"sizes":"(max-width: 768px) 100vw, 760px","style":{"objectFit":"cover"}}]}] +1e:["$","figcaption",null,{"children":"EV Fleet: route planning decisions made before dispatch."}] +1f:["$","$L1c","7",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","blockquote",null,{"className":"dm-article-quote","children":[["$","p",null,{"children":"A route should be checked before the rider leaves, not explained after the customer calls."}],["$","cite",null,{"children":"Doormile Operations"}]]}]}] +20:["$","$L1c","8",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"Putting it into practice"}]}] +21:["$","$L1c","9",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"The best improvements usually start with simple measurements. Track distance per route, failed delivery windows, rider idle time, and orders moved between vehicles after dispatch. Those numbers show where the operation is leaking time."}]}] +22:["$","$L1c","10",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ol",null,{"className":"dm-article-ol","children":[["$","li","0",{"children":"Benchmark today's distance, fleet size, and on-time rate."}],["$","li","1",{"children":"Include vehicle capacity, delivery windows, rider shifts, and battery charge."}],["$","li","2",{"children":"Check routes against traffic and customer commitments before dispatch."}],["$","li","3",{"children":"Compare the next dispatch cycle against the old plan."}]]}]}] +23:["$","$L1c","11",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"Better routing is not about pushing riders harder. It is about giving them a plan that already accounts for the real day ahead."}]}] +24:["$","div",null,{"className":"dm-blog-aside-wrap","children":["$","aside",null,{"className":"dm-blog-sidebar","aria-label":"Blog sidebar","children":[["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Search"}],["$","$L28",null,{}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Recent Posts"}],["$","ul",null,{"className":"dm-blog-recent","children":[["$","li","how-ai-is-transforming-last-mile-ev-delivery",{"children":["$","$L1b",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"How Better Planning Improves Last-Mile EV Delivery"}],["$","time",null,{"dateTime":"2025-10-02","className":"dm-blog-recent-date","children":"Oct 2, 2025"}]]}]]}]}],["$","li","42-less-distance-insights-from-our-hyderabad-hub",{"children":["$","$L1b",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}],["$","time",null,{"dateTime":"2025-09-18","className":"dm-blog-recent-date","children":"Sep 18, 2025"}]]}]]}]}],["$","li","miletruth-ai-10-stages-to-smarter-dispatch",{"children":["$","$L1b",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","time",null,{"dateTime":"2025-09-05","className":"dm-blog-recent-date","children":"Sep 5, 2025"}]]}]]}]}],["$","li","why-mathematical-precision-beats-heuristics-in-routing",{"children":["$","$L1b",null,{"href":"/blog/why-mathematical-precision-beats-heuristics-in-routing","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-14.webp","alt":"Why Mathematical Precision Beats Heuristics in Routing","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"Why Mathematical Precision Beats Heuristics in Routing"}],["$","time",null,{"dateTime":"2025-08-07","className":"dm-blog-recent-date","children":"Aug 7, 2025"}]]}]]}]}]]}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Categories"}],["$","ul",null,{"className":"dm-blog-categories","children":[["$","li","Case Study",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Case Study"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","EV Fleet",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"EV Fleet"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}],["$","li","Fleet Management",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Fleet Management"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","MileTruth",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"MileTruth"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],"$L29","$L2a","$L2b"]}]]}],"$L2c"]}]}] +26:["$","div",null,{"className":"dm-blog-footer-inner","children":[["$","nav",null,{"className":"dm-prevnext","aria-label":"Article navigation","children":[["$","$L1b",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-prevnext-card dm-prevnext-prev","children":[["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"sizes":"80px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-prevnext-text","children":[["$","span",null,{"className":"dm-prevnext-label","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"19","y1":"12","x2":"5","y2":"12"}],["$","polyline",null,{"points":"12 19 5 12 12 5"}]]}],"Previous"]}],["$","span",null,{"className":"dm-prevnext-cat","children":"MileTruth"}],["$","span",null,{"className":"dm-prevnext-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}]]}]]}],["$","$L1b",null,{"href":"/blog/why-mathematical-precision-beats-heuristics-in-routing","className":"dm-prevnext-card dm-prevnext-next","children":[["$","span",null,{"className":"dm-prevnext-text","children":[["$","span",null,{"className":"dm-prevnext-label","children":["Next",["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","span",null,{"className":"dm-prevnext-cat","children":"Technology"}],["$","span",null,{"className":"dm-prevnext-title","children":"Why Mathematical Precision Beats Heuristics in Routing"}]]}],["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-14.webp","alt":"Why Mathematical Precision Beats Heuristics in Routing","fill":true,"sizes":"80px","style":{"objectFit":"cover"}}]}]]}]]}],["$","div",null,{"className":"dm-related","children":[["$","h2",null,{"className":"dm-related-heading","children":"Related Articles"}],["$","div",null,{"className":"dm-related-grid","children":[["$","$L1c","battery-simulation-the-secret-to-ev-route-pre-validation",{"delay":0,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/battery-simulation-the-secret-to-ev-route-pre-validation","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L27",null,{"src":"/images/blog-post-pic-3.webp","alt":"Battery Simulation: The Secret to EV Route Pre-Validation","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"EV Fleet"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"Battery Simulation: The Secret to EV Route Pre-Validation"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"Before a rider leaves the hub, every EV route should be checked against real charge capacity and the expected return plan."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}],["$","$L1c","how-ai-is-transforming-last-mile-ev-delivery",{"delay":0.08,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L27",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Technology"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"How Better Planning Improves Last-Mile EV Delivery"}],"$L2d","$L2e"]}]]}]}],"$L2f"]}]]}],"$L30"]}] +29:["$","li","Operations",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Operations"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +2a:["$","li","Sustainability",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Sustainability"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +2b:["$","li","Technology",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Technology"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}] +2c:["$","section",null,{"className":"dm-blog-widget dm-blog-cta-card","children":[["$","h2",null,{"className":"dm-blog-cta-title","children":"Planning delivery routes?"}],["$","p",null,{"className":"dm-blog-cta-text","children":"Talk to us about reducing wasted distance, missed windows, and avoidable vehicle time."}],["$","$L1b",null,{"href":"/contact","className":"dm-blog-cta-btn","children":["Contact Us",["$","svg",null,{"width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] +2d:["$","p",null,{"className":"dm-related-card-excerpt","children":"A practical look at how EV fleets can plan routes, manage charging, and keep delivery promises without adding unnecessary vehicles."}] +2e:["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}] +2f:["$","$L1c","42-less-distance-insights-from-our-hyderabad-hub",{"delay":0.16,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L27",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Case Study"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"A practical look at how one Hyderabad hub reduced distance, used fewer vehicles, and protected delivery windows with better route planning."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}] +30:["$","div",null,{"className":"dm-blog-contact-cta","children":[["$","div",null,{"className":"dm-blog-contact-cta-content","children":[["$","span",null,{"className":"dm-blog-contact-eyebrow","children":"Let's talk logistics"}],["$","h2",null,{"className":"dm-blog-contact-title","children":"Ready to move smarter with Doormile?"}],["$","p",null,{"className":"dm-blog-contact-sub","children":"Tell us about your fleet and routes — we'll show you where the distance, vehicles and emissions are hiding."}]]}],["$","$L1b",null,{"href":"/contact","className":"dm-blog-contact-btn","children":["Get in Touch",["$","svg",null,{"width":"20","height":"20","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] +12:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] +31:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +f:null +14:[["$","title","0",{"children":"The EV Paradox: Solving Range Anxiety for Urban Fleets – Doormile"}],["$","meta","1",{"name":"description","content":"Electric vehicles lower running costs, but battery range changes how routes must be planned before dispatch."}],["$","meta","2",{"name":"author","content":"Doormile Team"}],["$","meta","3",{"name":"keywords","content":"EV Fleet,last-mile logistics,EV fleet,MileTruth,route optimisation"}],["$","meta","4",{"name":"robots","content":"index, follow"}],["$","link","5",{"rel":"canonical","href":"https://www.doormile.com/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets"}],["$","meta","6",{"property":"og:title","content":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}],["$","meta","7",{"property":"og:description","content":"Electric vehicles lower running costs, but battery range changes how routes must be planned before dispatch."}],["$","meta","8",{"property":"og:url","content":"https://www.doormile.com/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets"}],["$","meta","9",{"property":"og:site_name","content":"Doormile"}],["$","meta","10",{"property":"og:image","content":"https://www.doormile.com/images/ev-paradox.webp"}],["$","meta","11",{"property":"og:image:alt","content":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}],["$","meta","12",{"property":"og:type","content":"article"}],["$","meta","13",{"property":"article:published_time","content":"2025-08-21T00:00:00.000Z"}],["$","meta","14",{"property":"article:author","content":"Doormile Team"}],["$","meta","15",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","16",{"name":"twitter:title","content":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}],["$","meta","17",{"name":"twitter:description","content":"Electric vehicles lower running costs, but battery range changes how routes must be planned before dispatch."}],["$","meta","18",{"name":"twitter:image","content":"https://www.doormile.com/images/ev-paradox.webp"}],["$","link","19",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","20",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","21",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","22",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L31","23",{}]] diff --git a/build/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets/__next._head.txt b/build/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets/__next._head.txt new file mode 100644 index 0000000..9ff2960 --- /dev/null +++ b/build/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets/__next._head.txt @@ -0,0 +1,6 @@ +1:"$Sreact.fragment" +2:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +3:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +4:"$Sreact.suspense" +5:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +0:{"rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"The EV Paradox: Solving Range Anxiety for Urban Fleets – Doormile"}],["$","meta","1",{"name":"description","content":"Electric vehicles lower running costs, but battery range changes how routes must be planned before dispatch."}],["$","meta","2",{"name":"author","content":"Doormile Team"}],["$","meta","3",{"name":"keywords","content":"EV Fleet,last-mile logistics,EV fleet,MileTruth,route optimisation"}],["$","meta","4",{"name":"robots","content":"index, follow"}],["$","link","5",{"rel":"canonical","href":"https://www.doormile.com/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets"}],["$","meta","6",{"property":"og:title","content":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}],["$","meta","7",{"property":"og:description","content":"Electric vehicles lower running costs, but battery range changes how routes must be planned before dispatch."}],["$","meta","8",{"property":"og:url","content":"https://www.doormile.com/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets"}],["$","meta","9",{"property":"og:site_name","content":"Doormile"}],["$","meta","10",{"property":"og:image","content":"https://www.doormile.com/images/ev-paradox.webp"}],["$","meta","11",{"property":"og:image:alt","content":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}],["$","meta","12",{"property":"og:type","content":"article"}],["$","meta","13",{"property":"article:published_time","content":"2025-08-21T00:00:00.000Z"}],["$","meta","14",{"property":"article:author","content":"Doormile Team"}],["$","meta","15",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","16",{"name":"twitter:title","content":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}],["$","meta","17",{"name":"twitter:description","content":"Electric vehicles lower running costs, but battery range changes how routes must be planned before dispatch."}],["$","meta","18",{"name":"twitter:image","content":"https://www.doormile.com/images/ev-paradox.webp"}],["$","link","19",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","20",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","21",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","22",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L5","23",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets/__next._index.txt b/build/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets/__next._index.txt new file mode 100644 index 0000000..d0b3355 --- /dev/null +++ b/build/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets/__next._index.txt @@ -0,0 +1,15 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","template":["$","$La",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets/__next._tree.txt b/build/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets/__next._tree.txt new file mode 100644 index 0000000..1c23eff --- /dev/null +++ b/build/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets/__next._tree.txt @@ -0,0 +1,10 @@ +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +:HL["/images/ev-paradox.webp","image"] +0:{"tree":{"name":"","param":null,"prefetchHints":16,"slots":{"children":{"name":"blog","param":null,"prefetchHints":0,"slots":{"children":{"name":"slug","param":{"type":"d","key":"the-ev-paradox-solving-range-anxiety-for-urban-fleets","siblings":null},"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}}}}}},"staleTime":300,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets/__next.blog.$d$slug.__PAGE__.txt b/build/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets/__next.blog.$d$slug.__PAGE__.txt new file mode 100644 index 0000000..079e1a6 --- /dev/null +++ b/build/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets/__next.blog.$d$slug.__PAGE__.txt @@ -0,0 +1,520 @@ +1:"$Sreact.fragment" +8:I[22016,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],""] +9:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"ScrollReveal"] +14:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +15:"$Sreact.suspense" +17:I[5500,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"Image"] +18:I[23096,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"default"] +:HL["/images/ev-paradox.webp","image"] +2:T3d6f, + .dm-single-blog { + --dm-red: #c01227; + --dm-red-hover: #e31d32; + --dm-radius-card: 22px; + --dm-radius-img: 20px; + --dm-radius-badge: 8px; + --dm-shadow-card: 0 4px 24px rgba(15, 23, 42, 0.05); + --dm-border: 1px solid rgba(15, 23, 42, 0.09); + --dm-space-p: 24px; + --dm-space-h: 32px; + --dm-space-img: 32px; + --dm-space-quote: 40px; + --dm-sticky-top: 138px; + --dm-measure: min(1100px, 100%); + font-family: var(--font-manrope), sans-serif; + } + + /* Heading normalization. Beat the global theme's .elementor-kit-5 h1-h6 + (120/80/60px UPPERCASE) rules with !important on our own classes. */ + .dm-single-blog :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline, + specificity 0-1-1) so blog links keep our colors and never get underlined. */ + .dm-single-blog a { text-decoration: none !important; } + + /* Page banner: tall homepage-scale frame with only badge + title inside */ + /* Compound selector (specificity 20) + !important beats the global 800px + single-class height rules so the blog banner can use viewport heights. */ + .custom-standard-hero-card.dm-banner-card { + height: 90vh !important; + min-height: 85vh !important; + } + @media (max-width: 1024px) { + .custom-standard-hero-card.dm-banner-card { height: 80vh !important; min-height: 75vh !important; } + } + @media (max-width: 600px) { + .custom-standard-hero-card.dm-banner-card { height: 78vh !important; min-height: 72vh !important; } + } + + .dm-banner-inner { + position: relative; width: 100%; height: 100%; + display: flex; flex-direction: column; align-items: center; justify-content: center; + text-align: center; gap: clamp(22px, 2.6vw, 34px); + padding: clamp(48px, 8vh, 96px) clamp(20px, 5vw, 48px); + } + + .dm-banner-category { + display: inline-block; background: var(--dm-red); color: #fff; + font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.6px; + padding: 9px 18px; border-radius: 999px; box-shadow: 0 8px 22px rgba(192,18,39,0.45); + } + .dm-banner-title { + font-family: var(--font-manrope), sans-serif !important; + font-size: clamp(34px, 5vw, 60px) !important; font-weight: 850 !important; + line-height: 1.16 !important; letter-spacing: -1.2px !important; + color: #ffffff !important; margin: 0; max-width: 820px; + text-wrap: balance; text-shadow: 0 2px 30px rgba(0,0,0,0.38); + } + @media (max-width: 1024px) { .dm-banner-title { font-size: clamp(32px, 6vw, 48px) !important; max-width: 90%; } } + @media (max-width: 600px) { .dm-banner-title { font-size: clamp(28px, 8vw, 38px) !important; max-width: 90%; } } + + /* Content wrap begins immediately below the banner */ + /* Shared content container: the SAME max-width + horizontal padding is used + by BlogPostFooter (.dm-blog-footer-inner) so the article body, headings, + images, Prev/Next, Related Articles and the CTA banner all align to one + grid with identical left/right edges. Keep both in sync. */ + .dm-blog-wrap { + max-width: 1280px; margin: 0 auto; + /* 20px mobile padding floor → 40px on desktop; matches the footer container. */ + padding: clamp(14px, 2vw, 26px) clamp(20px, 4vw, 40px) 0; + } + @media (max-width: 767px) { + .dm-blog-wrap { + padding-left: 16px; + padding-right: 16px; + } + } + + /* ── Article meta bar (directly under the hero) ── */ + .dm-meta-bar { + display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 14px 24px; + padding: clamp(20px, 2.6vw, 30px) 0; margin-bottom: clamp(26px, 3vw, 44px); + border-bottom: 1px solid rgba(15,23,42,0.10); + } + .dm-meta-breadcrumb ol { + list-style: none; display: flex; flex-wrap: wrap; align-items: center; + gap: 8px; margin: 0; padding: 0; font-size: 13px; font-weight: 600; color: #64748b; + } + .dm-meta-breadcrumb a { color: #64748b !important; text-decoration: none; transition: color .2s ease; } + .dm-meta-breadcrumb a:hover { color: var(--dm-red) !important; } + .dm-meta-sep { color: #cbd5e1; } + .dm-meta-current { + color: #0f172a; font-weight: 700; + max-width: min(40ch, 46vw); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; + } + @media (max-width: 600px) { .dm-meta-current { max-width: 56vw; } } + .dm-meta-items { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 20px; } + .dm-meta-item { + display: inline-flex; align-items: center; gap: 7px; + font-size: 13.5px; font-weight: 600; color: #475569; + } + .dm-meta-item svg { color: var(--dm-red); flex: 0 0 auto; } + .dm-meta-author { color: #0f172a; font-weight: 700; } + @media (max-width: 600px) { .dm-meta-bar { gap: 12px; } } + .dm-blog-layout { + display: grid; grid-template-columns: minmax(0,1fr) 320px; + /* Tighter gap gives the reading column more room next to the 320px sidebar. */ + gap: clamp(28px, 3vw, 56px); align-items: start; + } + @media (max-width: 1024px) { + .dm-blog-layout { grid-template-columns: 1fr; gap: 48px; } + /* Single-column (tablet/mobile): cap the reading column and centre it so the + article never sits left-aligned with a large empty right gutter. */ + .dm-blog-main { max-width: 900px; margin-inline: auto; } + } + .dm-blog-main { min-width: 0; } + + /* ── Intro lead ── */ + .dm-blog-intro { + max-width: var(--dm-measure); + font-size: clamp(18px, 1.5vw, 20px); line-height: 1.65; font-weight: 500; + color: #475569; margin: 0 0 clamp(26px, 3vw, 38px); padding-left: 20px; + border-left: 3px solid var(--dm-red); + } + + /* ── Article body ── */ + .dm-article-body { max-width: var(--dm-measure); } + .dm-article-p { + font-size: 18px !important; line-height: 1.8 !important; color: #334155; font-weight: 450; + margin: 0 0 var(--dm-space-p); + } + .dm-article-h2 { + font-size: clamp(23px, 2vw, 30px) !important; font-weight: 800 !important; letter-spacing: -.3px !important; + color: #0f172a !important; line-height: 1.3 !important; margin: 48px 0 var(--dm-space-h); + text-wrap: balance; + } + /* Each article block is wrapped in its OWN ScrollReveal
    , so a bare + :first-child rule matched every heading (each is the only child of its + wrapper) and zeroed its top margin, collapsing the gap above every + section heading. Scope the reset to only the article body's first block. */ + .dm-article-body > :first-child :where(.dm-article-h2, .dm-article-h3), + .dm-article-body > .dm-article-h2:first-child, + .dm-article-body > .dm-article-h3:first-child { margin-top: 0; } + .dm-article-h3 { + font-size: clamp(19px, 1.5vw, 23px) !important; font-weight: 800 !important; letter-spacing: -.2px !important; + color: #1e293b !important; line-height: 1.34 !important; margin: 40px 0 18px; + text-wrap: balance; + } + @media (max-width: 600px) { + .dm-article-p { font-size: 16px !important; } + .dm-article-ul li, .dm-article-ol li { font-size: 15.5px; } + .dm-article-h2 { font-size: clamp(22px, 6vw, 28px) !important; margin-top: 38px; } + .dm-article-h3 { font-size: clamp(18px, 5vw, 22px) !important; } + } + + .dm-article-ul, .dm-article-ol { + /* Top margin (was 0) separates the list from the paragraph above it; + matching bottom margin keeps it clear of the next heading/paragraph. + Slightly larger than --dm-space-p so the list reads as its own block. */ + margin: clamp(26px, 2.4vw, 32px) 0 clamp(26px, 2.4vw, 32px); + padding-left: 2px; list-style: none; + display: flex; flex-direction: column; gap: 15px; + } + /* Prefixed with .dm-article-body so these beat the theme's global + ".logico-front-end ul li:before" fontello-glyph bullet (specificity 0,1,3), + which otherwise replaces our clean red dot with a misaligned checkmark glyph + and adds its own 1.7em indent. */ + .dm-article-body .dm-article-ul li, .dm-article-body .dm-article-ol li { + position: relative; padding-left: 34px; + font-size: 17px; line-height: 1.65; color: #334155; font-weight: 450; + } + .dm-article-body .dm-article-ul li::before { + content: ""; position: absolute; left: 7px; top: 10px; + width: 8px; height: 8px; border-radius: 50%; background: var(--dm-red); + /* kill any inherited fontello glyph from the global rule */ + font-size: 0; line-height: 0; + } + .dm-article-ol { counter-reset: dm-li; } + .dm-article-body .dm-article-ol li { counter-increment: dm-li; } + .dm-article-body .dm-article-ol li::before { + content: counter(dm-li); position: absolute; left: 0; top: 0; + width: 24px; height: 24px; border-radius: 7px; + background: rgba(192,18,39,0.10); color: var(--dm-red); + font-size: 12px; font-weight: 800; display: flex; align-items: center; justify-content: center; + } + + /* ── Quote ── */ + .dm-article-quote { + position: relative; margin: var(--dm-space-quote) 0; padding: 30px 32px 30px 64px; + background: linear-gradient(135deg, #fbf2f3 0%, #fdf7f8 100%); + border-left: 4px solid var(--dm-red); border-radius: 0 18px 18px 0; + box-shadow: 0 8px 28px rgba(192, 18, 39, 0.06); + } + .dm-article-quote::before { + content: "\201C"; position: absolute; left: 22px; top: 8px; + font-family: Georgia, "Times New Roman", serif; + font-size: 64px; line-height: 1; color: rgba(192, 18, 39, 0.28); font-weight: 700; + } + .dm-article-quote p { + font-size: clamp(19px, 2vw, 23px); line-height: 1.5; font-weight: 600; + font-style: italic; color: #1e293b; margin: 0; + } + .dm-article-quote cite { + display: block; margin-top: 16px; font-size: 13px; font-weight: 700; + font-style: normal; color: var(--dm-red); text-transform: uppercase; letter-spacing: .6px; + } + @media (max-width: 600px) { .dm-article-quote { padding: 26px 22px; } .dm-article-quote::before { display: none; } } + + /* ── Images ── */ + .dm-article-figure { margin: var(--dm-space-img) 0; } + .dm-article-figure-img { + position: relative; display: block; width: 100%; aspect-ratio: 16 / 9; + border-radius: var(--dm-radius-img); overflow: hidden; box-shadow: 0 14px 34px rgba(15,23,42,0.10); + } + .dm-article-figure figcaption { + margin-top: 14px; font-size: 13.5px; color: #94a3b8; font-weight: 500; + text-align: center; font-style: italic; + } + + /* ── Sidebar ── */ + .dm-blog-aside-wrap { position: relative; } + .dm-blog-sidebar { + display: flex; flex-direction: column; gap: 18px; + position: sticky; top: var(--dm-sticky-top); + } + @media (max-width: 1024px) { .dm-blog-sidebar { position: static; gap: 20px; } } + + .dm-blog-widget { + background: #fff; border: var(--dm-border); border-radius: var(--dm-radius-card); + padding: 20px; box-shadow: var(--dm-shadow-card); + } + .dm-blog-widget-title { + font-size: 13px !important; font-weight: 700 !important; text-transform: uppercase !important; + letter-spacing: .8px !important; line-height: 1.35 !important; color: #0f172a !important; + margin: 0 0 15px; padding: 0 0 12px; + border-bottom: 1px solid rgba(15,23,42,0.08); + overflow: visible; white-space: normal; word-break: normal; + } + + /* Search */ + .dm-sr-only { + position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; + overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; + } + .dm-blog-search { position: relative; } + .dm-blog-search-form { position: relative; } + .dm-blog-search-input { + width: 100%; height: 46px; border: 1.5px solid #e2e8f0; border-radius: 12px; + padding: 0 42px 0 15px; font-size: 14px; font-family: inherit; color: #0f172a; + background: #f8fafc; transition: border-color .2s ease, box-shadow .2s ease, background .2s ease; + } + .dm-blog-search-input::placeholder { color: #9c9c9c; } + .dm-blog-search-input:focus { + outline: none; border-color: var(--dm-red); background: #fff; + box-shadow: 0 0 0 3px rgba(192,18,39,0.11); + } + .dm-blog-search-icon { + position: absolute; right: 14px; top: 50%; transform: translateY(-50%); + color: #94a3b8; pointer-events: none; display: flex; + } + .dm-blog-search-results { + position: absolute; z-index: 20; top: calc(100% + 8px); left: 0; right: 0; + background: #fff; border: 1px solid rgba(15,23,42,0.10); border-radius: 14px; + box-shadow: 0 18px 42px rgba(15,23,42,0.14); overflow: hidden; + } + .dm-blog-search-results ul { list-style: none; margin: 0; padding: 6px; } + .dm-blog-search-result { + display: flex; flex-direction: column; gap: 3px; padding: 10px 12px; + border-radius: 10px; text-decoration: none; transition: background .15s ease; + } + .dm-blog-search-result:hover { background: #f8fafc; } + .dm-blog-search-result-cat { + font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .8px; color: var(--dm-red); + } + .dm-blog-search-result-title { font-size: 13.5px; font-weight: 600; color: #1e293b; line-height: 1.35; } + .dm-blog-search-empty { margin: 0; padding: 14px 12px; font-size: 13px; color: #64748b; } + + /* Recent posts */ + .dm-blog-recent { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 15px; } + .dm-blog-recent-item { display: flex; gap: 13px; align-items: center; text-decoration: none; } + .dm-blog-recent-thumb { + position: relative; flex: 0 0 62px; width: 62px; height: 62px; + border-radius: 13px; overflow: hidden; background: #f1f5f9; + } + .dm-blog-recent-meta { display: flex; flex-direction: column; gap: 4px; min-width: 0; } + .dm-blog-recent-title { + font-size: 13.5px; font-weight: 700; color: #1e293b; line-height: 1.35; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-blog-recent-item:hover .dm-blog-recent-title { color: var(--dm-red); } + .dm-blog-recent-date { font-size: 11.5px; font-weight: 600; color: #94a3b8; } + + /* Categories */ + .dm-blog-categories { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; } + .dm-blog-category-item { + display: flex; align-items: center; justify-content: space-between; gap: 10px; + padding: 11px 2px; text-decoration: none; font-size: 14px; font-weight: 600; color: #334155 !important; + border-bottom: 1px solid rgba(15,23,42,0.06); transition: color .2s ease, padding-left .2s ease; + } + .dm-blog-categories li:last-child .dm-blog-category-item { border-bottom: none; } + .dm-blog-category-item:hover { color: var(--dm-red); padding-left: 6px; } + .dm-blog-category-item > span:first-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } + .dm-blog-category-count { + flex: 0 0 auto; font-size: 11px; font-weight: 800; color: #94a3b8; background: #f1f5f9; + min-width: 24px; height: 22px; border-radius: 7px; display: inline-flex; + align-items: center; justify-content: center; padding: 0 7px; + } + + /* CTA card */ + .dm-blog-cta-card { background: #1f1f1f; border-color: #1f1f1f; } + .dm-blog-cta-title { font-size: 18px !important; font-weight: 800 !important; color: #fff !important; line-height: 1.32 !important; margin: 0 0 10px; letter-spacing: -.2px !important; } + .dm-blog-cta-text { font-size: 13.5px; line-height: 1.6; color: #c7c7c7; margin: 0 0 20px; font-weight: 450; } + .dm-blog-cta-btn { + display: inline-flex; align-items: center; gap: 8px; + background: var(--dm-red); color: #fff !important; font-size: 13.5px; font-weight: 700; + padding: 12px 22px; border-radius: 12px; text-decoration: none; + transition: background .2s ease, transform .2s ease; + } + .dm-blog-cta-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } +0:{"rsc":["$","$1","c",{"children":[["$","div",null,{"className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"Article\",\"headline\":\"The EV Paradox: Solving Range Anxiety for Urban Fleets\",\"description\":\"Electric vehicles lower running costs, but battery range changes how routes must be planned before dispatch.\",\"image\":[\"https://www.doormile.com/images/ev-paradox.webp\"],\"datePublished\":\"2025-08-21T00:00:00.000Z\",\"dateModified\":\"2025-08-21T00:00:00.000Z\",\"author\":{\"@type\":\"Organization\",\"name\":\"Doormile Team\",\"url\":\"https://www.doormile.com\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Doormile\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://www.doormile.com/images/cropped-image-2.png\"}},\"mainEntityOfPage\":{\"@type\":\"WebPage\",\"@id\":\"https://www.doormile.com/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets\"},\"articleSection\":\"EV Fleet\"}"}}],["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https://www.doormile.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https://www.doormile.com/blog\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"The EV Paradox: Solving Range Anxiety for Urban Fleets\",\"item\":\"https://www.doormile.com/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets\"}]}"}}],["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":[["$","article",null,{"className":"dm-single-blog","children":[["$","link",null,{"rel":"preload","as":"image","href":"/images/ev-paradox.webp"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$2"}}],"$L3","$L4"]}],"$L5"]}]}]]}],["$L6"],"$L7"]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} +3:["$","div",null,{"className":"custom-standard-hero-container","children":["$","div",null,{"className":"custom-standard-hero-card dm-banner-card","style":{"backgroundImage":"url(/images/ev-paradox.webp)","--hero-overlay":"linear-gradient(180deg, rgba(0,0,0,0.38) 0%, rgba(0,0,0,0.46) 55%, rgba(0,0,0,0.60) 100%)"},"children":["$","div",null,{"className":"e-con-inner dm-banner-inner","children":[["$","span",null,{"className":"dm-banner-category","children":"EV Fleet"}],["$","h1",null,{"className":"dm-banner-title","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}]]}]}]}] +4:["$","div",null,{"className":"dm-blog-wrap","children":[["$","div",null,{"className":"dm-meta-bar","children":[["$","nav",null,{"className":"dm-meta-breadcrumb","aria-label":"Breadcrumb","children":["$","ol",null,{"children":[["$","li",null,{"children":["$","$L8",null,{"href":"/","children":"Home"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"children":["$","$L8",null,{"href":"/blog","children":"Blog"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"aria-current":"page","className":"dm-meta-current","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}]]}]}],["$","div",null,{"className":"dm-meta-items","children":[["$","span",null,{"className":"dm-meta-item dm-meta-author","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","path",null,{"d":"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"}],["$","circle",null,{"cx":"12","cy":"7","r":"4"}]]}],"Doormile Team"]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","rect",null,{"x":"3","y":"4","width":"18","height":"18","rx":"2"}],["$","line",null,{"x1":"16","y1":"2","x2":"16","y2":"6"}],["$","line",null,{"x1":"8","y1":"2","x2":"8","y2":"6"}],["$","line",null,{"x1":"3","y1":"10","x2":"21","y2":"10"}]]}],["$","time",null,{"dateTime":"2025-08-21","children":"Aug 21, 2025"}]]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","circle",null,{"cx":"12","cy":"12","r":"9"}],["$","polyline",null,{"points":"12 7 12 12 15 14"}]]}],2," min read"]}]]}]]}],["$","div",null,{"className":"dm-blog-layout","children":[["$","div",null,{"className":"dm-blog-main","children":[["$","p",null,{"className":"dm-blog-intro","children":"Electric fleets can lower running costs, but range becomes a daily planning constraint. The route has to match the battery, the load, the traffic, and the return plan."}],["$","div",null,{"className":"dm-article-body","children":[["$","$L9","0",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"In last-mile logistics, a missed SLA is rarely caused by one big failure. It usually comes from small delays adding up across a route. The EV Paradox: Solving Range Anxiety for Urban Fleets looks at how delivery teams can spot those delays early and plan around them before vehicles leave the hub."}]}],["$","$L9","1",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"Why this matters for fleet teams"}]}],["$","$L9","2",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"Every extra kilometre costs money. It uses fuel or charge, adds rider time, wears down vehicles, and increases the chance of a late delivery. When routes are built from fixed zones or old habits, those costs repeat every day."}]}],["$","$L9","3",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ul",null,{"className":"dm-article-ul","children":[["$","li","0",{"children":"Fewer vehicles needed for the same number of drops"}],["$","li","1",{"children":"Lower cost per drop through better stop sequencing"}],["$","li","2",{"children":"ETAs that match traffic, distance, and delivery windows"}],["$","li","3",{"children":"Less fuel or charge used per completed order"}]]}]}],["$","$L9","4",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h3",null,{"className":"dm-article-h3","children":"From orders to dispatch"}]}],["$","$L9","5",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"A good dispatch plan starts with the basics: order locations, promised delivery windows, rider capacity, vehicle range, and known traffic trouble spots. MileTruth™ checks those inputs before dispatch so the team is not fixing avoidable mistakes on the road."}]}],["$","$L9","6",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","figure",null,{"className":"dm-article-figure","children":["$La","$Lb"]}]}],"$Lc","$Ld","$Le","$Lf","$L10"]}]]}],"$L11"]}]]}] +12:T2021, + .dm-blog-footer { + font-family: var(--font-manrope), sans-serif; --dm-red: #c01227; --dm-red-hover: #e31d32; + /* The global theme applies 72px top/bottom section padding — strip it so the + inner container is the single source of vertical rhythm (no double gap). */ + padding: 0 !important; + } + /* Neutralize the global theme's 120/80/60px UPPERCASE heading rules */ + .dm-blog-footer :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline) */ + .dm-blog-footer a { text-decoration: none !important; } + /* Shared content container — mirrors SingleBlog's .dm-blog-wrap (same 1280px + max-width + 20→40px horizontal padding) so Prev/Next, Related and the CTA + align to the exact same left/right edges as the article body above. + Vertical rhythm: ~64px from the article end to the Prev/Next divider, then a + consistent ~64–72px section→section gap (no 120px+ voids). */ + .dm-blog-footer-inner { + max-width: 1280px; margin: 0 auto; + /* Compact vertical rhythm on an 8px system. Top padding sets the + article→Prev/Next gap (~24–32px); the inter-section gap sets the + Prev/Next→Related gap (~32–48px). No large arbitrary voids. */ + /* Minimal bottom padding — the global site footer already contributes its + own 20px top inset, so the CTA banner sits close to it without a void. */ + padding: clamp(24px, 3vw, 32px) clamp(20px, 4vw, 40px) clamp(8px, 1.5vw, 16px); + display: flex; flex-direction: column; gap: clamp(32px, 4vw, 48px); + } + @media (max-width: 767px) { + .dm-blog-footer-inner { + padding-left: 16px; + padding-right: 16px; + } + } + + /* Prev / Next */ + .dm-prevnext { + display: grid; grid-template-columns: 1fr 1fr; gap: 20px; + /* Halved from 40px: tight divider→cards spacing without crowding. */ + padding-top: clamp(16px, 2vw, 24px); border-top: 1px solid rgba(15,23,42,0.08); + } + @media (max-width: 640px) { .dm-prevnext { grid-template-columns: 1fr; } } + .dm-prevnext-placeholder { display: block; } + .dm-prevnext-card { + display: flex; gap: 16px; align-items: center; padding: 16px; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + text-decoration: none; transition: transform .3s ease, box-shadow .3s ease, border-color .3s ease; + } + .dm-prevnext-card:hover { + transform: translateY(-4px); border-color: rgba(192,18,39,0.2); + box-shadow: 0 16px 34px rgba(192,18,39,0.10); + } + .dm-prevnext-thumb { + position: relative; flex: 0 0 80px; width: 80px; height: 80px; + border-radius: 16px; overflow: hidden; background: #f1f5f9; + } + .dm-prevnext-text { display: flex; flex-direction: column; gap: 5px; min-width: 0; } + .dm-prevnext-next { text-align: right; } + .dm-prevnext-next .dm-prevnext-text { align-items: flex-end; } + .dm-prevnext-label { + display: inline-flex; align-items: center; gap: 6px; + font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: 1px; color: var(--dm-red); + } + .dm-prevnext-cat { font-size: 11px; font-weight: 700; color: #94a3b8; text-transform: uppercase; letter-spacing: .5px; } + .dm-prevnext-title { + font-size: 15.5px; font-weight: 700; color: #1e293b; line-height: 1.4; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-prevnext-card:hover .dm-prevnext-title { color: var(--dm-red); } + + /* Related */ + .dm-related-heading { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 850 !important; letter-spacing: -.4px !important; + line-height: 1.25 !important; color: #0f172a !important; margin: 0 0 24px; + } + .dm-related-grid { + display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; + } + @media (max-width: 1024px) { .dm-related-grid { grid-template-columns: repeat(2, 1fr); } } + @media (max-width: 700px) { .dm-related-grid { grid-template-columns: 1fr; gap: 24px; } } + + .dm-related-card { + display: flex; flex-direction: column; height: 100%; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + overflow: hidden; box-shadow: 0 4px 24px rgba(15,23,42,0.05); text-decoration: none; + transition: transform .4s cubic-bezier(0.2,0.8,0.2,1), box-shadow .4s ease, border-color .4s ease; + } + .dm-related-card:hover { + transform: translateY(-8px); box-shadow: 0 22px 44px rgba(192,18,39,0.13); + border-color: rgba(192,18,39,0.2); + } + .dm-related-img { + position: relative; width: 100%; aspect-ratio: 16 / 10; overflow: hidden; background: #f1f5f9; + } + .dm-related-img img { transition: transform .5s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-img img { transform: scale(1.05); } + .dm-related-badge { + position: absolute; top: 14px; left: 14px; z-index: 5; background: var(--dm-red); color: #fff; + font-size: 9px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.2px; + padding: 5px 11px; border-radius: 8px; box-shadow: 0 4px 12px rgba(192,18,39,0.25); + } + .dm-related-body { display: flex; flex-direction: column; flex: 1; padding: 22px; } + .dm-related-card-title { + font-size: 17px !important; font-weight: 800 !important; color: #1e293b !important; line-height: 1.4 !important; + letter-spacing: -.2px !important; margin: 0 0 10px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-related-card:hover .dm-related-card-title { color: var(--dm-red); } + .dm-related-card-excerpt { + font-size: 13.5px; font-weight: 500; color: #64748b; line-height: 1.6; margin: 0 0 18px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + } + .dm-related-readmore { + margin-top: auto; display: inline-flex; align-items: center; gap: 7px; + font-size: 12.5px; font-weight: 800; color: var(--dm-red); + text-transform: uppercase; letter-spacing: .6px; + } + .dm-related-readmore-arrow { transition: transform .3s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-readmore-arrow { transform: translateX(5px); } + + /* Contact CTA banner */ + .dm-blog-contact-cta { + display: flex; align-items: center; justify-content: space-between; gap: 32px; + flex-wrap: wrap; + background: linear-gradient(135deg, #1a1a1a 0%, #2d1417 100%); + border-radius: 30px; padding: clamp(32px, 4vw, 56px); + position: relative; overflow: hidden; + } + .dm-blog-contact-cta::after { + content: ""; position: absolute; right: -80px; top: -80px; width: 300px; height: 300px; + background: radial-gradient(circle, rgba(192,18,39,0.40), transparent 70%); + pointer-events: none; + } + .dm-blog-contact-cta-content { position: relative; z-index: 1; max-width: 640px; } + .dm-blog-contact-eyebrow { + display: inline-block; font-size: 12px; font-weight: 800; text-transform: uppercase; + letter-spacing: 1.4px; color: #ff8088; margin-bottom: 14px; + } + .dm-blog-contact-title { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 800 !important; line-height: 1.25 !important; + letter-spacing: -.3px !important; color: #ffffff !important; margin: 0 0 12px; text-wrap: balance; + } + .dm-blog-contact-sub { + font-size: 15.5px; line-height: 1.65; color: #e2e2e2; margin: 0; font-weight: 450; + } + .dm-blog-contact-btn { + position: relative; z-index: 1; flex-shrink: 0; + display: inline-flex; align-items: center; justify-content: center; gap: 10px; + background: var(--dm-red); color: #fff !important; font-size: 15px; font-weight: 700; + padding: 16px 32px; border-radius: 16px; text-decoration: none; + box-shadow: 0 10px 26px rgba(192,18,39,0.34); + transition: background .2s ease, transform .2s ease; + } + .dm-blog-contact-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } + @media (max-width: 720px) { + .dm-blog-contact-cta { flex-direction: column; align-items: flex-start; gap: 26px; } + .dm-blog-contact-btn { width: 100%; } + } +5:["$","section",null,{"className":"dm-blog-footer","aria-label":"More articles","children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$12"}}],"$L13"]}] +6:["$","script","script-0",{"src":"/_next/static/chunks/0yvxf3ok9gcp_.js","async":true}] +7:["$","$L14",null,{"children":["$","$15",null,{"name":"Next.MetadataOutlet","children":"$@16"}]}] +a:["$","span",null,{"className":"dm-article-figure-img","children":["$","$L17",null,{"src":"/images/ev-paradox.webp","alt":"The EV Paradox: Solving Range Anxiety for Urban Fleets","fill":true,"sizes":"(max-width: 768px) 100vw, 760px","style":{"objectFit":"cover"}}]}] +b:["$","figcaption",null,{"children":"EV Fleet: route planning decisions made before dispatch."}] +c:["$","$L9","7",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","blockquote",null,{"className":"dm-article-quote","children":[["$","p",null,{"children":"A route should be checked before the rider leaves, not explained after the customer calls."}],["$","cite",null,{"children":"Doormile Operations"}]]}]}] +d:["$","$L9","8",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"Putting it into practice"}]}] +e:["$","$L9","9",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"The best improvements usually start with simple measurements. Track distance per route, failed delivery windows, rider idle time, and orders moved between vehicles after dispatch. Those numbers show where the operation is leaking time."}]}] +f:["$","$L9","10",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ol",null,{"className":"dm-article-ol","children":[["$","li","0",{"children":"Benchmark today's distance, fleet size, and on-time rate."}],["$","li","1",{"children":"Include vehicle capacity, delivery windows, rider shifts, and battery charge."}],["$","li","2",{"children":"Check routes against traffic and customer commitments before dispatch."}],["$","li","3",{"children":"Compare the next dispatch cycle against the old plan."}]]}]}] +10:["$","$L9","11",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"Better routing is not about pushing riders harder. It is about giving them a plan that already accounts for the real day ahead."}]}] +11:["$","div",null,{"className":"dm-blog-aside-wrap","children":["$","aside",null,{"className":"dm-blog-sidebar","aria-label":"Blog sidebar","children":[["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Search"}],["$","$L18",null,{}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Recent Posts"}],["$","ul",null,{"className":"dm-blog-recent","children":[["$","li","how-ai-is-transforming-last-mile-ev-delivery",{"children":["$","$L8",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L17",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"How Better Planning Improves Last-Mile EV Delivery"}],["$","time",null,{"dateTime":"2025-10-02","className":"dm-blog-recent-date","children":"Oct 2, 2025"}]]}]]}]}],["$","li","42-less-distance-insights-from-our-hyderabad-hub",{"children":["$","$L8",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L17",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}],["$","time",null,{"dateTime":"2025-09-18","className":"dm-blog-recent-date","children":"Sep 18, 2025"}]]}]]}]}],["$","li","miletruth-ai-10-stages-to-smarter-dispatch",{"children":["$","$L8",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L17",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","time",null,{"dateTime":"2025-09-05","className":"dm-blog-recent-date","children":"Sep 5, 2025"}]]}]]}]}],["$","li","why-mathematical-precision-beats-heuristics-in-routing",{"children":["$","$L8",null,{"href":"/blog/why-mathematical-precision-beats-heuristics-in-routing","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L17",null,{"src":"/images/blog-post-pic-14.webp","alt":"Why Mathematical Precision Beats Heuristics in Routing","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"Why Mathematical Precision Beats Heuristics in Routing"}],["$","time",null,{"dateTime":"2025-08-07","className":"dm-blog-recent-date","children":"Aug 7, 2025"}]]}]]}]}]]}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Categories"}],["$","ul",null,{"className":"dm-blog-categories","children":[["$","li","Case Study",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Case Study"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","EV Fleet",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"EV Fleet"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}],["$","li","Fleet Management",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Fleet Management"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","MileTruth",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"MileTruth"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],"$L19","$L1a","$L1b"]}]]}],"$L1c"]}]}] +13:["$","div",null,{"className":"dm-blog-footer-inner","children":[["$","nav",null,{"className":"dm-prevnext","aria-label":"Article navigation","children":[["$","$L8",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-prevnext-card dm-prevnext-prev","children":[["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L17",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"sizes":"80px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-prevnext-text","children":[["$","span",null,{"className":"dm-prevnext-label","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"19","y1":"12","x2":"5","y2":"12"}],["$","polyline",null,{"points":"12 19 5 12 12 5"}]]}],"Previous"]}],["$","span",null,{"className":"dm-prevnext-cat","children":"MileTruth"}],["$","span",null,{"className":"dm-prevnext-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}]]}]]}],["$","$L8",null,{"href":"/blog/why-mathematical-precision-beats-heuristics-in-routing","className":"dm-prevnext-card dm-prevnext-next","children":[["$","span",null,{"className":"dm-prevnext-text","children":[["$","span",null,{"className":"dm-prevnext-label","children":["Next",["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","span",null,{"className":"dm-prevnext-cat","children":"Technology"}],["$","span",null,{"className":"dm-prevnext-title","children":"Why Mathematical Precision Beats Heuristics in Routing"}]]}],["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L17",null,{"src":"/images/blog-post-pic-14.webp","alt":"Why Mathematical Precision Beats Heuristics in Routing","fill":true,"sizes":"80px","style":{"objectFit":"cover"}}]}]]}]]}],["$","div",null,{"className":"dm-related","children":[["$","h2",null,{"className":"dm-related-heading","children":"Related Articles"}],["$","div",null,{"className":"dm-related-grid","children":[["$","$L9","battery-simulation-the-secret-to-ev-route-pre-validation",{"delay":0,"duration":0.7,"yOffset":30,"children":["$","$L8",null,{"href":"/blog/battery-simulation-the-secret-to-ev-route-pre-validation","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L17",null,{"src":"/images/blog-post-pic-3.webp","alt":"Battery Simulation: The Secret to EV Route Pre-Validation","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"EV Fleet"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"Battery Simulation: The Secret to EV Route Pre-Validation"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"Before a rider leaves the hub, every EV route should be checked against real charge capacity and the expected return plan."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}],["$","$L9","how-ai-is-transforming-last-mile-ev-delivery",{"delay":0.08,"duration":0.7,"yOffset":30,"children":["$","$L8",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L17",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Technology"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"How Better Planning Improves Last-Mile EV Delivery"}],"$L1d","$L1e"]}]]}]}],"$L1f"]}]]}],"$L20"]}] +16:null +19:["$","li","Operations",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Operations"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +1a:["$","li","Sustainability",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Sustainability"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +1b:["$","li","Technology",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Technology"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}] +1c:["$","section",null,{"className":"dm-blog-widget dm-blog-cta-card","children":[["$","h2",null,{"className":"dm-blog-cta-title","children":"Planning delivery routes?"}],["$","p",null,{"className":"dm-blog-cta-text","children":"Talk to us about reducing wasted distance, missed windows, and avoidable vehicle time."}],["$","$L8",null,{"href":"/contact","className":"dm-blog-cta-btn","children":["Contact Us",["$","svg",null,{"width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] +1d:["$","p",null,{"className":"dm-related-card-excerpt","children":"A practical look at how EV fleets can plan routes, manage charging, and keep delivery promises without adding unnecessary vehicles."}] +1e:["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}] +1f:["$","$L9","42-less-distance-insights-from-our-hyderabad-hub",{"delay":0.16,"duration":0.7,"yOffset":30,"children":["$","$L8",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L17",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Case Study"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"A practical look at how one Hyderabad hub reduced distance, used fewer vehicles, and protected delivery windows with better route planning."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}] +20:["$","div",null,{"className":"dm-blog-contact-cta","children":[["$","div",null,{"className":"dm-blog-contact-cta-content","children":[["$","span",null,{"className":"dm-blog-contact-eyebrow","children":"Let's talk logistics"}],["$","h2",null,{"className":"dm-blog-contact-title","children":"Ready to move smarter with Doormile?"}],["$","p",null,{"className":"dm-blog-contact-sub","children":"Tell us about your fleet and routes — we'll show you where the distance, vehicles and emissions are hiding."}]]}],["$","$L8",null,{"href":"/contact","className":"dm-blog-contact-btn","children":["Get in Touch",["$","svg",null,{"width":"20","height":"20","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] diff --git a/build/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets/__next.blog.$d$slug.txt b/build/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets/__next.blog.$d$slug.txt new file mode 100644 index 0000000..e0935ae --- /dev/null +++ b/build/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets/__next.blog.$d$slug.txt @@ -0,0 +1,5 @@ +1:"$Sreact.fragment" +2:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:[] +0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets/__next.blog.txt b/build/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets/__next.blog.txt new file mode 100644 index 0000000..e0935ae --- /dev/null +++ b/build/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets/__next.blog.txt @@ -0,0 +1,5 @@ +1:"$Sreact.fragment" +2:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:[] +0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/blog/why-mathematical-precision-beats-heuristics-in-routing.html b/build/blog/why-mathematical-precision-beats-heuristics-in-routing.html new file mode 100644 index 0000000..7ea3c0a --- /dev/null +++ b/build/blog/why-mathematical-precision-beats-heuristics-in-routing.html @@ -0,0 +1,1168 @@ +Why Mathematical Precision Beats Heuristics in Routing – Doormile

    Doormile

    Doormile logo
    Address
    Hyderabad

    5th Floor, Vision Ultima,
    Street No.3, Jayabheri Enclave,
    Gachibowli, Hyderabad,
    Telangana 500032.

    Coimbatore

    Mayflower Valencia,
    Near Nava India Bus Stop,
    Avinashi Road,
    Udayampalayam,
    Tamil Nadu 641037.

    Bengaluru

    C612, 6th Floor,
    Trifecta Starlight,
    ITPL Road,
    Garudacharapalya,
    Mahadevapura,
    Bangalore 560048,
    Karnataka, India.

    Contact Us

    Tel : +91 86886 97941

    Email

    care@doormile.com

    Technology

    Why Mathematical Precision Beats Heuristics in Routing

    Doormile Team2 min read

    Simple routing rules are fast to set up, but they can quietly add distance every day. Better planning compares more route options before dispatch.

    In last-mile logistics, a missed SLA is rarely caused by one big failure. It usually comes from small delays adding up across a route. Why Mathematical Precision Beats Heuristics in Routing looks at how delivery teams can spot those delays early and plan around them before vehicles leave the hub.

    Why this matters for fleet teams

    Every extra kilometre costs money. It uses fuel or charge, adds rider time, wears down vehicles, and increases the chance of a late delivery. When routes are built from fixed zones or old habits, those costs repeat every day.

    • Fewer vehicles needed for the same number of drops
    • Lower cost per drop through better stop sequencing
    • ETAs that match traffic, distance, and delivery windows
    • Less fuel or charge used per completed order

    From orders to dispatch

    A good dispatch plan starts with the basics: order locations, promised delivery windows, rider capacity, vehicle range, and known traffic trouble spots. MileTruth™ checks those inputs before dispatch so the team is not fixing avoidable mistakes on the road.

    Why Mathematical Precision Beats Heuristics in Routing
    Technology: route planning decisions made before dispatch.

    A route should be checked before the rider leaves, not explained after the customer calls.

    Doormile Operations

    Putting it into practice

    The best improvements usually start with simple measurements. Track distance per route, failed delivery windows, rider idle time, and orders moved between vehicles after dispatch. Those numbers show where the operation is leaking time.

    1. Benchmark today's distance, fleet size, and on-time rate.
    2. Include vehicle capacity, delivery windows, rider shifts, and battery charge.
    3. Check routes against traffic and customer commitments before dispatch.
    4. Compare the next dispatch cycle against the old plan.

    Better routing is not about pushing riders harder. It is about giving them a plan that already accounts for the real day ahead.

    \ No newline at end of file diff --git a/build/blog/why-mathematical-precision-beats-heuristics-in-routing.txt b/build/blog/why-mathematical-precision-beats-heuristics-in-routing.txt new file mode 100644 index 0000000..0c30390 --- /dev/null +++ b/build/blog/why-mathematical-precision-beats-heuristics-in-routing.txt @@ -0,0 +1,545 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +d:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +e:"$Sreact.suspense" +11:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +13:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +15:I[68027,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"P":null,"c":["","blog","why-mathematical-precision-beats-heuristics-in-routing"],"q":"","i":false,"f":[[["",{"children":["blog",{"children":[["slug","why-mathematical-precision-beats-heuristics-in-routing","d",null],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":["$Lc",[["$","script","script-0",{"src":"/_next/static/chunks/0yvxf3ok9gcp_.js","async":true,"nonce":"$undefined"}]],["$","$Ld",null,{"children":["$","$e",null,{"name":"Next.MetadataOutlet","children":"$@f"}]}]]}],{},null,false,null]},null,false,"$@10"]},null,false,"$@10"]},null,false,null],["$","$1","h",{"children":[null,["$","$L11",null,{"children":"$L12"}],["$","div",null,{"hidden":true,"children":["$","$L13",null,{"children":["$","$e",null,{"name":"Next.Metadata","children":"$L14"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$15",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"kmSVPuUqY3Rhw5xy4D2nn"} +16:[] +10:"$W16" +:HL["/images/blog-post-pic-14.webp","image"] +17:T3d6f, + .dm-single-blog { + --dm-red: #c01227; + --dm-red-hover: #e31d32; + --dm-radius-card: 22px; + --dm-radius-img: 20px; + --dm-radius-badge: 8px; + --dm-shadow-card: 0 4px 24px rgba(15, 23, 42, 0.05); + --dm-border: 1px solid rgba(15, 23, 42, 0.09); + --dm-space-p: 24px; + --dm-space-h: 32px; + --dm-space-img: 32px; + --dm-space-quote: 40px; + --dm-sticky-top: 138px; + --dm-measure: min(1100px, 100%); + font-family: var(--font-manrope), sans-serif; + } + + /* Heading normalization. Beat the global theme's .elementor-kit-5 h1-h6 + (120/80/60px UPPERCASE) rules with !important on our own classes. */ + .dm-single-blog :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline, + specificity 0-1-1) so blog links keep our colors and never get underlined. */ + .dm-single-blog a { text-decoration: none !important; } + + /* Page banner: tall homepage-scale frame with only badge + title inside */ + /* Compound selector (specificity 20) + !important beats the global 800px + single-class height rules so the blog banner can use viewport heights. */ + .custom-standard-hero-card.dm-banner-card { + height: 90vh !important; + min-height: 85vh !important; + } + @media (max-width: 1024px) { + .custom-standard-hero-card.dm-banner-card { height: 80vh !important; min-height: 75vh !important; } + } + @media (max-width: 600px) { + .custom-standard-hero-card.dm-banner-card { height: 78vh !important; min-height: 72vh !important; } + } + + .dm-banner-inner { + position: relative; width: 100%; height: 100%; + display: flex; flex-direction: column; align-items: center; justify-content: center; + text-align: center; gap: clamp(22px, 2.6vw, 34px); + padding: clamp(48px, 8vh, 96px) clamp(20px, 5vw, 48px); + } + + .dm-banner-category { + display: inline-block; background: var(--dm-red); color: #fff; + font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.6px; + padding: 9px 18px; border-radius: 999px; box-shadow: 0 8px 22px rgba(192,18,39,0.45); + } + .dm-banner-title { + font-family: var(--font-manrope), sans-serif !important; + font-size: clamp(34px, 5vw, 60px) !important; font-weight: 850 !important; + line-height: 1.16 !important; letter-spacing: -1.2px !important; + color: #ffffff !important; margin: 0; max-width: 820px; + text-wrap: balance; text-shadow: 0 2px 30px rgba(0,0,0,0.38); + } + @media (max-width: 1024px) { .dm-banner-title { font-size: clamp(32px, 6vw, 48px) !important; max-width: 90%; } } + @media (max-width: 600px) { .dm-banner-title { font-size: clamp(28px, 8vw, 38px) !important; max-width: 90%; } } + + /* Content wrap begins immediately below the banner */ + /* Shared content container: the SAME max-width + horizontal padding is used + by BlogPostFooter (.dm-blog-footer-inner) so the article body, headings, + images, Prev/Next, Related Articles and the CTA banner all align to one + grid with identical left/right edges. Keep both in sync. */ + .dm-blog-wrap { + max-width: 1280px; margin: 0 auto; + /* 20px mobile padding floor → 40px on desktop; matches the footer container. */ + padding: clamp(14px, 2vw, 26px) clamp(20px, 4vw, 40px) 0; + } + @media (max-width: 767px) { + .dm-blog-wrap { + padding-left: 16px; + padding-right: 16px; + } + } + + /* ── Article meta bar (directly under the hero) ── */ + .dm-meta-bar { + display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 14px 24px; + padding: clamp(20px, 2.6vw, 30px) 0; margin-bottom: clamp(26px, 3vw, 44px); + border-bottom: 1px solid rgba(15,23,42,0.10); + } + .dm-meta-breadcrumb ol { + list-style: none; display: flex; flex-wrap: wrap; align-items: center; + gap: 8px; margin: 0; padding: 0; font-size: 13px; font-weight: 600; color: #64748b; + } + .dm-meta-breadcrumb a { color: #64748b !important; text-decoration: none; transition: color .2s ease; } + .dm-meta-breadcrumb a:hover { color: var(--dm-red) !important; } + .dm-meta-sep { color: #cbd5e1; } + .dm-meta-current { + color: #0f172a; font-weight: 700; + max-width: min(40ch, 46vw); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; + } + @media (max-width: 600px) { .dm-meta-current { max-width: 56vw; } } + .dm-meta-items { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 20px; } + .dm-meta-item { + display: inline-flex; align-items: center; gap: 7px; + font-size: 13.5px; font-weight: 600; color: #475569; + } + .dm-meta-item svg { color: var(--dm-red); flex: 0 0 auto; } + .dm-meta-author { color: #0f172a; font-weight: 700; } + @media (max-width: 600px) { .dm-meta-bar { gap: 12px; } } + .dm-blog-layout { + display: grid; grid-template-columns: minmax(0,1fr) 320px; + /* Tighter gap gives the reading column more room next to the 320px sidebar. */ + gap: clamp(28px, 3vw, 56px); align-items: start; + } + @media (max-width: 1024px) { + .dm-blog-layout { grid-template-columns: 1fr; gap: 48px; } + /* Single-column (tablet/mobile): cap the reading column and centre it so the + article never sits left-aligned with a large empty right gutter. */ + .dm-blog-main { max-width: 900px; margin-inline: auto; } + } + .dm-blog-main { min-width: 0; } + + /* ── Intro lead ── */ + .dm-blog-intro { + max-width: var(--dm-measure); + font-size: clamp(18px, 1.5vw, 20px); line-height: 1.65; font-weight: 500; + color: #475569; margin: 0 0 clamp(26px, 3vw, 38px); padding-left: 20px; + border-left: 3px solid var(--dm-red); + } + + /* ── Article body ── */ + .dm-article-body { max-width: var(--dm-measure); } + .dm-article-p { + font-size: 18px !important; line-height: 1.8 !important; color: #334155; font-weight: 450; + margin: 0 0 var(--dm-space-p); + } + .dm-article-h2 { + font-size: clamp(23px, 2vw, 30px) !important; font-weight: 800 !important; letter-spacing: -.3px !important; + color: #0f172a !important; line-height: 1.3 !important; margin: 48px 0 var(--dm-space-h); + text-wrap: balance; + } + /* Each article block is wrapped in its OWN ScrollReveal
    , so a bare + :first-child rule matched every heading (each is the only child of its + wrapper) and zeroed its top margin, collapsing the gap above every + section heading. Scope the reset to only the article body's first block. */ + .dm-article-body > :first-child :where(.dm-article-h2, .dm-article-h3), + .dm-article-body > .dm-article-h2:first-child, + .dm-article-body > .dm-article-h3:first-child { margin-top: 0; } + .dm-article-h3 { + font-size: clamp(19px, 1.5vw, 23px) !important; font-weight: 800 !important; letter-spacing: -.2px !important; + color: #1e293b !important; line-height: 1.34 !important; margin: 40px 0 18px; + text-wrap: balance; + } + @media (max-width: 600px) { + .dm-article-p { font-size: 16px !important; } + .dm-article-ul li, .dm-article-ol li { font-size: 15.5px; } + .dm-article-h2 { font-size: clamp(22px, 6vw, 28px) !important; margin-top: 38px; } + .dm-article-h3 { font-size: clamp(18px, 5vw, 22px) !important; } + } + + .dm-article-ul, .dm-article-ol { + /* Top margin (was 0) separates the list from the paragraph above it; + matching bottom margin keeps it clear of the next heading/paragraph. + Slightly larger than --dm-space-p so the list reads as its own block. */ + margin: clamp(26px, 2.4vw, 32px) 0 clamp(26px, 2.4vw, 32px); + padding-left: 2px; list-style: none; + display: flex; flex-direction: column; gap: 15px; + } + /* Prefixed with .dm-article-body so these beat the theme's global + ".logico-front-end ul li:before" fontello-glyph bullet (specificity 0,1,3), + which otherwise replaces our clean red dot with a misaligned checkmark glyph + and adds its own 1.7em indent. */ + .dm-article-body .dm-article-ul li, .dm-article-body .dm-article-ol li { + position: relative; padding-left: 34px; + font-size: 17px; line-height: 1.65; color: #334155; font-weight: 450; + } + .dm-article-body .dm-article-ul li::before { + content: ""; position: absolute; left: 7px; top: 10px; + width: 8px; height: 8px; border-radius: 50%; background: var(--dm-red); + /* kill any inherited fontello glyph from the global rule */ + font-size: 0; line-height: 0; + } + .dm-article-ol { counter-reset: dm-li; } + .dm-article-body .dm-article-ol li { counter-increment: dm-li; } + .dm-article-body .dm-article-ol li::before { + content: counter(dm-li); position: absolute; left: 0; top: 0; + width: 24px; height: 24px; border-radius: 7px; + background: rgba(192,18,39,0.10); color: var(--dm-red); + font-size: 12px; font-weight: 800; display: flex; align-items: center; justify-content: center; + } + + /* ── Quote ── */ + .dm-article-quote { + position: relative; margin: var(--dm-space-quote) 0; padding: 30px 32px 30px 64px; + background: linear-gradient(135deg, #fbf2f3 0%, #fdf7f8 100%); + border-left: 4px solid var(--dm-red); border-radius: 0 18px 18px 0; + box-shadow: 0 8px 28px rgba(192, 18, 39, 0.06); + } + .dm-article-quote::before { + content: "\201C"; position: absolute; left: 22px; top: 8px; + font-family: Georgia, "Times New Roman", serif; + font-size: 64px; line-height: 1; color: rgba(192, 18, 39, 0.28); font-weight: 700; + } + .dm-article-quote p { + font-size: clamp(19px, 2vw, 23px); line-height: 1.5; font-weight: 600; + font-style: italic; color: #1e293b; margin: 0; + } + .dm-article-quote cite { + display: block; margin-top: 16px; font-size: 13px; font-weight: 700; + font-style: normal; color: var(--dm-red); text-transform: uppercase; letter-spacing: .6px; + } + @media (max-width: 600px) { .dm-article-quote { padding: 26px 22px; } .dm-article-quote::before { display: none; } } + + /* ── Images ── */ + .dm-article-figure { margin: var(--dm-space-img) 0; } + .dm-article-figure-img { + position: relative; display: block; width: 100%; aspect-ratio: 16 / 9; + border-radius: var(--dm-radius-img); overflow: hidden; box-shadow: 0 14px 34px rgba(15,23,42,0.10); + } + .dm-article-figure figcaption { + margin-top: 14px; font-size: 13.5px; color: #94a3b8; font-weight: 500; + text-align: center; font-style: italic; + } + + /* ── Sidebar ── */ + .dm-blog-aside-wrap { position: relative; } + .dm-blog-sidebar { + display: flex; flex-direction: column; gap: 18px; + position: sticky; top: var(--dm-sticky-top); + } + @media (max-width: 1024px) { .dm-blog-sidebar { position: static; gap: 20px; } } + + .dm-blog-widget { + background: #fff; border: var(--dm-border); border-radius: var(--dm-radius-card); + padding: 20px; box-shadow: var(--dm-shadow-card); + } + .dm-blog-widget-title { + font-size: 13px !important; font-weight: 700 !important; text-transform: uppercase !important; + letter-spacing: .8px !important; line-height: 1.35 !important; color: #0f172a !important; + margin: 0 0 15px; padding: 0 0 12px; + border-bottom: 1px solid rgba(15,23,42,0.08); + overflow: visible; white-space: normal; word-break: normal; + } + + /* Search */ + .dm-sr-only { + position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; + overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; + } + .dm-blog-search { position: relative; } + .dm-blog-search-form { position: relative; } + .dm-blog-search-input { + width: 100%; height: 46px; border: 1.5px solid #e2e8f0; border-radius: 12px; + padding: 0 42px 0 15px; font-size: 14px; font-family: inherit; color: #0f172a; + background: #f8fafc; transition: border-color .2s ease, box-shadow .2s ease, background .2s ease; + } + .dm-blog-search-input::placeholder { color: #9c9c9c; } + .dm-blog-search-input:focus { + outline: none; border-color: var(--dm-red); background: #fff; + box-shadow: 0 0 0 3px rgba(192,18,39,0.11); + } + .dm-blog-search-icon { + position: absolute; right: 14px; top: 50%; transform: translateY(-50%); + color: #94a3b8; pointer-events: none; display: flex; + } + .dm-blog-search-results { + position: absolute; z-index: 20; top: calc(100% + 8px); left: 0; right: 0; + background: #fff; border: 1px solid rgba(15,23,42,0.10); border-radius: 14px; + box-shadow: 0 18px 42px rgba(15,23,42,0.14); overflow: hidden; + } + .dm-blog-search-results ul { list-style: none; margin: 0; padding: 6px; } + .dm-blog-search-result { + display: flex; flex-direction: column; gap: 3px; padding: 10px 12px; + border-radius: 10px; text-decoration: none; transition: background .15s ease; + } + .dm-blog-search-result:hover { background: #f8fafc; } + .dm-blog-search-result-cat { + font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .8px; color: var(--dm-red); + } + .dm-blog-search-result-title { font-size: 13.5px; font-weight: 600; color: #1e293b; line-height: 1.35; } + .dm-blog-search-empty { margin: 0; padding: 14px 12px; font-size: 13px; color: #64748b; } + + /* Recent posts */ + .dm-blog-recent { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 15px; } + .dm-blog-recent-item { display: flex; gap: 13px; align-items: center; text-decoration: none; } + .dm-blog-recent-thumb { + position: relative; flex: 0 0 62px; width: 62px; height: 62px; + border-radius: 13px; overflow: hidden; background: #f1f5f9; + } + .dm-blog-recent-meta { display: flex; flex-direction: column; gap: 4px; min-width: 0; } + .dm-blog-recent-title { + font-size: 13.5px; font-weight: 700; color: #1e293b; line-height: 1.35; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-blog-recent-item:hover .dm-blog-recent-title { color: var(--dm-red); } + .dm-blog-recent-date { font-size: 11.5px; font-weight: 600; color: #94a3b8; } + + /* Categories */ + .dm-blog-categories { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; } + .dm-blog-category-item { + display: flex; align-items: center; justify-content: space-between; gap: 10px; + padding: 11px 2px; text-decoration: none; font-size: 14px; font-weight: 600; color: #334155 !important; + border-bottom: 1px solid rgba(15,23,42,0.06); transition: color .2s ease, padding-left .2s ease; + } + .dm-blog-categories li:last-child .dm-blog-category-item { border-bottom: none; } + .dm-blog-category-item:hover { color: var(--dm-red); padding-left: 6px; } + .dm-blog-category-item > span:first-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } + .dm-blog-category-count { + flex: 0 0 auto; font-size: 11px; font-weight: 800; color: #94a3b8; background: #f1f5f9; + min-width: 24px; height: 22px; border-radius: 7px; display: inline-flex; + align-items: center; justify-content: center; padding: 0 7px; + } + + /* CTA card */ + .dm-blog-cta-card { background: #1f1f1f; border-color: #1f1f1f; } + .dm-blog-cta-title { font-size: 18px !important; font-weight: 800 !important; color: #fff !important; line-height: 1.32 !important; margin: 0 0 10px; letter-spacing: -.2px !important; } + .dm-blog-cta-text { font-size: 13.5px; line-height: 1.6; color: #c7c7c7; margin: 0 0 20px; font-weight: 450; } + .dm-blog-cta-btn { + display: inline-flex; align-items: center; gap: 8px; + background: var(--dm-red); color: #fff !important; font-size: 13.5px; font-weight: 700; + padding: 12px 22px; border-radius: 12px; text-decoration: none; + transition: background .2s ease, transform .2s ease; + } + .dm-blog-cta-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } +c:["$","div",null,{"className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"Article\",\"headline\":\"Why Mathematical Precision Beats Heuristics in Routing\",\"description\":\"Fixed routing rules are easy to start with, but they often miss better stop sequences as order volume grows.\",\"image\":[\"https://www.doormile.com/images/blog-post-pic-14.webp\"],\"datePublished\":\"2025-08-07T00:00:00.000Z\",\"dateModified\":\"2025-08-07T00:00:00.000Z\",\"author\":{\"@type\":\"Organization\",\"name\":\"Doormile Team\",\"url\":\"https://www.doormile.com\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Doormile\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://www.doormile.com/images/cropped-image-2.png\"}},\"mainEntityOfPage\":{\"@type\":\"WebPage\",\"@id\":\"https://www.doormile.com/blog/why-mathematical-precision-beats-heuristics-in-routing\"},\"articleSection\":\"Technology\"}"}}],["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https://www.doormile.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https://www.doormile.com/blog\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Why Mathematical Precision Beats Heuristics in Routing\",\"item\":\"https://www.doormile.com/blog/why-mathematical-precision-beats-heuristics-in-routing\"}]}"}}],["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":[["$","article",null,{"className":"dm-single-blog","children":[["$","link",null,{"rel":"preload","as":"image","href":"/images/blog-post-pic-14.webp"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$17"}}],"$L18","$L19"]}],"$L1a"]}]}]]}] +1b:I[22016,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],""] +1c:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"ScrollReveal"] +18:["$","div",null,{"className":"custom-standard-hero-container","children":["$","div",null,{"className":"custom-standard-hero-card dm-banner-card","style":{"backgroundImage":"url(/images/blog-post-pic-14.webp)","--hero-overlay":"linear-gradient(180deg, rgba(0,0,0,0.38) 0%, rgba(0,0,0,0.46) 55%, rgba(0,0,0,0.60) 100%)"},"children":["$","div",null,{"className":"e-con-inner dm-banner-inner","children":[["$","span",null,{"className":"dm-banner-category","children":"Technology"}],["$","h1",null,{"className":"dm-banner-title","children":"Why Mathematical Precision Beats Heuristics in Routing"}]]}]}]}] +19:["$","div",null,{"className":"dm-blog-wrap","children":[["$","div",null,{"className":"dm-meta-bar","children":[["$","nav",null,{"className":"dm-meta-breadcrumb","aria-label":"Breadcrumb","children":["$","ol",null,{"children":[["$","li",null,{"children":["$","$L1b",null,{"href":"/","children":"Home"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"children":["$","$L1b",null,{"href":"/blog","children":"Blog"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"aria-current":"page","className":"dm-meta-current","children":"Why Mathematical Precision Beats Heuristics in Routing"}]]}]}],["$","div",null,{"className":"dm-meta-items","children":[["$","span",null,{"className":"dm-meta-item dm-meta-author","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","path",null,{"d":"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"}],["$","circle",null,{"cx":"12","cy":"7","r":"4"}]]}],"Doormile Team"]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","rect",null,{"x":"3","y":"4","width":"18","height":"18","rx":"2"}],["$","line",null,{"x1":"16","y1":"2","x2":"16","y2":"6"}],["$","line",null,{"x1":"8","y1":"2","x2":"8","y2":"6"}],["$","line",null,{"x1":"3","y1":"10","x2":"21","y2":"10"}]]}],["$","time",null,{"dateTime":"2025-08-07","children":"Aug 7, 2025"}]]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","circle",null,{"cx":"12","cy":"12","r":"9"}],["$","polyline",null,{"points":"12 7 12 12 15 14"}]]}],2," min read"]}]]}]]}],["$","div",null,{"className":"dm-blog-layout","children":[["$","div",null,{"className":"dm-blog-main","children":[["$","p",null,{"className":"dm-blog-intro","children":"Simple routing rules are fast to set up, but they can quietly add distance every day. Better planning compares more route options before dispatch."}],["$","div",null,{"className":"dm-article-body","children":[["$","$L1c","0",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"In last-mile logistics, a missed SLA is rarely caused by one big failure. It usually comes from small delays adding up across a route. Why Mathematical Precision Beats Heuristics in Routing looks at how delivery teams can spot those delays early and plan around them before vehicles leave the hub."}]}],["$","$L1c","1",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"Why this matters for fleet teams"}]}],["$","$L1c","2",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"Every extra kilometre costs money. It uses fuel or charge, adds rider time, wears down vehicles, and increases the chance of a late delivery. When routes are built from fixed zones or old habits, those costs repeat every day."}]}],["$","$L1c","3",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ul",null,{"className":"dm-article-ul","children":[["$","li","0",{"children":"Fewer vehicles needed for the same number of drops"}],["$","li","1",{"children":"Lower cost per drop through better stop sequencing"}],["$","li","2",{"children":"ETAs that match traffic, distance, and delivery windows"}],["$","li","3",{"children":"Less fuel or charge used per completed order"}]]}]}],["$","$L1c","4",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h3",null,{"className":"dm-article-h3","children":"From orders to dispatch"}]}],["$","$L1c","5",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"A good dispatch plan starts with the basics: order locations, promised delivery windows, rider capacity, vehicle range, and known traffic trouble spots. MileTruth™ checks those inputs before dispatch so the team is not fixing avoidable mistakes on the road."}]}],["$","$L1c","6",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","figure",null,{"className":"dm-article-figure","children":[["$","span",null,{"className":"dm-article-figure-img","children":"$L1d"}],"$L1e"]}]}],"$L1f","$L20","$L21","$L22","$L23"]}]]}],"$L24"]}]]}] +25:T2021, + .dm-blog-footer { + font-family: var(--font-manrope), sans-serif; --dm-red: #c01227; --dm-red-hover: #e31d32; + /* The global theme applies 72px top/bottom section padding — strip it so the + inner container is the single source of vertical rhythm (no double gap). */ + padding: 0 !important; + } + /* Neutralize the global theme's 120/80/60px UPPERCASE heading rules */ + .dm-blog-footer :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline) */ + .dm-blog-footer a { text-decoration: none !important; } + /* Shared content container — mirrors SingleBlog's .dm-blog-wrap (same 1280px + max-width + 20→40px horizontal padding) so Prev/Next, Related and the CTA + align to the exact same left/right edges as the article body above. + Vertical rhythm: ~64px from the article end to the Prev/Next divider, then a + consistent ~64–72px section→section gap (no 120px+ voids). */ + .dm-blog-footer-inner { + max-width: 1280px; margin: 0 auto; + /* Compact vertical rhythm on an 8px system. Top padding sets the + article→Prev/Next gap (~24–32px); the inter-section gap sets the + Prev/Next→Related gap (~32–48px). No large arbitrary voids. */ + /* Minimal bottom padding — the global site footer already contributes its + own 20px top inset, so the CTA banner sits close to it without a void. */ + padding: clamp(24px, 3vw, 32px) clamp(20px, 4vw, 40px) clamp(8px, 1.5vw, 16px); + display: flex; flex-direction: column; gap: clamp(32px, 4vw, 48px); + } + @media (max-width: 767px) { + .dm-blog-footer-inner { + padding-left: 16px; + padding-right: 16px; + } + } + + /* Prev / Next */ + .dm-prevnext { + display: grid; grid-template-columns: 1fr 1fr; gap: 20px; + /* Halved from 40px: tight divider→cards spacing without crowding. */ + padding-top: clamp(16px, 2vw, 24px); border-top: 1px solid rgba(15,23,42,0.08); + } + @media (max-width: 640px) { .dm-prevnext { grid-template-columns: 1fr; } } + .dm-prevnext-placeholder { display: block; } + .dm-prevnext-card { + display: flex; gap: 16px; align-items: center; padding: 16px; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + text-decoration: none; transition: transform .3s ease, box-shadow .3s ease, border-color .3s ease; + } + .dm-prevnext-card:hover { + transform: translateY(-4px); border-color: rgba(192,18,39,0.2); + box-shadow: 0 16px 34px rgba(192,18,39,0.10); + } + .dm-prevnext-thumb { + position: relative; flex: 0 0 80px; width: 80px; height: 80px; + border-radius: 16px; overflow: hidden; background: #f1f5f9; + } + .dm-prevnext-text { display: flex; flex-direction: column; gap: 5px; min-width: 0; } + .dm-prevnext-next { text-align: right; } + .dm-prevnext-next .dm-prevnext-text { align-items: flex-end; } + .dm-prevnext-label { + display: inline-flex; align-items: center; gap: 6px; + font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: 1px; color: var(--dm-red); + } + .dm-prevnext-cat { font-size: 11px; font-weight: 700; color: #94a3b8; text-transform: uppercase; letter-spacing: .5px; } + .dm-prevnext-title { + font-size: 15.5px; font-weight: 700; color: #1e293b; line-height: 1.4; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-prevnext-card:hover .dm-prevnext-title { color: var(--dm-red); } + + /* Related */ + .dm-related-heading { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 850 !important; letter-spacing: -.4px !important; + line-height: 1.25 !important; color: #0f172a !important; margin: 0 0 24px; + } + .dm-related-grid { + display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; + } + @media (max-width: 1024px) { .dm-related-grid { grid-template-columns: repeat(2, 1fr); } } + @media (max-width: 700px) { .dm-related-grid { grid-template-columns: 1fr; gap: 24px; } } + + .dm-related-card { + display: flex; flex-direction: column; height: 100%; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + overflow: hidden; box-shadow: 0 4px 24px rgba(15,23,42,0.05); text-decoration: none; + transition: transform .4s cubic-bezier(0.2,0.8,0.2,1), box-shadow .4s ease, border-color .4s ease; + } + .dm-related-card:hover { + transform: translateY(-8px); box-shadow: 0 22px 44px rgba(192,18,39,0.13); + border-color: rgba(192,18,39,0.2); + } + .dm-related-img { + position: relative; width: 100%; aspect-ratio: 16 / 10; overflow: hidden; background: #f1f5f9; + } + .dm-related-img img { transition: transform .5s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-img img { transform: scale(1.05); } + .dm-related-badge { + position: absolute; top: 14px; left: 14px; z-index: 5; background: var(--dm-red); color: #fff; + font-size: 9px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.2px; + padding: 5px 11px; border-radius: 8px; box-shadow: 0 4px 12px rgba(192,18,39,0.25); + } + .dm-related-body { display: flex; flex-direction: column; flex: 1; padding: 22px; } + .dm-related-card-title { + font-size: 17px !important; font-weight: 800 !important; color: #1e293b !important; line-height: 1.4 !important; + letter-spacing: -.2px !important; margin: 0 0 10px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-related-card:hover .dm-related-card-title { color: var(--dm-red); } + .dm-related-card-excerpt { + font-size: 13.5px; font-weight: 500; color: #64748b; line-height: 1.6; margin: 0 0 18px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + } + .dm-related-readmore { + margin-top: auto; display: inline-flex; align-items: center; gap: 7px; + font-size: 12.5px; font-weight: 800; color: var(--dm-red); + text-transform: uppercase; letter-spacing: .6px; + } + .dm-related-readmore-arrow { transition: transform .3s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-readmore-arrow { transform: translateX(5px); } + + /* Contact CTA banner */ + .dm-blog-contact-cta { + display: flex; align-items: center; justify-content: space-between; gap: 32px; + flex-wrap: wrap; + background: linear-gradient(135deg, #1a1a1a 0%, #2d1417 100%); + border-radius: 30px; padding: clamp(32px, 4vw, 56px); + position: relative; overflow: hidden; + } + .dm-blog-contact-cta::after { + content: ""; position: absolute; right: -80px; top: -80px; width: 300px; height: 300px; + background: radial-gradient(circle, rgba(192,18,39,0.40), transparent 70%); + pointer-events: none; + } + .dm-blog-contact-cta-content { position: relative; z-index: 1; max-width: 640px; } + .dm-blog-contact-eyebrow { + display: inline-block; font-size: 12px; font-weight: 800; text-transform: uppercase; + letter-spacing: 1.4px; color: #ff8088; margin-bottom: 14px; + } + .dm-blog-contact-title { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 800 !important; line-height: 1.25 !important; + letter-spacing: -.3px !important; color: #ffffff !important; margin: 0 0 12px; text-wrap: balance; + } + .dm-blog-contact-sub { + font-size: 15.5px; line-height: 1.65; color: #e2e2e2; margin: 0; font-weight: 450; + } + .dm-blog-contact-btn { + position: relative; z-index: 1; flex-shrink: 0; + display: inline-flex; align-items: center; justify-content: center; gap: 10px; + background: var(--dm-red); color: #fff !important; font-size: 15px; font-weight: 700; + padding: 16px 32px; border-radius: 16px; text-decoration: none; + box-shadow: 0 10px 26px rgba(192,18,39,0.34); + transition: background .2s ease, transform .2s ease; + } + .dm-blog-contact-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } + @media (max-width: 720px) { + .dm-blog-contact-cta { flex-direction: column; align-items: flex-start; gap: 26px; } + .dm-blog-contact-btn { width: 100%; } + } +1a:["$","section",null,{"className":"dm-blog-footer","aria-label":"More articles","children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$25"}}],"$L26"]}] +27:I[5500,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"Image"] +28:I[23096,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"default"] +1d:["$","$L27",null,{"src":"/images/blog-post-pic-14.webp","alt":"Why Mathematical Precision Beats Heuristics in Routing","fill":true,"sizes":"(max-width: 768px) 100vw, 760px","style":{"objectFit":"cover"}}] +1e:["$","figcaption",null,{"children":"Technology: route planning decisions made before dispatch."}] +1f:["$","$L1c","7",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","blockquote",null,{"className":"dm-article-quote","children":[["$","p",null,{"children":"A route should be checked before the rider leaves, not explained after the customer calls."}],["$","cite",null,{"children":"Doormile Operations"}]]}]}] +20:["$","$L1c","8",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"Putting it into practice"}]}] +21:["$","$L1c","9",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"The best improvements usually start with simple measurements. Track distance per route, failed delivery windows, rider idle time, and orders moved between vehicles after dispatch. Those numbers show where the operation is leaking time."}]}] +22:["$","$L1c","10",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ol",null,{"className":"dm-article-ol","children":[["$","li","0",{"children":"Benchmark today's distance, fleet size, and on-time rate."}],["$","li","1",{"children":"Include vehicle capacity, delivery windows, rider shifts, and battery charge."}],["$","li","2",{"children":"Check routes against traffic and customer commitments before dispatch."}],["$","li","3",{"children":"Compare the next dispatch cycle against the old plan."}]]}]}] +23:["$","$L1c","11",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"Better routing is not about pushing riders harder. It is about giving them a plan that already accounts for the real day ahead."}]}] +24:["$","div",null,{"className":"dm-blog-aside-wrap","children":["$","aside",null,{"className":"dm-blog-sidebar","aria-label":"Blog sidebar","children":[["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Search"}],["$","$L28",null,{}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Recent Posts"}],["$","ul",null,{"className":"dm-blog-recent","children":[["$","li","how-ai-is-transforming-last-mile-ev-delivery",{"children":["$","$L1b",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"How Better Planning Improves Last-Mile EV Delivery"}],["$","time",null,{"dateTime":"2025-10-02","className":"dm-blog-recent-date","children":"Oct 2, 2025"}]]}]]}]}],["$","li","42-less-distance-insights-from-our-hyderabad-hub",{"children":["$","$L1b",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}],["$","time",null,{"dateTime":"2025-09-18","className":"dm-blog-recent-date","children":"Sep 18, 2025"}]]}]]}]}],["$","li","miletruth-ai-10-stages-to-smarter-dispatch",{"children":["$","$L1b",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","time",null,{"dateTime":"2025-09-05","className":"dm-blog-recent-date","children":"Sep 5, 2025"}]]}]]}]}],["$","li","the-ev-paradox-solving-range-anxiety-for-urban-fleets",{"children":["$","$L1b",null,{"href":"/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/ev-paradox.webp","alt":"The EV Paradox: Solving Range Anxiety for Urban Fleets","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}],["$","time",null,{"dateTime":"2025-08-21","className":"dm-blog-recent-date","children":"Aug 21, 2025"}]]}]]}]}]]}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Categories"}],["$","ul",null,{"className":"dm-blog-categories","children":[["$","li","Case Study",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Case Study"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","EV Fleet",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"EV Fleet"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}],["$","li","Fleet Management",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Fleet Management"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","MileTruth",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"MileTruth"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],"$L29","$L2a","$L2b"]}]]}],"$L2c"]}]}] +26:["$","div",null,{"className":"dm-blog-footer-inner","children":[["$","nav",null,{"className":"dm-prevnext","aria-label":"Article navigation","children":[["$","$L1b",null,{"href":"/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets","className":"dm-prevnext-card dm-prevnext-prev","children":[["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L27",null,{"src":"/images/ev-paradox.webp","alt":"The EV Paradox: Solving Range Anxiety for Urban Fleets","fill":true,"sizes":"80px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-prevnext-text","children":[["$","span",null,{"className":"dm-prevnext-label","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"19","y1":"12","x2":"5","y2":"12"}],["$","polyline",null,{"points":"12 19 5 12 12 5"}]]}],"Previous"]}],["$","span",null,{"className":"dm-prevnext-cat","children":"EV Fleet"}],["$","span",null,{"className":"dm-prevnext-title","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}]]}]]}],["$","$L1b",null,{"href":"/blog/fleet-reduction-without-compromising-delivery-volume","className":"dm-prevnext-card dm-prevnext-next","children":[["$","span",null,{"className":"dm-prevnext-text","children":[["$","span",null,{"className":"dm-prevnext-label","children":["Next",["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","span",null,{"className":"dm-prevnext-cat","children":"Fleet Management"}],["$","span",null,{"className":"dm-prevnext-title","children":"Fleet Reduction Without Compromising Delivery Volume"}]]}],["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-8.webp","alt":"Fleet Reduction Without Compromising Delivery Volume","fill":true,"sizes":"80px","style":{"objectFit":"cover"}}]}]]}]]}],["$","div",null,{"className":"dm-related","children":[["$","h2",null,{"className":"dm-related-heading","children":"Related Articles"}],["$","div",null,{"className":"dm-related-grid","children":[["$","$L1c","how-ai-is-transforming-last-mile-ev-delivery",{"delay":0,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L27",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Technology"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"How Better Planning Improves Last-Mile EV Delivery"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"A practical look at how EV fleets can plan routes, manage charging, and keep delivery promises without adding unnecessary vehicles."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}],["$","$L1c","42-less-distance-insights-from-our-hyderabad-hub",{"delay":0.08,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L27",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Case Study"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}],"$L2d","$L2e"]}]]}]}],"$L2f"]}]]}],"$L30"]}] +29:["$","li","Operations",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Operations"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +2a:["$","li","Sustainability",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Sustainability"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +2b:["$","li","Technology",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Technology"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}] +2c:["$","section",null,{"className":"dm-blog-widget dm-blog-cta-card","children":[["$","h2",null,{"className":"dm-blog-cta-title","children":"Planning delivery routes?"}],["$","p",null,{"className":"dm-blog-cta-text","children":"Talk to us about reducing wasted distance, missed windows, and avoidable vehicle time."}],["$","$L1b",null,{"href":"/contact","className":"dm-blog-cta-btn","children":["Contact Us",["$","svg",null,{"width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] +2d:["$","p",null,{"className":"dm-related-card-excerpt","children":"A practical look at how one Hyderabad hub reduced distance, used fewer vehicles, and protected delivery windows with better route planning."}] +2e:["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}] +2f:["$","$L1c","miletruth-ai-10-stages-to-smarter-dispatch",{"delay":0.16,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L27",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"MileTruth"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"From order intake to final route output, here is how a dispatch plan is checked before riders leave the hub."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}] +30:["$","div",null,{"className":"dm-blog-contact-cta","children":[["$","div",null,{"className":"dm-blog-contact-cta-content","children":[["$","span",null,{"className":"dm-blog-contact-eyebrow","children":"Let's talk logistics"}],["$","h2",null,{"className":"dm-blog-contact-title","children":"Ready to move smarter with Doormile?"}],["$","p",null,{"className":"dm-blog-contact-sub","children":"Tell us about your fleet and routes — we'll show you where the distance, vehicles and emissions are hiding."}]]}],["$","$L1b",null,{"href":"/contact","className":"dm-blog-contact-btn","children":["Get in Touch",["$","svg",null,{"width":"20","height":"20","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] +12:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] +31:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +f:null +14:[["$","title","0",{"children":"Why Mathematical Precision Beats Heuristics in Routing – Doormile"}],["$","meta","1",{"name":"description","content":"Fixed routing rules are easy to start with, but they often miss better stop sequences as order volume grows."}],["$","meta","2",{"name":"author","content":"Doormile Team"}],["$","meta","3",{"name":"keywords","content":"Technology,last-mile logistics,EV fleet,MileTruth,route optimisation"}],["$","meta","4",{"name":"robots","content":"index, follow"}],["$","link","5",{"rel":"canonical","href":"https://www.doormile.com/blog/why-mathematical-precision-beats-heuristics-in-routing"}],["$","meta","6",{"property":"og:title","content":"Why Mathematical Precision Beats Heuristics in Routing"}],["$","meta","7",{"property":"og:description","content":"Fixed routing rules are easy to start with, but they often miss better stop sequences as order volume grows."}],["$","meta","8",{"property":"og:url","content":"https://www.doormile.com/blog/why-mathematical-precision-beats-heuristics-in-routing"}],["$","meta","9",{"property":"og:site_name","content":"Doormile"}],["$","meta","10",{"property":"og:image","content":"https://www.doormile.com/images/blog-post-pic-14.webp"}],["$","meta","11",{"property":"og:image:alt","content":"Why Mathematical Precision Beats Heuristics in Routing"}],["$","meta","12",{"property":"og:type","content":"article"}],["$","meta","13",{"property":"article:published_time","content":"2025-08-07T00:00:00.000Z"}],["$","meta","14",{"property":"article:author","content":"Doormile Team"}],["$","meta","15",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","16",{"name":"twitter:title","content":"Why Mathematical Precision Beats Heuristics in Routing"}],["$","meta","17",{"name":"twitter:description","content":"Fixed routing rules are easy to start with, but they often miss better stop sequences as order volume grows."}],["$","meta","18",{"name":"twitter:image","content":"https://www.doormile.com/images/blog-post-pic-14.webp"}],["$","link","19",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","20",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","21",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","22",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L31","23",{}]] diff --git a/build/blog/why-mathematical-precision-beats-heuristics-in-routing/__next._full.txt b/build/blog/why-mathematical-precision-beats-heuristics-in-routing/__next._full.txt new file mode 100644 index 0000000..0c30390 --- /dev/null +++ b/build/blog/why-mathematical-precision-beats-heuristics-in-routing/__next._full.txt @@ -0,0 +1,545 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +d:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +e:"$Sreact.suspense" +11:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +13:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +15:I[68027,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"P":null,"c":["","blog","why-mathematical-precision-beats-heuristics-in-routing"],"q":"","i":false,"f":[[["",{"children":["blog",{"children":[["slug","why-mathematical-precision-beats-heuristics-in-routing","d",null],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":["$Lc",[["$","script","script-0",{"src":"/_next/static/chunks/0yvxf3ok9gcp_.js","async":true,"nonce":"$undefined"}]],["$","$Ld",null,{"children":["$","$e",null,{"name":"Next.MetadataOutlet","children":"$@f"}]}]]}],{},null,false,null]},null,false,"$@10"]},null,false,"$@10"]},null,false,null],["$","$1","h",{"children":[null,["$","$L11",null,{"children":"$L12"}],["$","div",null,{"hidden":true,"children":["$","$L13",null,{"children":["$","$e",null,{"name":"Next.Metadata","children":"$L14"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$15",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"kmSVPuUqY3Rhw5xy4D2nn"} +16:[] +10:"$W16" +:HL["/images/blog-post-pic-14.webp","image"] +17:T3d6f, + .dm-single-blog { + --dm-red: #c01227; + --dm-red-hover: #e31d32; + --dm-radius-card: 22px; + --dm-radius-img: 20px; + --dm-radius-badge: 8px; + --dm-shadow-card: 0 4px 24px rgba(15, 23, 42, 0.05); + --dm-border: 1px solid rgba(15, 23, 42, 0.09); + --dm-space-p: 24px; + --dm-space-h: 32px; + --dm-space-img: 32px; + --dm-space-quote: 40px; + --dm-sticky-top: 138px; + --dm-measure: min(1100px, 100%); + font-family: var(--font-manrope), sans-serif; + } + + /* Heading normalization. Beat the global theme's .elementor-kit-5 h1-h6 + (120/80/60px UPPERCASE) rules with !important on our own classes. */ + .dm-single-blog :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline, + specificity 0-1-1) so blog links keep our colors and never get underlined. */ + .dm-single-blog a { text-decoration: none !important; } + + /* Page banner: tall homepage-scale frame with only badge + title inside */ + /* Compound selector (specificity 20) + !important beats the global 800px + single-class height rules so the blog banner can use viewport heights. */ + .custom-standard-hero-card.dm-banner-card { + height: 90vh !important; + min-height: 85vh !important; + } + @media (max-width: 1024px) { + .custom-standard-hero-card.dm-banner-card { height: 80vh !important; min-height: 75vh !important; } + } + @media (max-width: 600px) { + .custom-standard-hero-card.dm-banner-card { height: 78vh !important; min-height: 72vh !important; } + } + + .dm-banner-inner { + position: relative; width: 100%; height: 100%; + display: flex; flex-direction: column; align-items: center; justify-content: center; + text-align: center; gap: clamp(22px, 2.6vw, 34px); + padding: clamp(48px, 8vh, 96px) clamp(20px, 5vw, 48px); + } + + .dm-banner-category { + display: inline-block; background: var(--dm-red); color: #fff; + font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.6px; + padding: 9px 18px; border-radius: 999px; box-shadow: 0 8px 22px rgba(192,18,39,0.45); + } + .dm-banner-title { + font-family: var(--font-manrope), sans-serif !important; + font-size: clamp(34px, 5vw, 60px) !important; font-weight: 850 !important; + line-height: 1.16 !important; letter-spacing: -1.2px !important; + color: #ffffff !important; margin: 0; max-width: 820px; + text-wrap: balance; text-shadow: 0 2px 30px rgba(0,0,0,0.38); + } + @media (max-width: 1024px) { .dm-banner-title { font-size: clamp(32px, 6vw, 48px) !important; max-width: 90%; } } + @media (max-width: 600px) { .dm-banner-title { font-size: clamp(28px, 8vw, 38px) !important; max-width: 90%; } } + + /* Content wrap begins immediately below the banner */ + /* Shared content container: the SAME max-width + horizontal padding is used + by BlogPostFooter (.dm-blog-footer-inner) so the article body, headings, + images, Prev/Next, Related Articles and the CTA banner all align to one + grid with identical left/right edges. Keep both in sync. */ + .dm-blog-wrap { + max-width: 1280px; margin: 0 auto; + /* 20px mobile padding floor → 40px on desktop; matches the footer container. */ + padding: clamp(14px, 2vw, 26px) clamp(20px, 4vw, 40px) 0; + } + @media (max-width: 767px) { + .dm-blog-wrap { + padding-left: 16px; + padding-right: 16px; + } + } + + /* ── Article meta bar (directly under the hero) ── */ + .dm-meta-bar { + display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 14px 24px; + padding: clamp(20px, 2.6vw, 30px) 0; margin-bottom: clamp(26px, 3vw, 44px); + border-bottom: 1px solid rgba(15,23,42,0.10); + } + .dm-meta-breadcrumb ol { + list-style: none; display: flex; flex-wrap: wrap; align-items: center; + gap: 8px; margin: 0; padding: 0; font-size: 13px; font-weight: 600; color: #64748b; + } + .dm-meta-breadcrumb a { color: #64748b !important; text-decoration: none; transition: color .2s ease; } + .dm-meta-breadcrumb a:hover { color: var(--dm-red) !important; } + .dm-meta-sep { color: #cbd5e1; } + .dm-meta-current { + color: #0f172a; font-weight: 700; + max-width: min(40ch, 46vw); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; + } + @media (max-width: 600px) { .dm-meta-current { max-width: 56vw; } } + .dm-meta-items { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 20px; } + .dm-meta-item { + display: inline-flex; align-items: center; gap: 7px; + font-size: 13.5px; font-weight: 600; color: #475569; + } + .dm-meta-item svg { color: var(--dm-red); flex: 0 0 auto; } + .dm-meta-author { color: #0f172a; font-weight: 700; } + @media (max-width: 600px) { .dm-meta-bar { gap: 12px; } } + .dm-blog-layout { + display: grid; grid-template-columns: minmax(0,1fr) 320px; + /* Tighter gap gives the reading column more room next to the 320px sidebar. */ + gap: clamp(28px, 3vw, 56px); align-items: start; + } + @media (max-width: 1024px) { + .dm-blog-layout { grid-template-columns: 1fr; gap: 48px; } + /* Single-column (tablet/mobile): cap the reading column and centre it so the + article never sits left-aligned with a large empty right gutter. */ + .dm-blog-main { max-width: 900px; margin-inline: auto; } + } + .dm-blog-main { min-width: 0; } + + /* ── Intro lead ── */ + .dm-blog-intro { + max-width: var(--dm-measure); + font-size: clamp(18px, 1.5vw, 20px); line-height: 1.65; font-weight: 500; + color: #475569; margin: 0 0 clamp(26px, 3vw, 38px); padding-left: 20px; + border-left: 3px solid var(--dm-red); + } + + /* ── Article body ── */ + .dm-article-body { max-width: var(--dm-measure); } + .dm-article-p { + font-size: 18px !important; line-height: 1.8 !important; color: #334155; font-weight: 450; + margin: 0 0 var(--dm-space-p); + } + .dm-article-h2 { + font-size: clamp(23px, 2vw, 30px) !important; font-weight: 800 !important; letter-spacing: -.3px !important; + color: #0f172a !important; line-height: 1.3 !important; margin: 48px 0 var(--dm-space-h); + text-wrap: balance; + } + /* Each article block is wrapped in its OWN ScrollReveal
    , so a bare + :first-child rule matched every heading (each is the only child of its + wrapper) and zeroed its top margin, collapsing the gap above every + section heading. Scope the reset to only the article body's first block. */ + .dm-article-body > :first-child :where(.dm-article-h2, .dm-article-h3), + .dm-article-body > .dm-article-h2:first-child, + .dm-article-body > .dm-article-h3:first-child { margin-top: 0; } + .dm-article-h3 { + font-size: clamp(19px, 1.5vw, 23px) !important; font-weight: 800 !important; letter-spacing: -.2px !important; + color: #1e293b !important; line-height: 1.34 !important; margin: 40px 0 18px; + text-wrap: balance; + } + @media (max-width: 600px) { + .dm-article-p { font-size: 16px !important; } + .dm-article-ul li, .dm-article-ol li { font-size: 15.5px; } + .dm-article-h2 { font-size: clamp(22px, 6vw, 28px) !important; margin-top: 38px; } + .dm-article-h3 { font-size: clamp(18px, 5vw, 22px) !important; } + } + + .dm-article-ul, .dm-article-ol { + /* Top margin (was 0) separates the list from the paragraph above it; + matching bottom margin keeps it clear of the next heading/paragraph. + Slightly larger than --dm-space-p so the list reads as its own block. */ + margin: clamp(26px, 2.4vw, 32px) 0 clamp(26px, 2.4vw, 32px); + padding-left: 2px; list-style: none; + display: flex; flex-direction: column; gap: 15px; + } + /* Prefixed with .dm-article-body so these beat the theme's global + ".logico-front-end ul li:before" fontello-glyph bullet (specificity 0,1,3), + which otherwise replaces our clean red dot with a misaligned checkmark glyph + and adds its own 1.7em indent. */ + .dm-article-body .dm-article-ul li, .dm-article-body .dm-article-ol li { + position: relative; padding-left: 34px; + font-size: 17px; line-height: 1.65; color: #334155; font-weight: 450; + } + .dm-article-body .dm-article-ul li::before { + content: ""; position: absolute; left: 7px; top: 10px; + width: 8px; height: 8px; border-radius: 50%; background: var(--dm-red); + /* kill any inherited fontello glyph from the global rule */ + font-size: 0; line-height: 0; + } + .dm-article-ol { counter-reset: dm-li; } + .dm-article-body .dm-article-ol li { counter-increment: dm-li; } + .dm-article-body .dm-article-ol li::before { + content: counter(dm-li); position: absolute; left: 0; top: 0; + width: 24px; height: 24px; border-radius: 7px; + background: rgba(192,18,39,0.10); color: var(--dm-red); + font-size: 12px; font-weight: 800; display: flex; align-items: center; justify-content: center; + } + + /* ── Quote ── */ + .dm-article-quote { + position: relative; margin: var(--dm-space-quote) 0; padding: 30px 32px 30px 64px; + background: linear-gradient(135deg, #fbf2f3 0%, #fdf7f8 100%); + border-left: 4px solid var(--dm-red); border-radius: 0 18px 18px 0; + box-shadow: 0 8px 28px rgba(192, 18, 39, 0.06); + } + .dm-article-quote::before { + content: "\201C"; position: absolute; left: 22px; top: 8px; + font-family: Georgia, "Times New Roman", serif; + font-size: 64px; line-height: 1; color: rgba(192, 18, 39, 0.28); font-weight: 700; + } + .dm-article-quote p { + font-size: clamp(19px, 2vw, 23px); line-height: 1.5; font-weight: 600; + font-style: italic; color: #1e293b; margin: 0; + } + .dm-article-quote cite { + display: block; margin-top: 16px; font-size: 13px; font-weight: 700; + font-style: normal; color: var(--dm-red); text-transform: uppercase; letter-spacing: .6px; + } + @media (max-width: 600px) { .dm-article-quote { padding: 26px 22px; } .dm-article-quote::before { display: none; } } + + /* ── Images ── */ + .dm-article-figure { margin: var(--dm-space-img) 0; } + .dm-article-figure-img { + position: relative; display: block; width: 100%; aspect-ratio: 16 / 9; + border-radius: var(--dm-radius-img); overflow: hidden; box-shadow: 0 14px 34px rgba(15,23,42,0.10); + } + .dm-article-figure figcaption { + margin-top: 14px; font-size: 13.5px; color: #94a3b8; font-weight: 500; + text-align: center; font-style: italic; + } + + /* ── Sidebar ── */ + .dm-blog-aside-wrap { position: relative; } + .dm-blog-sidebar { + display: flex; flex-direction: column; gap: 18px; + position: sticky; top: var(--dm-sticky-top); + } + @media (max-width: 1024px) { .dm-blog-sidebar { position: static; gap: 20px; } } + + .dm-blog-widget { + background: #fff; border: var(--dm-border); border-radius: var(--dm-radius-card); + padding: 20px; box-shadow: var(--dm-shadow-card); + } + .dm-blog-widget-title { + font-size: 13px !important; font-weight: 700 !important; text-transform: uppercase !important; + letter-spacing: .8px !important; line-height: 1.35 !important; color: #0f172a !important; + margin: 0 0 15px; padding: 0 0 12px; + border-bottom: 1px solid rgba(15,23,42,0.08); + overflow: visible; white-space: normal; word-break: normal; + } + + /* Search */ + .dm-sr-only { + position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; + overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; + } + .dm-blog-search { position: relative; } + .dm-blog-search-form { position: relative; } + .dm-blog-search-input { + width: 100%; height: 46px; border: 1.5px solid #e2e8f0; border-radius: 12px; + padding: 0 42px 0 15px; font-size: 14px; font-family: inherit; color: #0f172a; + background: #f8fafc; transition: border-color .2s ease, box-shadow .2s ease, background .2s ease; + } + .dm-blog-search-input::placeholder { color: #9c9c9c; } + .dm-blog-search-input:focus { + outline: none; border-color: var(--dm-red); background: #fff; + box-shadow: 0 0 0 3px rgba(192,18,39,0.11); + } + .dm-blog-search-icon { + position: absolute; right: 14px; top: 50%; transform: translateY(-50%); + color: #94a3b8; pointer-events: none; display: flex; + } + .dm-blog-search-results { + position: absolute; z-index: 20; top: calc(100% + 8px); left: 0; right: 0; + background: #fff; border: 1px solid rgba(15,23,42,0.10); border-radius: 14px; + box-shadow: 0 18px 42px rgba(15,23,42,0.14); overflow: hidden; + } + .dm-blog-search-results ul { list-style: none; margin: 0; padding: 6px; } + .dm-blog-search-result { + display: flex; flex-direction: column; gap: 3px; padding: 10px 12px; + border-radius: 10px; text-decoration: none; transition: background .15s ease; + } + .dm-blog-search-result:hover { background: #f8fafc; } + .dm-blog-search-result-cat { + font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .8px; color: var(--dm-red); + } + .dm-blog-search-result-title { font-size: 13.5px; font-weight: 600; color: #1e293b; line-height: 1.35; } + .dm-blog-search-empty { margin: 0; padding: 14px 12px; font-size: 13px; color: #64748b; } + + /* Recent posts */ + .dm-blog-recent { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 15px; } + .dm-blog-recent-item { display: flex; gap: 13px; align-items: center; text-decoration: none; } + .dm-blog-recent-thumb { + position: relative; flex: 0 0 62px; width: 62px; height: 62px; + border-radius: 13px; overflow: hidden; background: #f1f5f9; + } + .dm-blog-recent-meta { display: flex; flex-direction: column; gap: 4px; min-width: 0; } + .dm-blog-recent-title { + font-size: 13.5px; font-weight: 700; color: #1e293b; line-height: 1.35; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-blog-recent-item:hover .dm-blog-recent-title { color: var(--dm-red); } + .dm-blog-recent-date { font-size: 11.5px; font-weight: 600; color: #94a3b8; } + + /* Categories */ + .dm-blog-categories { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; } + .dm-blog-category-item { + display: flex; align-items: center; justify-content: space-between; gap: 10px; + padding: 11px 2px; text-decoration: none; font-size: 14px; font-weight: 600; color: #334155 !important; + border-bottom: 1px solid rgba(15,23,42,0.06); transition: color .2s ease, padding-left .2s ease; + } + .dm-blog-categories li:last-child .dm-blog-category-item { border-bottom: none; } + .dm-blog-category-item:hover { color: var(--dm-red); padding-left: 6px; } + .dm-blog-category-item > span:first-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } + .dm-blog-category-count { + flex: 0 0 auto; font-size: 11px; font-weight: 800; color: #94a3b8; background: #f1f5f9; + min-width: 24px; height: 22px; border-radius: 7px; display: inline-flex; + align-items: center; justify-content: center; padding: 0 7px; + } + + /* CTA card */ + .dm-blog-cta-card { background: #1f1f1f; border-color: #1f1f1f; } + .dm-blog-cta-title { font-size: 18px !important; font-weight: 800 !important; color: #fff !important; line-height: 1.32 !important; margin: 0 0 10px; letter-spacing: -.2px !important; } + .dm-blog-cta-text { font-size: 13.5px; line-height: 1.6; color: #c7c7c7; margin: 0 0 20px; font-weight: 450; } + .dm-blog-cta-btn { + display: inline-flex; align-items: center; gap: 8px; + background: var(--dm-red); color: #fff !important; font-size: 13.5px; font-weight: 700; + padding: 12px 22px; border-radius: 12px; text-decoration: none; + transition: background .2s ease, transform .2s ease; + } + .dm-blog-cta-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } +c:["$","div",null,{"className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"Article\",\"headline\":\"Why Mathematical Precision Beats Heuristics in Routing\",\"description\":\"Fixed routing rules are easy to start with, but they often miss better stop sequences as order volume grows.\",\"image\":[\"https://www.doormile.com/images/blog-post-pic-14.webp\"],\"datePublished\":\"2025-08-07T00:00:00.000Z\",\"dateModified\":\"2025-08-07T00:00:00.000Z\",\"author\":{\"@type\":\"Organization\",\"name\":\"Doormile Team\",\"url\":\"https://www.doormile.com\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Doormile\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://www.doormile.com/images/cropped-image-2.png\"}},\"mainEntityOfPage\":{\"@type\":\"WebPage\",\"@id\":\"https://www.doormile.com/blog/why-mathematical-precision-beats-heuristics-in-routing\"},\"articleSection\":\"Technology\"}"}}],["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https://www.doormile.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https://www.doormile.com/blog\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Why Mathematical Precision Beats Heuristics in Routing\",\"item\":\"https://www.doormile.com/blog/why-mathematical-precision-beats-heuristics-in-routing\"}]}"}}],["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":[["$","article",null,{"className":"dm-single-blog","children":[["$","link",null,{"rel":"preload","as":"image","href":"/images/blog-post-pic-14.webp"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$17"}}],"$L18","$L19"]}],"$L1a"]}]}]]}] +1b:I[22016,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],""] +1c:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"ScrollReveal"] +18:["$","div",null,{"className":"custom-standard-hero-container","children":["$","div",null,{"className":"custom-standard-hero-card dm-banner-card","style":{"backgroundImage":"url(/images/blog-post-pic-14.webp)","--hero-overlay":"linear-gradient(180deg, rgba(0,0,0,0.38) 0%, rgba(0,0,0,0.46) 55%, rgba(0,0,0,0.60) 100%)"},"children":["$","div",null,{"className":"e-con-inner dm-banner-inner","children":[["$","span",null,{"className":"dm-banner-category","children":"Technology"}],["$","h1",null,{"className":"dm-banner-title","children":"Why Mathematical Precision Beats Heuristics in Routing"}]]}]}]}] +19:["$","div",null,{"className":"dm-blog-wrap","children":[["$","div",null,{"className":"dm-meta-bar","children":[["$","nav",null,{"className":"dm-meta-breadcrumb","aria-label":"Breadcrumb","children":["$","ol",null,{"children":[["$","li",null,{"children":["$","$L1b",null,{"href":"/","children":"Home"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"children":["$","$L1b",null,{"href":"/blog","children":"Blog"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"aria-current":"page","className":"dm-meta-current","children":"Why Mathematical Precision Beats Heuristics in Routing"}]]}]}],["$","div",null,{"className":"dm-meta-items","children":[["$","span",null,{"className":"dm-meta-item dm-meta-author","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","path",null,{"d":"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"}],["$","circle",null,{"cx":"12","cy":"7","r":"4"}]]}],"Doormile Team"]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","rect",null,{"x":"3","y":"4","width":"18","height":"18","rx":"2"}],["$","line",null,{"x1":"16","y1":"2","x2":"16","y2":"6"}],["$","line",null,{"x1":"8","y1":"2","x2":"8","y2":"6"}],["$","line",null,{"x1":"3","y1":"10","x2":"21","y2":"10"}]]}],["$","time",null,{"dateTime":"2025-08-07","children":"Aug 7, 2025"}]]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","circle",null,{"cx":"12","cy":"12","r":"9"}],["$","polyline",null,{"points":"12 7 12 12 15 14"}]]}],2," min read"]}]]}]]}],["$","div",null,{"className":"dm-blog-layout","children":[["$","div",null,{"className":"dm-blog-main","children":[["$","p",null,{"className":"dm-blog-intro","children":"Simple routing rules are fast to set up, but they can quietly add distance every day. Better planning compares more route options before dispatch."}],["$","div",null,{"className":"dm-article-body","children":[["$","$L1c","0",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"In last-mile logistics, a missed SLA is rarely caused by one big failure. It usually comes from small delays adding up across a route. Why Mathematical Precision Beats Heuristics in Routing looks at how delivery teams can spot those delays early and plan around them before vehicles leave the hub."}]}],["$","$L1c","1",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"Why this matters for fleet teams"}]}],["$","$L1c","2",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"Every extra kilometre costs money. It uses fuel or charge, adds rider time, wears down vehicles, and increases the chance of a late delivery. When routes are built from fixed zones or old habits, those costs repeat every day."}]}],["$","$L1c","3",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ul",null,{"className":"dm-article-ul","children":[["$","li","0",{"children":"Fewer vehicles needed for the same number of drops"}],["$","li","1",{"children":"Lower cost per drop through better stop sequencing"}],["$","li","2",{"children":"ETAs that match traffic, distance, and delivery windows"}],["$","li","3",{"children":"Less fuel or charge used per completed order"}]]}]}],["$","$L1c","4",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h3",null,{"className":"dm-article-h3","children":"From orders to dispatch"}]}],["$","$L1c","5",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"A good dispatch plan starts with the basics: order locations, promised delivery windows, rider capacity, vehicle range, and known traffic trouble spots. MileTruth™ checks those inputs before dispatch so the team is not fixing avoidable mistakes on the road."}]}],["$","$L1c","6",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","figure",null,{"className":"dm-article-figure","children":[["$","span",null,{"className":"dm-article-figure-img","children":"$L1d"}],"$L1e"]}]}],"$L1f","$L20","$L21","$L22","$L23"]}]]}],"$L24"]}]]}] +25:T2021, + .dm-blog-footer { + font-family: var(--font-manrope), sans-serif; --dm-red: #c01227; --dm-red-hover: #e31d32; + /* The global theme applies 72px top/bottom section padding — strip it so the + inner container is the single source of vertical rhythm (no double gap). */ + padding: 0 !important; + } + /* Neutralize the global theme's 120/80/60px UPPERCASE heading rules */ + .dm-blog-footer :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline) */ + .dm-blog-footer a { text-decoration: none !important; } + /* Shared content container — mirrors SingleBlog's .dm-blog-wrap (same 1280px + max-width + 20→40px horizontal padding) so Prev/Next, Related and the CTA + align to the exact same left/right edges as the article body above. + Vertical rhythm: ~64px from the article end to the Prev/Next divider, then a + consistent ~64–72px section→section gap (no 120px+ voids). */ + .dm-blog-footer-inner { + max-width: 1280px; margin: 0 auto; + /* Compact vertical rhythm on an 8px system. Top padding sets the + article→Prev/Next gap (~24–32px); the inter-section gap sets the + Prev/Next→Related gap (~32–48px). No large arbitrary voids. */ + /* Minimal bottom padding — the global site footer already contributes its + own 20px top inset, so the CTA banner sits close to it without a void. */ + padding: clamp(24px, 3vw, 32px) clamp(20px, 4vw, 40px) clamp(8px, 1.5vw, 16px); + display: flex; flex-direction: column; gap: clamp(32px, 4vw, 48px); + } + @media (max-width: 767px) { + .dm-blog-footer-inner { + padding-left: 16px; + padding-right: 16px; + } + } + + /* Prev / Next */ + .dm-prevnext { + display: grid; grid-template-columns: 1fr 1fr; gap: 20px; + /* Halved from 40px: tight divider→cards spacing without crowding. */ + padding-top: clamp(16px, 2vw, 24px); border-top: 1px solid rgba(15,23,42,0.08); + } + @media (max-width: 640px) { .dm-prevnext { grid-template-columns: 1fr; } } + .dm-prevnext-placeholder { display: block; } + .dm-prevnext-card { + display: flex; gap: 16px; align-items: center; padding: 16px; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + text-decoration: none; transition: transform .3s ease, box-shadow .3s ease, border-color .3s ease; + } + .dm-prevnext-card:hover { + transform: translateY(-4px); border-color: rgba(192,18,39,0.2); + box-shadow: 0 16px 34px rgba(192,18,39,0.10); + } + .dm-prevnext-thumb { + position: relative; flex: 0 0 80px; width: 80px; height: 80px; + border-radius: 16px; overflow: hidden; background: #f1f5f9; + } + .dm-prevnext-text { display: flex; flex-direction: column; gap: 5px; min-width: 0; } + .dm-prevnext-next { text-align: right; } + .dm-prevnext-next .dm-prevnext-text { align-items: flex-end; } + .dm-prevnext-label { + display: inline-flex; align-items: center; gap: 6px; + font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: 1px; color: var(--dm-red); + } + .dm-prevnext-cat { font-size: 11px; font-weight: 700; color: #94a3b8; text-transform: uppercase; letter-spacing: .5px; } + .dm-prevnext-title { + font-size: 15.5px; font-weight: 700; color: #1e293b; line-height: 1.4; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-prevnext-card:hover .dm-prevnext-title { color: var(--dm-red); } + + /* Related */ + .dm-related-heading { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 850 !important; letter-spacing: -.4px !important; + line-height: 1.25 !important; color: #0f172a !important; margin: 0 0 24px; + } + .dm-related-grid { + display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; + } + @media (max-width: 1024px) { .dm-related-grid { grid-template-columns: repeat(2, 1fr); } } + @media (max-width: 700px) { .dm-related-grid { grid-template-columns: 1fr; gap: 24px; } } + + .dm-related-card { + display: flex; flex-direction: column; height: 100%; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + overflow: hidden; box-shadow: 0 4px 24px rgba(15,23,42,0.05); text-decoration: none; + transition: transform .4s cubic-bezier(0.2,0.8,0.2,1), box-shadow .4s ease, border-color .4s ease; + } + .dm-related-card:hover { + transform: translateY(-8px); box-shadow: 0 22px 44px rgba(192,18,39,0.13); + border-color: rgba(192,18,39,0.2); + } + .dm-related-img { + position: relative; width: 100%; aspect-ratio: 16 / 10; overflow: hidden; background: #f1f5f9; + } + .dm-related-img img { transition: transform .5s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-img img { transform: scale(1.05); } + .dm-related-badge { + position: absolute; top: 14px; left: 14px; z-index: 5; background: var(--dm-red); color: #fff; + font-size: 9px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.2px; + padding: 5px 11px; border-radius: 8px; box-shadow: 0 4px 12px rgba(192,18,39,0.25); + } + .dm-related-body { display: flex; flex-direction: column; flex: 1; padding: 22px; } + .dm-related-card-title { + font-size: 17px !important; font-weight: 800 !important; color: #1e293b !important; line-height: 1.4 !important; + letter-spacing: -.2px !important; margin: 0 0 10px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-related-card:hover .dm-related-card-title { color: var(--dm-red); } + .dm-related-card-excerpt { + font-size: 13.5px; font-weight: 500; color: #64748b; line-height: 1.6; margin: 0 0 18px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + } + .dm-related-readmore { + margin-top: auto; display: inline-flex; align-items: center; gap: 7px; + font-size: 12.5px; font-weight: 800; color: var(--dm-red); + text-transform: uppercase; letter-spacing: .6px; + } + .dm-related-readmore-arrow { transition: transform .3s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-readmore-arrow { transform: translateX(5px); } + + /* Contact CTA banner */ + .dm-blog-contact-cta { + display: flex; align-items: center; justify-content: space-between; gap: 32px; + flex-wrap: wrap; + background: linear-gradient(135deg, #1a1a1a 0%, #2d1417 100%); + border-radius: 30px; padding: clamp(32px, 4vw, 56px); + position: relative; overflow: hidden; + } + .dm-blog-contact-cta::after { + content: ""; position: absolute; right: -80px; top: -80px; width: 300px; height: 300px; + background: radial-gradient(circle, rgba(192,18,39,0.40), transparent 70%); + pointer-events: none; + } + .dm-blog-contact-cta-content { position: relative; z-index: 1; max-width: 640px; } + .dm-blog-contact-eyebrow { + display: inline-block; font-size: 12px; font-weight: 800; text-transform: uppercase; + letter-spacing: 1.4px; color: #ff8088; margin-bottom: 14px; + } + .dm-blog-contact-title { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 800 !important; line-height: 1.25 !important; + letter-spacing: -.3px !important; color: #ffffff !important; margin: 0 0 12px; text-wrap: balance; + } + .dm-blog-contact-sub { + font-size: 15.5px; line-height: 1.65; color: #e2e2e2; margin: 0; font-weight: 450; + } + .dm-blog-contact-btn { + position: relative; z-index: 1; flex-shrink: 0; + display: inline-flex; align-items: center; justify-content: center; gap: 10px; + background: var(--dm-red); color: #fff !important; font-size: 15px; font-weight: 700; + padding: 16px 32px; border-radius: 16px; text-decoration: none; + box-shadow: 0 10px 26px rgba(192,18,39,0.34); + transition: background .2s ease, transform .2s ease; + } + .dm-blog-contact-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } + @media (max-width: 720px) { + .dm-blog-contact-cta { flex-direction: column; align-items: flex-start; gap: 26px; } + .dm-blog-contact-btn { width: 100%; } + } +1a:["$","section",null,{"className":"dm-blog-footer","aria-label":"More articles","children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$25"}}],"$L26"]}] +27:I[5500,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"Image"] +28:I[23096,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"default"] +1d:["$","$L27",null,{"src":"/images/blog-post-pic-14.webp","alt":"Why Mathematical Precision Beats Heuristics in Routing","fill":true,"sizes":"(max-width: 768px) 100vw, 760px","style":{"objectFit":"cover"}}] +1e:["$","figcaption",null,{"children":"Technology: route planning decisions made before dispatch."}] +1f:["$","$L1c","7",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","blockquote",null,{"className":"dm-article-quote","children":[["$","p",null,{"children":"A route should be checked before the rider leaves, not explained after the customer calls."}],["$","cite",null,{"children":"Doormile Operations"}]]}]}] +20:["$","$L1c","8",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"Putting it into practice"}]}] +21:["$","$L1c","9",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"The best improvements usually start with simple measurements. Track distance per route, failed delivery windows, rider idle time, and orders moved between vehicles after dispatch. Those numbers show where the operation is leaking time."}]}] +22:["$","$L1c","10",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ol",null,{"className":"dm-article-ol","children":[["$","li","0",{"children":"Benchmark today's distance, fleet size, and on-time rate."}],["$","li","1",{"children":"Include vehicle capacity, delivery windows, rider shifts, and battery charge."}],["$","li","2",{"children":"Check routes against traffic and customer commitments before dispatch."}],["$","li","3",{"children":"Compare the next dispatch cycle against the old plan."}]]}]}] +23:["$","$L1c","11",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"Better routing is not about pushing riders harder. It is about giving them a plan that already accounts for the real day ahead."}]}] +24:["$","div",null,{"className":"dm-blog-aside-wrap","children":["$","aside",null,{"className":"dm-blog-sidebar","aria-label":"Blog sidebar","children":[["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Search"}],["$","$L28",null,{}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Recent Posts"}],["$","ul",null,{"className":"dm-blog-recent","children":[["$","li","how-ai-is-transforming-last-mile-ev-delivery",{"children":["$","$L1b",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"How Better Planning Improves Last-Mile EV Delivery"}],["$","time",null,{"dateTime":"2025-10-02","className":"dm-blog-recent-date","children":"Oct 2, 2025"}]]}]]}]}],["$","li","42-less-distance-insights-from-our-hyderabad-hub",{"children":["$","$L1b",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}],["$","time",null,{"dateTime":"2025-09-18","className":"dm-blog-recent-date","children":"Sep 18, 2025"}]]}]]}]}],["$","li","miletruth-ai-10-stages-to-smarter-dispatch",{"children":["$","$L1b",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","time",null,{"dateTime":"2025-09-05","className":"dm-blog-recent-date","children":"Sep 5, 2025"}]]}]]}]}],["$","li","the-ev-paradox-solving-range-anxiety-for-urban-fleets",{"children":["$","$L1b",null,{"href":"/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L27",null,{"src":"/images/ev-paradox.webp","alt":"The EV Paradox: Solving Range Anxiety for Urban Fleets","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}],["$","time",null,{"dateTime":"2025-08-21","className":"dm-blog-recent-date","children":"Aug 21, 2025"}]]}]]}]}]]}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Categories"}],["$","ul",null,{"className":"dm-blog-categories","children":[["$","li","Case Study",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Case Study"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","EV Fleet",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"EV Fleet"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}],["$","li","Fleet Management",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Fleet Management"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","MileTruth",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"MileTruth"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],"$L29","$L2a","$L2b"]}]]}],"$L2c"]}]}] +26:["$","div",null,{"className":"dm-blog-footer-inner","children":[["$","nav",null,{"className":"dm-prevnext","aria-label":"Article navigation","children":[["$","$L1b",null,{"href":"/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets","className":"dm-prevnext-card dm-prevnext-prev","children":[["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L27",null,{"src":"/images/ev-paradox.webp","alt":"The EV Paradox: Solving Range Anxiety for Urban Fleets","fill":true,"sizes":"80px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-prevnext-text","children":[["$","span",null,{"className":"dm-prevnext-label","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"19","y1":"12","x2":"5","y2":"12"}],["$","polyline",null,{"points":"12 19 5 12 12 5"}]]}],"Previous"]}],["$","span",null,{"className":"dm-prevnext-cat","children":"EV Fleet"}],["$","span",null,{"className":"dm-prevnext-title","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}]]}]]}],["$","$L1b",null,{"href":"/blog/fleet-reduction-without-compromising-delivery-volume","className":"dm-prevnext-card dm-prevnext-next","children":[["$","span",null,{"className":"dm-prevnext-text","children":[["$","span",null,{"className":"dm-prevnext-label","children":["Next",["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","span",null,{"className":"dm-prevnext-cat","children":"Fleet Management"}],["$","span",null,{"className":"dm-prevnext-title","children":"Fleet Reduction Without Compromising Delivery Volume"}]]}],["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L27",null,{"src":"/images/blog-post-pic-8.webp","alt":"Fleet Reduction Without Compromising Delivery Volume","fill":true,"sizes":"80px","style":{"objectFit":"cover"}}]}]]}]]}],["$","div",null,{"className":"dm-related","children":[["$","h2",null,{"className":"dm-related-heading","children":"Related Articles"}],["$","div",null,{"className":"dm-related-grid","children":[["$","$L1c","how-ai-is-transforming-last-mile-ev-delivery",{"delay":0,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L27",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Technology"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"How Better Planning Improves Last-Mile EV Delivery"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"A practical look at how EV fleets can plan routes, manage charging, and keep delivery promises without adding unnecessary vehicles."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}],["$","$L1c","42-less-distance-insights-from-our-hyderabad-hub",{"delay":0.08,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L27",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Case Study"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}],"$L2d","$L2e"]}]]}]}],"$L2f"]}]]}],"$L30"]}] +29:["$","li","Operations",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Operations"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +2a:["$","li","Sustainability",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Sustainability"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +2b:["$","li","Technology",{"children":["$","$L1b",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Technology"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}] +2c:["$","section",null,{"className":"dm-blog-widget dm-blog-cta-card","children":[["$","h2",null,{"className":"dm-blog-cta-title","children":"Planning delivery routes?"}],["$","p",null,{"className":"dm-blog-cta-text","children":"Talk to us about reducing wasted distance, missed windows, and avoidable vehicle time."}],["$","$L1b",null,{"href":"/contact","className":"dm-blog-cta-btn","children":["Contact Us",["$","svg",null,{"width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] +2d:["$","p",null,{"className":"dm-related-card-excerpt","children":"A practical look at how one Hyderabad hub reduced distance, used fewer vehicles, and protected delivery windows with better route planning."}] +2e:["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}] +2f:["$","$L1c","miletruth-ai-10-stages-to-smarter-dispatch",{"delay":0.16,"duration":0.7,"yOffset":30,"children":["$","$L1b",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L27",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"MileTruth"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"From order intake to final route output, here is how a dispatch plan is checked before riders leave the hub."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}] +30:["$","div",null,{"className":"dm-blog-contact-cta","children":[["$","div",null,{"className":"dm-blog-contact-cta-content","children":[["$","span",null,{"className":"dm-blog-contact-eyebrow","children":"Let's talk logistics"}],["$","h2",null,{"className":"dm-blog-contact-title","children":"Ready to move smarter with Doormile?"}],["$","p",null,{"className":"dm-blog-contact-sub","children":"Tell us about your fleet and routes — we'll show you where the distance, vehicles and emissions are hiding."}]]}],["$","$L1b",null,{"href":"/contact","className":"dm-blog-contact-btn","children":["Get in Touch",["$","svg",null,{"width":"20","height":"20","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] +12:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] +31:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +f:null +14:[["$","title","0",{"children":"Why Mathematical Precision Beats Heuristics in Routing – Doormile"}],["$","meta","1",{"name":"description","content":"Fixed routing rules are easy to start with, but they often miss better stop sequences as order volume grows."}],["$","meta","2",{"name":"author","content":"Doormile Team"}],["$","meta","3",{"name":"keywords","content":"Technology,last-mile logistics,EV fleet,MileTruth,route optimisation"}],["$","meta","4",{"name":"robots","content":"index, follow"}],["$","link","5",{"rel":"canonical","href":"https://www.doormile.com/blog/why-mathematical-precision-beats-heuristics-in-routing"}],["$","meta","6",{"property":"og:title","content":"Why Mathematical Precision Beats Heuristics in Routing"}],["$","meta","7",{"property":"og:description","content":"Fixed routing rules are easy to start with, but they often miss better stop sequences as order volume grows."}],["$","meta","8",{"property":"og:url","content":"https://www.doormile.com/blog/why-mathematical-precision-beats-heuristics-in-routing"}],["$","meta","9",{"property":"og:site_name","content":"Doormile"}],["$","meta","10",{"property":"og:image","content":"https://www.doormile.com/images/blog-post-pic-14.webp"}],["$","meta","11",{"property":"og:image:alt","content":"Why Mathematical Precision Beats Heuristics in Routing"}],["$","meta","12",{"property":"og:type","content":"article"}],["$","meta","13",{"property":"article:published_time","content":"2025-08-07T00:00:00.000Z"}],["$","meta","14",{"property":"article:author","content":"Doormile Team"}],["$","meta","15",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","16",{"name":"twitter:title","content":"Why Mathematical Precision Beats Heuristics in Routing"}],["$","meta","17",{"name":"twitter:description","content":"Fixed routing rules are easy to start with, but they often miss better stop sequences as order volume grows."}],["$","meta","18",{"name":"twitter:image","content":"https://www.doormile.com/images/blog-post-pic-14.webp"}],["$","link","19",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","20",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","21",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","22",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L31","23",{}]] diff --git a/build/blog/why-mathematical-precision-beats-heuristics-in-routing/__next._head.txt b/build/blog/why-mathematical-precision-beats-heuristics-in-routing/__next._head.txt new file mode 100644 index 0000000..43c123e --- /dev/null +++ b/build/blog/why-mathematical-precision-beats-heuristics-in-routing/__next._head.txt @@ -0,0 +1,6 @@ +1:"$Sreact.fragment" +2:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +3:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +4:"$Sreact.suspense" +5:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +0:{"rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"Why Mathematical Precision Beats Heuristics in Routing – Doormile"}],["$","meta","1",{"name":"description","content":"Fixed routing rules are easy to start with, but they often miss better stop sequences as order volume grows."}],["$","meta","2",{"name":"author","content":"Doormile Team"}],["$","meta","3",{"name":"keywords","content":"Technology,last-mile logistics,EV fleet,MileTruth,route optimisation"}],["$","meta","4",{"name":"robots","content":"index, follow"}],["$","link","5",{"rel":"canonical","href":"https://www.doormile.com/blog/why-mathematical-precision-beats-heuristics-in-routing"}],["$","meta","6",{"property":"og:title","content":"Why Mathematical Precision Beats Heuristics in Routing"}],["$","meta","7",{"property":"og:description","content":"Fixed routing rules are easy to start with, but they often miss better stop sequences as order volume grows."}],["$","meta","8",{"property":"og:url","content":"https://www.doormile.com/blog/why-mathematical-precision-beats-heuristics-in-routing"}],["$","meta","9",{"property":"og:site_name","content":"Doormile"}],["$","meta","10",{"property":"og:image","content":"https://www.doormile.com/images/blog-post-pic-14.webp"}],["$","meta","11",{"property":"og:image:alt","content":"Why Mathematical Precision Beats Heuristics in Routing"}],["$","meta","12",{"property":"og:type","content":"article"}],["$","meta","13",{"property":"article:published_time","content":"2025-08-07T00:00:00.000Z"}],["$","meta","14",{"property":"article:author","content":"Doormile Team"}],["$","meta","15",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","16",{"name":"twitter:title","content":"Why Mathematical Precision Beats Heuristics in Routing"}],["$","meta","17",{"name":"twitter:description","content":"Fixed routing rules are easy to start with, but they often miss better stop sequences as order volume grows."}],["$","meta","18",{"name":"twitter:image","content":"https://www.doormile.com/images/blog-post-pic-14.webp"}],["$","link","19",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","20",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","21",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","22",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L5","23",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/blog/why-mathematical-precision-beats-heuristics-in-routing/__next._index.txt b/build/blog/why-mathematical-precision-beats-heuristics-in-routing/__next._index.txt new file mode 100644 index 0000000..d0b3355 --- /dev/null +++ b/build/blog/why-mathematical-precision-beats-heuristics-in-routing/__next._index.txt @@ -0,0 +1,15 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","template":["$","$La",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/blog/why-mathematical-precision-beats-heuristics-in-routing/__next._tree.txt b/build/blog/why-mathematical-precision-beats-heuristics-in-routing/__next._tree.txt new file mode 100644 index 0000000..cfcf78d --- /dev/null +++ b/build/blog/why-mathematical-precision-beats-heuristics-in-routing/__next._tree.txt @@ -0,0 +1,10 @@ +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +:HL["/images/blog-post-pic-14.webp","image"] +0:{"tree":{"name":"","param":null,"prefetchHints":16,"slots":{"children":{"name":"blog","param":null,"prefetchHints":0,"slots":{"children":{"name":"slug","param":{"type":"d","key":"why-mathematical-precision-beats-heuristics-in-routing","siblings":null},"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}}}}}},"staleTime":300,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/blog/why-mathematical-precision-beats-heuristics-in-routing/__next.blog.$d$slug.__PAGE__.txt b/build/blog/why-mathematical-precision-beats-heuristics-in-routing/__next.blog.$d$slug.__PAGE__.txt new file mode 100644 index 0000000..d991266 --- /dev/null +++ b/build/blog/why-mathematical-precision-beats-heuristics-in-routing/__next.blog.$d$slug.__PAGE__.txt @@ -0,0 +1,520 @@ +1:"$Sreact.fragment" +8:I[22016,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],""] +9:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"ScrollReveal"] +14:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +15:"$Sreact.suspense" +17:I[5500,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"Image"] +18:I[23096,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yvxf3ok9gcp_.js"],"default"] +:HL["/images/blog-post-pic-14.webp","image"] +2:T3d6f, + .dm-single-blog { + --dm-red: #c01227; + --dm-red-hover: #e31d32; + --dm-radius-card: 22px; + --dm-radius-img: 20px; + --dm-radius-badge: 8px; + --dm-shadow-card: 0 4px 24px rgba(15, 23, 42, 0.05); + --dm-border: 1px solid rgba(15, 23, 42, 0.09); + --dm-space-p: 24px; + --dm-space-h: 32px; + --dm-space-img: 32px; + --dm-space-quote: 40px; + --dm-sticky-top: 138px; + --dm-measure: min(1100px, 100%); + font-family: var(--font-manrope), sans-serif; + } + + /* Heading normalization. Beat the global theme's .elementor-kit-5 h1-h6 + (120/80/60px UPPERCASE) rules with !important on our own classes. */ + .dm-single-blog :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline, + specificity 0-1-1) so blog links keep our colors and never get underlined. */ + .dm-single-blog a { text-decoration: none !important; } + + /* Page banner: tall homepage-scale frame with only badge + title inside */ + /* Compound selector (specificity 20) + !important beats the global 800px + single-class height rules so the blog banner can use viewport heights. */ + .custom-standard-hero-card.dm-banner-card { + height: 90vh !important; + min-height: 85vh !important; + } + @media (max-width: 1024px) { + .custom-standard-hero-card.dm-banner-card { height: 80vh !important; min-height: 75vh !important; } + } + @media (max-width: 600px) { + .custom-standard-hero-card.dm-banner-card { height: 78vh !important; min-height: 72vh !important; } + } + + .dm-banner-inner { + position: relative; width: 100%; height: 100%; + display: flex; flex-direction: column; align-items: center; justify-content: center; + text-align: center; gap: clamp(22px, 2.6vw, 34px); + padding: clamp(48px, 8vh, 96px) clamp(20px, 5vw, 48px); + } + + .dm-banner-category { + display: inline-block; background: var(--dm-red); color: #fff; + font-size: 12px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.6px; + padding: 9px 18px; border-radius: 999px; box-shadow: 0 8px 22px rgba(192,18,39,0.45); + } + .dm-banner-title { + font-family: var(--font-manrope), sans-serif !important; + font-size: clamp(34px, 5vw, 60px) !important; font-weight: 850 !important; + line-height: 1.16 !important; letter-spacing: -1.2px !important; + color: #ffffff !important; margin: 0; max-width: 820px; + text-wrap: balance; text-shadow: 0 2px 30px rgba(0,0,0,0.38); + } + @media (max-width: 1024px) { .dm-banner-title { font-size: clamp(32px, 6vw, 48px) !important; max-width: 90%; } } + @media (max-width: 600px) { .dm-banner-title { font-size: clamp(28px, 8vw, 38px) !important; max-width: 90%; } } + + /* Content wrap begins immediately below the banner */ + /* Shared content container: the SAME max-width + horizontal padding is used + by BlogPostFooter (.dm-blog-footer-inner) so the article body, headings, + images, Prev/Next, Related Articles and the CTA banner all align to one + grid with identical left/right edges. Keep both in sync. */ + .dm-blog-wrap { + max-width: 1280px; margin: 0 auto; + /* 20px mobile padding floor → 40px on desktop; matches the footer container. */ + padding: clamp(14px, 2vw, 26px) clamp(20px, 4vw, 40px) 0; + } + @media (max-width: 767px) { + .dm-blog-wrap { + padding-left: 16px; + padding-right: 16px; + } + } + + /* ── Article meta bar (directly under the hero) ── */ + .dm-meta-bar { + display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 14px 24px; + padding: clamp(20px, 2.6vw, 30px) 0; margin-bottom: clamp(26px, 3vw, 44px); + border-bottom: 1px solid rgba(15,23,42,0.10); + } + .dm-meta-breadcrumb ol { + list-style: none; display: flex; flex-wrap: wrap; align-items: center; + gap: 8px; margin: 0; padding: 0; font-size: 13px; font-weight: 600; color: #64748b; + } + .dm-meta-breadcrumb a { color: #64748b !important; text-decoration: none; transition: color .2s ease; } + .dm-meta-breadcrumb a:hover { color: var(--dm-red) !important; } + .dm-meta-sep { color: #cbd5e1; } + .dm-meta-current { + color: #0f172a; font-weight: 700; + max-width: min(40ch, 46vw); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; + } + @media (max-width: 600px) { .dm-meta-current { max-width: 56vw; } } + .dm-meta-items { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 20px; } + .dm-meta-item { + display: inline-flex; align-items: center; gap: 7px; + font-size: 13.5px; font-weight: 600; color: #475569; + } + .dm-meta-item svg { color: var(--dm-red); flex: 0 0 auto; } + .dm-meta-author { color: #0f172a; font-weight: 700; } + @media (max-width: 600px) { .dm-meta-bar { gap: 12px; } } + .dm-blog-layout { + display: grid; grid-template-columns: minmax(0,1fr) 320px; + /* Tighter gap gives the reading column more room next to the 320px sidebar. */ + gap: clamp(28px, 3vw, 56px); align-items: start; + } + @media (max-width: 1024px) { + .dm-blog-layout { grid-template-columns: 1fr; gap: 48px; } + /* Single-column (tablet/mobile): cap the reading column and centre it so the + article never sits left-aligned with a large empty right gutter. */ + .dm-blog-main { max-width: 900px; margin-inline: auto; } + } + .dm-blog-main { min-width: 0; } + + /* ── Intro lead ── */ + .dm-blog-intro { + max-width: var(--dm-measure); + font-size: clamp(18px, 1.5vw, 20px); line-height: 1.65; font-weight: 500; + color: #475569; margin: 0 0 clamp(26px, 3vw, 38px); padding-left: 20px; + border-left: 3px solid var(--dm-red); + } + + /* ── Article body ── */ + .dm-article-body { max-width: var(--dm-measure); } + .dm-article-p { + font-size: 18px !important; line-height: 1.8 !important; color: #334155; font-weight: 450; + margin: 0 0 var(--dm-space-p); + } + .dm-article-h2 { + font-size: clamp(23px, 2vw, 30px) !important; font-weight: 800 !important; letter-spacing: -.3px !important; + color: #0f172a !important; line-height: 1.3 !important; margin: 48px 0 var(--dm-space-h); + text-wrap: balance; + } + /* Each article block is wrapped in its OWN ScrollReveal
    , so a bare + :first-child rule matched every heading (each is the only child of its + wrapper) and zeroed its top margin, collapsing the gap above every + section heading. Scope the reset to only the article body's first block. */ + .dm-article-body > :first-child :where(.dm-article-h2, .dm-article-h3), + .dm-article-body > .dm-article-h2:first-child, + .dm-article-body > .dm-article-h3:first-child { margin-top: 0; } + .dm-article-h3 { + font-size: clamp(19px, 1.5vw, 23px) !important; font-weight: 800 !important; letter-spacing: -.2px !important; + color: #1e293b !important; line-height: 1.34 !important; margin: 40px 0 18px; + text-wrap: balance; + } + @media (max-width: 600px) { + .dm-article-p { font-size: 16px !important; } + .dm-article-ul li, .dm-article-ol li { font-size: 15.5px; } + .dm-article-h2 { font-size: clamp(22px, 6vw, 28px) !important; margin-top: 38px; } + .dm-article-h3 { font-size: clamp(18px, 5vw, 22px) !important; } + } + + .dm-article-ul, .dm-article-ol { + /* Top margin (was 0) separates the list from the paragraph above it; + matching bottom margin keeps it clear of the next heading/paragraph. + Slightly larger than --dm-space-p so the list reads as its own block. */ + margin: clamp(26px, 2.4vw, 32px) 0 clamp(26px, 2.4vw, 32px); + padding-left: 2px; list-style: none; + display: flex; flex-direction: column; gap: 15px; + } + /* Prefixed with .dm-article-body so these beat the theme's global + ".logico-front-end ul li:before" fontello-glyph bullet (specificity 0,1,3), + which otherwise replaces our clean red dot with a misaligned checkmark glyph + and adds its own 1.7em indent. */ + .dm-article-body .dm-article-ul li, .dm-article-body .dm-article-ol li { + position: relative; padding-left: 34px; + font-size: 17px; line-height: 1.65; color: #334155; font-weight: 450; + } + .dm-article-body .dm-article-ul li::before { + content: ""; position: absolute; left: 7px; top: 10px; + width: 8px; height: 8px; border-radius: 50%; background: var(--dm-red); + /* kill any inherited fontello glyph from the global rule */ + font-size: 0; line-height: 0; + } + .dm-article-ol { counter-reset: dm-li; } + .dm-article-body .dm-article-ol li { counter-increment: dm-li; } + .dm-article-body .dm-article-ol li::before { + content: counter(dm-li); position: absolute; left: 0; top: 0; + width: 24px; height: 24px; border-radius: 7px; + background: rgba(192,18,39,0.10); color: var(--dm-red); + font-size: 12px; font-weight: 800; display: flex; align-items: center; justify-content: center; + } + + /* ── Quote ── */ + .dm-article-quote { + position: relative; margin: var(--dm-space-quote) 0; padding: 30px 32px 30px 64px; + background: linear-gradient(135deg, #fbf2f3 0%, #fdf7f8 100%); + border-left: 4px solid var(--dm-red); border-radius: 0 18px 18px 0; + box-shadow: 0 8px 28px rgba(192, 18, 39, 0.06); + } + .dm-article-quote::before { + content: "\201C"; position: absolute; left: 22px; top: 8px; + font-family: Georgia, "Times New Roman", serif; + font-size: 64px; line-height: 1; color: rgba(192, 18, 39, 0.28); font-weight: 700; + } + .dm-article-quote p { + font-size: clamp(19px, 2vw, 23px); line-height: 1.5; font-weight: 600; + font-style: italic; color: #1e293b; margin: 0; + } + .dm-article-quote cite { + display: block; margin-top: 16px; font-size: 13px; font-weight: 700; + font-style: normal; color: var(--dm-red); text-transform: uppercase; letter-spacing: .6px; + } + @media (max-width: 600px) { .dm-article-quote { padding: 26px 22px; } .dm-article-quote::before { display: none; } } + + /* ── Images ── */ + .dm-article-figure { margin: var(--dm-space-img) 0; } + .dm-article-figure-img { + position: relative; display: block; width: 100%; aspect-ratio: 16 / 9; + border-radius: var(--dm-radius-img); overflow: hidden; box-shadow: 0 14px 34px rgba(15,23,42,0.10); + } + .dm-article-figure figcaption { + margin-top: 14px; font-size: 13.5px; color: #94a3b8; font-weight: 500; + text-align: center; font-style: italic; + } + + /* ── Sidebar ── */ + .dm-blog-aside-wrap { position: relative; } + .dm-blog-sidebar { + display: flex; flex-direction: column; gap: 18px; + position: sticky; top: var(--dm-sticky-top); + } + @media (max-width: 1024px) { .dm-blog-sidebar { position: static; gap: 20px; } } + + .dm-blog-widget { + background: #fff; border: var(--dm-border); border-radius: var(--dm-radius-card); + padding: 20px; box-shadow: var(--dm-shadow-card); + } + .dm-blog-widget-title { + font-size: 13px !important; font-weight: 700 !important; text-transform: uppercase !important; + letter-spacing: .8px !important; line-height: 1.35 !important; color: #0f172a !important; + margin: 0 0 15px; padding: 0 0 12px; + border-bottom: 1px solid rgba(15,23,42,0.08); + overflow: visible; white-space: normal; word-break: normal; + } + + /* Search */ + .dm-sr-only { + position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; + overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; + } + .dm-blog-search { position: relative; } + .dm-blog-search-form { position: relative; } + .dm-blog-search-input { + width: 100%; height: 46px; border: 1.5px solid #e2e8f0; border-radius: 12px; + padding: 0 42px 0 15px; font-size: 14px; font-family: inherit; color: #0f172a; + background: #f8fafc; transition: border-color .2s ease, box-shadow .2s ease, background .2s ease; + } + .dm-blog-search-input::placeholder { color: #9c9c9c; } + .dm-blog-search-input:focus { + outline: none; border-color: var(--dm-red); background: #fff; + box-shadow: 0 0 0 3px rgba(192,18,39,0.11); + } + .dm-blog-search-icon { + position: absolute; right: 14px; top: 50%; transform: translateY(-50%); + color: #94a3b8; pointer-events: none; display: flex; + } + .dm-blog-search-results { + position: absolute; z-index: 20; top: calc(100% + 8px); left: 0; right: 0; + background: #fff; border: 1px solid rgba(15,23,42,0.10); border-radius: 14px; + box-shadow: 0 18px 42px rgba(15,23,42,0.14); overflow: hidden; + } + .dm-blog-search-results ul { list-style: none; margin: 0; padding: 6px; } + .dm-blog-search-result { + display: flex; flex-direction: column; gap: 3px; padding: 10px 12px; + border-radius: 10px; text-decoration: none; transition: background .15s ease; + } + .dm-blog-search-result:hover { background: #f8fafc; } + .dm-blog-search-result-cat { + font-size: 10px; font-weight: 800; text-transform: uppercase; letter-spacing: .8px; color: var(--dm-red); + } + .dm-blog-search-result-title { font-size: 13.5px; font-weight: 600; color: #1e293b; line-height: 1.35; } + .dm-blog-search-empty { margin: 0; padding: 14px 12px; font-size: 13px; color: #64748b; } + + /* Recent posts */ + .dm-blog-recent { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 15px; } + .dm-blog-recent-item { display: flex; gap: 13px; align-items: center; text-decoration: none; } + .dm-blog-recent-thumb { + position: relative; flex: 0 0 62px; width: 62px; height: 62px; + border-radius: 13px; overflow: hidden; background: #f1f5f9; + } + .dm-blog-recent-meta { display: flex; flex-direction: column; gap: 4px; min-width: 0; } + .dm-blog-recent-title { + font-size: 13.5px; font-weight: 700; color: #1e293b; line-height: 1.35; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-blog-recent-item:hover .dm-blog-recent-title { color: var(--dm-red); } + .dm-blog-recent-date { font-size: 11.5px; font-weight: 600; color: #94a3b8; } + + /* Categories */ + .dm-blog-categories { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; } + .dm-blog-category-item { + display: flex; align-items: center; justify-content: space-between; gap: 10px; + padding: 11px 2px; text-decoration: none; font-size: 14px; font-weight: 600; color: #334155 !important; + border-bottom: 1px solid rgba(15,23,42,0.06); transition: color .2s ease, padding-left .2s ease; + } + .dm-blog-categories li:last-child .dm-blog-category-item { border-bottom: none; } + .dm-blog-category-item:hover { color: var(--dm-red); padding-left: 6px; } + .dm-blog-category-item > span:first-child { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } + .dm-blog-category-count { + flex: 0 0 auto; font-size: 11px; font-weight: 800; color: #94a3b8; background: #f1f5f9; + min-width: 24px; height: 22px; border-radius: 7px; display: inline-flex; + align-items: center; justify-content: center; padding: 0 7px; + } + + /* CTA card */ + .dm-blog-cta-card { background: #1f1f1f; border-color: #1f1f1f; } + .dm-blog-cta-title { font-size: 18px !important; font-weight: 800 !important; color: #fff !important; line-height: 1.32 !important; margin: 0 0 10px; letter-spacing: -.2px !important; } + .dm-blog-cta-text { font-size: 13.5px; line-height: 1.6; color: #c7c7c7; margin: 0 0 20px; font-weight: 450; } + .dm-blog-cta-btn { + display: inline-flex; align-items: center; gap: 8px; + background: var(--dm-red); color: #fff !important; font-size: 13.5px; font-weight: 700; + padding: 12px 22px; border-radius: 12px; text-decoration: none; + transition: background .2s ease, transform .2s ease; + } + .dm-blog-cta-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } +0:{"rsc":["$","$1","c",{"children":[["$","div",null,{"className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":[["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"Article\",\"headline\":\"Why Mathematical Precision Beats Heuristics in Routing\",\"description\":\"Fixed routing rules are easy to start with, but they often miss better stop sequences as order volume grows.\",\"image\":[\"https://www.doormile.com/images/blog-post-pic-14.webp\"],\"datePublished\":\"2025-08-07T00:00:00.000Z\",\"dateModified\":\"2025-08-07T00:00:00.000Z\",\"author\":{\"@type\":\"Organization\",\"name\":\"Doormile Team\",\"url\":\"https://www.doormile.com\"},\"publisher\":{\"@type\":\"Organization\",\"name\":\"Doormile\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://www.doormile.com/images/cropped-image-2.png\"}},\"mainEntityOfPage\":{\"@type\":\"WebPage\",\"@id\":\"https://www.doormile.com/blog/why-mathematical-precision-beats-heuristics-in-routing\"},\"articleSection\":\"Technology\"}"}}],["$","script",null,{"type":"application/ld+json","dangerouslySetInnerHTML":{"__html":"{\"@context\":\"https://schema.org\",\"@type\":\"BreadcrumbList\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https://www.doormile.com\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Blog\",\"item\":\"https://www.doormile.com/blog\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Why Mathematical Precision Beats Heuristics in Routing\",\"item\":\"https://www.doormile.com/blog/why-mathematical-precision-beats-heuristics-in-routing\"}]}"}}],["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":[["$","article",null,{"className":"dm-single-blog","children":[["$","link",null,{"rel":"preload","as":"image","href":"/images/blog-post-pic-14.webp"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$2"}}],"$L3","$L4"]}],"$L5"]}]}]]}],["$L6"],"$L7"]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} +3:["$","div",null,{"className":"custom-standard-hero-container","children":["$","div",null,{"className":"custom-standard-hero-card dm-banner-card","style":{"backgroundImage":"url(/images/blog-post-pic-14.webp)","--hero-overlay":"linear-gradient(180deg, rgba(0,0,0,0.38) 0%, rgba(0,0,0,0.46) 55%, rgba(0,0,0,0.60) 100%)"},"children":["$","div",null,{"className":"e-con-inner dm-banner-inner","children":[["$","span",null,{"className":"dm-banner-category","children":"Technology"}],["$","h1",null,{"className":"dm-banner-title","children":"Why Mathematical Precision Beats Heuristics in Routing"}]]}]}]}] +4:["$","div",null,{"className":"dm-blog-wrap","children":[["$","div",null,{"className":"dm-meta-bar","children":[["$","nav",null,{"className":"dm-meta-breadcrumb","aria-label":"Breadcrumb","children":["$","ol",null,{"children":[["$","li",null,{"children":["$","$L8",null,{"href":"/","children":"Home"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"children":["$","$L8",null,{"href":"/blog","children":"Blog"}]}],["$","li",null,{"aria-hidden":"true","className":"dm-meta-sep","children":"/"}],["$","li",null,{"aria-current":"page","className":"dm-meta-current","children":"Why Mathematical Precision Beats Heuristics in Routing"}]]}]}],["$","div",null,{"className":"dm-meta-items","children":[["$","span",null,{"className":"dm-meta-item dm-meta-author","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","path",null,{"d":"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"}],["$","circle",null,{"cx":"12","cy":"7","r":"4"}]]}],"Doormile Team"]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","rect",null,{"x":"3","y":"4","width":"18","height":"18","rx":"2"}],["$","line",null,{"x1":"16","y1":"2","x2":"16","y2":"6"}],["$","line",null,{"x1":"8","y1":"2","x2":"8","y2":"6"}],["$","line",null,{"x1":"3","y1":"10","x2":"21","y2":"10"}]]}],["$","time",null,{"dateTime":"2025-08-07","children":"Aug 7, 2025"}]]}],["$","span",null,{"className":"dm-meta-item","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","circle",null,{"cx":"12","cy":"12","r":"9"}],["$","polyline",null,{"points":"12 7 12 12 15 14"}]]}],2," min read"]}]]}]]}],["$","div",null,{"className":"dm-blog-layout","children":[["$","div",null,{"className":"dm-blog-main","children":[["$","p",null,{"className":"dm-blog-intro","children":"Simple routing rules are fast to set up, but they can quietly add distance every day. Better planning compares more route options before dispatch."}],["$","div",null,{"className":"dm-article-body","children":[["$","$L9","0",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"In last-mile logistics, a missed SLA is rarely caused by one big failure. It usually comes from small delays adding up across a route. Why Mathematical Precision Beats Heuristics in Routing looks at how delivery teams can spot those delays early and plan around them before vehicles leave the hub."}]}],["$","$L9","1",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"Why this matters for fleet teams"}]}],["$","$L9","2",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"Every extra kilometre costs money. It uses fuel or charge, adds rider time, wears down vehicles, and increases the chance of a late delivery. When routes are built from fixed zones or old habits, those costs repeat every day."}]}],["$","$L9","3",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ul",null,{"className":"dm-article-ul","children":[["$","li","0",{"children":"Fewer vehicles needed for the same number of drops"}],["$","li","1",{"children":"Lower cost per drop through better stop sequencing"}],["$","li","2",{"children":"ETAs that match traffic, distance, and delivery windows"}],["$","li","3",{"children":"Less fuel or charge used per completed order"}]]}]}],["$","$L9","4",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h3",null,{"className":"dm-article-h3","children":"From orders to dispatch"}]}],["$","$L9","5",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"A good dispatch plan starts with the basics: order locations, promised delivery windows, rider capacity, vehicle range, and known traffic trouble spots. MileTruth™ checks those inputs before dispatch so the team is not fixing avoidable mistakes on the road."}]}],["$","$L9","6",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","figure",null,{"className":"dm-article-figure","children":[["$","span",null,{"className":"dm-article-figure-img","children":"$La"}],"$Lb"]}]}],"$Lc","$Ld","$Le","$Lf","$L10"]}]]}],"$L11"]}]]}] +12:T2021, + .dm-blog-footer { + font-family: var(--font-manrope), sans-serif; --dm-red: #c01227; --dm-red-hover: #e31d32; + /* The global theme applies 72px top/bottom section padding — strip it so the + inner container is the single source of vertical rhythm (no double gap). */ + padding: 0 !important; + } + /* Neutralize the global theme's 120/80/60px UPPERCASE heading rules */ + .dm-blog-footer :where(h1, h2, h3, h4, h5, h6) { + font-family: var(--font-manrope), sans-serif !important; + text-transform: none !important; + font-style: normal !important; + font-weight: 800; + } + /* Neutralize the theme's .elementor-kit-5 a (red color + underline) */ + .dm-blog-footer a { text-decoration: none !important; } + /* Shared content container — mirrors SingleBlog's .dm-blog-wrap (same 1280px + max-width + 20→40px horizontal padding) so Prev/Next, Related and the CTA + align to the exact same left/right edges as the article body above. + Vertical rhythm: ~64px from the article end to the Prev/Next divider, then a + consistent ~64–72px section→section gap (no 120px+ voids). */ + .dm-blog-footer-inner { + max-width: 1280px; margin: 0 auto; + /* Compact vertical rhythm on an 8px system. Top padding sets the + article→Prev/Next gap (~24–32px); the inter-section gap sets the + Prev/Next→Related gap (~32–48px). No large arbitrary voids. */ + /* Minimal bottom padding — the global site footer already contributes its + own 20px top inset, so the CTA banner sits close to it without a void. */ + padding: clamp(24px, 3vw, 32px) clamp(20px, 4vw, 40px) clamp(8px, 1.5vw, 16px); + display: flex; flex-direction: column; gap: clamp(32px, 4vw, 48px); + } + @media (max-width: 767px) { + .dm-blog-footer-inner { + padding-left: 16px; + padding-right: 16px; + } + } + + /* Prev / Next */ + .dm-prevnext { + display: grid; grid-template-columns: 1fr 1fr; gap: 20px; + /* Halved from 40px: tight divider→cards spacing without crowding. */ + padding-top: clamp(16px, 2vw, 24px); border-top: 1px solid rgba(15,23,42,0.08); + } + @media (max-width: 640px) { .dm-prevnext { grid-template-columns: 1fr; } } + .dm-prevnext-placeholder { display: block; } + .dm-prevnext-card { + display: flex; gap: 16px; align-items: center; padding: 16px; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + text-decoration: none; transition: transform .3s ease, box-shadow .3s ease, border-color .3s ease; + } + .dm-prevnext-card:hover { + transform: translateY(-4px); border-color: rgba(192,18,39,0.2); + box-shadow: 0 16px 34px rgba(192,18,39,0.10); + } + .dm-prevnext-thumb { + position: relative; flex: 0 0 80px; width: 80px; height: 80px; + border-radius: 16px; overflow: hidden; background: #f1f5f9; + } + .dm-prevnext-text { display: flex; flex-direction: column; gap: 5px; min-width: 0; } + .dm-prevnext-next { text-align: right; } + .dm-prevnext-next .dm-prevnext-text { align-items: flex-end; } + .dm-prevnext-label { + display: inline-flex; align-items: center; gap: 6px; + font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: 1px; color: var(--dm-red); + } + .dm-prevnext-cat { font-size: 11px; font-weight: 700; color: #94a3b8; text-transform: uppercase; letter-spacing: .5px; } + .dm-prevnext-title { + font-size: 15.5px; font-weight: 700; color: #1e293b; line-height: 1.4; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-prevnext-card:hover .dm-prevnext-title { color: var(--dm-red); } + + /* Related */ + .dm-related-heading { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 850 !important; letter-spacing: -.4px !important; + line-height: 1.25 !important; color: #0f172a !important; margin: 0 0 24px; + } + .dm-related-grid { + display: grid; grid-template-columns: repeat(3, 1fr); gap: 28px; + } + @media (max-width: 1024px) { .dm-related-grid { grid-template-columns: repeat(2, 1fr); } } + @media (max-width: 700px) { .dm-related-grid { grid-template-columns: 1fr; gap: 24px; } } + + .dm-related-card { + display: flex; flex-direction: column; height: 100%; + background: #fff; border: 1px solid rgba(15,23,42,0.09); border-radius: 22px; + overflow: hidden; box-shadow: 0 4px 24px rgba(15,23,42,0.05); text-decoration: none; + transition: transform .4s cubic-bezier(0.2,0.8,0.2,1), box-shadow .4s ease, border-color .4s ease; + } + .dm-related-card:hover { + transform: translateY(-8px); box-shadow: 0 22px 44px rgba(192,18,39,0.13); + border-color: rgba(192,18,39,0.2); + } + .dm-related-img { + position: relative; width: 100%; aspect-ratio: 16 / 10; overflow: hidden; background: #f1f5f9; + } + .dm-related-img img { transition: transform .5s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-img img { transform: scale(1.05); } + .dm-related-badge { + position: absolute; top: 14px; left: 14px; z-index: 5; background: var(--dm-red); color: #fff; + font-size: 9px; font-weight: 800; text-transform: uppercase; letter-spacing: 1.2px; + padding: 5px 11px; border-radius: 8px; box-shadow: 0 4px 12px rgba(192,18,39,0.25); + } + .dm-related-body { display: flex; flex-direction: column; flex: 1; padding: 22px; } + .dm-related-card-title { + font-size: 17px !important; font-weight: 800 !important; color: #1e293b !important; line-height: 1.4 !important; + letter-spacing: -.2px !important; margin: 0 0 10px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + transition: color .2s ease; + } + .dm-related-card:hover .dm-related-card-title { color: var(--dm-red); } + .dm-related-card-excerpt { + font-size: 13.5px; font-weight: 500; color: #64748b; line-height: 1.6; margin: 0 0 18px; + display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; + } + .dm-related-readmore { + margin-top: auto; display: inline-flex; align-items: center; gap: 7px; + font-size: 12.5px; font-weight: 800; color: var(--dm-red); + text-transform: uppercase; letter-spacing: .6px; + } + .dm-related-readmore-arrow { transition: transform .3s cubic-bezier(0.2,0.8,0.2,1); } + .dm-related-card:hover .dm-related-readmore-arrow { transform: translateX(5px); } + + /* Contact CTA banner */ + .dm-blog-contact-cta { + display: flex; align-items: center; justify-content: space-between; gap: 32px; + flex-wrap: wrap; + background: linear-gradient(135deg, #1a1a1a 0%, #2d1417 100%); + border-radius: 30px; padding: clamp(32px, 4vw, 56px); + position: relative; overflow: hidden; + } + .dm-blog-contact-cta::after { + content: ""; position: absolute; right: -80px; top: -80px; width: 300px; height: 300px; + background: radial-gradient(circle, rgba(192,18,39,0.40), transparent 70%); + pointer-events: none; + } + .dm-blog-contact-cta-content { position: relative; z-index: 1; max-width: 640px; } + .dm-blog-contact-eyebrow { + display: inline-block; font-size: 12px; font-weight: 800; text-transform: uppercase; + letter-spacing: 1.4px; color: #ff8088; margin-bottom: 14px; + } + .dm-blog-contact-title { + font-size: clamp(22px, 2.2vw, 28px) !important; font-weight: 800 !important; line-height: 1.25 !important; + letter-spacing: -.3px !important; color: #ffffff !important; margin: 0 0 12px; text-wrap: balance; + } + .dm-blog-contact-sub { + font-size: 15.5px; line-height: 1.65; color: #e2e2e2; margin: 0; font-weight: 450; + } + .dm-blog-contact-btn { + position: relative; z-index: 1; flex-shrink: 0; + display: inline-flex; align-items: center; justify-content: center; gap: 10px; + background: var(--dm-red); color: #fff !important; font-size: 15px; font-weight: 700; + padding: 16px 32px; border-radius: 16px; text-decoration: none; + box-shadow: 0 10px 26px rgba(192,18,39,0.34); + transition: background .2s ease, transform .2s ease; + } + .dm-blog-contact-btn:hover { background: var(--dm-red-hover); transform: translateY(-2px); } + @media (max-width: 720px) { + .dm-blog-contact-cta { flex-direction: column; align-items: flex-start; gap: 26px; } + .dm-blog-contact-btn { width: 100%; } + } +5:["$","section",null,{"className":"dm-blog-footer","aria-label":"More articles","children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$12"}}],"$L13"]}] +6:["$","script","script-0",{"src":"/_next/static/chunks/0yvxf3ok9gcp_.js","async":true}] +7:["$","$L14",null,{"children":["$","$15",null,{"name":"Next.MetadataOutlet","children":"$@16"}]}] +a:["$","$L17",null,{"src":"/images/blog-post-pic-14.webp","alt":"Why Mathematical Precision Beats Heuristics in Routing","fill":true,"sizes":"(max-width: 768px) 100vw, 760px","style":{"objectFit":"cover"}}] +b:["$","figcaption",null,{"children":"Technology: route planning decisions made before dispatch."}] +c:["$","$L9","7",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","blockquote",null,{"className":"dm-article-quote","children":[["$","p",null,{"children":"A route should be checked before the rider leaves, not explained after the customer calls."}],["$","cite",null,{"children":"Doormile Operations"}]]}]}] +d:["$","$L9","8",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","h2",null,{"className":"dm-article-h2","children":"Putting it into practice"}]}] +e:["$","$L9","9",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"The best improvements usually start with simple measurements. Track distance per route, failed delivery windows, rider idle time, and orders moved between vehicles after dispatch. Those numbers show where the operation is leaking time."}]}] +f:["$","$L9","10",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","ol",null,{"className":"dm-article-ol","children":[["$","li","0",{"children":"Benchmark today's distance, fleet size, and on-time rate."}],["$","li","1",{"children":"Include vehicle capacity, delivery windows, rider shifts, and battery charge."}],["$","li","2",{"children":"Check routes against traffic and customer commitments before dispatch."}],["$","li","3",{"children":"Compare the next dispatch cycle against the old plan."}]]}]}] +10:["$","$L9","11",{"delay":0,"duration":0.6,"yOffset":20,"children":["$","p",null,{"className":"dm-article-p","children":"Better routing is not about pushing riders harder. It is about giving them a plan that already accounts for the real day ahead."}]}] +11:["$","div",null,{"className":"dm-blog-aside-wrap","children":["$","aside",null,{"className":"dm-blog-sidebar","aria-label":"Blog sidebar","children":[["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Search"}],["$","$L18",null,{}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Recent Posts"}],["$","ul",null,{"className":"dm-blog-recent","children":[["$","li","how-ai-is-transforming-last-mile-ev-delivery",{"children":["$","$L8",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L17",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"How Better Planning Improves Last-Mile EV Delivery"}],["$","time",null,{"dateTime":"2025-10-02","className":"dm-blog-recent-date","children":"Oct 2, 2025"}]]}]]}]}],["$","li","42-less-distance-insights-from-our-hyderabad-hub",{"children":["$","$L8",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L17",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}],["$","time",null,{"dateTime":"2025-09-18","className":"dm-blog-recent-date","children":"Sep 18, 2025"}]]}]]}]}],["$","li","miletruth-ai-10-stages-to-smarter-dispatch",{"children":["$","$L8",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L17",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","time",null,{"dateTime":"2025-09-05","className":"dm-blog-recent-date","children":"Sep 5, 2025"}]]}]]}]}],["$","li","the-ev-paradox-solving-range-anxiety-for-urban-fleets",{"children":["$","$L8",null,{"href":"/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets","className":"dm-blog-recent-item","children":[["$","span",null,{"className":"dm-blog-recent-thumb","children":["$","$L17",null,{"src":"/images/ev-paradox.webp","alt":"The EV Paradox: Solving Range Anxiety for Urban Fleets","fill":true,"sizes":"62px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-blog-recent-meta","children":[["$","span",null,{"className":"dm-blog-recent-title","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}],["$","time",null,{"dateTime":"2025-08-21","className":"dm-blog-recent-date","children":"Aug 21, 2025"}]]}]]}]}]]}]]}],["$","section",null,{"className":"dm-blog-widget","children":[["$","h2",null,{"className":"dm-blog-widget-title","children":"Categories"}],["$","ul",null,{"className":"dm-blog-categories","children":[["$","li","Case Study",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Case Study"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","EV Fleet",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"EV Fleet"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}],["$","li","Fleet Management",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Fleet Management"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],["$","li","MileTruth",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"MileTruth"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}],"$L19","$L1a","$L1b"]}]]}],"$L1c"]}]}] +13:["$","div",null,{"className":"dm-blog-footer-inner","children":[["$","nav",null,{"className":"dm-prevnext","aria-label":"Article navigation","children":[["$","$L8",null,{"href":"/blog/the-ev-paradox-solving-range-anxiety-for-urban-fleets","className":"dm-prevnext-card dm-prevnext-prev","children":[["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L17",null,{"src":"/images/ev-paradox.webp","alt":"The EV Paradox: Solving Range Anxiety for Urban Fleets","fill":true,"sizes":"80px","style":{"objectFit":"cover"}}]}],["$","span",null,{"className":"dm-prevnext-text","children":[["$","span",null,{"className":"dm-prevnext-label","children":[["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"19","y1":"12","x2":"5","y2":"12"}],["$","polyline",null,{"points":"12 19 5 12 12 5"}]]}],"Previous"]}],["$","span",null,{"className":"dm-prevnext-cat","children":"EV Fleet"}],["$","span",null,{"className":"dm-prevnext-title","children":"The EV Paradox: Solving Range Anxiety for Urban Fleets"}]]}]]}],["$","$L8",null,{"href":"/blog/fleet-reduction-without-compromising-delivery-volume","className":"dm-prevnext-card dm-prevnext-next","children":[["$","span",null,{"className":"dm-prevnext-text","children":[["$","span",null,{"className":"dm-prevnext-label","children":["Next",["$","svg",null,{"width":"15","height":"15","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}],["$","span",null,{"className":"dm-prevnext-cat","children":"Fleet Management"}],["$","span",null,{"className":"dm-prevnext-title","children":"Fleet Reduction Without Compromising Delivery Volume"}]]}],["$","span",null,{"className":"dm-prevnext-thumb","children":["$","$L17",null,{"src":"/images/blog-post-pic-8.webp","alt":"Fleet Reduction Without Compromising Delivery Volume","fill":true,"sizes":"80px","style":{"objectFit":"cover"}}]}]]}]]}],["$","div",null,{"className":"dm-related","children":[["$","h2",null,{"className":"dm-related-heading","children":"Related Articles"}],["$","div",null,{"className":"dm-related-grid","children":[["$","$L9","how-ai-is-transforming-last-mile-ev-delivery",{"delay":0,"duration":0.7,"yOffset":30,"children":["$","$L8",null,{"href":"/blog/how-ai-is-transforming-last-mile-ev-delivery","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L17",null,{"src":"/images/blog-post-pic-17.webp","alt":"How Better Planning Improves Last-Mile EV Delivery","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Technology"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"How Better Planning Improves Last-Mile EV Delivery"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"A practical look at how EV fleets can plan routes, manage charging, and keep delivery promises without adding unnecessary vehicles."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}],["$","$L9","42-less-distance-insights-from-our-hyderabad-hub",{"delay":0.08,"duration":0.7,"yOffset":30,"children":["$","$L8",null,{"href":"/blog/42-less-distance-insights-from-our-hyderabad-hub","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L17",null,{"src":"/images/blog-post-pic-15.webp","alt":"42% Less Distance: Insights from Our Hyderabad Hub","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"Case Study"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"42% Less Distance: Insights from Our Hyderabad Hub"}],"$L1d","$L1e"]}]]}]}],"$L1f"]}]]}],"$L20"]}] +16:null +19:["$","li","Operations",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Operations"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +1a:["$","li","Sustainability",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Sustainability"}],["$","span",null,{"className":"dm-blog-category-count","children":1}]]}]}] +1b:["$","li","Technology",{"children":["$","$L8",null,{"href":"/blog","className":"dm-blog-category-item","children":[["$","span",null,{"children":"Technology"}],["$","span",null,{"className":"dm-blog-category-count","children":2}]]}]}] +1c:["$","section",null,{"className":"dm-blog-widget dm-blog-cta-card","children":[["$","h2",null,{"className":"dm-blog-cta-title","children":"Planning delivery routes?"}],["$","p",null,{"className":"dm-blog-cta-text","children":"Talk to us about reducing wasted distance, missed windows, and avoidable vehicle time."}],["$","$L8",null,{"href":"/contact","className":"dm-blog-cta-btn","children":["Contact Us",["$","svg",null,{"width":"18","height":"18","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] +1d:["$","p",null,{"className":"dm-related-card-excerpt","children":"A practical look at how one Hyderabad hub reduced distance, used fewer vehicles, and protected delivery windows with better route planning."}] +1e:["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}] +1f:["$","$L9","miletruth-ai-10-stages-to-smarter-dispatch",{"delay":0.16,"duration":0.7,"yOffset":30,"children":["$","$L8",null,{"href":"/blog/miletruth-ai-10-stages-to-smarter-dispatch","className":"dm-related-card","children":[["$","div",null,{"className":"dm-related-img","children":[["$","$L17",null,{"src":"/images/blog-post-pic-31.webp","alt":"MileTruth™: 10 Stages to Smarter Dispatch","fill":true,"sizes":"(max-width: 700px) 100vw, (max-width: 1024px) 50vw, 33vw","style":{"objectFit":"cover"}}],["$","span",null,{"className":"dm-related-badge","children":"MileTruth"}]]}],["$","div",null,{"className":"dm-related-body","children":[["$","h3",null,{"className":"dm-related-card-title","children":"MileTruth™: 10 Stages to Smarter Dispatch"}],["$","p",null,{"className":"dm-related-card-excerpt","children":"From order intake to final route output, here is how a dispatch plan is checked before riders leave the hub."}],["$","span",null,{"className":"dm-related-readmore","children":["Read More",["$","svg",null,{"className":"dm-related-readmore-arrow","width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}]]}]}] +20:["$","div",null,{"className":"dm-blog-contact-cta","children":[["$","div",null,{"className":"dm-blog-contact-cta-content","children":[["$","span",null,{"className":"dm-blog-contact-eyebrow","children":"Let's talk logistics"}],["$","h2",null,{"className":"dm-blog-contact-title","children":"Ready to move smarter with Doormile?"}],["$","p",null,{"className":"dm-blog-contact-sub","children":"Tell us about your fleet and routes — we'll show you where the distance, vehicles and emissions are hiding."}]]}],["$","$L8",null,{"href":"/contact","className":"dm-blog-contact-btn","children":["Get in Touch",["$","svg",null,{"width":"20","height":"20","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.5","strokeLinecap":"round","strokeLinejoin":"round","aria-hidden":"true","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"12 5 19 12 12 19"}]]}]]}]]}] diff --git a/build/blog/why-mathematical-precision-beats-heuristics-in-routing/__next.blog.$d$slug.txt b/build/blog/why-mathematical-precision-beats-heuristics-in-routing/__next.blog.$d$slug.txt new file mode 100644 index 0000000..e0935ae --- /dev/null +++ b/build/blog/why-mathematical-precision-beats-heuristics-in-routing/__next.blog.$d$slug.txt @@ -0,0 +1,5 @@ +1:"$Sreact.fragment" +2:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:[] +0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/blog/why-mathematical-precision-beats-heuristics-in-routing/__next.blog.txt b/build/blog/why-mathematical-precision-beats-heuristics-in-routing/__next.blog.txt new file mode 100644 index 0000000..e0935ae --- /dev/null +++ b/build/blog/why-mathematical-precision-beats-heuristics-in-routing/__next.blog.txt @@ -0,0 +1,5 @@ +1:"$Sreact.fragment" +2:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:[] +0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/contact.html b/build/contact.html new file mode 100644 index 0000000..9137844 --- /dev/null +++ b/build/contact.html @@ -0,0 +1,914 @@ +Contact Us – Doormile

    Doormile

    Doormile logo
    Address
    Hyderabad

    5th Floor, Vision Ultima,
    Street No.3, Jayabheri Enclave,
    Gachibowli, Hyderabad,
    Telangana 500032.

    Coimbatore

    Mayflower Valencia,
    Near Nava India Bus Stop,
    Avinashi Road,
    Udayampalayam,
    Tamil Nadu 641037.

    Bengaluru

    C612, 6th Floor,
    Trifecta Starlight,
    ITPL Road,
    Garudacharapalya,
    Mahadevapura,
    Bangalore 560048,
    Karnataka, India.

    Contact Us

    Tel : +91 86886 97941

    Email

    care@doormile.com

    Delivering Trust.Beyond Boundaries.

    \ No newline at end of file diff --git a/build/contact.txt b/build/contact.txt new file mode 100644 index 0000000..71429f2 --- /dev/null +++ b/build/contact.txt @@ -0,0 +1,275 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +14:I[68027,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/chunks/00fiud~fayo7s.css","style"] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +:HL["/images/home2-banner-3.webp","image"] +c:T1c00, + .contacts-hero-custom { + background-color: #0b0b0b !important; + background-image: url('/images/home2-banner-3.webp') !important; + background-size: cover !important; + background-position: center !important; + } + + .contacts-hero-card-custom { + position: relative !important; + width: 100% !important; + height: 100% !important; + display: flex !important; + align-items: center !important; + justify-content: center !important; + flex-direction: column !important; + box-sizing: border-box !important; + overflow: hidden !important; + } + + .contacts-hero-bg-overlay { + position: absolute !important; + inset: 0 !important; + /* Lighter wash so the red van / sunset stays vivid like the reference, + while keeping the centered heading readable. */ + background-image: linear-gradient(180deg, rgba(0, 0, 0, 0.30) 0%, rgba(0, 0, 0, 0.42) 55%, rgba(0, 0, 0, 0.62) 100%) !important; + z-index: 1 !important; + } + + /* Ambient Glowing Orbs */ + .contacts-hero-glow-red { + position: absolute !important; + bottom: -15% !important; + right: -10% !important; + width: min(500px, 75vw) !important; + height: min(500px, 75vw) !important; + background: radial-gradient(circle, rgba(192, 18, 39, 0.24) 0%, rgba(192, 18, 39, 0) 70%) !important; + filter: blur(70px) !important; + pointer-events: none !important; + z-index: 1 !important; + animation: float-glow 10s ease-in-out infinite alternate !important; + } + + .contacts-hero-glow-blue { + position: absolute !important; + top: -15% !important; + left: -10% !important; + width: min(450px, 60vw) !important; + height: min(450px, 60vw) !important; + background: radial-gradient(circle, rgba(0, 150, 255, 0.06) 0%, rgba(0, 150, 255, 0) 70%) !important; + filter: blur(75px) !important; + pointer-events: none !important; + z-index: 1 !important; + } + + /* Abstract Tech Grid */ + .contacts-hero-grid { + position: absolute !important; + inset: 0 !important; + background-image: + linear-gradient(rgba(255, 255, 255, 0.015) 1px, transparent 1px), + linear-gradient(90deg, rgba(255, 255, 255, 0.015) 1px, transparent 1px) !important; + background-size: 50px 50px !important; + opacity: 0.8 !important; + pointer-events: none !important; + z-index: 2 !important; + } + + /* Center content — card frame removed (no background, border, blur or + shadow); the text sits directly on the hero background. */ + .contacts-hero-glass-card { + position: relative !important; + z-index: 3 !important; + background: transparent !important; + backdrop-filter: none !important; + -webkit-backdrop-filter: none !important; + border: none !important; + border-radius: 0 !important; + padding: 0 24px !important; + max-width: 1500px !important; + width: 92% !important; + box-shadow: none !important; + text-align: center !important; + } + + .contacts-hero-glass-card:hover { + transform: none !important; + box-shadow: none !important; + border-color: transparent !important; + } + + /* Hero headline — large, light, reference-matched display type. + Size scales with the viewport so the line-to-container width ratio + stays constant; the cap keeps the longest line inside the 1500px + container (with nowrap on desktop) so it can never overflow/clip. */ + .contacts-hero-title { + font-size: clamp(34px, 5.9vw, 98px) !important; + font-weight: 400 !important; + line-height: 0.95 !important; + color: #ffffff !important; + text-transform: uppercase !important; + letter-spacing: -0.02em !important; + margin: 0 0 28px 0 !important; + font-family: var(--font-manrope), "Manrope", sans-serif !important; + } + + .contacts-hero-title-line { + display: block !important; + } + + /* Keep each line intact on desktop — never split SYSTEM or PROMISE/KEPT */ + @media (min-width: 1024px) { + .contacts-hero-title-line { + white-space: nowrap !important; + } + } + + .contacts-hero-title-highlight { + color: #c01227 !important; + } + + /* Description text */ + .contacts-hero-desc { + font-size: clamp(15px, 1.3vw, 19px) !important; + line-height: 1.6 !important; + color: rgba(255, 255, 255, 0.82) !important; + max-width: 640px !important; + margin: 0 auto 24px auto !important; + font-weight: 500 !important; + font-family: var(--font-manrope), "Manrope", sans-serif !important; + } + + .contacts-hero-desc-trademark { + color: #ffffff !important; + font-weight: 700 !important; + white-space: nowrap !important; + } + + /* Breadcrumb capsule */ + .contacts-hero-breadcrumbs { + display: inline-flex !important; + align-items: center !important; + gap: 10px !important; + background: rgba(255, 255, 255, 0.04) !important; + border: 1px solid rgba(255, 255, 255, 0.08) !important; + padding: 8px 22px !important; + border-radius: 30px !important; + transition: background 0.3s, border-color 0.3s !important; + } + + .contacts-hero-breadcrumbs:hover { + background: rgba(255, 255, 255, 0.08) !important; + border-color: rgba(255, 255, 255, 0.15) !important; + } + + .contacts-breadcrumb-link { + color: rgba(255, 255, 255, 0.65) !important; + text-decoration: none !important; + font-size: 13px !important; + font-weight: 600 !important; + transition: color 0.2s !important; + font-family: var(--font-manrope), "Manrope", sans-serif !important; + } + + .contacts-breadcrumb-link:hover { + color: #ffffff !important; + } + + .contacts-breadcrumb-del { + color: rgba(255, 255, 255, 0.3) !important; + font-size: 11px !important; + } + + .contacts-breadcrumb-cur { + color: #C01227 !important; + font-size: 13px !important; + font-weight: 700 !important; + font-family: var(--font-manrope), "Manrope", sans-serif !important; + } + + @keyframes float-glow { + 0% { transform: translate(0, 0) scale(1); } + 100% { transform: translate(-15px, -25px) scale(1.08); } + } + + @media (max-width: 768px) { + .contacts-hero-glass-card { + padding: 0 16px !important; + width: 95% !important; + } + .contacts-hero-title { + letter-spacing: -1px !important; + } + } + 0:{"P":null,"c":["","contact"],"q":"","i":false,"f":[[["",{"children":["contact",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","div",null,{"className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":["$","div",null,{"data-elementor-type":"wp-page","data-elementor-id":"41","className":"elementor elementor-41","children":[[["$","link",null,{"rel":"preload","as":"image","href":"/images/home2-banner-3.webp"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$c"}}],"$Ld"],"$Le"]}]}]}]}],["$Lf","$L10"],"$L11"]}],{},null,false,null]},null,false,"$@12"]},null,false,null],"$L13",false]],"m":"$undefined","G":["$14",["$L15"]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"kmSVPuUqY3Rhw5xy4D2nn"} +17:I[23466,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0vp~o9giaq0t~.js"],"default"] +18:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +19:"$Sreact.suspense" +1c:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +1e:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +d:["$","div",null,{"className":"custom-standard-hero-container","children":["$","div",null,{"className":"custom-standard-hero-card contacts-hero-custom","children":["$","div",null,{"className":"contacts-hero-card-custom","children":[["$","div",null,{"className":"contacts-hero-bg-overlay"}],["$","div",null,{"className":"contacts-hero-grid"}],["$","div",null,{"className":"contacts-hero-glow-red"}],["$","div",null,{"className":"contacts-hero-glow-blue"}],["$","div",null,{"className":"contacts-hero-glass-card","children":["$","h1",null,{"className":"contacts-hero-title","children":[["$","span",null,{"className":"contacts-hero-title-line","children":"Delivering Trust."}],["$","span",null,{"className":"contacts-hero-title-line","children":["Beyond ",["$","span",null,{"className":"contacts-hero-title-highlight","children":"Boundaries."}]]}]]}]}]]}]}]}] +16:T6ac, + .elementor-element-7304a53 { + --padding-left: 20px; + --padding-right: 20px; + --margin-top: 12px; + --margin-bottom: 0px; + /* Reduce the large gap above the map (was 40px). */ + margin-top: 12px !important; + padding-top: 0 !important; + /* Real side padding so the map is inset like the hero/footer sections + (the --padding-* vars only work with elementor-frontend.css, which + isn't loaded, so the map was going edge-to-edge). Matches + .custom-standard-hero-container: 20px desktop / 10px mobile. */ + padding-left: 20px; + padding-right: 20px; + box-sizing: border-box; + /* The section computes to display:inline here (the --display:flex var + isn't mapped without elementor-frontend.css), so its padding never + constrained the block child. Force flex so the padding insets the map. */ + display: flex; + flex-direction: column; + width: 100%; + } + .elementor-element-7304a53 .elementor-custom-embed { + /* Rounded on all corners so the map reads as a self-contained card + (bottom was square before, leaving a hard edge above the footer gap). */ + border-radius: 25px; + overflow: hidden; + background: transparent; + line-height: 0; + } + @media (max-width: 840px) { + .elementor-element-7304a53 { + padding-left: 10px; + padding-right: 10px; + } + } + @media (max-width: 768px) { + .elementor-element-7304a53 .elementor-custom-embed { height: 360px !important; } + } + e:["$","div",null,{"className":"elementor-element elementor-element-7304a53 e-con-full e-flex cut-corner-no sticky-container-off e-con e-parent","data-id":"7304a53","data-element_type":"container","data-e-type":"container","children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$16"}}],["$","div",null,{"className":"elementor-element elementor-element-5a3eed4 elementor-widget","data-id":"5a3eed4","data-element_type":"widget","data-e-type":"widget","children":["$","div",null,{"className":"elementor-widget-container","children":["$","div",null,{"className":"elementor-custom-embed","style":{"width":"100%","height":"500px"},"children":["$","$L17",null,{}]}]}]}]]}] +f:["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/00fiud~fayo7s.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}] +10:["$","script","script-0",{"src":"/_next/static/chunks/0vp~o9giaq0t~.js","async":true,"nonce":"$undefined"}] +11:["$","$L18",null,{"children":["$","$19",null,{"name":"Next.MetadataOutlet","children":"$@1a"}]}] +1b:[] +12:"$W1b" +13:["$","$1","h",{"children":[null,["$","$L1c",null,{"children":"$L1d"}],["$","div",null,{"hidden":true,"children":["$","$L1e",null,{"children":["$","$19",null,{"name":"Next.Metadata","children":"$L1f"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}] +15:["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}] +1d:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] +20:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +1a:null +1f:[["$","title","0",{"children":"Contact Us – Doormile"}],["$","meta","1",{"name":"description","content":"Get in touch with Doormile's last-mile logistics team. Call us, email, visit our Gachibowli, Hyderabad office, or drop a message."}],["$","meta","2",{"name":"robots","content":"index, follow"}],["$","link","3",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","4",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","5",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","6",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L20","7",{}]] diff --git a/build/contact/__next._full.txt b/build/contact/__next._full.txt new file mode 100644 index 0000000..71429f2 --- /dev/null +++ b/build/contact/__next._full.txt @@ -0,0 +1,275 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +14:I[68027,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/chunks/00fiud~fayo7s.css","style"] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +:HL["/images/home2-banner-3.webp","image"] +c:T1c00, + .contacts-hero-custom { + background-color: #0b0b0b !important; + background-image: url('/images/home2-banner-3.webp') !important; + background-size: cover !important; + background-position: center !important; + } + + .contacts-hero-card-custom { + position: relative !important; + width: 100% !important; + height: 100% !important; + display: flex !important; + align-items: center !important; + justify-content: center !important; + flex-direction: column !important; + box-sizing: border-box !important; + overflow: hidden !important; + } + + .contacts-hero-bg-overlay { + position: absolute !important; + inset: 0 !important; + /* Lighter wash so the red van / sunset stays vivid like the reference, + while keeping the centered heading readable. */ + background-image: linear-gradient(180deg, rgba(0, 0, 0, 0.30) 0%, rgba(0, 0, 0, 0.42) 55%, rgba(0, 0, 0, 0.62) 100%) !important; + z-index: 1 !important; + } + + /* Ambient Glowing Orbs */ + .contacts-hero-glow-red { + position: absolute !important; + bottom: -15% !important; + right: -10% !important; + width: min(500px, 75vw) !important; + height: min(500px, 75vw) !important; + background: radial-gradient(circle, rgba(192, 18, 39, 0.24) 0%, rgba(192, 18, 39, 0) 70%) !important; + filter: blur(70px) !important; + pointer-events: none !important; + z-index: 1 !important; + animation: float-glow 10s ease-in-out infinite alternate !important; + } + + .contacts-hero-glow-blue { + position: absolute !important; + top: -15% !important; + left: -10% !important; + width: min(450px, 60vw) !important; + height: min(450px, 60vw) !important; + background: radial-gradient(circle, rgba(0, 150, 255, 0.06) 0%, rgba(0, 150, 255, 0) 70%) !important; + filter: blur(75px) !important; + pointer-events: none !important; + z-index: 1 !important; + } + + /* Abstract Tech Grid */ + .contacts-hero-grid { + position: absolute !important; + inset: 0 !important; + background-image: + linear-gradient(rgba(255, 255, 255, 0.015) 1px, transparent 1px), + linear-gradient(90deg, rgba(255, 255, 255, 0.015) 1px, transparent 1px) !important; + background-size: 50px 50px !important; + opacity: 0.8 !important; + pointer-events: none !important; + z-index: 2 !important; + } + + /* Center content — card frame removed (no background, border, blur or + shadow); the text sits directly on the hero background. */ + .contacts-hero-glass-card { + position: relative !important; + z-index: 3 !important; + background: transparent !important; + backdrop-filter: none !important; + -webkit-backdrop-filter: none !important; + border: none !important; + border-radius: 0 !important; + padding: 0 24px !important; + max-width: 1500px !important; + width: 92% !important; + box-shadow: none !important; + text-align: center !important; + } + + .contacts-hero-glass-card:hover { + transform: none !important; + box-shadow: none !important; + border-color: transparent !important; + } + + /* Hero headline — large, light, reference-matched display type. + Size scales with the viewport so the line-to-container width ratio + stays constant; the cap keeps the longest line inside the 1500px + container (with nowrap on desktop) so it can never overflow/clip. */ + .contacts-hero-title { + font-size: clamp(34px, 5.9vw, 98px) !important; + font-weight: 400 !important; + line-height: 0.95 !important; + color: #ffffff !important; + text-transform: uppercase !important; + letter-spacing: -0.02em !important; + margin: 0 0 28px 0 !important; + font-family: var(--font-manrope), "Manrope", sans-serif !important; + } + + .contacts-hero-title-line { + display: block !important; + } + + /* Keep each line intact on desktop — never split SYSTEM or PROMISE/KEPT */ + @media (min-width: 1024px) { + .contacts-hero-title-line { + white-space: nowrap !important; + } + } + + .contacts-hero-title-highlight { + color: #c01227 !important; + } + + /* Description text */ + .contacts-hero-desc { + font-size: clamp(15px, 1.3vw, 19px) !important; + line-height: 1.6 !important; + color: rgba(255, 255, 255, 0.82) !important; + max-width: 640px !important; + margin: 0 auto 24px auto !important; + font-weight: 500 !important; + font-family: var(--font-manrope), "Manrope", sans-serif !important; + } + + .contacts-hero-desc-trademark { + color: #ffffff !important; + font-weight: 700 !important; + white-space: nowrap !important; + } + + /* Breadcrumb capsule */ + .contacts-hero-breadcrumbs { + display: inline-flex !important; + align-items: center !important; + gap: 10px !important; + background: rgba(255, 255, 255, 0.04) !important; + border: 1px solid rgba(255, 255, 255, 0.08) !important; + padding: 8px 22px !important; + border-radius: 30px !important; + transition: background 0.3s, border-color 0.3s !important; + } + + .contacts-hero-breadcrumbs:hover { + background: rgba(255, 255, 255, 0.08) !important; + border-color: rgba(255, 255, 255, 0.15) !important; + } + + .contacts-breadcrumb-link { + color: rgba(255, 255, 255, 0.65) !important; + text-decoration: none !important; + font-size: 13px !important; + font-weight: 600 !important; + transition: color 0.2s !important; + font-family: var(--font-manrope), "Manrope", sans-serif !important; + } + + .contacts-breadcrumb-link:hover { + color: #ffffff !important; + } + + .contacts-breadcrumb-del { + color: rgba(255, 255, 255, 0.3) !important; + font-size: 11px !important; + } + + .contacts-breadcrumb-cur { + color: #C01227 !important; + font-size: 13px !important; + font-weight: 700 !important; + font-family: var(--font-manrope), "Manrope", sans-serif !important; + } + + @keyframes float-glow { + 0% { transform: translate(0, 0) scale(1); } + 100% { transform: translate(-15px, -25px) scale(1.08); } + } + + @media (max-width: 768px) { + .contacts-hero-glass-card { + padding: 0 16px !important; + width: 95% !important; + } + .contacts-hero-title { + letter-spacing: -1px !important; + } + } + 0:{"P":null,"c":["","contact"],"q":"","i":false,"f":[[["",{"children":["contact",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","div",null,{"className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":["$","div",null,{"data-elementor-type":"wp-page","data-elementor-id":"41","className":"elementor elementor-41","children":[[["$","link",null,{"rel":"preload","as":"image","href":"/images/home2-banner-3.webp"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$c"}}],"$Ld"],"$Le"]}]}]}]}],["$Lf","$L10"],"$L11"]}],{},null,false,null]},null,false,"$@12"]},null,false,null],"$L13",false]],"m":"$undefined","G":["$14",["$L15"]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"kmSVPuUqY3Rhw5xy4D2nn"} +17:I[23466,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0vp~o9giaq0t~.js"],"default"] +18:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +19:"$Sreact.suspense" +1c:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +1e:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +d:["$","div",null,{"className":"custom-standard-hero-container","children":["$","div",null,{"className":"custom-standard-hero-card contacts-hero-custom","children":["$","div",null,{"className":"contacts-hero-card-custom","children":[["$","div",null,{"className":"contacts-hero-bg-overlay"}],["$","div",null,{"className":"contacts-hero-grid"}],["$","div",null,{"className":"contacts-hero-glow-red"}],["$","div",null,{"className":"contacts-hero-glow-blue"}],["$","div",null,{"className":"contacts-hero-glass-card","children":["$","h1",null,{"className":"contacts-hero-title","children":[["$","span",null,{"className":"contacts-hero-title-line","children":"Delivering Trust."}],["$","span",null,{"className":"contacts-hero-title-line","children":["Beyond ",["$","span",null,{"className":"contacts-hero-title-highlight","children":"Boundaries."}]]}]]}]}]]}]}]}] +16:T6ac, + .elementor-element-7304a53 { + --padding-left: 20px; + --padding-right: 20px; + --margin-top: 12px; + --margin-bottom: 0px; + /* Reduce the large gap above the map (was 40px). */ + margin-top: 12px !important; + padding-top: 0 !important; + /* Real side padding so the map is inset like the hero/footer sections + (the --padding-* vars only work with elementor-frontend.css, which + isn't loaded, so the map was going edge-to-edge). Matches + .custom-standard-hero-container: 20px desktop / 10px mobile. */ + padding-left: 20px; + padding-right: 20px; + box-sizing: border-box; + /* The section computes to display:inline here (the --display:flex var + isn't mapped without elementor-frontend.css), so its padding never + constrained the block child. Force flex so the padding insets the map. */ + display: flex; + flex-direction: column; + width: 100%; + } + .elementor-element-7304a53 .elementor-custom-embed { + /* Rounded on all corners so the map reads as a self-contained card + (bottom was square before, leaving a hard edge above the footer gap). */ + border-radius: 25px; + overflow: hidden; + background: transparent; + line-height: 0; + } + @media (max-width: 840px) { + .elementor-element-7304a53 { + padding-left: 10px; + padding-right: 10px; + } + } + @media (max-width: 768px) { + .elementor-element-7304a53 .elementor-custom-embed { height: 360px !important; } + } + e:["$","div",null,{"className":"elementor-element elementor-element-7304a53 e-con-full e-flex cut-corner-no sticky-container-off e-con e-parent","data-id":"7304a53","data-element_type":"container","data-e-type":"container","children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$16"}}],["$","div",null,{"className":"elementor-element elementor-element-5a3eed4 elementor-widget","data-id":"5a3eed4","data-element_type":"widget","data-e-type":"widget","children":["$","div",null,{"className":"elementor-widget-container","children":["$","div",null,{"className":"elementor-custom-embed","style":{"width":"100%","height":"500px"},"children":["$","$L17",null,{}]}]}]}]]}] +f:["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/00fiud~fayo7s.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}] +10:["$","script","script-0",{"src":"/_next/static/chunks/0vp~o9giaq0t~.js","async":true,"nonce":"$undefined"}] +11:["$","$L18",null,{"children":["$","$19",null,{"name":"Next.MetadataOutlet","children":"$@1a"}]}] +1b:[] +12:"$W1b" +13:["$","$1","h",{"children":[null,["$","$L1c",null,{"children":"$L1d"}],["$","div",null,{"hidden":true,"children":["$","$L1e",null,{"children":["$","$19",null,{"name":"Next.Metadata","children":"$L1f"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}] +15:["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}] +1d:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] +20:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +1a:null +1f:[["$","title","0",{"children":"Contact Us – Doormile"}],["$","meta","1",{"name":"description","content":"Get in touch with Doormile's last-mile logistics team. Call us, email, visit our Gachibowli, Hyderabad office, or drop a message."}],["$","meta","2",{"name":"robots","content":"index, follow"}],["$","link","3",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","4",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","5",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","6",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L20","7",{}]] diff --git a/build/contact/__next._head.txt b/build/contact/__next._head.txt new file mode 100644 index 0000000..bcf7724 --- /dev/null +++ b/build/contact/__next._head.txt @@ -0,0 +1,6 @@ +1:"$Sreact.fragment" +2:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +3:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +4:"$Sreact.suspense" +5:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +0:{"rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"Contact Us – Doormile"}],["$","meta","1",{"name":"description","content":"Get in touch with Doormile's last-mile logistics team. Call us, email, visit our Gachibowli, Hyderabad office, or drop a message."}],["$","meta","2",{"name":"robots","content":"index, follow"}],["$","link","3",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","4",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","5",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","6",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L5","7",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/contact/__next._index.txt b/build/contact/__next._index.txt new file mode 100644 index 0000000..d0b3355 --- /dev/null +++ b/build/contact/__next._index.txt @@ -0,0 +1,15 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","template":["$","$La",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/contact/__next._tree.txt b/build/contact/__next._tree.txt new file mode 100644 index 0000000..e82b7f1 --- /dev/null +++ b/build/contact/__next._tree.txt @@ -0,0 +1,11 @@ +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/chunks/00fiud~fayo7s.css","style"] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +:HL["/images/home2-banner-3.webp","image"] +0:{"tree":{"name":"","param":null,"prefetchHints":16,"slots":{"children":{"name":"contact","param":null,"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}}}},"staleTime":300,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/contact/__next.contact.__PAGE__.txt b/build/contact/__next.contact.__PAGE__.txt new file mode 100644 index 0000000..9d11f69 --- /dev/null +++ b/build/contact/__next.contact.__PAGE__.txt @@ -0,0 +1,247 @@ +1:"$Sreact.fragment" +9:I[23466,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0vp~o9giaq0t~.js"],"default"] +a:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +b:"$Sreact.suspense" +:HL["/images/home2-banner-3.webp","image"] +:HL["/_next/static/chunks/00fiud~fayo7s.css","style"] +2:T1c00, + .contacts-hero-custom { + background-color: #0b0b0b !important; + background-image: url('/images/home2-banner-3.webp') !important; + background-size: cover !important; + background-position: center !important; + } + + .contacts-hero-card-custom { + position: relative !important; + width: 100% !important; + height: 100% !important; + display: flex !important; + align-items: center !important; + justify-content: center !important; + flex-direction: column !important; + box-sizing: border-box !important; + overflow: hidden !important; + } + + .contacts-hero-bg-overlay { + position: absolute !important; + inset: 0 !important; + /* Lighter wash so the red van / sunset stays vivid like the reference, + while keeping the centered heading readable. */ + background-image: linear-gradient(180deg, rgba(0, 0, 0, 0.30) 0%, rgba(0, 0, 0, 0.42) 55%, rgba(0, 0, 0, 0.62) 100%) !important; + z-index: 1 !important; + } + + /* Ambient Glowing Orbs */ + .contacts-hero-glow-red { + position: absolute !important; + bottom: -15% !important; + right: -10% !important; + width: min(500px, 75vw) !important; + height: min(500px, 75vw) !important; + background: radial-gradient(circle, rgba(192, 18, 39, 0.24) 0%, rgba(192, 18, 39, 0) 70%) !important; + filter: blur(70px) !important; + pointer-events: none !important; + z-index: 1 !important; + animation: float-glow 10s ease-in-out infinite alternate !important; + } + + .contacts-hero-glow-blue { + position: absolute !important; + top: -15% !important; + left: -10% !important; + width: min(450px, 60vw) !important; + height: min(450px, 60vw) !important; + background: radial-gradient(circle, rgba(0, 150, 255, 0.06) 0%, rgba(0, 150, 255, 0) 70%) !important; + filter: blur(75px) !important; + pointer-events: none !important; + z-index: 1 !important; + } + + /* Abstract Tech Grid */ + .contacts-hero-grid { + position: absolute !important; + inset: 0 !important; + background-image: + linear-gradient(rgba(255, 255, 255, 0.015) 1px, transparent 1px), + linear-gradient(90deg, rgba(255, 255, 255, 0.015) 1px, transparent 1px) !important; + background-size: 50px 50px !important; + opacity: 0.8 !important; + pointer-events: none !important; + z-index: 2 !important; + } + + /* Center content — card frame removed (no background, border, blur or + shadow); the text sits directly on the hero background. */ + .contacts-hero-glass-card { + position: relative !important; + z-index: 3 !important; + background: transparent !important; + backdrop-filter: none !important; + -webkit-backdrop-filter: none !important; + border: none !important; + border-radius: 0 !important; + padding: 0 24px !important; + max-width: 1500px !important; + width: 92% !important; + box-shadow: none !important; + text-align: center !important; + } + + .contacts-hero-glass-card:hover { + transform: none !important; + box-shadow: none !important; + border-color: transparent !important; + } + + /* Hero headline — large, light, reference-matched display type. + Size scales with the viewport so the line-to-container width ratio + stays constant; the cap keeps the longest line inside the 1500px + container (with nowrap on desktop) so it can never overflow/clip. */ + .contacts-hero-title { + font-size: clamp(34px, 5.9vw, 98px) !important; + font-weight: 400 !important; + line-height: 0.95 !important; + color: #ffffff !important; + text-transform: uppercase !important; + letter-spacing: -0.02em !important; + margin: 0 0 28px 0 !important; + font-family: var(--font-manrope), "Manrope", sans-serif !important; + } + + .contacts-hero-title-line { + display: block !important; + } + + /* Keep each line intact on desktop — never split SYSTEM or PROMISE/KEPT */ + @media (min-width: 1024px) { + .contacts-hero-title-line { + white-space: nowrap !important; + } + } + + .contacts-hero-title-highlight { + color: #c01227 !important; + } + + /* Description text */ + .contacts-hero-desc { + font-size: clamp(15px, 1.3vw, 19px) !important; + line-height: 1.6 !important; + color: rgba(255, 255, 255, 0.82) !important; + max-width: 640px !important; + margin: 0 auto 24px auto !important; + font-weight: 500 !important; + font-family: var(--font-manrope), "Manrope", sans-serif !important; + } + + .contacts-hero-desc-trademark { + color: #ffffff !important; + font-weight: 700 !important; + white-space: nowrap !important; + } + + /* Breadcrumb capsule */ + .contacts-hero-breadcrumbs { + display: inline-flex !important; + align-items: center !important; + gap: 10px !important; + background: rgba(255, 255, 255, 0.04) !important; + border: 1px solid rgba(255, 255, 255, 0.08) !important; + padding: 8px 22px !important; + border-radius: 30px !important; + transition: background 0.3s, border-color 0.3s !important; + } + + .contacts-hero-breadcrumbs:hover { + background: rgba(255, 255, 255, 0.08) !important; + border-color: rgba(255, 255, 255, 0.15) !important; + } + + .contacts-breadcrumb-link { + color: rgba(255, 255, 255, 0.65) !important; + text-decoration: none !important; + font-size: 13px !important; + font-weight: 600 !important; + transition: color 0.2s !important; + font-family: var(--font-manrope), "Manrope", sans-serif !important; + } + + .contacts-breadcrumb-link:hover { + color: #ffffff !important; + } + + .contacts-breadcrumb-del { + color: rgba(255, 255, 255, 0.3) !important; + font-size: 11px !important; + } + + .contacts-breadcrumb-cur { + color: #C01227 !important; + font-size: 13px !important; + font-weight: 700 !important; + font-family: var(--font-manrope), "Manrope", sans-serif !important; + } + + @keyframes float-glow { + 0% { transform: translate(0, 0) scale(1); } + 100% { transform: translate(-15px, -25px) scale(1.08); } + } + + @media (max-width: 768px) { + .contacts-hero-glass-card { + padding: 0 16px !important; + width: 95% !important; + } + .contacts-hero-title { + letter-spacing: -1px !important; + } + } + 0:{"rsc":["$","$1","c",{"children":[["$","div",null,{"className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":["$","div",null,{"data-elementor-type":"wp-page","data-elementor-id":"41","className":"elementor elementor-41","children":[[["$","link",null,{"rel":"preload","as":"image","href":"/images/home2-banner-3.webp"}],["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$2"}}],"$L3"],"$L4"]}]}]}]}],["$L5","$L6"],"$L7"]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} +3:["$","div",null,{"className":"custom-standard-hero-container","children":["$","div",null,{"className":"custom-standard-hero-card contacts-hero-custom","children":["$","div",null,{"className":"contacts-hero-card-custom","children":[["$","div",null,{"className":"contacts-hero-bg-overlay"}],["$","div",null,{"className":"contacts-hero-grid"}],["$","div",null,{"className":"contacts-hero-glow-red"}],["$","div",null,{"className":"contacts-hero-glow-blue"}],["$","div",null,{"className":"contacts-hero-glass-card","children":["$","h1",null,{"className":"contacts-hero-title","children":[["$","span",null,{"className":"contacts-hero-title-line","children":"Delivering Trust."}],["$","span",null,{"className":"contacts-hero-title-line","children":["Beyond ",["$","span",null,{"className":"contacts-hero-title-highlight","children":"Boundaries."}]]}]]}]}]]}]}]}] +8:T6ac, + .elementor-element-7304a53 { + --padding-left: 20px; + --padding-right: 20px; + --margin-top: 12px; + --margin-bottom: 0px; + /* Reduce the large gap above the map (was 40px). */ + margin-top: 12px !important; + padding-top: 0 !important; + /* Real side padding so the map is inset like the hero/footer sections + (the --padding-* vars only work with elementor-frontend.css, which + isn't loaded, so the map was going edge-to-edge). Matches + .custom-standard-hero-container: 20px desktop / 10px mobile. */ + padding-left: 20px; + padding-right: 20px; + box-sizing: border-box; + /* The section computes to display:inline here (the --display:flex var + isn't mapped without elementor-frontend.css), so its padding never + constrained the block child. Force flex so the padding insets the map. */ + display: flex; + flex-direction: column; + width: 100%; + } + .elementor-element-7304a53 .elementor-custom-embed { + /* Rounded on all corners so the map reads as a self-contained card + (bottom was square before, leaving a hard edge above the footer gap). */ + border-radius: 25px; + overflow: hidden; + background: transparent; + line-height: 0; + } + @media (max-width: 840px) { + .elementor-element-7304a53 { + padding-left: 10px; + padding-right: 10px; + } + } + @media (max-width: 768px) { + .elementor-element-7304a53 .elementor-custom-embed { height: 360px !important; } + } + 4:["$","div",null,{"className":"elementor-element elementor-element-7304a53 e-con-full e-flex cut-corner-no sticky-container-off e-con e-parent","data-id":"7304a53","data-element_type":"container","data-e-type":"container","children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$8"}}],["$","div",null,{"className":"elementor-element elementor-element-5a3eed4 elementor-widget","data-id":"5a3eed4","data-element_type":"widget","data-e-type":"widget","children":["$","div",null,{"className":"elementor-widget-container","children":["$","div",null,{"className":"elementor-custom-embed","style":{"width":"100%","height":"500px"},"children":["$","$L9",null,{}]}]}]}]]}] +5:["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/00fiud~fayo7s.css","precedence":"next"}] +6:["$","script","script-0",{"src":"/_next/static/chunks/0vp~o9giaq0t~.js","async":true}] +7:["$","$La",null,{"children":["$","$b",null,{"name":"Next.MetadataOutlet","children":"$@c"}]}] +c:null diff --git a/build/contact/__next.contact.txt b/build/contact/__next.contact.txt new file mode 100644 index 0000000..e0935ae --- /dev/null +++ b/build/contact/__next.contact.txt @@ -0,0 +1,5 @@ +1:"$Sreact.fragment" +2:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:[] +0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/cookie-policy.html b/build/cookie-policy.html new file mode 100644 index 0000000..4516438 --- /dev/null +++ b/build/cookie-policy.html @@ -0,0 +1,853 @@ +Cookie Policy – Doormile

    Doormile

    Doormile logo
    Address
    Hyderabad

    5th Floor, Vision Ultima,
    Street No.3, Jayabheri Enclave,
    Gachibowli, Hyderabad,
    Telangana 500032.

    Coimbatore

    Mayflower Valencia,
    Near Nava India Bus Stop,
    Avinashi Road,
    Udayampalayam,
    Tamil Nadu 641037.

    Bengaluru

    C612, 6th Floor,
    Trifecta Starlight,
    ITPL Road,
    Garudacharapalya,
    Mahadevapura,
    Bangalore 560048,
    Karnataka, India.

    Contact Us

    Tel : +91 86886 97941

    Email

    care@doormile.com

    \ No newline at end of file diff --git a/build/cookie-policy.txt b/build/cookie-policy.txt new file mode 100644 index 0000000..1e7a78f --- /dev/null +++ b/build/cookie-policy.txt @@ -0,0 +1,216 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +16:I[68027,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"P":null,"c":["","cookie-policy"],"q":"","i":false,"f":[[["",{"children":["cookie-policy",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","div",null,{"className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":["$","section",null,{"className":"dm-legal","aria-label":"Cookie Policy","children":[["$","div",null,{"className":"dm-legal__wrap","children":[["$","aside",null,{"className":"dm-legal__toc","aria-label":"On this page","children":["$","div",null,{"className":"dm-legal__toc-inner","children":[["$","p",null,{"className":"dm-legal__toc-label","children":"On this page"}],["$","nav",null,{"children":["$","ul",null,{"children":[["$","li","What Are Cookies?",{"children":["$","a",null,{"href":"#what-are-cookies","children":"What Are Cookies?"}]}],["$","li","Why We Use Cookies",{"children":["$","a",null,{"href":"#why-we-use-cookies","children":"Why We Use Cookies"}]}],["$","li","Types of Cookies We Use",{"children":"$Lc"}],"$Ld","$Le","$Lf","$L10"]}]}]]}]}],"$L11"]}],"$L12"]}]}]}]}],null,"$L13"]}],{},null,false,null]},null,false,"$@14"]},null,false,null],"$L15",false]],"m":"$undefined","G":["$16",["$L17"]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"kmSVPuUqY3Rhw5xy4D2nn"} +1a:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +1b:"$Sreact.suspense" +1e:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +20:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +c:["$","a",null,{"href":"#types-of-cookies-we-use","children":"Types of Cookies We Use"}] +d:["$","li","Managing Cookies",{"children":["$","a",null,{"href":"#managing-cookies","children":"Managing Cookies"}]}] +e:["$","li","Cookie Consent",{"children":["$","a",null,{"href":"#cookie-consent","children":"Cookie Consent"}]}] +f:["$","li","Policy Updates",{"children":["$","a",null,{"href":"#policy-updates","children":"Policy Updates"}]}] +10:["$","li","Contact Us",{"children":["$","a",null,{"href":"#contact-us","children":"Contact Us"}]}] +11:["$","div",null,{"className":"dm-legal__main","children":[["$","header",null,{"className":"dm-legal__hero","children":[["$","h1",null,{"className":"dm-legal__title","children":"Cookie Policy"}],["$","p",null,{"className":"dm-legal__updated","children":["Last Updated: ","June 2026"]}],["$","p",null,{"className":"dm-legal__lead","children":"This Cookie Policy explains how Doormile uses cookies and similar technologies when you visit our website."}]]}],["$","article",null,{"className":"dm-legal__content","children":[["$","section","What Are Cookies?",{"id":"what-are-cookies","className":"dm-legal__section","children":[["$","h2",null,{"className":"dm-legal__h2","children":"What Are Cookies?"}],[["$","p","0",{"className":"dm-legal__p","children":"Cookies are small text files stored on your device that help websites remember information about your visit and improve the browsing experience."}]]]}],["$","section","Why We Use Cookies",{"id":"why-we-use-cookies","className":"dm-legal__section","children":[["$","h2",null,{"className":"dm-legal__h2","children":"Why We Use Cookies"}],[["$","p","0",{"className":"dm-legal__p","children":"We use cookies to:"}],["$","ul","1",{"className":"dm-legal__ul","children":[["$","li","0",{"children":"Enable essential website functionality"}],["$","li","1",{"children":"Improve website performance"}],["$","li","2",{"children":"Analyze visitor behavior and traffic patterns"}],["$","li","3",{"children":"Remember user preferences"}],["$","li","4",{"children":"Enhance overall user experience"}],["$","li","5",{"children":"Support website security"}]]}]]]}],["$","section","Types of Cookies We Use",{"id":"types-of-cookies-we-use","className":"dm-legal__section","children":[["$","h2",null,{"className":"dm-legal__h2","children":"Types of Cookies We Use"}],[["$","h3","0",{"className":"dm-legal__h3","children":"Essential Cookies"}],["$","p","1",{"className":"dm-legal__p","children":"These cookies are required for core website functionality and security features. The website may not function correctly without them."}],["$","h3","2",{"className":"dm-legal__h3","children":"Performance Cookies"}],["$","p","3",{"className":"dm-legal__p","children":"These cookies collect information about how visitors interact with the website and help us improve performance and usability."}],["$","h3","4",{"className":"dm-legal__h3","children":"Analytics Cookies"}],["$","p","5",{"className":"dm-legal__p","children":"Analytics cookies help us understand website traffic, visitor engagement, popular content, and user journeys."}],["$","h3","6",{"className":"dm-legal__h3","children":"Functional Cookies"}],["$","p","7",{"className":"dm-legal__p","children":"These cookies remember user preferences such as language, region, and other customization settings."}],["$","h3","8",{"className":"dm-legal__h3","children":"Third-Party Cookies"}],["$","p","9",{"className":"dm-legal__p","children":"Some third-party services integrated into our website, including analytics and performance monitoring tools, may place cookies on your device."}]]]}],["$","section","Managing Cookies",{"id":"managing-cookies","className":"dm-legal__section","children":[["$","h2",null,{"className":"dm-legal__h2","children":"Managing Cookies"}],[["$","p","0",{"className":"dm-legal__p","children":"Most web browsers allow users to control, block, or delete cookies through browser settings. Please note that disabling cookies may impact certain website features and functionality."}]]]}],["$","section","Cookie Consent",{"id":"cookie-consent","className":"dm-legal__section","children":[["$","h2",null,{"className":"dm-legal__h2","children":"Cookie Consent"}],[["$","p","0",{"className":"dm-legal__p","children":"Where required by applicable law, visitors may be presented with cookie consent options when accessing the website."}]]]}],["$","section","Policy Updates",{"id":"policy-updates","className":"dm-legal__section","children":[["$","h2",null,{"className":"dm-legal__h2","children":"Policy Updates"}],[["$","p","0",{"className":"dm-legal__p","children":"We may revise this Cookie Policy periodically to reflect changes in technology, regulations, or business practices. Updated versions will be published on this page."}]]]}],"$L18"]}]]}] +19:T15aa, +.dm-legal { + background: #ffffff; + color: #334155; + /* Top padding clears the fixed/absolute floating navbar (~104px) + breathing room. */ + padding: clamp(132px, 16vh, 184px) 0 clamp(72px, 10vw, 96px); + font-family: var(--font-manrope), system-ui, -apple-system, sans-serif; +} + +.dm-legal__wrap { + max-width: 1180px; + margin: 0 auto; + padding: 0 clamp(20px, 5vw, 40px); + display: grid; + grid-template-columns: minmax(0, 1fr); + gap: 0; +} + +/* ---- Sticky table of contents (desktop only) ---- */ +.dm-legal__toc { display: none; } + +@media (min-width: 1080px) { + .dm-legal__wrap { + grid-template-columns: 248px minmax(0, 800px); + justify-content: center; + gap: 64px; + } + .dm-legal__toc { display: block; } +} + +.dm-legal__toc-inner { position: sticky; top: 128px; } +.dm-legal__toc-label { + margin: 0 0 14px; + font-size: 12px; + font-weight: 700; + letter-spacing: 0.14em; + text-transform: uppercase; + color: #94a3b8; +} +.dm-legal__toc nav ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; } +.dm-legal__toc nav a { + display: block; + font-size: 14px; + line-height: 1.4; + color: #64748b; + text-decoration: none; + border-left: 2px solid transparent; + padding-left: 12px; + transition: color 0.2s ease, border-color 0.2s ease; +} +.dm-legal__toc nav a:hover { color: #c01227; border-left-color: #c01227; } + +/* ---- Reading column (max 800px) ---- */ +.dm-legal__main { min-width: 0; max-width: 800px; } + +.dm-legal__hero { margin-bottom: clamp(40px, 6vw, 56px); } +.dm-legal__title { + margin: 0 !important; + padding: 0 !important; + /* !important / text-transform override the global ".elementor-kit-5 h1" + (uppercase + kit font-size) so headings render in normal case at the spec sizes. */ + font-size: clamp(40px, 6vw, 60px) !important; + font-weight: 800 !important; + line-height: 1.08 !important; + letter-spacing: -0.02em !important; + text-transform: none !important; + color: #0f172a !important; +} +.dm-legal__updated { + margin: 16px 0 0; + font-size: 14px; + font-weight: 700; + letter-spacing: 0.08em; + text-transform: uppercase; + color: #94a3b8; +} + +.dm-legal__lead { + margin: 24px 0 0; + font-size: clamp(18px, 1.6vw, 20px); + line-height: 1.7; + color: #475569; +} +.dm-legal__hero .dm-legal__lead { margin-top: 24px; } + +/* ---- Sections ---- */ +.dm-legal__content { display: flex; flex-direction: column; } +.dm-legal__section { padding-top: 32px; } +.dm-legal__section:first-child { padding-top: 0; } + +.dm-legal__h2 { + margin: 0 0 16px !important; + padding: 0 !important; + font-size: clamp(24px, 3vw, 32px) !important; + font-weight: 700 !important; + line-height: 1.2 !important; + letter-spacing: -0.01em !important; + text-transform: none !important; + color: #0f172a !important; + /* Offset anchor jumps so the heading isn't hidden under the fixed navbar. */ + scroll-margin-top: 120px; +} +.dm-legal__h3 { + margin: 24px 0 8px !important; + padding: 0 !important; + font-size: 20px !important; + font-weight: 700 !important; + line-height: 1.35 !important; + text-transform: none !important; + color: #0f172a !important; +} +.dm-legal__p { + margin: 0 0 16px; + font-size: 18px; + line-height: 1.7; + color: #334155; +} +.dm-legal__p:last-child { margin-bottom: 0; } + +.dm-legal__ul { margin: 4px 0 16px; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 10px; } +.dm-legal__ul li { + position: relative; + padding-left: 26px; + font-size: 18px; + line-height: 1.7; + color: #334155; +} +/* Extra .dm-legal prefix raises specificity above the global theme rule + ".logico-front-end ul li:before" (a fontello glyph), so our clean red dot + replaces the inherited checkmark marker. */ +.dm-legal .dm-legal__ul li::before { + content: "" !important; + position: absolute; + left: 4px; + top: 0.62em; + width: 7px; + height: 7px; + border-radius: 50%; + background: #c01227; + font-size: 0; +} +/* TOC links are inside a
      too — suppress the same inherited glyph marker. */ +.dm-legal .dm-legal__toc nav li::before { content: none !important; } + +.dm-legal__link { color: #c01227; font-weight: 600; text-decoration: none; border-bottom: 1px solid rgba(192,18,39,0.35); } +.dm-legal__link:hover { border-bottom-color: #c01227; } + +@media (max-width: 1079px) { + .dm-legal__main { margin: 0 auto; } +} + +/* ============================================================ + Navbar visibility — LEGAL PAGES ONLY. + This
      / Why Doormile Wings /

      Built for the speed of the Gen-Z economy

      Same-Day Air Logistics

      Max 3-hour door-to-door delivery between India's major regional capitals.

      AI-Powered Operations

      MileTruth™ AI continuously forecasts demand and optimizes every route and load.

      Regional Connectivity

      Dedicated air capacity linking major economic hubs, not passenger-belly space.

      EV Last Mile

      Zero-emission electric vehicles complete every first- and final-mile delivery.

      / The Speed Advantage /

      Same-day, not some-day

      Surface Logistics
      48–0
      Hours

      Delhi–Mumbai standard surface transit time.

      VS
      Doormile Wings
      Max 0
      Hours, Door-to-Door

      Same-day delivery between major regional capitals.

      / Why Businesses Choose Doormile Wings /

      Built to be depended on

      AI Decision Engine

      MileTruth™ AI continuously forecasts demand and optimizes routing and load decisions in real time.

      Real-Time Visibility

      Live shipment tracking keeps shippers, ground teams, and customers updated at every stage.

      Faster Regional Reach

      A dedicated network linking major regional capitals, built for speed rather than passenger schedules.

      Reliable Scheduled Operations

      Dedicated freighter capacity with consistent schedules — not subject to passenger-belly bumping.

      / Industries We Serve /

      Built for the shipments that can’t wait

      Quick Commerce

      Quick Commerce

      Challenge

      Sub-3-hour delivery windows for dark stores and micro-warehouses.

      Doormile Wings

      Dedicated same-day air capacity linking metros to fulfillment hubs.

      Express B2B Cargo

      Express B2B Cargo

      Challenge

      Time-critical industrial parts and components stuck on slow trunk routes.

      Doormile Wings

      Rapid airport-to-airport transport between major economic nodes.

      Healthcare & Pharma

      Healthcare & Pharma

      Challenge

      Temperature-sensitive, compliance-critical shipments with zero margin for error.

      Doormile Wings

      Active and passive cold-chain packaging with full chain-of-custody tracking.

      Cold Chain Logistics

      Cold Chain Logistics

      Challenge

      Perishables and fresh goods that can't survive slow surface transit.

      Doormile Wings

      Precision temperature tracking matched to airline-speed transit.

      High-Value Cargo

      High-Value Cargo

      Challenge

      Zero tolerance for loss, tampering, or delay on high-value shipments.

      Doormile Wings

      Maximum-security handling with real-time electronic custody tracking.

      E-Commerce Logistics

      E-Commerce Logistics

      Challenge

      Next-day and same-day fulfillment expectations across tier-1 and tier-2 cities.

      Doormile Wings

      Direct sorting-hub-to-airport clearance network for faster regional delivery.

      / How It Works /

      Pickup to
      delivery, one
      connected flow

      01Step

      Local Pickup

      Fast, on-demand first-mile logistics dispatched by electric vehicle.

      02Step

      Airport Clearance

      Automated screening, grouping, and rapid cross-docking at the hub.

      03Step

      Air Transit

      Optimized cargo flights bypass surface congestion on our regional fleet.

      04Step

      Destination Hub

      Immediate de-consolidation and screening upon arrival.

      05Step

      EV Last-Mile

      Zero-emission electric vehicles complete the final delivery.

      Quick Logistics

      Same-Day Air Network

      / Fleet Strategy /

      Purpose-Built for Regional Speed

      3Phase 1 Aircraft
      25Phase 2 Vision
      FLEET SPECIFICATIONSAI ENGINE
      0.0tATR72 Payload
      0kmATR72 Range
      0.0tQ400 Payload
      0km/hQ400 Speed
      Dedicated Freighter Capacity

      Purpose-built cargo lift, not passenger-belly space competing with baggage.

      Regional Route Design

      Turboprop range and speed matched to India's major regional-capital corridors.

      Scaling to 25 Aircraft

      Phase 2 vision: pan-India connectivity hubs and international regional routes.

      ATR72 Payload0.0t
      ATR72 Range0km
      Q400 Payload0.0t
      Q400 Speed0km/h
      / Infrastructure /

      A network built to move, not to sit idle

      Airport Cargo Hubs

      Near-airport clearance hubs instead of standalone warehouses — closer to the tarmac, faster to the aircraft.

      Cross-Docking

      Screening, grouping, and consolidation happen in one motion, minimizing dwell time between arrival and departure.

      Asset-Light Network

      Leased terminal space that flexes with demand, keeping the network nimble as new routes come online.

      Scalable Operations

      Modular ground infrastructure built to expand city by city without slowing down day-to-day operations.

      / MileTruth™ AI /

      The intelligence layer behind every delivery

      Demand Forecasting

      AI-driven forward projection of cargo demand, preemptively positioning aircraft and ground capacity.

      Dynamic Pricing

      Real-time rate adjustments that track market capacity fluctuations and optimize yield.

      Route Optimization

      Dynamic scheduling for ground EV pickups and flights that bypasses congestion for the fastest path.

      Load Balancing

      Automated weight-and-balance modeling for optimal, safe aircraft load layout within minutes.

      Predictive Maintenance

      Continuous telemetry monitoring triggers preemptive alerts, drastically reducing aircraft downtime.

      Real-Time Tracking

      End-to-end sensor monitoring keeps shippers, airline, and EV operators updated on exact shipment state.

      Digital Twin of the Logistics Network

      A live virtual model of every ground vehicle, terminal, and flight — simulating what-if scenarios before bottlenecks ever form.

      SaaS Ready
      / Future Roadmap /

      A ten-year path to national scale

      Year 1
      Launch Phase

      Establish localized clearance hubs and launch cargo services connecting 5–6 key commercial cities.

      Year 2
      Network Growth

      Expand hub operations and airfield schedules, serving 15 regional and secondary cargo airports.

      Year 3
      Cross-Border Nodes

      Add international regional routes, bridging key freight corridors in South Asia.

      Year 5
      Operational Scale

      Expand to a fleet of 25 leased cargo aircraft, servicing over 50 regional airports nationwide.

      Year 10
      Global Duplication

      Replicate our asset-light, AI-powered logistics framework across Asia, Africa, and the Middle East.

    \ No newline at end of file diff --git a/build/doormile-wings.txt b/build/doormile-wings.txt new file mode 100644 index 0000000..e45d876 --- /dev/null +++ b/build/doormile-wings.txt @@ -0,0 +1,299 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +c:I[36202,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~6a87_s8h6ue.js"],"default"] +d:I[63061,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~6a87_s8h6ue.js"],"default"] +e:I[10425,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~6a87_s8h6ue.js"],"default"] +1d:I[68027,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/chunks/0zi3_4wi6-b2t.css","style"] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +f:Tafb, + .wfg-section { + background: #ffffff; + padding: var(--space-section-lg, 80px) 0; + } + + .wfg-header { + margin: 0 auto 48px auto; + max-width: 720px; + text-align: center; + } + + .wfg-eyebrow { + font-size: 13px; + font-weight: 700; + letter-spacing: 2px; + text-transform: uppercase; + color: rgba(17, 17, 17, 0.45); + margin-bottom: 16px; + } + + .wfg-title { + font-size: clamp(28px, 3.2vw, 46px) !important; + font-weight: 800 !important; + letter-spacing: -0.03em !important; + line-height: 1.15 !important; + text-transform: none !important; + color: #111111 !important; + margin: 0; + } + + .wfg-inner { + max-width: 1380px; + margin: 0 auto; + } + + .wfg-grid { + display: grid; + grid-template-columns: repeat(4, minmax(0, 1fr)); + gap: 20px; + } + + .wfg-card { + min-width: 0; + background: #ffffff; + border: 1px solid rgba(17, 17, 17, 0.1); + border-radius: 20px; + padding: 30px 26px; + transition: border-color 0.35s ease, box-shadow 0.35s ease, transform 0.35s cubic-bezier(0.165, 0.84, 0.44, 1); + } + + .wfg-card:hover { + border-color: #c8102e; + box-shadow: 0 20px 40px rgba(200, 16, 46, 0.08); + transform: translateY(-8px); + } + + .wfg-icon { + width: 46px; + height: 46px; + display: flex; + align-items: center; + justify-content: center; + border-radius: 12px; + background: rgba(200, 16, 46, 0.06); + color: #c8102e; + margin-bottom: 20px; + } + + .wfg-card-title { + font-size: 16.5px !important; + font-weight: 700 !important; + line-height: 1.3 !important; + text-transform: none !important; + color: #111111 !important; + margin: 0 0 8px 0; + } + + .wfg-card-desc { + font-size: 14px; + line-height: 1.55; + color: rgba(17, 17, 17, 0.6); + margin: 0; + } + + @media (max-width: 1024px) { + .wfg-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } + } + + @media (max-width: 600px) { + .wfg-grid { grid-template-columns: 1fr; } + /* var(--space-section-lg) floors at a fixed 52px on any phone + width (clamp() has no further breakpoint-based step-down), which + reads as noticeably heavier than the section rhythm near the + footer. Trimmed to a real mobile value here instead. */ + .wfg-section { padding-top: 44px; padding-bottom: 44px; } + } + 0:{"P":null,"c":["","doormile-wings"],"q":"","i":false,"f":[[["",{"children":["doormile-wings",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","div",null,{"id":"doormile-wings","className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":["$","div",null,{"data-elementor-type":"wp-page","data-elementor-id":"95","className":"elementor elementor-95 elementor-59","children":[["$","$Lc",null,{}],["$","$Ld",null,{}],["$","$Le",null,{}],[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$f"}}],"$L10"],"$L11","$L12","$L13","$L14","$L15","$L16"]}]}]}]}],["$L17","$L18","$L19"],"$L1a"]}],{},null,false,null]},null,false,"$@1b"]},null,false,null],"$L1c",false]],"m":"$undefined","G":["$1d",["$L1e"]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"kmSVPuUqY3Rhw5xy4D2nn"} +1f:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~6a87_s8h6ue.js"],"ScrollReveal"] +20:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~6a87_s8h6ue.js"],"StaggerChildren"] +23:I[48920,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~6a87_s8h6ue.js"],"default"] +24:I[14224,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~6a87_s8h6ue.js"],"default"] +25:I[55064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~6a87_s8h6ue.js"],"default"] +26:I[13378,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~6a87_s8h6ue.js"],"default"] +27:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +28:"$Sreact.suspense" +2b:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +2d:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +10:["$","section",null,{"className":"wfg-section","id":"wings-features","children":["$","div",null,{"className":"dm-section-container","children":["$","div",null,{"className":"wfg-inner","children":[["$","$L1f",null,{"delay":0.05,"duration":0.75,"yOffset":25,"className":"wfg-header","children":[["$","div",null,{"className":"wfg-eyebrow","children":"/ Why Businesses Choose Doormile Wings /"}],["$","h2",null,{"className":"wfg-title","children":"Built to be depended on"}]]}],["$","$L20",null,{"stagger":0.1,"duration":0.7,"yOffset":30,"className":"wfg-grid","children":[["$","div","AI Decision Engine",{"className":"wfg-card","children":[["$","div",null,{"className":"wfg-icon","aria-hidden":"true","children":["$","svg",null,{"width":"24","height":"24","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.25","strokeLinecap":"round","strokeLinejoin":"round","children":[["$","path",null,{"d":"M12 2a4 4 0 0 1 4 4v1a4 4 0 0 1-1.2 2.86A4 4 0 0 1 16 13v1a4 4 0 0 1-4 4 4 4 0 0 1-4-4v-1a4 4 0 0 1 1.2-3.14A4 4 0 0 1 8 7V6a4 4 0 0 1 4-4Z"}],["$","path",null,{"d":"M9 21h6M12 18v3"}]]}]}],["$","h3",null,{"className":"wfg-card-title","children":"AI Decision Engine"}],["$","p",null,{"className":"wfg-card-desc","children":"MileTruth™ AI continuously forecasts demand and optimizes routing and load decisions in real time."}]]}],["$","div","Real-Time Visibility",{"className":"wfg-card","children":[["$","div",null,{"className":"wfg-icon","aria-hidden":"true","children":["$","svg",null,{"width":"24","height":"24","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.25","strokeLinecap":"round","strokeLinejoin":"round","children":[["$","path",null,{"d":"M1 12s4-7 11-7 11 7 11 7-4 7-11 7-11-7-11-7Z"}],["$","circle",null,{"cx":"12","cy":"12","r":"3"}]]}]}],["$","h3",null,{"className":"wfg-card-title","children":"Real-Time Visibility"}],["$","p",null,{"className":"wfg-card-desc","children":"Live shipment tracking keeps shippers, ground teams, and customers updated at every stage."}]]}],["$","div","Faster Regional Reach",{"className":"wfg-card","children":[["$","div",null,{"className":"wfg-icon","aria-hidden":"true","children":["$","svg",null,{"width":"24","height":"24","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.25","strokeLinecap":"round","strokeLinejoin":"round","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"13 6 19 12 13 18"}]]}]}],["$","h3",null,{"className":"wfg-card-title","children":"Faster Regional Reach"}],["$","p",null,{"className":"wfg-card-desc","children":"A dedicated network linking major regional capitals, built for speed rather than passenger schedules."}]]}],["$","div","Reliable Scheduled Operations",{"className":"wfg-card","children":[["$","div",null,{"className":"wfg-icon","aria-hidden":"true","children":["$","svg",null,{"width":"24","height":"24","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.25","strokeLinecap":"round","strokeLinejoin":"round","children":[["$","rect",null,{"x":"3","y":"4","width":"18","height":"18","rx":"3"}],["$","line",null,{"x1":"16","y1":"2","x2":"16","y2":"6"}],["$","line",null,{"x1":"8","y1":"2","x2":"8","y2":"6"}],["$","line",null,{"x1":"3","y1":"10","x2":"21","y2":"10"}],["$","path",null,{"d":"M9 16l2 2 4-4"}]]}]}],["$","h3",null,{"className":"wfg-card-title","children":"Reliable Scheduled Operations"}],["$","p",null,{"className":"wfg-card-desc","children":"Dedicated freighter capacity with consistent schedules — not subject to passenger-belly bumping."}]]}]]}]]}]}]}] +21:Tfac, + .wind-section { + background: #fafafa; + padding: var(--space-section-lg, 80px) 0 20px 0; /* Reduced bottom padding to minimize gap */ + } + + .wind-header { + margin: 0 auto 48px auto; + max-width: 720px; + text-align: center; + } + + .wind-eyebrow { + font-size: 13px; + font-weight: 700; + letter-spacing: 2px; + text-transform: uppercase; + color: rgba(17, 17, 17, 0.45); + margin-bottom: 16px; + } + + .wind-title { + font-size: clamp(28px, 3.2vw, 46px) !important; + font-weight: 800 !important; + letter-spacing: -0.03em !important; + line-height: 1.15 !important; + text-transform: none !important; + color: #111111 !important; + margin: 0; + } + + .wind-inner { + max-width: 1380px; + margin: 0 auto; + } + + .wind-grid { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 20px; + } + + .wind-card { + position: relative; + min-width: 0; + aspect-ratio: 4 / 5; + border-radius: 20px; + overflow: hidden; + background: linear-gradient(150deg, #17171b 0%, #0b0b0d 100%); + isolation: isolate; + } + + .wind-card-wash { + position: absolute; + inset: 0; + background: linear-gradient(160deg, rgba(200, 16, 46, 0.35) 0%, rgba(200, 16, 46, 0) 60%); + opacity: 0.5; + transition: opacity 0.4s ease; + } + + .wind-card:hover .wind-card-wash { + opacity: 1; + } + + .wind-card-default { + position: absolute; + left: 24px; + right: 24px; + bottom: 24px; + transition: opacity 0.3s ease, transform 0.3s ease; + } + + .wind-card:hover .wind-card-default { + opacity: 0; + transform: translateY(8px); + pointer-events: none; + } + + .wind-card .wind-card-default-title { + font-size: 20px !important; + font-weight: 800 !important; + line-height: 1.3 !important; + text-transform: none !important; + color: #ffffff !important; + margin: 0; + } + + .wind-card-hover { + position: absolute; + inset: 0; + padding: 26px 24px; + display: flex; + flex-direction: column; + justify-content: flex-end; + gap: 14px; + opacity: 0; + transform: translateY(10px); + transition: opacity 0.35s ease, transform 0.35s ease; + } + + .wind-card:hover .wind-card-hover { + opacity: 1; + transform: translateY(0); + } + + .wind-card .wind-card-hover-title { + font-size: 19px !important; + font-weight: 800 !important; + line-height: 1.3 !important; + text-transform: none !important; + color: #ffffff !important; + margin: 0; + } + + .wind-card-label { + font-size: 10.5px; + font-weight: 800; + letter-spacing: 1.2px; + text-transform: uppercase; + color: rgba(255, 255, 255, 0.5); + margin: 0 0 4px 0; + } + + .wind-card-text { + font-size: 13px; + line-height: 1.5; + color: rgba(255, 255, 255, 0.85); + margin: 0; + } + + @media (max-width: 1024px) { + .wind-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } + } + + @media (max-width: 600px) { + .wind-grid { grid-template-columns: 1fr; } + .wind-card { aspect-ratio: 3 / 4; } + /* var(--space-section-lg) floors at a fixed 52px on any phone + width; bottom is already trimmed to 20px, so only the top needs + a real mobile reduction to match the section rhythm near the + footer. */ + .wind-section { padding-top: 44px; } + } + 11:[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$21"}}],"$L22"] +12:["$","$L23",null,{}] +13:["$","div",null,{"id":"wings-fleet","children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"\n @media (max-width: 767px) {\n #wings-fleet .evnd-gap-bottom { margin-bottom: 14px !important; }\n }\n "}}],["$","$L24",null,{"bannerImage":"/images/pahse1.png","cardTitle":"Quick Logistics","cardSubtitle":"Same-Day Air Network","eyebrow":"/ Fleet Strategy /","titleLead":"Purpose-Built for ","titleAccent":"Regional Speed","features":[{"icon":["$","svg",null,{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","children":["$","path",null,{"d":"M22 12h-6l-4-9-2 1 3 8H5l-2-3-1.5.6L3 14l1.5 4.4L6 18l-2-3h8l3 8 2-1-3-8h6z"}]}],"title":"Dedicated Freighter Capacity","desc":"Purpose-built cargo lift, not passenger-belly space competing with baggage."},{"icon":["$","svg",null,{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","children":[["$","circle",null,{"cx":"6","cy":"6","r":"2.5"}],["$","circle",null,{"cx":"18","cy":"6","r":"2.5"}],["$","circle",null,{"cx":"12","cy":"18","r":"2.5"}],["$","path",null,{"d":"M8.2 7.2 10 16M15.8 7.2 14 16M8.5 6h7"}]]}],"title":"Regional Route Design","desc":"Turboprop range and speed matched to India's major regional-capital corridors."},{"icon":["$","svg",null,{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","children":[["$","path",null,{"d":"M3 3v18h18"}],["$","path",null,{"d":"M7 14l4-4 3 3 6-7"}]]}],"title":"Scaling to 25 Aircraft","desc":"Phase 2 vision: pan-India connectivity hubs and international regional routes."}],"metrics":[{"value":8.2,"decimals":1,"suffix":"t","label":"ATR72 Payload"},{"value":1600,"suffix":"km","label":"ATR72 Range"},{"value":8.6,"decimals":1,"suffix":"t","label":"Q400 Payload"},{"value":667,"suffix":"km/h","label":"Q400 Speed"}],"cardsHeading":"FLEET SPECIFICATIONS","cardsTheme":{"accent":"#c8102e","accent2":"#ff6a3d","glow":"rgba(200,16,46,0.22)"},"gapTop":true,"gapBottom":true,"badges":[{"value":"3","label":"Phase 1 Aircraft"},{"value":"25","label":"Phase 2 Vision"}],"mediaSlot":["$","video",null,{"autoPlay":true,"loop":true,"muted":true,"playsInline":true,"style":{"width":"100%","height":"100%","minHeight":420,"objectFit":"cover","display":"block","background":"#17171b"},"children":["$","source",null,{"src":"/videos/fleet.mp4","type":"video/mp4"}]}],"ariaLabel":"Doormile Wings fleet strategy"}]]}] +14:["$","section",null,{"className":"WingsInfrastructure-module__akH2-q__section","id":"wings-infrastructure","children":["$","div",null,{"className":"WingsInfrastructure-module__akH2-q__sectionShell","children":[["$","$L1f",null,{"delay":0.05,"duration":0.7,"yOffset":20,"className":"WingsInfrastructure-module__akH2-q__header","children":[["$","div",null,{"className":"WingsInfrastructure-module__akH2-q__eyebrow","children":"/ Infrastructure /"}],["$","h2",null,{"className":"WingsInfrastructure-module__akH2-q__title","children":"A network built to move, not to sit idle"}]]}],["$","$L20",null,{"stagger":0.08,"duration":0.6,"yOffset":20,"className":"WingsInfrastructure-module__akH2-q__grid","children":[["$","div","Airport Cargo Hubs",{"className":"WingsInfrastructure-module__akH2-q__card","children":[["$","div",null,{"className":"WingsInfrastructure-module__akH2-q__icon","aria-hidden":"true","children":["$","svg",null,{"width":"24","height":"24","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.25","strokeLinecap":"round","strokeLinejoin":"round","children":["$","path",null,{"d":"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10Z"}]}]}],["$","h3",null,{"className":"WingsInfrastructure-module__akH2-q__cardTitle","children":"Airport Cargo Hubs"}],["$","p",null,{"className":"WingsInfrastructure-module__akH2-q__cardDesc","children":"Near-airport clearance hubs instead of standalone warehouses — closer to the tarmac, faster to the aircraft."}]]}],["$","div","Cross-Docking",{"className":"WingsInfrastructure-module__akH2-q__card","children":[["$","div",null,{"className":"WingsInfrastructure-module__akH2-q__icon","aria-hidden":"true","children":["$","svg",null,{"width":"24","height":"24","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.25","strokeLinecap":"round","strokeLinejoin":"round","children":["$","path",null,{"d":"M3 7h7l2 3h9M3 7v10h18V10"}]}]}],["$","h3",null,{"className":"WingsInfrastructure-module__akH2-q__cardTitle","children":"Cross-Docking"}],["$","p",null,{"className":"WingsInfrastructure-module__akH2-q__cardDesc","children":"Screening, grouping, and consolidation happen in one motion, minimizing dwell time between arrival and departure."}]]}],["$","div","Asset-Light Network",{"className":"WingsInfrastructure-module__akH2-q__card","children":[["$","div",null,{"className":"WingsInfrastructure-module__akH2-q__icon","aria-hidden":"true","children":["$","svg",null,{"width":"24","height":"24","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.25","strokeLinecap":"round","strokeLinejoin":"round","children":[["$","rect",null,{"x":"3","y":"3","width":"7","height":"7","rx":"1"}],["$","rect",null,{"x":"14","y":"3","width":"7","height":"7","rx":"1"}],["$","rect",null,{"x":"3","y":"14","width":"7","height":"7","rx":"1"}],["$","rect",null,{"x":"14","y":"14","width":"7","height":"7","rx":"1"}]]}]}],["$","h3",null,{"className":"WingsInfrastructure-module__akH2-q__cardTitle","children":"Asset-Light Network"}],["$","p",null,{"className":"WingsInfrastructure-module__akH2-q__cardDesc","children":"Leased terminal space that flexes with demand, keeping the network nimble as new routes come online."}]]}],["$","div","Scalable Operations",{"className":"WingsInfrastructure-module__akH2-q__card","children":[["$","div",null,{"className":"WingsInfrastructure-module__akH2-q__icon","aria-hidden":"true","children":["$","svg",null,{"width":"24","height":"24","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.25","strokeLinecap":"round","strokeLinejoin":"round","children":["$","path",null,{"d":"M3 21V9l6-4 6 4v12M9 21V13h6v8"}]}]}],["$","h3",null,{"className":"WingsInfrastructure-module__akH2-q__cardTitle","children":"Scalable Operations"}],["$","p",null,{"className":"WingsInfrastructure-module__akH2-q__cardDesc","children":"Modular ground infrastructure built to expand city by city without slowing down day-to-day operations."}]]}]]}]]}]}] +15:["$","$L25",null,{}] +16:["$","$L26",null,{}] +17:["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0zi3_4wi6-b2t.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}] +18:["$","script","script-0",{"src":"/_next/static/chunks/07eq5is00w7sy.js","async":true,"nonce":"$undefined"}] +19:["$","script","script-1",{"src":"/_next/static/chunks/0~6a87_s8h6ue.js","async":true,"nonce":"$undefined"}] +1a:["$","$L27",null,{"children":["$","$28",null,{"name":"Next.MetadataOutlet","children":"$@29"}]}] +2a:[] +1b:"$W2a" +1c:["$","$1","h",{"children":[null,["$","$L2b",null,{"children":"$L2c"}],["$","div",null,{"hidden":true,"children":["$","$L2d",null,{"children":["$","$28",null,{"name":"Next.Metadata","children":"$L2e"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}] +1e:["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}] +22:["$","section",null,{"className":"wind-section","id":"wings-industries","children":["$","div",null,{"className":"dm-section-container","children":["$","div",null,{"className":"wind-inner","children":[["$","$L1f",null,{"delay":0.05,"duration":0.75,"yOffset":25,"className":"wind-header","children":[["$","div",null,{"className":"wind-eyebrow","children":"/ Industries We Serve /"}],["$","h2",null,{"className":"wind-title","children":"Built for the shipments that can’t wait"}]]}],["$","$L1f",null,{"delay":0.1,"duration":0.8,"yOffset":30,"className":"wind-grid","children":[["$","div","Quick Commerce",{"className":"wind-card","style":{"backgroundImage":"linear-gradient(to bottom, rgba(0,0,0,0.2), rgba(0,0,0,0.8)), url('/images/card 1.png')","backgroundSize":"cover","backgroundPosition":"center"},"children":[["$","div",null,{"className":"wind-card-wash","aria-hidden":"true"}],["$","div",null,{"className":"wind-card-default","children":["$","h3",null,{"className":"wind-card-default-title","children":"Quick Commerce"}]}],["$","div",null,{"className":"wind-card-hover","children":[["$","h3",null,{"className":"wind-card-hover-title","children":"Quick Commerce"}],["$","div",null,{"children":[["$","p",null,{"className":"wind-card-label","children":"Challenge"}],["$","p",null,{"className":"wind-card-text","children":"Sub-3-hour delivery windows for dark stores and micro-warehouses."}]]}],["$","div",null,{"children":[["$","p",null,{"className":"wind-card-label","children":"Doormile Wings"}],["$","p",null,{"className":"wind-card-text","children":"Dedicated same-day air capacity linking metros to fulfillment hubs."}]]}]]}]]}],["$","div","Express B2B Cargo",{"className":"wind-card","style":{"backgroundImage":"linear-gradient(to bottom, rgba(0,0,0,0.2), rgba(0,0,0,0.8)), url('/images/card 2.png')","backgroundSize":"cover","backgroundPosition":"center"},"children":[["$","div",null,{"className":"wind-card-wash","aria-hidden":"true"}],["$","div",null,{"className":"wind-card-default","children":["$","h3",null,{"className":"wind-card-default-title","children":"Express B2B Cargo"}]}],["$","div",null,{"className":"wind-card-hover","children":[["$","h3",null,{"className":"wind-card-hover-title","children":"Express B2B Cargo"}],["$","div",null,{"children":[["$","p",null,{"className":"wind-card-label","children":"Challenge"}],["$","p",null,{"className":"wind-card-text","children":"Time-critical industrial parts and components stuck on slow trunk routes."}]]}],["$","div",null,{"children":[["$","p",null,{"className":"wind-card-label","children":"Doormile Wings"}],["$","p",null,{"className":"wind-card-text","children":"Rapid airport-to-airport transport between major economic nodes."}]]}]]}]]}],["$","div","Healthcare & Pharma",{"className":"wind-card","style":{"backgroundImage":"linear-gradient(to bottom, rgba(0,0,0,0.2), rgba(0,0,0,0.8)), url('/images/card 3.png')","backgroundSize":"cover","backgroundPosition":"center"},"children":[["$","div",null,{"className":"wind-card-wash","aria-hidden":"true"}],["$","div",null,{"className":"wind-card-default","children":["$","h3",null,{"className":"wind-card-default-title","children":"Healthcare & Pharma"}]}],["$","div",null,{"className":"wind-card-hover","children":[["$","h3",null,{"className":"wind-card-hover-title","children":"Healthcare & Pharma"}],["$","div",null,{"children":[["$","p",null,{"className":"wind-card-label","children":"Challenge"}],["$","p",null,{"className":"wind-card-text","children":"Temperature-sensitive, compliance-critical shipments with zero margin for error."}]]}],["$","div",null,{"children":[["$","p",null,{"className":"wind-card-label","children":"Doormile Wings"}],["$","p",null,{"className":"wind-card-text","children":"Active and passive cold-chain packaging with full chain-of-custody tracking."}]]}]]}]]}],["$","div","Cold Chain Logistics",{"className":"wind-card","style":{"backgroundImage":"linear-gradient(to bottom, rgba(0,0,0,0.2), rgba(0,0,0,0.8)), url('/images/card4.png')","backgroundSize":"cover","backgroundPosition":"center"},"children":[["$","div",null,{"className":"wind-card-wash","aria-hidden":"true"}],["$","div",null,{"className":"wind-card-default","children":["$","h3",null,{"className":"wind-card-default-title","children":"Cold Chain Logistics"}]}],["$","div",null,{"className":"wind-card-hover","children":[["$","h3",null,{"className":"wind-card-hover-title","children":"Cold Chain Logistics"}],"$L2f","$L30"]}]]}],"$L31","$L32"]}]]}]}]}] +2f:["$","div",null,{"children":[["$","p",null,{"className":"wind-card-label","children":"Challenge"}],["$","p",null,{"className":"wind-card-text","children":"Perishables and fresh goods that can't survive slow surface transit."}]]}] +30:["$","div",null,{"children":[["$","p",null,{"className":"wind-card-label","children":"Doormile Wings"}],["$","p",null,{"className":"wind-card-text","children":"Precision temperature tracking matched to airline-speed transit."}]]}] +31:["$","div","High-Value Cargo",{"className":"wind-card","style":{"backgroundImage":"linear-gradient(to bottom, rgba(0,0,0,0.2), rgba(0,0,0,0.8)), url('/images/card5.png')","backgroundSize":"cover","backgroundPosition":"center"},"children":[["$","div",null,{"className":"wind-card-wash","aria-hidden":"true"}],["$","div",null,{"className":"wind-card-default","children":["$","h3",null,{"className":"wind-card-default-title","children":"High-Value Cargo"}]}],["$","div",null,{"className":"wind-card-hover","children":[["$","h3",null,{"className":"wind-card-hover-title","children":"High-Value Cargo"}],["$","div",null,{"children":[["$","p",null,{"className":"wind-card-label","children":"Challenge"}],["$","p",null,{"className":"wind-card-text","children":"Zero tolerance for loss, tampering, or delay on high-value shipments."}]]}],["$","div",null,{"children":[["$","p",null,{"className":"wind-card-label","children":"Doormile Wings"}],["$","p",null,{"className":"wind-card-text","children":"Maximum-security handling with real-time electronic custody tracking."}]]}]]}]]}] +32:["$","div","E-Commerce Logistics",{"className":"wind-card","style":{"backgroundImage":"linear-gradient(to bottom, rgba(0,0,0,0.2), rgba(0,0,0,0.8)), url('/images/card6.png')","backgroundSize":"cover","backgroundPosition":"center"},"children":[["$","div",null,{"className":"wind-card-wash","aria-hidden":"true"}],["$","div",null,{"className":"wind-card-default","children":["$","h3",null,{"className":"wind-card-default-title","children":"E-Commerce Logistics"}]}],["$","div",null,{"className":"wind-card-hover","children":[["$","h3",null,{"className":"wind-card-hover-title","children":"E-Commerce Logistics"}],["$","div",null,{"children":[["$","p",null,{"className":"wind-card-label","children":"Challenge"}],["$","p",null,{"className":"wind-card-text","children":"Next-day and same-day fulfillment expectations across tier-1 and tier-2 cities."}]]}],["$","div",null,{"children":[["$","p",null,{"className":"wind-card-label","children":"Doormile Wings"}],["$","p",null,{"className":"wind-card-text","children":"Direct sorting-hub-to-airport clearance network for faster regional delivery."}]]}]]}]]}] +2c:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] +33:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +29:null +2e:[["$","title","0",{"children":"Doormile Wings – Redefining Domestic Air Logistics Through AI"}],["$","meta","1",{"name":"description","content":"Doormile Wings links India's major regional capitals with AI-powered, same-day air logistics and zero-emission EV last-mile delivery — where quick commerce meets quick logistics."}],["$","meta","2",{"name":"robots","content":"index, follow"}],["$","link","3",{"rel":"canonical","href":"https://doormile.com/doormile-wings"}],["$","meta","4",{"property":"og:title","content":"Doormile Wings – Redefining Domestic Air Logistics Through AI"}],["$","meta","5",{"property":"og:description","content":"Same-day air logistics linking India's major regional capitals, powered by MileTruth™ AI and zero-emission EV last-mile delivery."}],["$","meta","6",{"property":"og:url","content":"https://doormile.com/doormile-wings"}],["$","meta","7",{"property":"og:site_name","content":"Doormile"}],["$","meta","8",{"property":"og:image","content":"https://doormile.com/images/wings-logo.png"}],["$","meta","9",{"property":"og:image:width","content":"1200"}],["$","meta","10",{"property":"og:image:height","content":"630"}],["$","meta","11",{"property":"og:image:alt","content":"Doormile Wings"}],["$","meta","12",{"property":"og:type","content":"website"}],["$","meta","13",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","14",{"name":"twitter:title","content":"Doormile Wings – Redefining Domestic Air Logistics Through AI"}],["$","meta","15",{"name":"twitter:description","content":"Same-day air logistics linking India's major regional capitals, powered by MileTruth™ AI and zero-emission EV last-mile delivery."}],["$","meta","16",{"name":"twitter:image","content":"https://doormile.com/images/wings-logo.png"}],["$","link","17",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","18",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","19",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","20",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L33","21",{}]] diff --git a/build/doormile-wings/__next._full.txt b/build/doormile-wings/__next._full.txt new file mode 100644 index 0000000..e45d876 --- /dev/null +++ b/build/doormile-wings/__next._full.txt @@ -0,0 +1,299 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +c:I[36202,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~6a87_s8h6ue.js"],"default"] +d:I[63061,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~6a87_s8h6ue.js"],"default"] +e:I[10425,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~6a87_s8h6ue.js"],"default"] +1d:I[68027,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/chunks/0zi3_4wi6-b2t.css","style"] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +f:Tafb, + .wfg-section { + background: #ffffff; + padding: var(--space-section-lg, 80px) 0; + } + + .wfg-header { + margin: 0 auto 48px auto; + max-width: 720px; + text-align: center; + } + + .wfg-eyebrow { + font-size: 13px; + font-weight: 700; + letter-spacing: 2px; + text-transform: uppercase; + color: rgba(17, 17, 17, 0.45); + margin-bottom: 16px; + } + + .wfg-title { + font-size: clamp(28px, 3.2vw, 46px) !important; + font-weight: 800 !important; + letter-spacing: -0.03em !important; + line-height: 1.15 !important; + text-transform: none !important; + color: #111111 !important; + margin: 0; + } + + .wfg-inner { + max-width: 1380px; + margin: 0 auto; + } + + .wfg-grid { + display: grid; + grid-template-columns: repeat(4, minmax(0, 1fr)); + gap: 20px; + } + + .wfg-card { + min-width: 0; + background: #ffffff; + border: 1px solid rgba(17, 17, 17, 0.1); + border-radius: 20px; + padding: 30px 26px; + transition: border-color 0.35s ease, box-shadow 0.35s ease, transform 0.35s cubic-bezier(0.165, 0.84, 0.44, 1); + } + + .wfg-card:hover { + border-color: #c8102e; + box-shadow: 0 20px 40px rgba(200, 16, 46, 0.08); + transform: translateY(-8px); + } + + .wfg-icon { + width: 46px; + height: 46px; + display: flex; + align-items: center; + justify-content: center; + border-radius: 12px; + background: rgba(200, 16, 46, 0.06); + color: #c8102e; + margin-bottom: 20px; + } + + .wfg-card-title { + font-size: 16.5px !important; + font-weight: 700 !important; + line-height: 1.3 !important; + text-transform: none !important; + color: #111111 !important; + margin: 0 0 8px 0; + } + + .wfg-card-desc { + font-size: 14px; + line-height: 1.55; + color: rgba(17, 17, 17, 0.6); + margin: 0; + } + + @media (max-width: 1024px) { + .wfg-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } + } + + @media (max-width: 600px) { + .wfg-grid { grid-template-columns: 1fr; } + /* var(--space-section-lg) floors at a fixed 52px on any phone + width (clamp() has no further breakpoint-based step-down), which + reads as noticeably heavier than the section rhythm near the + footer. Trimmed to a real mobile value here instead. */ + .wfg-section { padding-top: 44px; padding-bottom: 44px; } + } + 0:{"P":null,"c":["","doormile-wings"],"q":"","i":false,"f":[[["",{"children":["doormile-wings",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","div",null,{"id":"doormile-wings","className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":["$","div",null,{"data-elementor-type":"wp-page","data-elementor-id":"95","className":"elementor elementor-95 elementor-59","children":[["$","$Lc",null,{}],["$","$Ld",null,{}],["$","$Le",null,{}],[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$f"}}],"$L10"],"$L11","$L12","$L13","$L14","$L15","$L16"]}]}]}]}],["$L17","$L18","$L19"],"$L1a"]}],{},null,false,null]},null,false,"$@1b"]},null,false,null],"$L1c",false]],"m":"$undefined","G":["$1d",["$L1e"]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"kmSVPuUqY3Rhw5xy4D2nn"} +1f:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~6a87_s8h6ue.js"],"ScrollReveal"] +20:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~6a87_s8h6ue.js"],"StaggerChildren"] +23:I[48920,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~6a87_s8h6ue.js"],"default"] +24:I[14224,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~6a87_s8h6ue.js"],"default"] +25:I[55064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~6a87_s8h6ue.js"],"default"] +26:I[13378,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~6a87_s8h6ue.js"],"default"] +27:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +28:"$Sreact.suspense" +2b:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +2d:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +10:["$","section",null,{"className":"wfg-section","id":"wings-features","children":["$","div",null,{"className":"dm-section-container","children":["$","div",null,{"className":"wfg-inner","children":[["$","$L1f",null,{"delay":0.05,"duration":0.75,"yOffset":25,"className":"wfg-header","children":[["$","div",null,{"className":"wfg-eyebrow","children":"/ Why Businesses Choose Doormile Wings /"}],["$","h2",null,{"className":"wfg-title","children":"Built to be depended on"}]]}],["$","$L20",null,{"stagger":0.1,"duration":0.7,"yOffset":30,"className":"wfg-grid","children":[["$","div","AI Decision Engine",{"className":"wfg-card","children":[["$","div",null,{"className":"wfg-icon","aria-hidden":"true","children":["$","svg",null,{"width":"24","height":"24","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.25","strokeLinecap":"round","strokeLinejoin":"round","children":[["$","path",null,{"d":"M12 2a4 4 0 0 1 4 4v1a4 4 0 0 1-1.2 2.86A4 4 0 0 1 16 13v1a4 4 0 0 1-4 4 4 4 0 0 1-4-4v-1a4 4 0 0 1 1.2-3.14A4 4 0 0 1 8 7V6a4 4 0 0 1 4-4Z"}],["$","path",null,{"d":"M9 21h6M12 18v3"}]]}]}],["$","h3",null,{"className":"wfg-card-title","children":"AI Decision Engine"}],["$","p",null,{"className":"wfg-card-desc","children":"MileTruth™ AI continuously forecasts demand and optimizes routing and load decisions in real time."}]]}],["$","div","Real-Time Visibility",{"className":"wfg-card","children":[["$","div",null,{"className":"wfg-icon","aria-hidden":"true","children":["$","svg",null,{"width":"24","height":"24","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.25","strokeLinecap":"round","strokeLinejoin":"round","children":[["$","path",null,{"d":"M1 12s4-7 11-7 11 7 11 7-4 7-11 7-11-7-11-7Z"}],["$","circle",null,{"cx":"12","cy":"12","r":"3"}]]}]}],["$","h3",null,{"className":"wfg-card-title","children":"Real-Time Visibility"}],["$","p",null,{"className":"wfg-card-desc","children":"Live shipment tracking keeps shippers, ground teams, and customers updated at every stage."}]]}],["$","div","Faster Regional Reach",{"className":"wfg-card","children":[["$","div",null,{"className":"wfg-icon","aria-hidden":"true","children":["$","svg",null,{"width":"24","height":"24","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.25","strokeLinecap":"round","strokeLinejoin":"round","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"13 6 19 12 13 18"}]]}]}],["$","h3",null,{"className":"wfg-card-title","children":"Faster Regional Reach"}],["$","p",null,{"className":"wfg-card-desc","children":"A dedicated network linking major regional capitals, built for speed rather than passenger schedules."}]]}],["$","div","Reliable Scheduled Operations",{"className":"wfg-card","children":[["$","div",null,{"className":"wfg-icon","aria-hidden":"true","children":["$","svg",null,{"width":"24","height":"24","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.25","strokeLinecap":"round","strokeLinejoin":"round","children":[["$","rect",null,{"x":"3","y":"4","width":"18","height":"18","rx":"3"}],["$","line",null,{"x1":"16","y1":"2","x2":"16","y2":"6"}],["$","line",null,{"x1":"8","y1":"2","x2":"8","y2":"6"}],["$","line",null,{"x1":"3","y1":"10","x2":"21","y2":"10"}],["$","path",null,{"d":"M9 16l2 2 4-4"}]]}]}],["$","h3",null,{"className":"wfg-card-title","children":"Reliable Scheduled Operations"}],["$","p",null,{"className":"wfg-card-desc","children":"Dedicated freighter capacity with consistent schedules — not subject to passenger-belly bumping."}]]}]]}]]}]}]}] +21:Tfac, + .wind-section { + background: #fafafa; + padding: var(--space-section-lg, 80px) 0 20px 0; /* Reduced bottom padding to minimize gap */ + } + + .wind-header { + margin: 0 auto 48px auto; + max-width: 720px; + text-align: center; + } + + .wind-eyebrow { + font-size: 13px; + font-weight: 700; + letter-spacing: 2px; + text-transform: uppercase; + color: rgba(17, 17, 17, 0.45); + margin-bottom: 16px; + } + + .wind-title { + font-size: clamp(28px, 3.2vw, 46px) !important; + font-weight: 800 !important; + letter-spacing: -0.03em !important; + line-height: 1.15 !important; + text-transform: none !important; + color: #111111 !important; + margin: 0; + } + + .wind-inner { + max-width: 1380px; + margin: 0 auto; + } + + .wind-grid { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 20px; + } + + .wind-card { + position: relative; + min-width: 0; + aspect-ratio: 4 / 5; + border-radius: 20px; + overflow: hidden; + background: linear-gradient(150deg, #17171b 0%, #0b0b0d 100%); + isolation: isolate; + } + + .wind-card-wash { + position: absolute; + inset: 0; + background: linear-gradient(160deg, rgba(200, 16, 46, 0.35) 0%, rgba(200, 16, 46, 0) 60%); + opacity: 0.5; + transition: opacity 0.4s ease; + } + + .wind-card:hover .wind-card-wash { + opacity: 1; + } + + .wind-card-default { + position: absolute; + left: 24px; + right: 24px; + bottom: 24px; + transition: opacity 0.3s ease, transform 0.3s ease; + } + + .wind-card:hover .wind-card-default { + opacity: 0; + transform: translateY(8px); + pointer-events: none; + } + + .wind-card .wind-card-default-title { + font-size: 20px !important; + font-weight: 800 !important; + line-height: 1.3 !important; + text-transform: none !important; + color: #ffffff !important; + margin: 0; + } + + .wind-card-hover { + position: absolute; + inset: 0; + padding: 26px 24px; + display: flex; + flex-direction: column; + justify-content: flex-end; + gap: 14px; + opacity: 0; + transform: translateY(10px); + transition: opacity 0.35s ease, transform 0.35s ease; + } + + .wind-card:hover .wind-card-hover { + opacity: 1; + transform: translateY(0); + } + + .wind-card .wind-card-hover-title { + font-size: 19px !important; + font-weight: 800 !important; + line-height: 1.3 !important; + text-transform: none !important; + color: #ffffff !important; + margin: 0; + } + + .wind-card-label { + font-size: 10.5px; + font-weight: 800; + letter-spacing: 1.2px; + text-transform: uppercase; + color: rgba(255, 255, 255, 0.5); + margin: 0 0 4px 0; + } + + .wind-card-text { + font-size: 13px; + line-height: 1.5; + color: rgba(255, 255, 255, 0.85); + margin: 0; + } + + @media (max-width: 1024px) { + .wind-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } + } + + @media (max-width: 600px) { + .wind-grid { grid-template-columns: 1fr; } + .wind-card { aspect-ratio: 3 / 4; } + /* var(--space-section-lg) floors at a fixed 52px on any phone + width; bottom is already trimmed to 20px, so only the top needs + a real mobile reduction to match the section rhythm near the + footer. */ + .wind-section { padding-top: 44px; } + } + 11:[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$21"}}],"$L22"] +12:["$","$L23",null,{}] +13:["$","div",null,{"id":"wings-fleet","children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"\n @media (max-width: 767px) {\n #wings-fleet .evnd-gap-bottom { margin-bottom: 14px !important; }\n }\n "}}],["$","$L24",null,{"bannerImage":"/images/pahse1.png","cardTitle":"Quick Logistics","cardSubtitle":"Same-Day Air Network","eyebrow":"/ Fleet Strategy /","titleLead":"Purpose-Built for ","titleAccent":"Regional Speed","features":[{"icon":["$","svg",null,{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","children":["$","path",null,{"d":"M22 12h-6l-4-9-2 1 3 8H5l-2-3-1.5.6L3 14l1.5 4.4L6 18l-2-3h8l3 8 2-1-3-8h6z"}]}],"title":"Dedicated Freighter Capacity","desc":"Purpose-built cargo lift, not passenger-belly space competing with baggage."},{"icon":["$","svg",null,{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","children":[["$","circle",null,{"cx":"6","cy":"6","r":"2.5"}],["$","circle",null,{"cx":"18","cy":"6","r":"2.5"}],["$","circle",null,{"cx":"12","cy":"18","r":"2.5"}],["$","path",null,{"d":"M8.2 7.2 10 16M15.8 7.2 14 16M8.5 6h7"}]]}],"title":"Regional Route Design","desc":"Turboprop range and speed matched to India's major regional-capital corridors."},{"icon":["$","svg",null,{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","children":[["$","path",null,{"d":"M3 3v18h18"}],["$","path",null,{"d":"M7 14l4-4 3 3 6-7"}]]}],"title":"Scaling to 25 Aircraft","desc":"Phase 2 vision: pan-India connectivity hubs and international regional routes."}],"metrics":[{"value":8.2,"decimals":1,"suffix":"t","label":"ATR72 Payload"},{"value":1600,"suffix":"km","label":"ATR72 Range"},{"value":8.6,"decimals":1,"suffix":"t","label":"Q400 Payload"},{"value":667,"suffix":"km/h","label":"Q400 Speed"}],"cardsHeading":"FLEET SPECIFICATIONS","cardsTheme":{"accent":"#c8102e","accent2":"#ff6a3d","glow":"rgba(200,16,46,0.22)"},"gapTop":true,"gapBottom":true,"badges":[{"value":"3","label":"Phase 1 Aircraft"},{"value":"25","label":"Phase 2 Vision"}],"mediaSlot":["$","video",null,{"autoPlay":true,"loop":true,"muted":true,"playsInline":true,"style":{"width":"100%","height":"100%","minHeight":420,"objectFit":"cover","display":"block","background":"#17171b"},"children":["$","source",null,{"src":"/videos/fleet.mp4","type":"video/mp4"}]}],"ariaLabel":"Doormile Wings fleet strategy"}]]}] +14:["$","section",null,{"className":"WingsInfrastructure-module__akH2-q__section","id":"wings-infrastructure","children":["$","div",null,{"className":"WingsInfrastructure-module__akH2-q__sectionShell","children":[["$","$L1f",null,{"delay":0.05,"duration":0.7,"yOffset":20,"className":"WingsInfrastructure-module__akH2-q__header","children":[["$","div",null,{"className":"WingsInfrastructure-module__akH2-q__eyebrow","children":"/ Infrastructure /"}],["$","h2",null,{"className":"WingsInfrastructure-module__akH2-q__title","children":"A network built to move, not to sit idle"}]]}],["$","$L20",null,{"stagger":0.08,"duration":0.6,"yOffset":20,"className":"WingsInfrastructure-module__akH2-q__grid","children":[["$","div","Airport Cargo Hubs",{"className":"WingsInfrastructure-module__akH2-q__card","children":[["$","div",null,{"className":"WingsInfrastructure-module__akH2-q__icon","aria-hidden":"true","children":["$","svg",null,{"width":"24","height":"24","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.25","strokeLinecap":"round","strokeLinejoin":"round","children":["$","path",null,{"d":"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10Z"}]}]}],["$","h3",null,{"className":"WingsInfrastructure-module__akH2-q__cardTitle","children":"Airport Cargo Hubs"}],["$","p",null,{"className":"WingsInfrastructure-module__akH2-q__cardDesc","children":"Near-airport clearance hubs instead of standalone warehouses — closer to the tarmac, faster to the aircraft."}]]}],["$","div","Cross-Docking",{"className":"WingsInfrastructure-module__akH2-q__card","children":[["$","div",null,{"className":"WingsInfrastructure-module__akH2-q__icon","aria-hidden":"true","children":["$","svg",null,{"width":"24","height":"24","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.25","strokeLinecap":"round","strokeLinejoin":"round","children":["$","path",null,{"d":"M3 7h7l2 3h9M3 7v10h18V10"}]}]}],["$","h3",null,{"className":"WingsInfrastructure-module__akH2-q__cardTitle","children":"Cross-Docking"}],["$","p",null,{"className":"WingsInfrastructure-module__akH2-q__cardDesc","children":"Screening, grouping, and consolidation happen in one motion, minimizing dwell time between arrival and departure."}]]}],["$","div","Asset-Light Network",{"className":"WingsInfrastructure-module__akH2-q__card","children":[["$","div",null,{"className":"WingsInfrastructure-module__akH2-q__icon","aria-hidden":"true","children":["$","svg",null,{"width":"24","height":"24","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.25","strokeLinecap":"round","strokeLinejoin":"round","children":[["$","rect",null,{"x":"3","y":"3","width":"7","height":"7","rx":"1"}],["$","rect",null,{"x":"14","y":"3","width":"7","height":"7","rx":"1"}],["$","rect",null,{"x":"3","y":"14","width":"7","height":"7","rx":"1"}],["$","rect",null,{"x":"14","y":"14","width":"7","height":"7","rx":"1"}]]}]}],["$","h3",null,{"className":"WingsInfrastructure-module__akH2-q__cardTitle","children":"Asset-Light Network"}],["$","p",null,{"className":"WingsInfrastructure-module__akH2-q__cardDesc","children":"Leased terminal space that flexes with demand, keeping the network nimble as new routes come online."}]]}],["$","div","Scalable Operations",{"className":"WingsInfrastructure-module__akH2-q__card","children":[["$","div",null,{"className":"WingsInfrastructure-module__akH2-q__icon","aria-hidden":"true","children":["$","svg",null,{"width":"24","height":"24","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.25","strokeLinecap":"round","strokeLinejoin":"round","children":["$","path",null,{"d":"M3 21V9l6-4 6 4v12M9 21V13h6v8"}]}]}],["$","h3",null,{"className":"WingsInfrastructure-module__akH2-q__cardTitle","children":"Scalable Operations"}],["$","p",null,{"className":"WingsInfrastructure-module__akH2-q__cardDesc","children":"Modular ground infrastructure built to expand city by city without slowing down day-to-day operations."}]]}]]}]]}]}] +15:["$","$L25",null,{}] +16:["$","$L26",null,{}] +17:["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0zi3_4wi6-b2t.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}] +18:["$","script","script-0",{"src":"/_next/static/chunks/07eq5is00w7sy.js","async":true,"nonce":"$undefined"}] +19:["$","script","script-1",{"src":"/_next/static/chunks/0~6a87_s8h6ue.js","async":true,"nonce":"$undefined"}] +1a:["$","$L27",null,{"children":["$","$28",null,{"name":"Next.MetadataOutlet","children":"$@29"}]}] +2a:[] +1b:"$W2a" +1c:["$","$1","h",{"children":[null,["$","$L2b",null,{"children":"$L2c"}],["$","div",null,{"hidden":true,"children":["$","$L2d",null,{"children":["$","$28",null,{"name":"Next.Metadata","children":"$L2e"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}] +1e:["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}] +22:["$","section",null,{"className":"wind-section","id":"wings-industries","children":["$","div",null,{"className":"dm-section-container","children":["$","div",null,{"className":"wind-inner","children":[["$","$L1f",null,{"delay":0.05,"duration":0.75,"yOffset":25,"className":"wind-header","children":[["$","div",null,{"className":"wind-eyebrow","children":"/ Industries We Serve /"}],["$","h2",null,{"className":"wind-title","children":"Built for the shipments that can’t wait"}]]}],["$","$L1f",null,{"delay":0.1,"duration":0.8,"yOffset":30,"className":"wind-grid","children":[["$","div","Quick Commerce",{"className":"wind-card","style":{"backgroundImage":"linear-gradient(to bottom, rgba(0,0,0,0.2), rgba(0,0,0,0.8)), url('/images/card 1.png')","backgroundSize":"cover","backgroundPosition":"center"},"children":[["$","div",null,{"className":"wind-card-wash","aria-hidden":"true"}],["$","div",null,{"className":"wind-card-default","children":["$","h3",null,{"className":"wind-card-default-title","children":"Quick Commerce"}]}],["$","div",null,{"className":"wind-card-hover","children":[["$","h3",null,{"className":"wind-card-hover-title","children":"Quick Commerce"}],["$","div",null,{"children":[["$","p",null,{"className":"wind-card-label","children":"Challenge"}],["$","p",null,{"className":"wind-card-text","children":"Sub-3-hour delivery windows for dark stores and micro-warehouses."}]]}],["$","div",null,{"children":[["$","p",null,{"className":"wind-card-label","children":"Doormile Wings"}],["$","p",null,{"className":"wind-card-text","children":"Dedicated same-day air capacity linking metros to fulfillment hubs."}]]}]]}]]}],["$","div","Express B2B Cargo",{"className":"wind-card","style":{"backgroundImage":"linear-gradient(to bottom, rgba(0,0,0,0.2), rgba(0,0,0,0.8)), url('/images/card 2.png')","backgroundSize":"cover","backgroundPosition":"center"},"children":[["$","div",null,{"className":"wind-card-wash","aria-hidden":"true"}],["$","div",null,{"className":"wind-card-default","children":["$","h3",null,{"className":"wind-card-default-title","children":"Express B2B Cargo"}]}],["$","div",null,{"className":"wind-card-hover","children":[["$","h3",null,{"className":"wind-card-hover-title","children":"Express B2B Cargo"}],["$","div",null,{"children":[["$","p",null,{"className":"wind-card-label","children":"Challenge"}],["$","p",null,{"className":"wind-card-text","children":"Time-critical industrial parts and components stuck on slow trunk routes."}]]}],["$","div",null,{"children":[["$","p",null,{"className":"wind-card-label","children":"Doormile Wings"}],["$","p",null,{"className":"wind-card-text","children":"Rapid airport-to-airport transport between major economic nodes."}]]}]]}]]}],["$","div","Healthcare & Pharma",{"className":"wind-card","style":{"backgroundImage":"linear-gradient(to bottom, rgba(0,0,0,0.2), rgba(0,0,0,0.8)), url('/images/card 3.png')","backgroundSize":"cover","backgroundPosition":"center"},"children":[["$","div",null,{"className":"wind-card-wash","aria-hidden":"true"}],["$","div",null,{"className":"wind-card-default","children":["$","h3",null,{"className":"wind-card-default-title","children":"Healthcare & Pharma"}]}],["$","div",null,{"className":"wind-card-hover","children":[["$","h3",null,{"className":"wind-card-hover-title","children":"Healthcare & Pharma"}],["$","div",null,{"children":[["$","p",null,{"className":"wind-card-label","children":"Challenge"}],["$","p",null,{"className":"wind-card-text","children":"Temperature-sensitive, compliance-critical shipments with zero margin for error."}]]}],["$","div",null,{"children":[["$","p",null,{"className":"wind-card-label","children":"Doormile Wings"}],["$","p",null,{"className":"wind-card-text","children":"Active and passive cold-chain packaging with full chain-of-custody tracking."}]]}]]}]]}],["$","div","Cold Chain Logistics",{"className":"wind-card","style":{"backgroundImage":"linear-gradient(to bottom, rgba(0,0,0,0.2), rgba(0,0,0,0.8)), url('/images/card4.png')","backgroundSize":"cover","backgroundPosition":"center"},"children":[["$","div",null,{"className":"wind-card-wash","aria-hidden":"true"}],["$","div",null,{"className":"wind-card-default","children":["$","h3",null,{"className":"wind-card-default-title","children":"Cold Chain Logistics"}]}],["$","div",null,{"className":"wind-card-hover","children":[["$","h3",null,{"className":"wind-card-hover-title","children":"Cold Chain Logistics"}],"$L2f","$L30"]}]]}],"$L31","$L32"]}]]}]}]}] +2f:["$","div",null,{"children":[["$","p",null,{"className":"wind-card-label","children":"Challenge"}],["$","p",null,{"className":"wind-card-text","children":"Perishables and fresh goods that can't survive slow surface transit."}]]}] +30:["$","div",null,{"children":[["$","p",null,{"className":"wind-card-label","children":"Doormile Wings"}],["$","p",null,{"className":"wind-card-text","children":"Precision temperature tracking matched to airline-speed transit."}]]}] +31:["$","div","High-Value Cargo",{"className":"wind-card","style":{"backgroundImage":"linear-gradient(to bottom, rgba(0,0,0,0.2), rgba(0,0,0,0.8)), url('/images/card5.png')","backgroundSize":"cover","backgroundPosition":"center"},"children":[["$","div",null,{"className":"wind-card-wash","aria-hidden":"true"}],["$","div",null,{"className":"wind-card-default","children":["$","h3",null,{"className":"wind-card-default-title","children":"High-Value Cargo"}]}],["$","div",null,{"className":"wind-card-hover","children":[["$","h3",null,{"className":"wind-card-hover-title","children":"High-Value Cargo"}],["$","div",null,{"children":[["$","p",null,{"className":"wind-card-label","children":"Challenge"}],["$","p",null,{"className":"wind-card-text","children":"Zero tolerance for loss, tampering, or delay on high-value shipments."}]]}],["$","div",null,{"children":[["$","p",null,{"className":"wind-card-label","children":"Doormile Wings"}],["$","p",null,{"className":"wind-card-text","children":"Maximum-security handling with real-time electronic custody tracking."}]]}]]}]]}] +32:["$","div","E-Commerce Logistics",{"className":"wind-card","style":{"backgroundImage":"linear-gradient(to bottom, rgba(0,0,0,0.2), rgba(0,0,0,0.8)), url('/images/card6.png')","backgroundSize":"cover","backgroundPosition":"center"},"children":[["$","div",null,{"className":"wind-card-wash","aria-hidden":"true"}],["$","div",null,{"className":"wind-card-default","children":["$","h3",null,{"className":"wind-card-default-title","children":"E-Commerce Logistics"}]}],["$","div",null,{"className":"wind-card-hover","children":[["$","h3",null,{"className":"wind-card-hover-title","children":"E-Commerce Logistics"}],["$","div",null,{"children":[["$","p",null,{"className":"wind-card-label","children":"Challenge"}],["$","p",null,{"className":"wind-card-text","children":"Next-day and same-day fulfillment expectations across tier-1 and tier-2 cities."}]]}],["$","div",null,{"children":[["$","p",null,{"className":"wind-card-label","children":"Doormile Wings"}],["$","p",null,{"className":"wind-card-text","children":"Direct sorting-hub-to-airport clearance network for faster regional delivery."}]]}]]}]]}] +2c:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] +33:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +29:null +2e:[["$","title","0",{"children":"Doormile Wings – Redefining Domestic Air Logistics Through AI"}],["$","meta","1",{"name":"description","content":"Doormile Wings links India's major regional capitals with AI-powered, same-day air logistics and zero-emission EV last-mile delivery — where quick commerce meets quick logistics."}],["$","meta","2",{"name":"robots","content":"index, follow"}],["$","link","3",{"rel":"canonical","href":"https://doormile.com/doormile-wings"}],["$","meta","4",{"property":"og:title","content":"Doormile Wings – Redefining Domestic Air Logistics Through AI"}],["$","meta","5",{"property":"og:description","content":"Same-day air logistics linking India's major regional capitals, powered by MileTruth™ AI and zero-emission EV last-mile delivery."}],["$","meta","6",{"property":"og:url","content":"https://doormile.com/doormile-wings"}],["$","meta","7",{"property":"og:site_name","content":"Doormile"}],["$","meta","8",{"property":"og:image","content":"https://doormile.com/images/wings-logo.png"}],["$","meta","9",{"property":"og:image:width","content":"1200"}],["$","meta","10",{"property":"og:image:height","content":"630"}],["$","meta","11",{"property":"og:image:alt","content":"Doormile Wings"}],["$","meta","12",{"property":"og:type","content":"website"}],["$","meta","13",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","14",{"name":"twitter:title","content":"Doormile Wings – Redefining Domestic Air Logistics Through AI"}],["$","meta","15",{"name":"twitter:description","content":"Same-day air logistics linking India's major regional capitals, powered by MileTruth™ AI and zero-emission EV last-mile delivery."}],["$","meta","16",{"name":"twitter:image","content":"https://doormile.com/images/wings-logo.png"}],["$","link","17",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","18",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","19",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","20",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L33","21",{}]] diff --git a/build/doormile-wings/__next._head.txt b/build/doormile-wings/__next._head.txt new file mode 100644 index 0000000..1c2274e --- /dev/null +++ b/build/doormile-wings/__next._head.txt @@ -0,0 +1,6 @@ +1:"$Sreact.fragment" +2:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +3:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +4:"$Sreact.suspense" +5:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +0:{"rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"Doormile Wings – Redefining Domestic Air Logistics Through AI"}],["$","meta","1",{"name":"description","content":"Doormile Wings links India's major regional capitals with AI-powered, same-day air logistics and zero-emission EV last-mile delivery — where quick commerce meets quick logistics."}],["$","meta","2",{"name":"robots","content":"index, follow"}],["$","link","3",{"rel":"canonical","href":"https://doormile.com/doormile-wings"}],["$","meta","4",{"property":"og:title","content":"Doormile Wings – Redefining Domestic Air Logistics Through AI"}],["$","meta","5",{"property":"og:description","content":"Same-day air logistics linking India's major regional capitals, powered by MileTruth™ AI and zero-emission EV last-mile delivery."}],["$","meta","6",{"property":"og:url","content":"https://doormile.com/doormile-wings"}],["$","meta","7",{"property":"og:site_name","content":"Doormile"}],["$","meta","8",{"property":"og:image","content":"https://doormile.com/images/wings-logo.png"}],["$","meta","9",{"property":"og:image:width","content":"1200"}],["$","meta","10",{"property":"og:image:height","content":"630"}],["$","meta","11",{"property":"og:image:alt","content":"Doormile Wings"}],["$","meta","12",{"property":"og:type","content":"website"}],["$","meta","13",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","14",{"name":"twitter:title","content":"Doormile Wings – Redefining Domestic Air Logistics Through AI"}],["$","meta","15",{"name":"twitter:description","content":"Same-day air logistics linking India's major regional capitals, powered by MileTruth™ AI and zero-emission EV last-mile delivery."}],["$","meta","16",{"name":"twitter:image","content":"https://doormile.com/images/wings-logo.png"}],["$","link","17",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","18",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","19",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","20",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L5","21",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/doormile-wings/__next._index.txt b/build/doormile-wings/__next._index.txt new file mode 100644 index 0000000..d0b3355 --- /dev/null +++ b/build/doormile-wings/__next._index.txt @@ -0,0 +1,15 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","template":["$","$La",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/doormile-wings/__next._tree.txt b/build/doormile-wings/__next._tree.txt new file mode 100644 index 0000000..f7f3493 --- /dev/null +++ b/build/doormile-wings/__next._tree.txt @@ -0,0 +1,10 @@ +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/chunks/0zi3_4wi6-b2t.css","style"] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"tree":{"name":"","param":null,"prefetchHints":16,"slots":{"children":{"name":"doormile-wings","param":null,"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}}}},"staleTime":300,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/doormile-wings/__next.doormile-wings.__PAGE__.txt b/build/doormile-wings/__next.doormile-wings.__PAGE__.txt new file mode 100644 index 0000000..c27a2d8 --- /dev/null +++ b/build/doormile-wings/__next.doormile-wings.__PAGE__.txt @@ -0,0 +1,271 @@ +1:"$Sreact.fragment" +2:I[36202,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~6a87_s8h6ue.js"],"default"] +3:I[63061,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~6a87_s8h6ue.js"],"default"] +4:I[10425,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~6a87_s8h6ue.js"],"default"] +11:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~6a87_s8h6ue.js"],"ScrollReveal"] +12:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~6a87_s8h6ue.js"],"StaggerChildren"] +15:I[48920,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~6a87_s8h6ue.js"],"default"] +16:I[14224,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~6a87_s8h6ue.js"],"default"] +17:I[55064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~6a87_s8h6ue.js"],"default"] +18:I[13378,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~6a87_s8h6ue.js"],"default"] +19:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +1a:"$Sreact.suspense" +:HL["/_next/static/chunks/0zi3_4wi6-b2t.css","style"] +5:Tafb, + .wfg-section { + background: #ffffff; + padding: var(--space-section-lg, 80px) 0; + } + + .wfg-header { + margin: 0 auto 48px auto; + max-width: 720px; + text-align: center; + } + + .wfg-eyebrow { + font-size: 13px; + font-weight: 700; + letter-spacing: 2px; + text-transform: uppercase; + color: rgba(17, 17, 17, 0.45); + margin-bottom: 16px; + } + + .wfg-title { + font-size: clamp(28px, 3.2vw, 46px) !important; + font-weight: 800 !important; + letter-spacing: -0.03em !important; + line-height: 1.15 !important; + text-transform: none !important; + color: #111111 !important; + margin: 0; + } + + .wfg-inner { + max-width: 1380px; + margin: 0 auto; + } + + .wfg-grid { + display: grid; + grid-template-columns: repeat(4, minmax(0, 1fr)); + gap: 20px; + } + + .wfg-card { + min-width: 0; + background: #ffffff; + border: 1px solid rgba(17, 17, 17, 0.1); + border-radius: 20px; + padding: 30px 26px; + transition: border-color 0.35s ease, box-shadow 0.35s ease, transform 0.35s cubic-bezier(0.165, 0.84, 0.44, 1); + } + + .wfg-card:hover { + border-color: #c8102e; + box-shadow: 0 20px 40px rgba(200, 16, 46, 0.08); + transform: translateY(-8px); + } + + .wfg-icon { + width: 46px; + height: 46px; + display: flex; + align-items: center; + justify-content: center; + border-radius: 12px; + background: rgba(200, 16, 46, 0.06); + color: #c8102e; + margin-bottom: 20px; + } + + .wfg-card-title { + font-size: 16.5px !important; + font-weight: 700 !important; + line-height: 1.3 !important; + text-transform: none !important; + color: #111111 !important; + margin: 0 0 8px 0; + } + + .wfg-card-desc { + font-size: 14px; + line-height: 1.55; + color: rgba(17, 17, 17, 0.6); + margin: 0; + } + + @media (max-width: 1024px) { + .wfg-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } + } + + @media (max-width: 600px) { + .wfg-grid { grid-template-columns: 1fr; } + /* var(--space-section-lg) floors at a fixed 52px on any phone + width (clamp() has no further breakpoint-based step-down), which + reads as noticeably heavier than the section rhythm near the + footer. Trimmed to a real mobile value here instead. */ + .wfg-section { padding-top: 44px; padding-bottom: 44px; } + } + 0:{"rsc":["$","$1","c",{"children":[["$","div",null,{"id":"doormile-wings","className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":["$","div",null,{"data-elementor-type":"wp-page","data-elementor-id":"95","className":"elementor elementor-95 elementor-59","children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{}],[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$5"}}],["$","section",null,{"className":"wfg-section","id":"wings-features","children":"$L6"}]],"$L7","$L8","$L9","$La","$Lb","$Lc"]}]}]}]}],["$Ld","$Le","$Lf"],"$L10"]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} +6:["$","div",null,{"className":"dm-section-container","children":["$","div",null,{"className":"wfg-inner","children":[["$","$L11",null,{"delay":0.05,"duration":0.75,"yOffset":25,"className":"wfg-header","children":[["$","div",null,{"className":"wfg-eyebrow","children":"/ Why Businesses Choose Doormile Wings /"}],["$","h2",null,{"className":"wfg-title","children":"Built to be depended on"}]]}],["$","$L12",null,{"stagger":0.1,"duration":0.7,"yOffset":30,"className":"wfg-grid","children":[["$","div","AI Decision Engine",{"className":"wfg-card","children":[["$","div",null,{"className":"wfg-icon","aria-hidden":"true","children":["$","svg",null,{"width":"24","height":"24","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.25","strokeLinecap":"round","strokeLinejoin":"round","children":[["$","path",null,{"d":"M12 2a4 4 0 0 1 4 4v1a4 4 0 0 1-1.2 2.86A4 4 0 0 1 16 13v1a4 4 0 0 1-4 4 4 4 0 0 1-4-4v-1a4 4 0 0 1 1.2-3.14A4 4 0 0 1 8 7V6a4 4 0 0 1 4-4Z"}],["$","path",null,{"d":"M9 21h6M12 18v3"}]]}]}],["$","h3",null,{"className":"wfg-card-title","children":"AI Decision Engine"}],["$","p",null,{"className":"wfg-card-desc","children":"MileTruth™ AI continuously forecasts demand and optimizes routing and load decisions in real time."}]]}],["$","div","Real-Time Visibility",{"className":"wfg-card","children":[["$","div",null,{"className":"wfg-icon","aria-hidden":"true","children":["$","svg",null,{"width":"24","height":"24","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.25","strokeLinecap":"round","strokeLinejoin":"round","children":[["$","path",null,{"d":"M1 12s4-7 11-7 11 7 11 7-4 7-11 7-11-7-11-7Z"}],["$","circle",null,{"cx":"12","cy":"12","r":"3"}]]}]}],["$","h3",null,{"className":"wfg-card-title","children":"Real-Time Visibility"}],["$","p",null,{"className":"wfg-card-desc","children":"Live shipment tracking keeps shippers, ground teams, and customers updated at every stage."}]]}],["$","div","Faster Regional Reach",{"className":"wfg-card","children":[["$","div",null,{"className":"wfg-icon","aria-hidden":"true","children":["$","svg",null,{"width":"24","height":"24","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.25","strokeLinecap":"round","strokeLinejoin":"round","children":[["$","line",null,{"x1":"5","y1":"12","x2":"19","y2":"12"}],["$","polyline",null,{"points":"13 6 19 12 13 18"}]]}]}],["$","h3",null,{"className":"wfg-card-title","children":"Faster Regional Reach"}],["$","p",null,{"className":"wfg-card-desc","children":"A dedicated network linking major regional capitals, built for speed rather than passenger schedules."}]]}],["$","div","Reliable Scheduled Operations",{"className":"wfg-card","children":[["$","div",null,{"className":"wfg-icon","aria-hidden":"true","children":["$","svg",null,{"width":"24","height":"24","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.25","strokeLinecap":"round","strokeLinejoin":"round","children":[["$","rect",null,{"x":"3","y":"4","width":"18","height":"18","rx":"3"}],["$","line",null,{"x1":"16","y1":"2","x2":"16","y2":"6"}],["$","line",null,{"x1":"8","y1":"2","x2":"8","y2":"6"}],["$","line",null,{"x1":"3","y1":"10","x2":"21","y2":"10"}],["$","path",null,{"d":"M9 16l2 2 4-4"}]]}]}],["$","h3",null,{"className":"wfg-card-title","children":"Reliable Scheduled Operations"}],["$","p",null,{"className":"wfg-card-desc","children":"Dedicated freighter capacity with consistent schedules — not subject to passenger-belly bumping."}]]}]]}]]}]}] +13:Tfac, + .wind-section { + background: #fafafa; + padding: var(--space-section-lg, 80px) 0 20px 0; /* Reduced bottom padding to minimize gap */ + } + + .wind-header { + margin: 0 auto 48px auto; + max-width: 720px; + text-align: center; + } + + .wind-eyebrow { + font-size: 13px; + font-weight: 700; + letter-spacing: 2px; + text-transform: uppercase; + color: rgba(17, 17, 17, 0.45); + margin-bottom: 16px; + } + + .wind-title { + font-size: clamp(28px, 3.2vw, 46px) !important; + font-weight: 800 !important; + letter-spacing: -0.03em !important; + line-height: 1.15 !important; + text-transform: none !important; + color: #111111 !important; + margin: 0; + } + + .wind-inner { + max-width: 1380px; + margin: 0 auto; + } + + .wind-grid { + display: grid; + grid-template-columns: repeat(3, minmax(0, 1fr)); + gap: 20px; + } + + .wind-card { + position: relative; + min-width: 0; + aspect-ratio: 4 / 5; + border-radius: 20px; + overflow: hidden; + background: linear-gradient(150deg, #17171b 0%, #0b0b0d 100%); + isolation: isolate; + } + + .wind-card-wash { + position: absolute; + inset: 0; + background: linear-gradient(160deg, rgba(200, 16, 46, 0.35) 0%, rgba(200, 16, 46, 0) 60%); + opacity: 0.5; + transition: opacity 0.4s ease; + } + + .wind-card:hover .wind-card-wash { + opacity: 1; + } + + .wind-card-default { + position: absolute; + left: 24px; + right: 24px; + bottom: 24px; + transition: opacity 0.3s ease, transform 0.3s ease; + } + + .wind-card:hover .wind-card-default { + opacity: 0; + transform: translateY(8px); + pointer-events: none; + } + + .wind-card .wind-card-default-title { + font-size: 20px !important; + font-weight: 800 !important; + line-height: 1.3 !important; + text-transform: none !important; + color: #ffffff !important; + margin: 0; + } + + .wind-card-hover { + position: absolute; + inset: 0; + padding: 26px 24px; + display: flex; + flex-direction: column; + justify-content: flex-end; + gap: 14px; + opacity: 0; + transform: translateY(10px); + transition: opacity 0.35s ease, transform 0.35s ease; + } + + .wind-card:hover .wind-card-hover { + opacity: 1; + transform: translateY(0); + } + + .wind-card .wind-card-hover-title { + font-size: 19px !important; + font-weight: 800 !important; + line-height: 1.3 !important; + text-transform: none !important; + color: #ffffff !important; + margin: 0; + } + + .wind-card-label { + font-size: 10.5px; + font-weight: 800; + letter-spacing: 1.2px; + text-transform: uppercase; + color: rgba(255, 255, 255, 0.5); + margin: 0 0 4px 0; + } + + .wind-card-text { + font-size: 13px; + line-height: 1.5; + color: rgba(255, 255, 255, 0.85); + margin: 0; + } + + @media (max-width: 1024px) { + .wind-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } + } + + @media (max-width: 600px) { + .wind-grid { grid-template-columns: 1fr; } + .wind-card { aspect-ratio: 3 / 4; } + /* var(--space-section-lg) floors at a fixed 52px on any phone + width; bottom is already trimmed to 20px, so only the top needs + a real mobile reduction to match the section rhythm near the + footer. */ + .wind-section { padding-top: 44px; } + } + 7:[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$13"}}],"$L14"] +8:["$","$L15",null,{}] +9:["$","div",null,{"id":"wings-fleet","children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"\n @media (max-width: 767px) {\n #wings-fleet .evnd-gap-bottom { margin-bottom: 14px !important; }\n }\n "}}],["$","$L16",null,{"bannerImage":"/images/pahse1.png","cardTitle":"Quick Logistics","cardSubtitle":"Same-Day Air Network","eyebrow":"/ Fleet Strategy /","titleLead":"Purpose-Built for ","titleAccent":"Regional Speed","features":[{"icon":["$","svg",null,{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","children":["$","path",null,{"d":"M22 12h-6l-4-9-2 1 3 8H5l-2-3-1.5.6L3 14l1.5 4.4L6 18l-2-3h8l3 8 2-1-3-8h6z"}]}],"title":"Dedicated Freighter Capacity","desc":"Purpose-built cargo lift, not passenger-belly space competing with baggage."},{"icon":["$","svg",null,{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","children":[["$","circle",null,{"cx":"6","cy":"6","r":"2.5"}],["$","circle",null,{"cx":"18","cy":"6","r":"2.5"}],["$","circle",null,{"cx":"12","cy":"18","r":"2.5"}],["$","path",null,{"d":"M8.2 7.2 10 16M15.8 7.2 14 16M8.5 6h7"}]]}],"title":"Regional Route Design","desc":"Turboprop range and speed matched to India's major regional-capital corridors."},{"icon":["$","svg",null,{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","children":[["$","path",null,{"d":"M3 3v18h18"}],["$","path",null,{"d":"M7 14l4-4 3 3 6-7"}]]}],"title":"Scaling to 25 Aircraft","desc":"Phase 2 vision: pan-India connectivity hubs and international regional routes."}],"metrics":[{"value":8.2,"decimals":1,"suffix":"t","label":"ATR72 Payload"},{"value":1600,"suffix":"km","label":"ATR72 Range"},{"value":8.6,"decimals":1,"suffix":"t","label":"Q400 Payload"},{"value":667,"suffix":"km/h","label":"Q400 Speed"}],"cardsHeading":"FLEET SPECIFICATIONS","cardsTheme":{"accent":"#c8102e","accent2":"#ff6a3d","glow":"rgba(200,16,46,0.22)"},"gapTop":true,"gapBottom":true,"badges":[{"value":"3","label":"Phase 1 Aircraft"},{"value":"25","label":"Phase 2 Vision"}],"mediaSlot":["$","video",null,{"autoPlay":true,"loop":true,"muted":true,"playsInline":true,"style":{"width":"100%","height":"100%","minHeight":420,"objectFit":"cover","display":"block","background":"#17171b"},"children":["$","source",null,{"src":"/videos/fleet.mp4","type":"video/mp4"}]}],"ariaLabel":"Doormile Wings fleet strategy"}]]}] +a:["$","section",null,{"className":"WingsInfrastructure-module__akH2-q__section","id":"wings-infrastructure","children":["$","div",null,{"className":"WingsInfrastructure-module__akH2-q__sectionShell","children":[["$","$L11",null,{"delay":0.05,"duration":0.7,"yOffset":20,"className":"WingsInfrastructure-module__akH2-q__header","children":[["$","div",null,{"className":"WingsInfrastructure-module__akH2-q__eyebrow","children":"/ Infrastructure /"}],["$","h2",null,{"className":"WingsInfrastructure-module__akH2-q__title","children":"A network built to move, not to sit idle"}]]}],["$","$L12",null,{"stagger":0.08,"duration":0.6,"yOffset":20,"className":"WingsInfrastructure-module__akH2-q__grid","children":[["$","div","Airport Cargo Hubs",{"className":"WingsInfrastructure-module__akH2-q__card","children":[["$","div",null,{"className":"WingsInfrastructure-module__akH2-q__icon","aria-hidden":"true","children":["$","svg",null,{"width":"24","height":"24","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.25","strokeLinecap":"round","strokeLinejoin":"round","children":["$","path",null,{"d":"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10Z"}]}]}],["$","h3",null,{"className":"WingsInfrastructure-module__akH2-q__cardTitle","children":"Airport Cargo Hubs"}],["$","p",null,{"className":"WingsInfrastructure-module__akH2-q__cardDesc","children":"Near-airport clearance hubs instead of standalone warehouses — closer to the tarmac, faster to the aircraft."}]]}],["$","div","Cross-Docking",{"className":"WingsInfrastructure-module__akH2-q__card","children":[["$","div",null,{"className":"WingsInfrastructure-module__akH2-q__icon","aria-hidden":"true","children":["$","svg",null,{"width":"24","height":"24","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.25","strokeLinecap":"round","strokeLinejoin":"round","children":["$","path",null,{"d":"M3 7h7l2 3h9M3 7v10h18V10"}]}]}],["$","h3",null,{"className":"WingsInfrastructure-module__akH2-q__cardTitle","children":"Cross-Docking"}],["$","p",null,{"className":"WingsInfrastructure-module__akH2-q__cardDesc","children":"Screening, grouping, and consolidation happen in one motion, minimizing dwell time between arrival and departure."}]]}],["$","div","Asset-Light Network",{"className":"WingsInfrastructure-module__akH2-q__card","children":[["$","div",null,{"className":"WingsInfrastructure-module__akH2-q__icon","aria-hidden":"true","children":["$","svg",null,{"width":"24","height":"24","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.25","strokeLinecap":"round","strokeLinejoin":"round","children":[["$","rect",null,{"x":"3","y":"3","width":"7","height":"7","rx":"1"}],["$","rect",null,{"x":"14","y":"3","width":"7","height":"7","rx":"1"}],["$","rect",null,{"x":"3","y":"14","width":"7","height":"7","rx":"1"}],["$","rect",null,{"x":"14","y":"14","width":"7","height":"7","rx":"1"}]]}]}],["$","h3",null,{"className":"WingsInfrastructure-module__akH2-q__cardTitle","children":"Asset-Light Network"}],["$","p",null,{"className":"WingsInfrastructure-module__akH2-q__cardDesc","children":"Leased terminal space that flexes with demand, keeping the network nimble as new routes come online."}]]}],["$","div","Scalable Operations",{"className":"WingsInfrastructure-module__akH2-q__card","children":[["$","div",null,{"className":"WingsInfrastructure-module__akH2-q__icon","aria-hidden":"true","children":["$","svg",null,{"width":"24","height":"24","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.25","strokeLinecap":"round","strokeLinejoin":"round","children":["$","path",null,{"d":"M3 21V9l6-4 6 4v12M9 21V13h6v8"}]}]}],["$","h3",null,{"className":"WingsInfrastructure-module__akH2-q__cardTitle","children":"Scalable Operations"}],["$","p",null,{"className":"WingsInfrastructure-module__akH2-q__cardDesc","children":"Modular ground infrastructure built to expand city by city without slowing down day-to-day operations."}]]}]]}]]}]}] +b:["$","$L17",null,{}] +c:["$","$L18",null,{}] +d:["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0zi3_4wi6-b2t.css","precedence":"next"}] +e:["$","script","script-0",{"src":"/_next/static/chunks/07eq5is00w7sy.js","async":true}] +f:["$","script","script-1",{"src":"/_next/static/chunks/0~6a87_s8h6ue.js","async":true}] +10:["$","$L19",null,{"children":["$","$1a",null,{"name":"Next.MetadataOutlet","children":"$@1b"}]}] +14:["$","section",null,{"className":"wind-section","id":"wings-industries","children":["$","div",null,{"className":"dm-section-container","children":["$","div",null,{"className":"wind-inner","children":[["$","$L11",null,{"delay":0.05,"duration":0.75,"yOffset":25,"className":"wind-header","children":[["$","div",null,{"className":"wind-eyebrow","children":"/ Industries We Serve /"}],["$","h2",null,{"className":"wind-title","children":"Built for the shipments that can’t wait"}]]}],["$","$L11",null,{"delay":0.1,"duration":0.8,"yOffset":30,"className":"wind-grid","children":[["$","div","Quick Commerce",{"className":"wind-card","style":{"backgroundImage":"linear-gradient(to bottom, rgba(0,0,0,0.2), rgba(0,0,0,0.8)), url('/images/card 1.png')","backgroundSize":"cover","backgroundPosition":"center"},"children":[["$","div",null,{"className":"wind-card-wash","aria-hidden":"true"}],["$","div",null,{"className":"wind-card-default","children":["$","h3",null,{"className":"wind-card-default-title","children":"Quick Commerce"}]}],["$","div",null,{"className":"wind-card-hover","children":[["$","h3",null,{"className":"wind-card-hover-title","children":"Quick Commerce"}],["$","div",null,{"children":[["$","p",null,{"className":"wind-card-label","children":"Challenge"}],["$","p",null,{"className":"wind-card-text","children":"Sub-3-hour delivery windows for dark stores and micro-warehouses."}]]}],["$","div",null,{"children":[["$","p",null,{"className":"wind-card-label","children":"Doormile Wings"}],["$","p",null,{"className":"wind-card-text","children":"Dedicated same-day air capacity linking metros to fulfillment hubs."}]]}]]}]]}],["$","div","Express B2B Cargo",{"className":"wind-card","style":{"backgroundImage":"linear-gradient(to bottom, rgba(0,0,0,0.2), rgba(0,0,0,0.8)), url('/images/card 2.png')","backgroundSize":"cover","backgroundPosition":"center"},"children":[["$","div",null,{"className":"wind-card-wash","aria-hidden":"true"}],["$","div",null,{"className":"wind-card-default","children":["$","h3",null,{"className":"wind-card-default-title","children":"Express B2B Cargo"}]}],["$","div",null,{"className":"wind-card-hover","children":[["$","h3",null,{"className":"wind-card-hover-title","children":"Express B2B Cargo"}],["$","div",null,{"children":[["$","p",null,{"className":"wind-card-label","children":"Challenge"}],["$","p",null,{"className":"wind-card-text","children":"Time-critical industrial parts and components stuck on slow trunk routes."}]]}],["$","div",null,{"children":[["$","p",null,{"className":"wind-card-label","children":"Doormile Wings"}],["$","p",null,{"className":"wind-card-text","children":"Rapid airport-to-airport transport between major economic nodes."}]]}]]}]]}],["$","div","Healthcare & Pharma",{"className":"wind-card","style":{"backgroundImage":"linear-gradient(to bottom, rgba(0,0,0,0.2), rgba(0,0,0,0.8)), url('/images/card 3.png')","backgroundSize":"cover","backgroundPosition":"center"},"children":[["$","div",null,{"className":"wind-card-wash","aria-hidden":"true"}],["$","div",null,{"className":"wind-card-default","children":["$","h3",null,{"className":"wind-card-default-title","children":"Healthcare & Pharma"}]}],["$","div",null,{"className":"wind-card-hover","children":[["$","h3",null,{"className":"wind-card-hover-title","children":"Healthcare & Pharma"}],["$","div",null,{"children":[["$","p",null,{"className":"wind-card-label","children":"Challenge"}],["$","p",null,{"className":"wind-card-text","children":"Temperature-sensitive, compliance-critical shipments with zero margin for error."}]]}],["$","div",null,{"children":[["$","p",null,{"className":"wind-card-label","children":"Doormile Wings"}],["$","p",null,{"className":"wind-card-text","children":"Active and passive cold-chain packaging with full chain-of-custody tracking."}]]}]]}]]}],["$","div","Cold Chain Logistics",{"className":"wind-card","style":{"backgroundImage":"linear-gradient(to bottom, rgba(0,0,0,0.2), rgba(0,0,0,0.8)), url('/images/card4.png')","backgroundSize":"cover","backgroundPosition":"center"},"children":[["$","div",null,{"className":"wind-card-wash","aria-hidden":"true"}],["$","div",null,{"className":"wind-card-default","children":["$","h3",null,{"className":"wind-card-default-title","children":"Cold Chain Logistics"}]}],["$","div",null,{"className":"wind-card-hover","children":[["$","h3",null,{"className":"wind-card-hover-title","children":"Cold Chain Logistics"}],"$L1c","$L1d"]}]]}],"$L1e","$L1f"]}]]}]}]}] +1b:null +1c:["$","div",null,{"children":[["$","p",null,{"className":"wind-card-label","children":"Challenge"}],["$","p",null,{"className":"wind-card-text","children":"Perishables and fresh goods that can't survive slow surface transit."}]]}] +1d:["$","div",null,{"children":[["$","p",null,{"className":"wind-card-label","children":"Doormile Wings"}],["$","p",null,{"className":"wind-card-text","children":"Precision temperature tracking matched to airline-speed transit."}]]}] +1e:["$","div","High-Value Cargo",{"className":"wind-card","style":{"backgroundImage":"linear-gradient(to bottom, rgba(0,0,0,0.2), rgba(0,0,0,0.8)), url('/images/card5.png')","backgroundSize":"cover","backgroundPosition":"center"},"children":[["$","div",null,{"className":"wind-card-wash","aria-hidden":"true"}],["$","div",null,{"className":"wind-card-default","children":["$","h3",null,{"className":"wind-card-default-title","children":"High-Value Cargo"}]}],["$","div",null,{"className":"wind-card-hover","children":[["$","h3",null,{"className":"wind-card-hover-title","children":"High-Value Cargo"}],["$","div",null,{"children":[["$","p",null,{"className":"wind-card-label","children":"Challenge"}],["$","p",null,{"className":"wind-card-text","children":"Zero tolerance for loss, tampering, or delay on high-value shipments."}]]}],["$","div",null,{"children":[["$","p",null,{"className":"wind-card-label","children":"Doormile Wings"}],["$","p",null,{"className":"wind-card-text","children":"Maximum-security handling with real-time electronic custody tracking."}]]}]]}]]}] +1f:["$","div","E-Commerce Logistics",{"className":"wind-card","style":{"backgroundImage":"linear-gradient(to bottom, rgba(0,0,0,0.2), rgba(0,0,0,0.8)), url('/images/card6.png')","backgroundSize":"cover","backgroundPosition":"center"},"children":[["$","div",null,{"className":"wind-card-wash","aria-hidden":"true"}],["$","div",null,{"className":"wind-card-default","children":["$","h3",null,{"className":"wind-card-default-title","children":"E-Commerce Logistics"}]}],["$","div",null,{"className":"wind-card-hover","children":[["$","h3",null,{"className":"wind-card-hover-title","children":"E-Commerce Logistics"}],["$","div",null,{"children":[["$","p",null,{"className":"wind-card-label","children":"Challenge"}],["$","p",null,{"className":"wind-card-text","children":"Next-day and same-day fulfillment expectations across tier-1 and tier-2 cities."}]]}],["$","div",null,{"children":[["$","p",null,{"className":"wind-card-label","children":"Doormile Wings"}],["$","p",null,{"className":"wind-card-text","children":"Direct sorting-hub-to-airport clearance network for faster regional delivery."}]]}]]}]]}] diff --git a/build/doormile-wings/__next.doormile-wings.txt b/build/doormile-wings/__next.doormile-wings.txt new file mode 100644 index 0000000..e0935ae --- /dev/null +++ b/build/doormile-wings/__next.doormile-wings.txt @@ -0,0 +1,5 @@ +1:"$Sreact.fragment" +2:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:[] +0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/draco/draco_decoder.js b/build/draco/draco_decoder.js new file mode 100644 index 0000000..7c84b0b --- /dev/null +++ b/build/draco/draco_decoder.js @@ -0,0 +1,33 @@ + +var DracoDecoderModule = (() => { + var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined; + if (typeof __filename !== 'undefined') _scriptDir = _scriptDir || __filename; + return ( +function(DracoDecoderModule = {}) { + +var Module=typeof DracoDecoderModule!="undefined"?DracoDecoderModule:{};var readyPromiseResolve,readyPromiseReject;Module["ready"]=new Promise(function(resolve,reject){readyPromiseResolve=resolve;readyPromiseReject=reject});var isRuntimeInitialized=false;var isModuleParsed=false;Module["onRuntimeInitialized"]=function(){isRuntimeInitialized=true;if(isModuleParsed){if(typeof Module["onModuleLoaded"]==="function"){Module["onModuleLoaded"](Module)}}};Module["onModuleParsed"]=function(){isModuleParsed=true;if(isRuntimeInitialized){if(typeof Module["onModuleLoaded"]==="function"){Module["onModuleLoaded"](Module)}}};function isVersionSupported(versionString){if(typeof versionString!=="string")return false;const version=versionString.split(".");if(version.length<2||version.length>3)return false;if(version[0]==1&&version[1]>=0&&version[1]<=5)return true;if(version[0]!=0||version[1]>10)return false;return true}Module["isVersionSupported"]=isVersionSupported;var moduleOverrides=Object.assign({},Module);var arguments_=[];var thisProgram="./this.program";var quit_=(status,toThrow)=>{throw toThrow};var ENVIRONMENT_IS_WEB=typeof window=="object";var ENVIRONMENT_IS_WORKER=typeof importScripts=="function";var ENVIRONMENT_IS_NODE=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string";var scriptDirectory="";function locateFile(path){if(Module["locateFile"]){return Module["locateFile"](path,scriptDirectory)}return scriptDirectory+path}var read_,readAsync,readBinary,setWindowTitle;function logExceptionOnExit(e){if(e instanceof ExitStatus)return;let toLog=e;err("exiting due to exception: "+toLog)}if(ENVIRONMENT_IS_NODE){var fs=require("fs");var nodePath=require("path");if(ENVIRONMENT_IS_WORKER){scriptDirectory=nodePath.dirname(scriptDirectory)+"/"}else{scriptDirectory=__dirname+"/"}read_=(filename,binary)=>{var ret=tryParseAsDataURI(filename);if(ret){return binary?ret:ret.toString()}filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);return fs.readFileSync(filename,binary?undefined:"utf8")};readBinary=filename=>{var ret=read_(filename,true);if(!ret.buffer){ret=new Uint8Array(ret)}return ret};readAsync=(filename,onload,onerror)=>{var ret=tryParseAsDataURI(filename);if(ret){onload(ret)}filename=isFileURI(filename)?new URL(filename):nodePath.normalize(filename);fs.readFile(filename,function(err,data){if(err)onerror(err);else onload(data.buffer)})};if(process["argv"].length>1){thisProgram=process["argv"][1].replace(/\\/g,"/")}arguments_=process["argv"].slice(2);quit_=(status,toThrow)=>{if(keepRuntimeAlive()){process["exitCode"]=status;throw toThrow}logExceptionOnExit(toThrow);process["exit"](status)};Module["inspect"]=function(){return"[Emscripten Module object]"}}else if(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER){if(ENVIRONMENT_IS_WORKER){scriptDirectory=self.location.href}else if(typeof document!="undefined"&&document.currentScript){scriptDirectory=document.currentScript.src}if(_scriptDir){scriptDirectory=_scriptDir}if(scriptDirectory.indexOf("blob:")!==0){scriptDirectory=scriptDirectory.substr(0,scriptDirectory.replace(/[?#].*/,"").lastIndexOf("/")+1)}else{scriptDirectory=""}{read_=url=>{try{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.send(null);return xhr.responseText}catch(err){var data=tryParseAsDataURI(url);if(data){return intArrayToString(data)}throw err}};if(ENVIRONMENT_IS_WORKER){readBinary=url=>{try{var xhr=new XMLHttpRequest;xhr.open("GET",url,false);xhr.responseType="arraybuffer";xhr.send(null);return new Uint8Array(xhr.response)}catch(err){var data=tryParseAsDataURI(url);if(data){return data}throw err}}}readAsync=(url,onload,onerror)=>{var xhr=new XMLHttpRequest;xhr.open("GET",url,true);xhr.responseType="arraybuffer";xhr.onload=()=>{if(xhr.status==200||xhr.status==0&&xhr.response){onload(xhr.response);return}var data=tryParseAsDataURI(url);if(data){onload(data.buffer);return}onerror()};xhr.onerror=onerror;xhr.send(null)}}setWindowTitle=title=>document.title=title}else{}var out=Module["print"]||console.log.bind(console);var err=Module["printErr"]||console.warn.bind(console);Object.assign(Module,moduleOverrides);moduleOverrides=null;if(Module["arguments"])arguments_=Module["arguments"];if(Module["thisProgram"])thisProgram=Module["thisProgram"];if(Module["quit"])quit_=Module["quit"];var wasmBinary;if(Module["wasmBinary"])wasmBinary=Module["wasmBinary"];var noExitRuntime=Module["noExitRuntime"]||true;var WebAssembly={Memory:function(opts){this.buffer=new ArrayBuffer(opts["initial"]*65536)},Module:function(binary){},Instance:function(module,info){this.exports=( +// EMSCRIPTEN_START_ASM +function instantiate(ia){function c(d){d.set=function(a,b){this[a]=b};d.get=function(a){return this[a]};return d}var e;var f=new Uint8Array(123);for(var a=25;a>=0;--a){f[48+a]=52+a;f[65+a]=a;f[97+a]=26+a}f[43]=62;f[47]=63;function l(m,n,o){var g,h,a=0,i=n,j=o.length,k=n+(j*3>>2)-(o[j-2]=="=")-(o[j-1]=="=");for(;a>4;if(i>2;if(i>2];o=F[c+12>>2];g=F[c+16>>2];a:{if((e|0)>=(o|0)&g>>>0>=I[c+8>>2]|(e|0)>(o|0)){break a}o=G[g+F[c>>2]|0];g=g+1|0;e=g?e:e+1|0;F[c+16>>2]=g;F[c+20>>2]=e;b:{switch(o|0){case 0:e=a;f=b;g=d;a=0;d=0;j=Z+-64|0;Z=j;F[j+56>>2]=0;F[j+48>>2]=0;F[j+52>>2]=0;F[j+40>>2]=0;F[j+44>>2]=0;F[j+32>>2]=0;F[j+36>>2]=0;F[j+24>>2]=0;F[j+28>>2]=0;F[j+16>>2]=0;F[j+20>>2]=0;F[j+8>>2]=0;F[j+12>>2]=0;c:{if(!Nd(j+8|0,c)){break c}if(!Md(j+8|0,c)|(F[j+20>>2]?0:e)){break c}hc(c,0,0);if(e){s=f<<2;t=F[j+36>>2];u=F[j+48>>2];x=F[j+24>>2];l=F[j+56>>2];i=F[j+52>>2];while(1){d:{if(l>>>0>16383){break d}while(1){if((i|0)<=0){break d}i=i-1|0;F[j+52>>2]=i;l=G[i+u|0]|l<<8;F[j+56>>2]=l;if(l>>>0<16384){continue}break}}a=l&4095;r=F[(a<<2)+x>>2];b=(r<<3)+t|0;l=(L(F[b>>2],l>>>12|0)+a|0)-F[b+4>>2]|0;F[j+56>>2]=l;if((f|0)>0){a=0;if(!G[c+36|0]|r>>>0>32){break c}o=d+f|0;e:{if(!r){ma(g+(d<<2)|0,0,s);break e}y=r&-2;z=r&1;b=F[c+32>>2];h=F[c+28>>2];q=F[c+24>>2];while(1){k=0;a=b;m=0;n=0;if((r|0)!=1){while(1){p=q+(a>>>3|0)|0;f:{if(p>>>0>=h>>>0){p=0;break f}p=G[p|0];b=a+1|0;F[c+32>>2]=b;p=p>>>(a&7)&1;a=b}p=p<>>3|0)|0;if(v>>>0>>0){m=G[v|0];b=a+1|0;F[c+32>>2]=b;m=m>>>(a&7)&1;a=b}v=k|1;k=k+2|0;m=p|m<>>3|0)|0;if(p>>>0>>0){p=G[p|0];b=a+1|0;F[c+32>>2]=b;a=p>>>(a&7)&1}else{a=0}m=a<>2]=m;d=d+1|0;if((o|0)!=(d|0)){continue}break}}d=o}w=f+w|0;if(e>>>0>w>>>0){continue}break}}D[c+36|0]=0;f=F[c+20>>2];a=0;m=F[c+32>>2]+7|0;a=m>>>0<7?1:a;m=a<<29|m>>>3;b=m+F[c+16>>2]|0;a=(a>>>3|0)+f|0;F[c+16>>2]=b;F[c+20>>2]=b>>>0>>0?a+1|0:a;a=1}b=F[j+36>>2];if(b){F[j+40>>2]=b;ja(b)}b=F[j+24>>2];if(b){F[j+28>>2]=b;ja(b)}b=F[j+8>>2];if(b){F[j+12>>2]=b;ja(b)}Z=j- -64|0;return a;case 1:break b;default:break a}}b=0;e=F[c+20>>2];o=F[c+12>>2];g=F[c+16>>2];g:{if((e|0)>=(o|0)&g>>>0>=I[c+8>>2]|(e|0)>(o|0)){break g}o=G[g+F[c>>2]|0];g=g+1|0;e=g?e:e+1|0;F[c+16>>2]=g;F[c+20>>2]=e;h:{switch(o-1|0){case 8:o=a;r=d;e=Z+-64|0;Z=e;F[e+56>>2]=0;F[e+48>>2]=0;F[e+52>>2]=0;F[e+40>>2]=0;F[e+44>>2]=0;F[e+32>>2]=0;F[e+36>>2]=0;F[e+24>>2]=0;F[e+28>>2]=0;F[e+16>>2]=0;F[e+20>>2]=0;F[e+8>>2]=0;F[e+12>>2]=0;h=e+8|0;i:{j:{if(!H[c+38>>1]){break j}if(!Ta(1,h+12|0,c)){break j}b=F[c+8>>2];d=F[c+16>>2];f=b-d|0;i=F[h+12>>2];b=F[c+12>>2]-(F[c+20>>2]+(b>>>0>>0)|0)|0;if(f>>>0>>6>>>0&(b|0)<=0|(b|0)<0){break j}b=F[h>>2];a=F[h+4>>2]-b>>2;k:{if(a>>>0>>0){qa(h,i-a|0);i=F[h+12>>2];break k}if(a>>>0<=i>>>0){break k}F[h+4>>2]=b+(i<<2)}g=1;if(!i){break i}f=F[c+16>>2];d=F[c+20>>2];s=F[h>>2];j=F[c+8>>2];n=F[c+12>>2];b=0;while(1){g=0;if((d|0)>=(n|0)&f>>>0>=j>>>0|(d|0)>(n|0)){break i}g=F[c>>2];p=G[g+f|0];a=d;f=f+1|0;a=f?a:a+1|0;F[c+16>>2]=f;d=a;F[c+20>>2]=a;a=p>>>2|0;l=0;l:{m:{n:{o:{t=p&3;switch(t|0){case 0:break m;case 3:break o;default:break n}}a=a+b|0;g=0;if(a>>>0>=i>>>0){break i}ma(s+(b<<2)|0,0,(p&252)+4|0);b=a;break l}while(1){if((f|0)==(j|0)&(d|0)==(n|0)){break j}i=G[f+g|0];f=f+1|0;d=f?d:d+1|0;F[c+16>>2]=f;F[c+20>>2]=d;a=i<<(l<<3|6)|a;l=l+1|0;if((t|0)!=(l|0)){continue}break}}F[s+(b<<2)>>2]=a}b=b+1|0;i=F[h+12>>2];if(b>>>0>>0){continue}break}a=h+16|0;n=F[h>>2];d=F[h+16>>2];b=F[h+20>>2]-d|0;p:{if(b>>>0<=32767){qa(a,8192-(b>>>2|0)|0);break p}if((b|0)==32768){break p}F[h+20>>2]=d+32768}d=h+28|0;b=F[d>>2];f=F[h+32>>2]-b>>3;q:{if(f>>>0>>0){_a(d,i-f|0);b=F[d>>2];break q}if(f>>>0>i>>>0){F[h+32>>2]=(i<<3)+b}if(!i){break j}}j=F[a>>2];f=0;d=0;while(1){g=n+(f<<2)|0;l=F[g>>2];h=(f<<3)+b|0;a=d;F[h+4>>2]=a;F[h>>2]=l;g=F[g>>2];d=g+a|0;if(d>>>0>8192){break j}r:{if(a>>>0>=d>>>0){break r}l=0;h=g&7;if(h){while(1){F[j+(a<<2)>>2]=f;a=a+1|0;l=l+1|0;if((h|0)!=(l|0)){continue}break}}if(g-1>>>0<=6){break r}while(1){g=j+(a<<2)|0;F[g>>2]=f;F[g+28>>2]=f;F[g+24>>2]=f;F[g+20>>2]=f;F[g+16>>2]=f;F[g+12>>2]=f;F[g+8>>2]=f;F[g+4>>2]=f;a=a+8|0;if((d|0)!=(a|0)){continue}break}}f=f+1|0;if((i|0)!=(f|0)){continue}break}k=(d|0)==8192}g=k}s:{if(!g|(F[e+20>>2]?0:o)){break s}d=0;k=Z-16|0;Z=k;t:{if(!Sa(1,k+8|0,c)){break t}a=F[c+8>>2];f=F[c+16>>2];g=a-f|0;j=F[k+12>>2];i=F[c+20>>2];a=F[c+12>>2]-(i+(a>>>0>>0)|0)|0;b=F[k+8>>2];if((j|0)==(a|0)&g>>>0>>0|a>>>0>>0){break t}a=i+j|0;g=b+f|0;a=g>>>0>>0?a+1|0:a;F[c+16>>2]=g;F[c+20>>2]=a;if((b|0)<=0){break t}a=f+F[c>>2]|0;F[e+48>>2]=a;c=b-1|0;f=c+a|0;g=G[f|0];u:{if(g>>>0<=63){F[e+52>>2]=c;a=G[f|0]&63;break u}v:{switch((g>>>6|0)-1|0){case 0:if(b>>>0<2){break t}b=b-2|0;F[e+52>>2]=b;a=a+b|0;a=G[a+1|0]<<8&16128|G[a|0];break u;case 1:if(b>>>0<3){break t}b=b-3|0;F[e+52>>2]=b;a=a+b|0;a=G[a+1|0]<<8|G[a+2|0]<<16&4128768|G[a|0];break u;default:break v}}b=b-4|0;F[e+52>>2]=b;a=a+b|0;a=(G[a|0]|G[a+1|0]<<8|(G[a+2|0]<<16|G[a+3|0]<<24))&1073741823}F[e+56>>2]=a+32768;d=a>>>0<8355840}Z=k+16|0;if(!d){break s}if(!o){m=1;break s}b=F[e+52>>2];a=F[e+56>>2];c=F[e+36>>2];d=F[e+48>>2];f=F[e+24>>2];while(1){w:{if(a>>>0>32767){break w}while(1){if((b|0)<=0){break w}b=b-1|0;F[e+52>>2]=b;a=G[b+d|0]|a<<8;F[e+56>>2]=a;if(a>>>0<32768){continue}break}}m=a&8191;k=F[f+(m<<2)>>2];g=c+(k<<3)|0;a=(L(F[g>>2],a>>>13|0)+m|0)-F[g+4>>2]|0;F[e+56>>2]=a;F[r+(q<<2)>>2]=k;m=1;q=q+1|0;if((o|0)!=(q|0)){continue}break}}a=F[e+36>>2];if(a){F[e+40>>2]=a;ja(a)}a=F[e+24>>2];if(a){F[e+28>>2]=a;ja(a)}a=F[e+8>>2];if(a){F[e+12>>2]=a;ja(a)}Z=e- -64|0;b=m;break g;case 9:o=a;r=d;g=Z+-64|0;Z=g;F[g+56>>2]=0;F[g+48>>2]=0;F[g+52>>2]=0;F[g+40>>2]=0;F[g+44>>2]=0;F[g+32>>2]=0;F[g+36>>2]=0;F[g+24>>2]=0;F[g+28>>2]=0;F[g+16>>2]=0;F[g+20>>2]=0;F[g+8>>2]=0;F[g+12>>2]=0;h=g+8|0;x:{y:{if(!H[c+38>>1]){break y}if(!Ta(1,h+12|0,c)){break y}b=F[c+8>>2];d=F[c+16>>2];f=b-d|0;i=F[h+12>>2];b=F[c+12>>2]-(F[c+20>>2]+(b>>>0>>0)|0)|0;if(f>>>0>>6>>>0&(b|0)<=0|(b|0)<0){break y}b=F[h>>2];a=F[h+4>>2]-b>>2;z:{if(a>>>0>>0){qa(h,i-a|0);i=F[h+12>>2];break z}if(a>>>0<=i>>>0){break z}F[h+4>>2]=b+(i<<2)}e=1;if(!i){break x}f=F[c+16>>2];d=F[c+20>>2];s=F[h>>2];j=F[c+8>>2];n=F[c+12>>2];b=0;while(1){e=0;if((d|0)>=(n|0)&f>>>0>=j>>>0|(d|0)>(n|0)){break x}t=F[c>>2];p=G[t+f|0];e=d;f=f+1|0;e=f?e:e+1|0;F[c+16>>2]=f;d=e;F[c+20>>2]=e;a=p>>>2|0;l=0;A:{B:{C:{D:{e=p&3;switch(e|0){case 0:break B;case 3:break D;default:break C}}a=a+b|0;e=0;if(a>>>0>=i>>>0){break x}ma(s+(b<<2)|0,0,(p&252)+4|0);b=a;break A}while(1){if((f|0)==(j|0)&(d|0)==(n|0)){break y}i=G[f+t|0];f=f+1|0;d=f?d:d+1|0;F[c+16>>2]=f;F[c+20>>2]=d;a=i<<(l<<3|6)|a;l=l+1|0;if((e|0)!=(l|0)){continue}break}}F[s+(b<<2)>>2]=a}b=b+1|0;i=F[h+12>>2];if(b>>>0>>0){continue}break}a=h+16|0;n=F[h>>2];d=F[h+16>>2];b=F[h+20>>2]-d|0;E:{if(b>>>0<=131071){qa(a,32768-(b>>>2|0)|0);break E}if((b|0)==131072){break E}F[h+20>>2]=d+131072}d=h+28|0;b=F[d>>2];f=F[h+32>>2]-b>>3;F:{if(f>>>0>>0){_a(d,i-f|0);b=F[d>>2];break F}if(f>>>0>i>>>0){F[h+32>>2]=(i<<3)+b}if(!i){break y}}j=F[a>>2];f=0;d=0;while(1){e=n+(f<<2)|0;l=F[e>>2];h=(f<<3)+b|0;a=d;F[h+4>>2]=a;F[h>>2]=l;e=F[e>>2];d=e+a|0;if(d>>>0>32768){break y}G:{if(a>>>0>=d>>>0){break G}l=0;h=e&7;if(h){while(1){F[j+(a<<2)>>2]=f;a=a+1|0;l=l+1|0;if((h|0)!=(l|0)){continue}break}}if(e-1>>>0<=6){break G}while(1){e=j+(a<<2)|0;F[e>>2]=f;F[e+28>>2]=f;F[e+24>>2]=f;F[e+20>>2]=f;F[e+16>>2]=f;F[e+12>>2]=f;F[e+8>>2]=f;F[e+4>>2]=f;a=a+8|0;if((d|0)!=(a|0)){continue}break}}f=f+1|0;if((i|0)!=(f|0)){continue}break}k=(d|0)==32768}e=k}H:{if(!e|(F[g+20>>2]?0:o)){break H}d=0;f=Z-16|0;Z=f;I:{if(!Sa(1,f+8|0,c)){break I}e=F[c+8>>2];b=F[c+16>>2];k=e-b|0;j=F[f+12>>2];i=F[c+20>>2];e=F[c+12>>2]-(i+(b>>>0>e>>>0)|0)|0;a=F[f+8>>2];if((j|0)==(e|0)&k>>>0>>0|e>>>0>>0){break I}e=i+j|0;k=a+b|0;e=k>>>0>>0?e+1|0:e;F[c+16>>2]=k;F[c+20>>2]=e;if((a|0)<=0){break I}b=b+F[c>>2]|0;F[g+48>>2]=b;c=a-1|0;e=c+b|0;k=G[e|0];J:{if(k>>>0<=63){F[g+52>>2]=c;a=G[e|0]&63;break J}K:{switch((k>>>6|0)-1|0){case 0:if(a>>>0<2){break I}a=a-2|0;F[g+52>>2]=a;a=a+b|0;a=G[a+1|0]<<8&16128|G[a|0];break J;case 1:if(a>>>0<3){break I}a=a-3|0;F[g+52>>2]=a;a=a+b|0;a=G[a+1|0]<<8|G[a+2|0]<<16&4128768|G[a|0];break J;default:break K}}a=a-4|0;F[g+52>>2]=a;a=a+b|0;a=(G[a|0]|G[a+1|0]<<8|(G[a+2|0]<<16|G[a+3|0]<<24))&1073741823}F[g+56>>2]=a+131072;d=a>>>0<33423360}Z=f+16|0;if(!d){break H}if(!o){m=1;break H}b=F[g+52>>2];a=F[g+56>>2];c=F[g+36>>2];d=F[g+48>>2];f=F[g+24>>2];while(1){L:{if(a>>>0>131071){break L}while(1){if((b|0)<=0){break L}b=b-1|0;F[g+52>>2]=b;a=G[b+d|0]|a<<8;F[g+56>>2]=a;if(a>>>0<131072){continue}break}}m=a&32767;e=F[f+(m<<2)>>2];k=c+(e<<3)|0;a=(L(F[k>>2],a>>>15|0)+m|0)-F[k+4>>2]|0;F[g+56>>2]=a;F[r+(q<<2)>>2]=e;m=1;q=q+1|0;if((o|0)!=(q|0)){continue}break}}a=F[g+36>>2];if(a){F[g+40>>2]=a;ja(a)}a=F[g+24>>2];if(a){F[g+28>>2]=a;ja(a)}a=F[g+8>>2];if(a){F[g+12>>2]=a;ja(a)}Z=g- -64|0;b=m;break g;case 10:o=a;r=d;g=Z+-64|0;Z=g;F[g+56>>2]=0;F[g+48>>2]=0;F[g+52>>2]=0;F[g+40>>2]=0;F[g+44>>2]=0;F[g+32>>2]=0;F[g+36>>2]=0;F[g+24>>2]=0;F[g+28>>2]=0;F[g+16>>2]=0;F[g+20>>2]=0;F[g+8>>2]=0;F[g+12>>2]=0;h=g+8|0;M:{N:{if(!H[c+38>>1]){break N}if(!Ta(1,h+12|0,c)){break N}b=F[c+8>>2];d=F[c+16>>2];f=b-d|0;i=F[h+12>>2];b=F[c+12>>2]-(F[c+20>>2]+(b>>>0>>0)|0)|0;if(f>>>0>>6>>>0&(b|0)<=0|(b|0)<0){break N}b=F[h>>2];a=F[h+4>>2]-b>>2;O:{if(a>>>0>>0){qa(h,i-a|0);i=F[h+12>>2];break O}if(a>>>0<=i>>>0){break O}F[h+4>>2]=b+(i<<2)}e=1;if(!i){break M}f=F[c+16>>2];d=F[c+20>>2];s=F[h>>2];j=F[c+8>>2];n=F[c+12>>2];b=0;while(1){e=0;if((d|0)>=(n|0)&f>>>0>=j>>>0|(d|0)>(n|0)){break M}t=F[c>>2];p=G[t+f|0];a=d;f=f+1|0;a=f?a:a+1|0;F[c+16>>2]=f;d=a;F[c+20>>2]=a;a=p>>>2|0;l=0;P:{Q:{R:{S:{u=p&3;switch(u|0){case 0:break Q;case 3:break S;default:break R}}a=a+b|0;e=0;if(a>>>0>=i>>>0){break M}ma(s+(b<<2)|0,0,(p&252)+4|0);b=a;break P}while(1){if((f|0)==(j|0)&(d|0)==(n|0)){break N}i=G[f+t|0];e=d;f=f+1|0;e=f?e:e+1|0;F[c+16>>2]=f;d=e;F[c+20>>2]=e;a=i<<(l<<3|6)|a;l=l+1|0;if((u|0)!=(l|0)){continue}break}}F[s+(b<<2)>>2]=a}b=b+1|0;i=F[h+12>>2];if(b>>>0>>0){continue}break}a=h+16|0;n=F[h>>2];d=F[h+16>>2];b=F[h+20>>2]-d|0;T:{if(b>>>0<=262143){qa(a,65536-(b>>>2|0)|0);break T}if((b|0)==262144){break T}F[h+20>>2]=d+262144}d=h+28|0;b=F[d>>2];f=F[h+32>>2]-b>>3;U:{if(f>>>0>>0){_a(d,i-f|0);b=F[d>>2];break U}if(f>>>0>i>>>0){F[h+32>>2]=(i<<3)+b}if(!i){break N}}j=F[a>>2];f=0;d=0;while(1){e=n+(f<<2)|0;l=F[e>>2];h=(f<<3)+b|0;a=d;F[h+4>>2]=a;F[h>>2]=l;e=F[e>>2];d=e+a|0;if(d>>>0>65536){break N}V:{if(a>>>0>=d>>>0){break V}l=0;h=e&7;if(h){while(1){F[j+(a<<2)>>2]=f;a=a+1|0;l=l+1|0;if((h|0)!=(l|0)){continue}break}}if(e-1>>>0<=6){break V}while(1){e=j+(a<<2)|0;F[e>>2]=f;F[e+28>>2]=f;F[e+24>>2]=f;F[e+20>>2]=f;F[e+16>>2]=f;F[e+12>>2]=f;F[e+8>>2]=f;F[e+4>>2]=f;a=a+8|0;if((d|0)!=(a|0)){continue}break}}f=f+1|0;if((i|0)!=(f|0)){continue}break}k=(d|0)==65536}e=k}W:{if(!e|(F[g+20>>2]?0:o)){break W}d=0;e=Z-16|0;Z=e;X:{if(!Sa(1,e+8|0,c)){break X}a=F[c+8>>2];f=F[c+16>>2];k=a-f|0;j=F[e+12>>2];i=F[c+20>>2];a=F[c+12>>2]-(i+(a>>>0>>0)|0)|0;b=F[e+8>>2];if((j|0)==(a|0)&k>>>0>>0|a>>>0>>0){break X}a=i+j|0;k=b+f|0;a=k>>>0>>0?a+1|0:a;F[c+16>>2]=k;F[c+20>>2]=a;if((b|0)<=0){break X}a=f+F[c>>2]|0;F[g+48>>2]=a;c=b-1|0;f=c+a|0;k=G[f|0];Y:{if(k>>>0<=63){F[g+52>>2]=c;a=G[f|0]&63;break Y}Z:{switch((k>>>6|0)-1|0){case 0:if(b>>>0<2){break X}b=b-2|0;F[g+52>>2]=b;a=a+b|0;a=G[a+1|0]<<8&16128|G[a|0];break Y;case 1:if(b>>>0<3){break X}b=b-3|0;F[g+52>>2]=b;a=a+b|0;a=G[a+1|0]<<8|G[a+2|0]<<16&4128768|G[a|0];break Y;default:break Z}}b=b-4|0;F[g+52>>2]=b;a=a+b|0;a=(G[a|0]|G[a+1|0]<<8|(G[a+2|0]<<16|G[a+3|0]<<24))&1073741823}F[g+56>>2]=a+262144;d=a>>>0<66846720}Z=e+16|0;if(!d){break W}if(!o){m=1;break W}b=F[g+52>>2];a=F[g+56>>2];c=F[g+36>>2];d=F[g+48>>2];f=F[g+24>>2];while(1){_:{if(a>>>0>262143){break _}while(1){if((b|0)<=0){break _}b=b-1|0;F[g+52>>2]=b;a=G[b+d|0]|a<<8;F[g+56>>2]=a;if(a>>>0<262144){continue}break}}m=a&65535;e=F[f+(m<<2)>>2];k=c+(e<<3)|0;a=(L(F[k>>2],a>>>16|0)+m|0)-F[k+4>>2]|0;F[g+56>>2]=a;F[r+(q<<2)>>2]=e;m=1;q=q+1|0;if((o|0)!=(q|0)){continue}break}}a=F[g+36>>2];if(a){F[g+40>>2]=a;ja(a)}a=F[g+24>>2];if(a){F[g+28>>2]=a;ja(a)}a=F[g+8>>2];if(a){F[g+12>>2]=a;ja(a)}Z=g- -64|0;b=m;break g;case 11:o=a;r=d;g=Z+-64|0;Z=g;F[g+56>>2]=0;F[g+48>>2]=0;F[g+52>>2]=0;F[g+40>>2]=0;F[g+44>>2]=0;F[g+32>>2]=0;F[g+36>>2]=0;F[g+24>>2]=0;F[g+28>>2]=0;F[g+16>>2]=0;F[g+20>>2]=0;F[g+8>>2]=0;F[g+12>>2]=0;h=g+8|0;$:{aa:{if(!H[c+38>>1]){break aa}if(!Ta(1,h+12|0,c)){break aa}b=F[c+8>>2];d=F[c+16>>2];f=b-d|0;i=F[h+12>>2];b=F[c+12>>2]-(F[c+20>>2]+(b>>>0>>0)|0)|0;if(f>>>0>>6>>>0&(b|0)<=0|(b|0)<0){break aa}b=F[h>>2];a=F[h+4>>2]-b>>2;ba:{if(a>>>0>>0){qa(h,i-a|0);i=F[h+12>>2];break ba}if(a>>>0<=i>>>0){break ba}F[h+4>>2]=b+(i<<2)}e=1;if(!i){break $}f=F[c+16>>2];d=F[c+20>>2];s=F[h>>2];j=F[c+8>>2];n=F[c+12>>2];b=0;while(1){e=0;if((d|0)>=(n|0)&f>>>0>=j>>>0|(d|0)>(n|0)){break $}t=F[c>>2];p=G[t+f|0];e=d;f=f+1|0;e=f?e:e+1|0;F[c+16>>2]=f;d=e;F[c+20>>2]=e;a=p>>>2|0;l=0;ca:{da:{ea:{fa:{e=p&3;switch(e|0){case 0:break da;case 3:break fa;default:break ea}}a=a+b|0;e=0;if(a>>>0>=i>>>0){break $}ma(s+(b<<2)|0,0,(p&252)+4|0);b=a;break ca}while(1){if((f|0)==(j|0)&(d|0)==(n|0)){break aa}i=G[f+t|0];f=f+1|0;d=f?d:d+1|0;F[c+16>>2]=f;F[c+20>>2]=d;a=i<<(l<<3|6)|a;l=l+1|0;if((e|0)!=(l|0)){continue}break}}F[s+(b<<2)>>2]=a}b=b+1|0;i=F[h+12>>2];if(b>>>0>>0){continue}break}a=h+16|0;n=F[h>>2];d=F[h+16>>2];b=F[h+20>>2]-d|0;ga:{if(b>>>0<=1048575){qa(a,262144-(b>>>2|0)|0);break ga}if((b|0)==1048576){break ga}F[h+20>>2]=d- -1048576}d=h+28|0;b=F[d>>2];f=F[h+32>>2]-b>>3;ha:{if(f>>>0>>0){_a(d,i-f|0);b=F[d>>2];break ha}if(f>>>0>i>>>0){F[h+32>>2]=(i<<3)+b}if(!i){break aa}}j=F[a>>2];f=0;d=0;while(1){e=n+(f<<2)|0;l=F[e>>2];h=(f<<3)+b|0;a=d;F[h+4>>2]=a;F[h>>2]=l;e=F[e>>2];d=e+a|0;if(d>>>0>262144){break aa}ia:{if(a>>>0>=d>>>0){break ia}l=0;h=e&7;if(h){while(1){F[j+(a<<2)>>2]=f;a=a+1|0;l=l+1|0;if((h|0)!=(l|0)){continue}break}}if(e-1>>>0<=6){break ia}while(1){e=j+(a<<2)|0;F[e>>2]=f;F[e+28>>2]=f;F[e+24>>2]=f;F[e+20>>2]=f;F[e+16>>2]=f;F[e+12>>2]=f;F[e+8>>2]=f;F[e+4>>2]=f;a=a+8|0;if((d|0)!=(a|0)){continue}break}}f=f+1|0;if((i|0)!=(f|0)){continue}break}k=(d|0)==262144}e=k}ja:{if(!e|(F[g+20>>2]?0:o)){break ja}d=0;f=Z-16|0;Z=f;ka:{if(!Sa(1,f+8|0,c)){break ka}e=F[c+8>>2];b=F[c+16>>2];k=e-b|0;j=F[f+12>>2];i=F[c+20>>2];e=F[c+12>>2]-(i+(b>>>0>e>>>0)|0)|0;a=F[f+8>>2];if((j|0)==(e|0)&k>>>0>>0|e>>>0>>0){break ka}e=i+j|0;k=a+b|0;e=k>>>0>>0?e+1|0:e;F[c+16>>2]=k;F[c+20>>2]=e;if((a|0)<=0){break ka}b=b+F[c>>2]|0;F[g+48>>2]=b;c=a-1|0;e=c+b|0;k=G[e|0];la:{if(k>>>0<=63){F[g+52>>2]=c;a=G[e|0]&63;break la}ma:{switch((k>>>6|0)-1|0){case 0:if(a>>>0<2){break ka}a=a-2|0;F[g+52>>2]=a;a=a+b|0;a=G[a+1|0]<<8&16128|G[a|0];break la;case 1:if(a>>>0<3){break ka}a=a-3|0;F[g+52>>2]=a;a=a+b|0;a=G[a+1|0]<<8|G[a+2|0]<<16&4128768|G[a|0];break la;default:break ma}}a=a-4|0;F[g+52>>2]=a;a=a+b|0;a=(G[a|0]|G[a+1|0]<<8|(G[a+2|0]<<16|G[a+3|0]<<24))&1073741823}F[g+56>>2]=a- -1048576;d=a>>>0<267386880}Z=f+16|0;if(!d){break ja}if(!o){m=1;break ja}b=F[g+52>>2];a=F[g+56>>2];c=F[g+36>>2];d=F[g+48>>2];f=F[g+24>>2];while(1){na:{if(a>>>0>1048575){break na}while(1){if((b|0)<=0){break na}b=b-1|0;F[g+52>>2]=b;a=G[b+d|0]|a<<8;F[g+56>>2]=a;if(a>>>0<1048576){continue}break}}m=a&262143;e=F[f+(m<<2)>>2];k=c+(e<<3)|0;a=(L(F[k>>2],a>>>18|0)+m|0)-F[k+4>>2]|0;F[g+56>>2]=a;F[r+(q<<2)>>2]=e;m=1;q=q+1|0;if((o|0)!=(q|0)){continue}break}}a=F[g+36>>2];if(a){F[g+40>>2]=a;ja(a)}a=F[g+24>>2];if(a){F[g+28>>2]=a;ja(a)}a=F[g+8>>2];if(a){F[g+12>>2]=a;ja(a)}Z=g- -64|0;b=m;break g;case 12:o=a;r=d;e=Z+-64|0;Z=e;F[e+56>>2]=0;F[e+48>>2]=0;F[e+52>>2]=0;F[e+40>>2]=0;F[e+44>>2]=0;F[e+32>>2]=0;F[e+36>>2]=0;F[e+24>>2]=0;F[e+28>>2]=0;F[e+16>>2]=0;F[e+20>>2]=0;F[e+8>>2]=0;F[e+12>>2]=0;h=e+8|0;oa:{pa:{if(!H[c+38>>1]){break pa}if(!Ta(1,h+12|0,c)){break pa}b=F[c+8>>2];d=F[c+16>>2];f=b-d|0;i=F[h+12>>2];b=F[c+12>>2]-(F[c+20>>2]+(b>>>0>>0)|0)|0;if(f>>>0>>6>>>0&(b|0)<=0|(b|0)<0){break pa}b=F[h>>2];a=F[h+4>>2]-b>>2;qa:{if(a>>>0>>0){qa(h,i-a|0);i=F[h+12>>2];break qa}if(a>>>0<=i>>>0){break qa}F[h+4>>2]=b+(i<<2)}g=1;if(!i){break oa}f=F[c+16>>2];d=F[c+20>>2];s=F[h>>2];j=F[c+8>>2];n=F[c+12>>2];b=0;while(1){g=0;if((d|0)>=(n|0)&f>>>0>=j>>>0|(d|0)>(n|0)){break oa}g=F[c>>2];p=G[g+f|0];a=d;f=f+1|0;a=f?a:a+1|0;F[c+16>>2]=f;d=a;F[c+20>>2]=a;a=p>>>2|0;l=0;ra:{sa:{ta:{ua:{t=p&3;switch(t|0){case 0:break sa;case 3:break ua;default:break ta}}a=a+b|0;g=0;if(a>>>0>=i>>>0){break oa}ma(s+(b<<2)|0,0,(p&252)+4|0);b=a;break ra}while(1){if((f|0)==(j|0)&(d|0)==(n|0)){break pa}i=G[f+g|0];f=f+1|0;d=f?d:d+1|0;F[c+16>>2]=f;F[c+20>>2]=d;a=i<<(l<<3|6)|a;l=l+1|0;if((t|0)!=(l|0)){continue}break}}F[s+(b<<2)>>2]=a}b=b+1|0;i=F[h+12>>2];if(b>>>0>>0){continue}break}a=h+16|0;n=F[h>>2];d=F[h+16>>2];b=F[h+20>>2]-d|0;va:{if(b>>>0<=2097151){qa(a,524288-(b>>>2|0)|0);break va}if((b|0)==2097152){break va}F[h+20>>2]=d+2097152}d=h+28|0;b=F[d>>2];f=F[h+32>>2]-b>>3;wa:{if(f>>>0>>0){_a(d,i-f|0);b=F[d>>2];break wa}if(f>>>0>i>>>0){F[h+32>>2]=(i<<3)+b}if(!i){break pa}}j=F[a>>2];f=0;d=0;while(1){g=n+(f<<2)|0;l=F[g>>2];h=(f<<3)+b|0;a=d;F[h+4>>2]=a;F[h>>2]=l;g=F[g>>2];d=g+a|0;if(d>>>0>524288){break pa}xa:{if(a>>>0>=d>>>0){break xa}l=0;h=g&7;if(h){while(1){F[j+(a<<2)>>2]=f;a=a+1|0;l=l+1|0;if((h|0)!=(l|0)){continue}break}}if(g-1>>>0<=6){break xa}while(1){g=j+(a<<2)|0;F[g>>2]=f;F[g+28>>2]=f;F[g+24>>2]=f;F[g+20>>2]=f;F[g+16>>2]=f;F[g+12>>2]=f;F[g+8>>2]=f;F[g+4>>2]=f;a=a+8|0;if((d|0)!=(a|0)){continue}break}}f=f+1|0;if((i|0)!=(f|0)){continue}break}k=(d|0)==524288}g=k}ya:{if(!g|(F[e+20>>2]?0:o)){break ya}d=0;k=Z-16|0;Z=k;za:{if(!Sa(1,k+8|0,c)){break za}a=F[c+8>>2];f=F[c+16>>2];g=a-f|0;j=F[k+12>>2];i=F[c+20>>2];a=F[c+12>>2]-(i+(a>>>0>>0)|0)|0;b=F[k+8>>2];if((j|0)==(a|0)&g>>>0>>0|a>>>0>>0){break za}a=i+j|0;g=b+f|0;a=g>>>0>>0?a+1|0:a;F[c+16>>2]=g;F[c+20>>2]=a;if((b|0)<=0){break za}a=f+F[c>>2]|0;F[e+48>>2]=a;c=b-1|0;f=c+a|0;g=G[f|0];Aa:{if(g>>>0<=63){F[e+52>>2]=c;a=G[f|0]&63;break Aa}Ba:{switch((g>>>6|0)-1|0){case 0:if(b>>>0<2){break za}b=b-2|0;F[e+52>>2]=b;a=a+b|0;a=G[a+1|0]<<8&16128|G[a|0];break Aa;case 1:if(b>>>0<3){break za}b=b-3|0;F[e+52>>2]=b;a=a+b|0;a=G[a+1|0]<<8|G[a+2|0]<<16&4128768|G[a|0];break Aa;default:break Ba}}b=b-4|0;F[e+52>>2]=b;a=a+b|0;a=(G[a|0]|G[a+1|0]<<8|(G[a+2|0]<<16|G[a+3|0]<<24))&1073741823}F[e+56>>2]=a+2097152;d=a>>>0<534773760}Z=k+16|0;if(!d){break ya}if(!o){m=1;break ya}b=F[e+52>>2];a=F[e+56>>2];c=F[e+36>>2];d=F[e+48>>2];f=F[e+24>>2];while(1){Ca:{if(a>>>0>2097151){break Ca}while(1){if((b|0)<=0){break Ca}b=b-1|0;F[e+52>>2]=b;a=G[b+d|0]|a<<8;F[e+56>>2]=a;if(a>>>0<2097152){continue}break}}m=a&524287;k=F[f+(m<<2)>>2];g=c+(k<<3)|0;a=(L(F[g>>2],a>>>19|0)+m|0)-F[g+4>>2]|0;F[e+56>>2]=a;F[r+(q<<2)>>2]=k;m=1;q=q+1|0;if((o|0)!=(q|0)){continue}break}}a=F[e+36>>2];if(a){F[e+40>>2]=a;ja(a)}a=F[e+24>>2];if(a){F[e+28>>2]=a;ja(a)}a=F[e+8>>2];if(a){F[e+12>>2]=a;ja(a)}Z=e- -64|0;b=m;break g;case 17:b=Ld(a,c,d);break g;case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:b=Z+-64|0;Z=b;F[b+56>>2]=0;F[b+48>>2]=0;F[b+52>>2]=0;F[b+40>>2]=0;F[b+44>>2]=0;F[b+32>>2]=0;F[b+36>>2]=0;F[b+24>>2]=0;F[b+28>>2]=0;F[b+16>>2]=0;F[b+20>>2]=0;F[b+8>>2]=0;F[b+12>>2]=0;Da:{if(!Nd(b+8|0,c)|(F[b+20>>2]?0:a)){break Da}if(!Md(b+8|0,c)){break Da}if(!a){f=1;break Da}m=F[b+52>>2];c=F[b+56>>2];e=F[b+36>>2];g=F[b+48>>2];o=F[b+24>>2];while(1){Ea:{if(c>>>0>16383){break Ea}while(1){if((m|0)<=0){break Ea}m=m-1|0;F[b+52>>2]=m;c=G[g+m|0]|c<<8;F[b+56>>2]=c;if(c>>>0<16384){continue}break}}f=c&4095;j=F[o+(f<<2)>>2];r=e+(j<<3)|0;c=(L(F[r>>2],c>>>12|0)+f|0)-F[r+4>>2]|0;F[b+56>>2]=c;F[(k<<2)+d>>2]=j;f=1;k=k+1|0;if((k|0)!=(a|0)){continue}break}}a=F[b+36>>2];if(a){F[b+40>>2]=a;ja(a)}a=F[b+24>>2];if(a){F[b+28>>2]=a;ja(a)}a=F[b+8>>2];if(a){F[b+12>>2]=a;ja(a)}Z=b- -64|0;b=f;break g;case 13:case 14:case 15:case 16:break h;default:break g}}b=Ld(a,c,d)}f=b}return f}function ih(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,J=0,K=0,M=0,N=0,O=0,P=0;u=Z+-64|0;Z=u;F[a+132>>2]=0;if(F[a+148>>2]){b=F[a+144>>2];if(b){while(1){f=F[b>>2];ja(b);b=f;if(b){continue}break}}b=0;F[a+144>>2]=0;f=F[a+140>>2];a:{if(!f){break a}if(f>>>0>=4){c=f&-4;while(1){e=b<<2;F[e+F[a+136>>2]>>2]=0;F[F[a+136>>2]+(e|4)>>2]=0;F[F[a+136>>2]+(e|8)>>2]=0;F[F[a+136>>2]+(e|12)>>2]=0;b=b+4|0;d=d+4|0;if((c|0)!=(d|0)){continue}break}}f=f&3;if(!f){break a}d=0;while(1){F[F[a+136>>2]+(b<<2)>>2]=0;b=b+1|0;d=d+1|0;if((f|0)!=(d|0)){continue}break}}F[a+148>>2]=0}b:{c:{if(!Da(1,u+60|0,F[F[a+4>>2]+32>>2])){break c}F[a+156>>2]=F[u+60>>2];if(!Da(1,u+56|0,F[F[a+4>>2]+32>>2])){break c}e=F[u+56>>2];if(e>>>0>1431655765|I[a+156>>2]>L(e,3)>>>0){break c}b=F[F[a+4>>2]+32>>2];c=F[b+8>>2];k=F[b+12>>2];d=F[b+20>>2];f=F[b+16>>2];if((k|0)<=(d|0)&f>>>0>=c>>>0|(d|0)>(k|0)){break c}k=G[f+F[b>>2]|0];f=f+1|0;d=f?d:d+1|0;F[b+16>>2]=f;F[b+20>>2]=d;if(!Da(1,u+52|0,b)){break c}q=F[u+52>>2];if(q>>>0>e>>>0|e>>>0>q+((q>>>0)/3|0)>>>0){break c}if(!Da(1,u+48|0,F[F[a+4>>2]+32>>2])){break c}d=F[u+48>>2];if(d>>>0>q>>>0){break c}F[a+28>>2]=F[a+24>>2];f=Zb(ka(88));b=F[a+8>>2];F[a+8>>2]=f;if(b){Za(b);if(!F[a+8>>2]){break c}}F[a+164>>2]=F[a+160>>2];Ib(a+160|0,e);F[a+176>>2]=F[a+172>>2];Ib(a+172|0,e);F[a- -64>>2]=0;F[a+92>>2]=-1;F[a+84>>2]=-1;F[a+88>>2]=-1;F[a+40>>2]=F[a+36>>2];F[a+52>>2]=F[a+48>>2];F[a+76>>2]=F[a+72>>2];A=a+216|0;Dd(A);Cd(A,k);if(!_c(F[a+8>>2],e,d+F[a+156>>2]|0)){break c}b=F[a+156>>2];D[u+8|0]=1;Ea(a+120|0,b+d|0,u+8|0);if((Bd(a,F[F[a+4>>2]+32>>2])|0)==-1){break c}c=a+232|0;b=c;F[b+144>>2]=a;f=F[($[F[F[a>>2]+32>>2]](a)|0)+32>>2];f=F[f>>2]+F[f+16>>2]|0;e=F[($[F[F[a>>2]+32>>2]](a)|0)+32>>2];e=F[e+8>>2]-F[e+16>>2]|0;O=b,P=H[F[($[F[F[a>>2]+32>>2]](a)|0)+32>>2]+38>>1],E[O+38>>1]=P;F[b>>2]=f;F[b+16>>2]=0;F[b+20>>2]=0;F[b+8>>2]=e;F[b+12>>2]=0;O=b,P=$[F[F[a>>2]+36>>2]](a)|0,F[O+148>>2]=P;F[a+372>>2]=k;F[a+384>>2]=d+F[a+156>>2];K=Ja(u+8|0);k=K;f=0;j=Z-16|0;Z=j;d:{if(!Aa(b+80|0,b)){break d}if(!yd(c)){break d}b=F[c+4>>2];F[k>>2]=F[c>>2];F[k+4>>2]=b;b=F[c+36>>2];F[k+32>>2]=F[c+32>>2];F[k+36>>2]=b;b=F[c+28>>2];F[k+24>>2]=F[c+24>>2];F[k+28>>2]=b;b=F[c+20>>2];F[k+16>>2]=F[c+16>>2];F[k+20>>2]=b;b=F[c+12>>2];F[k+8>>2]=F[c+8>>2];F[k+12>>2]=b;F[c+176>>2]=2;F[c+180>>2]=7;b=F[c+152>>2];if((b|0)<0){break d}F[j+12>>2]=0;f=2;h=F[c+156>>2];e=F[c+160>>2]-h>>2;e:{if(e>>>0>>0){Fa(c+156|0,b-e|0,j+12|0);f=F[c+176>>2];d=F[c+180>>2];break e}d=7;if(b>>>0>=e>>>0){break e}F[c+160>>2]=h+(b<<2)}e=c+184|0;d=(d-f|0)+1|0;b=F[c+188>>2];f=F[c+184>>2];s=(b-f|0)/12|0;f:{if(d>>>0>s>>>0){h=0;b=d-s|0;o=F[e+8>>2];f=F[e+4>>2];g:{if(b>>>0<=(o-f|0)/12>>>0){if(b){b=L(b,12)-12|0;b=(b-((b>>>0)%12|0)|0)+12|0;f=ma(f,0,b)+b|0}F[e+4>>2]=f;break g}h:{i:{j:{s=F[e>>2];g=(f-s|0)/12|0;d=g+b|0;if(d>>>0<357913942){o=(o-s|0)/12|0;i=o<<1;o=o>>>0>=178956970?357913941:d>>>0>>0?i:d;if(o){if(o>>>0>=357913942){break j}h=ka(L(o,12))}d=L(g,12)+h|0;b=L(b,12)-12|0;g=(b-((b>>>0)%12|0)|0)+12|0;b=ma(d,0,g);g=b+g|0;h=L(o,12)+h|0;if((f|0)==(s|0)){break i}while(1){d=d-12|0;f=f-12|0;F[d>>2]=F[f>>2];F[d+4>>2]=F[f+4>>2];F[d+8>>2]=F[f+8>>2];F[f+8>>2]=0;F[f>>2]=0;F[f+4>>2]=0;if((f|0)!=(s|0)){continue}break}F[e+8>>2]=h;b=F[e+4>>2];F[e+4>>2]=g;f=F[e>>2];F[e>>2]=d;if((b|0)==(f|0)){break h}while(1){d=b-12|0;h=F[d>>2];if(h){F[b-8>>2]=h;ja(h)}b=d;if((f|0)!=(b|0)){continue}break}break h}break b}oa();v()}F[e+8>>2]=h;F[e+4>>2]=g;F[e>>2]=b}if(f){ja(f)}}d=F[c+188>>2];break f}if(d>>>0>=s>>>0){d=b;break f}d=f+L(d,12)|0;if((d|0)!=(b|0)){while(1){f=b-12|0;h=F[f>>2];if(h){F[b-8>>2]=h;ja(h)}b=f;if((d|0)!=(b|0)){continue}break}}F[c+188>>2]=d}s=c+196|0;f=F[c+184>>2];b=(d-f|0)/12|0;o=F[c+196>>2];h=F[c+200>>2]-o>>2;k:{if(b>>>0>h>>>0){qa(s,b-h|0);f=F[c+184>>2];d=F[c+188>>2];break k}if(b>>>0>=h>>>0){break k}F[c+200>>2]=o+(b<<2)}if((d|0)==(f|0)){f=1;break d}b=0;while(1){l:{if(!Da(1,j+8|0,k)){break l}f=F[j+8>>2];d=F[c+148>>2];if(f>>>0>(F[d+4>>2]-F[d>>2]>>2>>>0)/3>>>0){break l}if(f){g=L(b,12);h=g+F[e>>2]|0;d=F[h>>2];o=F[h+4>>2]-d>>2;m:{if(o>>>0>>0){qa(h,f-o|0);d=F[g+F[e>>2]>>2];break m}if(f>>>0>=o>>>0){break m}F[h+4>>2]=(f<<2)+d}mc(f,1,k,d);F[F[s>>2]+(b<<2)>>2]=f}f=1;b=b+1|0;if(b>>>0<(F[c+188>>2]-F[c+184>>2]|0)/12>>>0){continue}break d}break}f=0}Z=j+16|0;n:{if(!f){break n}e=0;c=0;d=0;b=0;k=0;f=0;s=0;o=0;l=Z-96|0;Z=l;F[l+72>>2]=0;F[l+64>>2]=0;F[l+68>>2]=0;F[l+48>>2]=0;F[l+52>>2]=0;F[l+40>>2]=0;F[l+44>>2]=0;F[l+56>>2]=1065353216;F[l+32>>2]=0;F[l+24>>2]=0;F[l+28>>2]=0;j=a;C=F[a+124>>2];o:{p:{q:{r:{s:{if((q|0)<=0){break s}J=j+232|0;M=F[j+216>>2]!=F[j+220>>2];B=1;t:{while(1){h=s;s=h+1|0;u:{v:{w:{g=F[j+404>>2];if((g|0)==-1){F[j+400>>2]=7;break w}a=-1;i=F[j+428>>2]+(g<<2)|0;m=F[i>>2];g=m-1|0;F[i>>2]=g;if((m|0)<=0){break r}g=F[F[F[j+416>>2]+L(F[j+404>>2],12)>>2]+(g<<2)>>2];if(g>>>0>4){break r}i=F[(g<<2)+8896>>2];F[j+400>>2]=i;if(!g){if((b|0)==(c|0)){break r}i=-1;m=F[j+8>>2];B=F[m+24>>2];t=c-4|0;e=F[t>>2];g=-1;x:{if((e|0)==-1){break x}p=e+1|0;p=(p>>>0)%3|0?p:e-2|0;g=-1;if((p|0)==-1){break x}g=F[F[m>>2]+(p<<2)>>2]}n=F[B+(g<<2)>>2];if((n|0)!=-1){i=n+1|0;i=(i>>>0)%3|0?i:n-2|0}if((e|0)!=-1&F[F[m+12>>2]+(e<<2)>>2]!=-1|(e|0)==(i|0)){break r}n=F[m+12>>2];if((i|0)!=-1&F[n+(i<<2)>>2]!=-1){break r}p=L(h,3);h=p+1|0;F[n+(e<<2)>>2]=h;x=h<<2;F[x+n>>2]=e;r=p+2|0;F[n+(i<<2)>>2]=r;w=r<<2;F[w+n>>2]=i;n=-1;h=-1;y:{if((e|0)==-1){break y}z:{if((e>>>0)%3|0){e=e-1|0;break z}e=e+2|0;h=-1;if((e|0)==-1){break y}}h=F[F[m>>2]+(e<<2)>>2]}e=h;A:{if((i|0)==-1){break A}h=i+1|0;h=(h>>>0)%3|0?h:i-2|0;if((h|0)==-1){break A}n=F[F[m>>2]+(h<<2)>>2]}if((e|0)==(g|0)|(g|0)==(n|0)){break r}a=F[m>>2];F[a+(p<<2)>>2]=g;F[a+x>>2]=n;F[a+w>>2]=e;if((e|0)!=-1){F[B+(e<<2)>>2]=r}a=F[j+120>>2]+(g>>>3&536870908)|0;e=F[a>>2];O=a,P=oi(g)&e,F[O>>2]=P;F[t>>2]=p;e=b;kc(J,p);break u}B:{switch(i-1|0){case 2:case 4:if((b|0)==(c|0)){break r}r=c-4|0;e=F[r>>2];i=F[j+8>>2];m=F[i+12>>2];if((e|0)!=-1&F[m+(e<<2)>>2]!=-1){break r}c=L(h,3);n=(g|0)==3;g=c+(n?2:1)|0;t=g<<2;F[t+m>>2]=e;F[m+(e<<2)>>2]=g;Ma(i+24|0,8324);p=F[j+8>>2];m=F[p+24>>2];if(F[p+28>>2]-m>>2>(C|0)){break r}a=F[p>>2];w=a+t|0;p=F[i+28>>2];i=F[i+24>>2];t=(p-i>>2)-1|0;F[w>>2]=t;if((i|0)!=(p|0)){F[m+(t<<2)>>2]=g}g=n?c:c+2|0;w=a+(c+n<<2)|0;C:{if((e|0)==-1){F[a+(g<<2)>>2]=-1;i=-1;break C}D:{E:{F:{if((e>>>0)%3|0){i=e-1|0;break F}i=e+2|0;if((i|0)==-1){break E}}i=F[a+(i<<2)>>2];F[a+(g<<2)>>2]=i;if((i|0)==-1){break D}F[m+(i<<2)>>2]=g;break D}F[a+(g<<2)>>2]=-1}i=e+1|0;e=(i>>>0)%3|0?i:e-2|0;i=-1;if((e|0)==-1){break C}i=F[a+(e<<2)>>2]}F[w>>2]=i;F[r>>2]=c;e=b;break v;case 6:break w;case 0:break B;default:break r}}if((e|0)==(c|0)){break r}f=c-4|0;m=F[f>>2];F[l+68>>2]=f;n=F[l+44>>2];G:{if(!n){break G}g=F[l+40>>2];p=ni(n)>>>0>1;a=h&n+2147483647;H:{if(!p){break H}a=h;if(a>>>0>>0){break H}a=(h>>>0)%(n>>>0)|0}i=a;a=F[g+(i<<2)>>2];if(!a){break G}a=F[a>>2];if(!a){break G}I:{if(!p){g=n-1|0;while(1){n=F[a+4>>2];J:{if((n|0)!=(h|0)){if((i|0)==(g&n)){break J}break G}if((h|0)==F[a+8>>2]){break I}}a=F[a>>2];if(a){continue}break}break G}while(1){g=F[a+4>>2];K:{if((g|0)!=(h|0)){if(g>>>0>=n>>>0){g=(g>>>0)%(n>>>0)|0}if((g|0)==(i|0)){break K}break G}if((h|0)==F[a+8>>2]){break I}}a=F[a>>2];if(a){continue}break}break G}if((f|0)!=(k|0)){F[f>>2]=F[a+12>>2];F[l+68>>2]=c;f=c;break G}b=k-e|0;c=b>>2;d=c+1|0;if(d>>>0>=1073741824){break b}f=b>>>1|0;d=b>>>0>=2147483644?1073741823:d>>>0>>0?f:d;if(d){if(d>>>0>=1073741824){break p}f=ka(d<<2)}else{f=0}b=f+(c<<2)|0;F[b>>2]=F[a+12>>2];d=f+(d<<2)|0;f=b+4|0;if((e|0)!=(k|0)){while(1){b=b-4|0;k=k-4|0;F[b>>2]=F[k>>2];if((e|0)!=(k|0)){continue}break}}F[l+72>>2]=d;F[l+68>>2]=f;F[l+64>>2]=b;if(e){ja(e)}e=b;k=d}if((e|0)==(f|0)){break t}x=f-4|0;a=F[x>>2];if((a|0)==(m|0)){break t}i=(a|0)==-1;g=F[j+8>>2];if(!i&F[F[g+12>>2]+(a<<2)>>2]!=-1){break t}n=F[g+12>>2];if((m|0)!=-1&F[n+(m<<2)>>2]!=-1){break t}p=L(h,3);t=p+2|0;F[n+(a<<2)>>2]=t;c=t<<2;F[c+n>>2]=a;h=p+1|0;F[n+(m<<2)>>2]=h;w=h<<2;F[w+n>>2]=m;L:{M:{N:{if(!i){if((a>>>0)%3|0){h=a-1|0;break N}h=a+2|0;if((h|0)!=-1){break N}i=F[g>>2];h=-1;break M}h=-1;i=F[g>>2];F[i+(p<<2)>>2]=-1;r=-1;break L}i=F[g>>2];h=F[i+(h<<2)>>2]}F[(p<<2)+i>>2]=h;r=a+1|0;a=(r>>>0)%3|0?r:a-2|0;r=-1;if((a|0)==-1){break L}r=F[(a<<2)+i>>2]}F[i+w>>2]=r;O:{if((m|0)==-1){F[c+i>>2]=-1;r=-1;c=-1;break O}P:{Q:{R:{if((m>>>0)%3|0){a=m-1|0;break R}a=m+2|0;if((a|0)==-1){break Q}}a=F[(a<<2)+i>>2];F[c+i>>2]=a;if((a|0)==-1){break P}F[F[g+24>>2]+(a<<2)>>2]=t;break P}F[c+i>>2]=-1}r=-1;a=m+1|0;a=(a>>>0)%3|0?a:m-2|0;c=-1;if((a|0)==-1){break O}r=F[(a<<2)+i>>2];c=a}a=F[j+388>>2];t=h<<2;m=a+t|0;w=a;a=r<<2;F[m>>2]=F[m>>2]+F[w+a>>2];w=a;a=F[g+24>>2];m=w+a|0;if((h|0)!=-1){F[a+t>>2]=F[m>>2]}a=c;while(1){if((a|0)!=-1){F[(a<<2)+i>>2]=h;t=a+1|0;a=(t>>>0)%3|0?t:a-2|0;g=-1;S:{if((a|0)==-1){break S}a=F[n+(a<<2)>>2];g=-1;if((a|0)==-1){break S}g=a+1|0;g=(g>>>0)%3|0?g:a-2|0}a=g;if((c|0)!=(a|0)){continue}break t}break}F[m>>2]=-1;T:{U:{if(M){break U}if((y|0)!=(z|0)){F[z>>2]=r;z=z+4|0;F[l+28>>2]=z;break U}a=y-o|0;g=a>>2;c=g+1|0;if(c>>>0>=1073741824){break T}h=a>>>1|0;h=a>>>0>=2147483644?1073741823:c>>>0>>0?h:c;if(h){if(h>>>0>=1073741824){break p}c=ka(h<<2)}else{c=0}a=c+(g<<2)|0;F[a>>2]=r;z=a+4|0;if((o|0)!=(y|0)){while(1){a=a-4|0;y=y-4|0;F[a>>2]=F[y>>2];if((o|0)!=(y|0)){continue}break}}y=c+(h<<2)|0;F[l+32>>2]=y;F[l+28>>2]=z;F[l+24>>2]=a;if(o){ja(o)}o=a}F[x>>2]=p;c=f;kc(J,p);break u}break b}g=F[j+8>>2];Ma(g+24|0,8324);a=-1;k=F[j+8>>2];f=L(h,3);i=F[g+28>>2];m=F[g+24>>2];n=i-m|0;g=n>>2;p=g-1|0;F[F[k>>2]+(f<<2)>>2]=p;Ma(k+24|0,8324);r=f+1|0;F[F[k>>2]+(r<<2)>>2]=(F[k+28>>2]-F[k+24>>2]>>2)-1;k=F[j+8>>2];Ma(k+24|0,8324);t=f+2|0;F[F[k>>2]+(t<<2)>>2]=(F[k+28>>2]-F[k+24>>2]>>2)-1;x=F[j+8>>2];k=F[x+24>>2];if(F[x+28>>2]-k>>2>(C|0)){break r}V:{W:{if((i|0)!=(m|0)){F[k+(p<<2)>>2]=f;a=0;if((n|0)==-4){break W}}F[k+(g<<2)>>2]=r;a=g+1|0;if((a|0)==-1){break V}}F[k+(a<<2)>>2]=t}if((d|0)!=(c|0)){F[c>>2]=f;f=c+4|0;F[l+68>>2]=f;k=d;break v}a=d-b|0;k=a>>2;e=k+1|0;if(e>>>0>=1073741824){break b}c=a>>>1|0;a=a>>>0>=2147483644?1073741823:e>>>0>>0?c:e;if(a){if(a>>>0>=1073741824){break p}c=ka(a<<2)}else{c=0}e=c+(k<<2)|0;F[e>>2]=f;k=c+(a<<2)|0;f=e+4|0;if((b|0)!=(d|0)){while(1){e=e-4|0;d=d-4|0;F[e>>2]=F[d>>2];if((b|0)!=(d|0)){continue}break}}F[l+72>>2]=k;F[l+68>>2]=f;F[l+64>>2]=e;if(b){ja(b)}d=k;b=e}kc(J,F[f-4>>2]);a=F[j+40>>2];X:{if((a|0)==F[j+36>>2]){break X}c=a-12|0;g=F[c+4>>2];h=q+(h^-1)|0;if(g>>>0>h>>>0){break t}if((g|0)!=(h|0)){break X}i=G[a-4|0];g=F[c>>2];F[j+40>>2]=c;if((g|0)<0){break t}m=f-4|0;a=F[m>>2];F[l+20>>2]=q+(g^-1);c=l+20|0;F[l+88>>2]=c;Fb(l,l+40|0,c,l+88|0);g=F[l>>2];Y:{if(i&1){c=-1;if((a|0)==-1){break Y}c=a+1|0;c=(c>>>0)%3|0?c:a-2|0;break Y}c=-1;if((a|0)==-1){break Y}c=a-1|0;if((a>>>0)%3|0){break Y}c=a+2|0}F[g+12>>2]=c;a=F[j+40>>2];if((a|0)==F[j+36>>2]){break X}while(1){c=a-12|0;g=F[c+4>>2];if(g>>>0>h>>>0){break t}if((g|0)!=(h|0)){break X}i=G[a-4|0];g=F[c>>2];F[j+40>>2]=c;if((g|0)<0){break t}a=F[m>>2];F[l+20>>2]=q+(g^-1);c=l+20|0;F[l+88>>2]=c;Fb(l,l+40|0,c,l+88|0);g=F[l>>2];Z:{if(i&1){c=-1;if((a|0)==-1){break Z}c=a+1|0;c=(c>>>0)%3|0?c:a-2|0;break Z}c=-1;if((a|0)==-1){break Z}c=a-1|0;if((a>>>0)%3|0){break Z}c=a+2|0}F[g+12>>2]=c;a=F[j+40>>2];if((a|0)!=F[j+36>>2]){continue}break}}c=f}B=(q|0)>(s|0);if((q|0)!=(s|0)){continue}break}s=q;break s}a=-1;if(B){break r}}a=-1;c=F[j+8>>2];if(F[c+28>>2]-F[c+24>>2]>>2>(C|0)){break r}if((b|0)!=(f|0)){m=j+72|0;k=j+60|0;n=j+312|0;while(1){f=f-4|0;q=F[f>>2];F[l+68>>2]=f;_:{if(wa(n)){g=F[j+8>>2];o=F[g>>2];if(((F[g+4>>2]-o>>2>>>0)/3|0)<=(s|0)){a=-1;break r}b=-1;i=F[g+24>>2];a=-1;$:{if((q|0)==-1){break $}e=q+1|0;e=(e>>>0)%3|0?e:q-2|0;a=-1;if((e|0)==-1){break $}a=F[o+(e<<2)>>2]}e=a;a=F[i+(e<<2)>>2];aa:{if((a|0)==-1){h=1;c=-1;break aa}h=1;c=-1;d=a+1|0;a=(d>>>0)%3|0?d:a-2|0;if((a|0)==-1){break aa}h=0;b=a+1|0;b=(b>>>0)%3|0?b:a-2|0;if((b|0)!=-1){c=F[o+(b<<2)>>2]}b=a}a=-1;d=-1;i=F[i+(c<<2)>>2];if((i|0)!=-1){d=i+1|0;d=(d>>>0)%3|0?d:i-2|0}if((b|0)==(q|0)|(d|0)==(q|0)|((q|0)!=-1&F[F[g+12>>2]+(q<<2)>>2]!=-1|(b|0)==(d|0))){break r}if(!h&F[F[g+12>>2]+(b<<2)>>2]!=-1){break r}h=-1;g=F[g+12>>2];i=-1;ba:{if((d|0)==-1){break ba}if(F[g+(d<<2)>>2]!=-1){break r}a=d+1|0;a=(a>>>0)%3|0?a:d-2|0;i=-1;if((a|0)==-1){break ba}i=F[o+(a<<2)>>2]}a=L(s,3);F[l>>2]=a;F[g+(a<<2)>>2]=q;F[g+(q<<2)>>2]=a;a=F[l>>2]+1|0;F[g+(a<<2)>>2]=b;F[g+(b<<2)>>2]=a;a=F[l>>2]+2|0;F[g+(a<<2)>>2]=d;F[g+(d<<2)>>2]=a;a=F[l>>2];F[o+(a<<2)>>2]=c;b=a+1|0;d=o+(b<<2)|0;F[d>>2]=i;q=a+2|0;o=o+(q<<2)|0;F[o>>2]=e;a=F[j+120>>2];e=b?c:-1;c=a+(e>>>3&536870908)|0;g=F[c>>2];O=c,P=oi(e)&g,F[O>>2]=P;h=(b|0)!=-1?F[d>>2]:h;b=a+(h>>>3&536870908)|0;d=F[b>>2];O=b,P=oi(h)&d,F[O>>2]=P;d=-1;d=(q|0)!=-1?F[o>>2]:d;a=a+(d>>>3&536870908)|0;b=F[a>>2];O=a,P=oi(d)&b,F[O>>2]=P;D[l+88|0]=1;wd(k,l+88|0);Ma(m,l);s=s+1|0;b=F[l+64>>2];break _}d=F[j+64>>2];a=F[j+68>>2];if((d|0)==a<<5){if((d+1|0)<0){break b}if(d>>>0<=1073741822){a=a<<6;d=(d&-32)+32|0;a=a>>>0>d>>>0?a:d}else{a=2147483647}$a(k,a);d=F[j+64>>2]}F[j+64>>2]=d+1;a=F[j+60>>2]+(d>>>3&536870908)|0;e=F[a>>2];O=a,P=oi(d)&e,F[O>>2]=P;d=F[j+76>>2];if((d|0)!=F[j+80>>2]){F[d>>2]=q;F[j+76>>2]=d+4;break _}c=F[m>>2];a=d-c|0;o=a>>2;e=o+1|0;if(e>>>0>=1073741824){break b}h=a>>>1|0;h=a>>>0>=2147483644?1073741823:e>>>0>>0?h:e;if(h){if(h>>>0>=1073741824){break p}a=ka(h<<2)}else{a=0}e=a+(o<<2)|0;F[e>>2]=q;q=e+4|0;if((d|0)!=(c|0)){while(1){e=e-4|0;d=d-4|0;F[e>>2]=F[d>>2];if((d|0)!=(c|0)){continue}break}}F[j+80>>2]=a+(h<<2);F[j+76>>2]=q;F[j+72>>2]=e;if(!c){break _}ja(c)}if((b|0)!=(f|0)){continue}break}c=F[j+8>>2]}a=-1;if(((F[c+4>>2]-F[c>>2]>>2>>>0)/3|0)!=(s|0)){break r}a=F[c+28>>2]-F[c+24>>2]>>2;f=F[l+24>>2];h=F[l+28>>2];if((f|0)==(h|0)){break q}while(1){b=F[f>>2];k=F[c+24>>2];d=a-1|0;e=k+(d<<2)|0;if(F[e>>2]==-1){while(1){d=a-2|0;a=a-1|0;e=k+(d<<2)|0;if(F[e>>2]==-1){continue}break}}if(b>>>0<=d>>>0){F[l>>2]=c;e=F[e>>2];D[l+12|0]=1;F[l+8>>2]=e;F[l+4>>2]=e;if((e|0)!=-1){while(1){e=F[F[j+8>>2]>>2]+(e<<2)|0;if(F[e>>2]!=(d|0)){a=-1;break r}F[e>>2]=b;nc(l);e=F[l+8>>2];if((e|0)!=-1){continue}break}c=F[j+8>>2]}k=F[c+24>>2];e=k+(d<<2)|0;if((b|0)!=-1){F[k+(b<<2)>>2]=F[e>>2]}F[e>>2]=-1;e=1<>2];b=k+(b>>>3&536870908)|0;k=k+(d>>>3&536870908)|0;d=1<>2]&d){e=e|F[b>>2]}else{e=F[b>>2]&(e^-1)}F[b>>2]=e;F[k>>2]=F[k>>2]&(d^-1);a=a-1|0}f=f+4|0;if((h|0)!=(f|0)){continue}break}}f=F[l+24>>2]}if(f){ja(f)}b=F[l+48>>2];if(b){while(1){d=F[b>>2];ja(b);b=d;if(b){continue}break}}b=F[l+40>>2];F[l+40>>2]=0;if(b){ja(b)}b=F[l+64>>2];if(b){F[l+68>>2]=b;ja(b)}Z=l+96|0;break o}oa();v()}f=a;if((a|0)==-1){break n}a=K;b=F[a+16>>2];d=b+F[a>>2]|0;b=F[a+8>>2]-b|0;a=F[F[j+4>>2]+32>>2];E[a+38>>1]=H[a+38>>1];F[a>>2]=d;F[a+16>>2]=0;F[a+20>>2]=0;F[a+8>>2]=b;F[a+12>>2]=0;ca:{if(F[j+216>>2]==F[j+220>>2]){break ca}a=F[j+8>>2];if(F[a+4>>2]==F[a>>2]){break ca}b=0;while(1){if(Ad(j,b)){b=b+3|0;a=F[j+8>>2];if(b>>>0>2]-F[a>>2]>>2>>>0){continue}break ca}break}break n}if(G[j+308|0]){D[j+308|0]=0;d=F[j+292>>2];a=0;e=F[j+304>>2]+7|0;a=e>>>0<7?1:a;e=a<<29|e>>>3;b=e+F[j+288>>2]|0;a=(a>>>3|0)+d|0;F[j+288>>2]=b;F[j+292>>2]=b>>>0>>0?a+1|0:a}b=F[j+216>>2];if((b|0)!=F[j+220>>2]){a=0;while(1){e=L(a,144);Zc((e+b|0)+4|0,F[j+8>>2]);d=F[A>>2];c=d+e|0;b=F[c+132>>2];c=F[c+136>>2];if((b|0)!=(c|0)){while(1){Xc((e+F[A>>2]|0)+4|0,F[b>>2]);b=b+4|0;if((c|0)!=(b|0)){continue}break}d=F[A>>2]}if(!Yc((d+e|0)+4|0)){break n}a=a+1|0;b=F[j+216>>2];if(a>>>0<(F[j+220>>2]-b|0)/144>>>0){continue}break}}a=F[j+8>>2];Hb(j+184|0,F[a+28>>2]-F[a+24>>2]>>2);d=F[j+216>>2];if((d|0)!=F[j+220>>2]){b=0;while(1){a=L(b,144)+d|0;d=F[a+60>>2]-F[a+56>>2]>>2;c=a+104|0;a=F[j+8>>2];a=F[a+28>>2]-F[a+24>>2]>>2;Hb(c,(a|0)<(d|0)?d:a);b=b+1|0;d=F[j+216>>2];if(b>>>0<(F[j+220>>2]-d|0)/144>>>0){continue}break}}N=zd(j,f)}}Z=u- -64|0;return N|0}na();v()}function lh(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,J=0,K=0,M=0,N=0;t=Z+-64|0;Z=t;F[a+132>>2]=0;if(F[a+148>>2]){c=F[a+144>>2];if(c){while(1){b=F[c>>2];ja(c);c=b;if(b){continue}break}}c=0;F[a+144>>2]=0;b=F[a+140>>2];a:{if(!b){break a}if(b>>>0>=4){h=b&-4;while(1){e=c<<2;F[e+F[a+136>>2]>>2]=0;F[F[a+136>>2]+(e|4)>>2]=0;F[F[a+136>>2]+(e|8)>>2]=0;F[F[a+136>>2]+(e|12)>>2]=0;c=c+4|0;g=g+4|0;if((h|0)!=(g|0)){continue}break}}b=b&3;if(!b){break a}g=0;while(1){F[F[a+136>>2]+(c<<2)>>2]=0;c=c+1|0;g=g+1|0;if((b|0)!=(g|0)){continue}break}}F[a+148>>2]=0}b:{if(!Da(1,t+60|0,F[F[a+4>>2]+32>>2])){break b}F[a+156>>2]=F[t+60>>2];if(!Da(1,t+56|0,F[F[a+4>>2]+32>>2])){break b}e=F[t+56>>2];if(e>>>0>1431655765|I[a+156>>2]>L(e,3)>>>0){break b}c=F[F[a+4>>2]+32>>2];h=F[c+8>>2];m=F[c+12>>2];b=F[c+20>>2];g=F[c+16>>2];if((m|0)<=(b|0)&g>>>0>=h>>>0|(b|0)>(m|0)){break b}h=G[g+F[c>>2]|0];g=g+1|0;b=g?b:b+1|0;F[c+16>>2]=g;F[c+20>>2]=b;if(!Da(1,t+52|0,c)){break b}n=F[t+52>>2];if(n>>>0>e>>>0|e>>>0>n+((n>>>0)/3|0)>>>0){break b}if(!Da(1,t+48|0,F[F[a+4>>2]+32>>2])){break b}c=F[t+48>>2];if(c>>>0>n>>>0){break b}F[a+28>>2]=F[a+24>>2];g=Zb(ka(88));b=F[a+8>>2];F[a+8>>2]=g;if(b){Za(b);if(!F[a+8>>2]){break b}}F[a+164>>2]=F[a+160>>2];Ib(a+160|0,e);F[a+176>>2]=F[a+172>>2];Ib(a+172|0,e);F[a- -64>>2]=0;F[a+92>>2]=-1;F[a+84>>2]=-1;F[a+88>>2]=-1;F[a+40>>2]=F[a+36>>2];F[a+52>>2]=F[a+48>>2];F[a+76>>2]=F[a+72>>2];y=a+216|0;Dd(y);Cd(y,h);if(!_c(F[a+8>>2],e,c+F[a+156>>2]|0)){break b}b=F[a+156>>2];D[t+8|0]=1;Ea(a+120|0,b+c|0,t+8|0);if((Bd(a,F[F[a+4>>2]+32>>2])|0)==-1){break b}c=a+232|0;F[c+144>>2]=a;b=F[($[F[F[a>>2]+32>>2]](a)|0)+32>>2];b=F[b>>2]+F[b+16>>2]|0;g=F[($[F[F[a>>2]+32>>2]](a)|0)+32>>2];g=F[g+8>>2]-F[g+16>>2]|0;M=c,N=H[F[($[F[F[a>>2]+32>>2]](a)|0)+32>>2]+38>>1],E[M+38>>1]=N;F[c>>2]=b;F[c+16>>2]=0;F[c+20>>2]=0;F[c+8>>2]=g;F[c+12>>2]=0;F[a+372>>2]=h;C=Ja(t+8|0);h=C;m=0;d=Z-16|0;Z=d;b=F[c+4>>2];F[c+40>>2]=F[c>>2];F[c+44>>2]=b;b=F[c+36>>2];F[c+72>>2]=F[c+32>>2];F[c+76>>2]=b;g=F[c+28>>2];b=c- -64|0;F[b>>2]=F[c+24>>2];F[b+4>>2]=g;b=F[c+20>>2];F[c+56>>2]=F[c+16>>2];F[c+60>>2]=b;b=F[c+12>>2];F[c+48>>2]=F[c+8>>2];F[c+52>>2]=b;c:{d:{if(hc(c+40|0,1,d+8|0)){b=F[c+44>>2];F[c>>2]=F[c+40>>2];F[c+4>>2]=b;b=F[c+76>>2];F[c+32>>2]=F[c+72>>2];F[c+36>>2]=b;b=F[c+68>>2];F[c+24>>2]=F[c+64>>2];F[c+28>>2]=b;g=F[c+60>>2];f=g;b=F[c+56>>2];F[c+16>>2]=b;F[c+20>>2]=g;e=F[c+52>>2];g=F[c+48>>2];F[c+8>>2]=g;F[c+12>>2]=e;k=F[d+12>>2];i=e-((b>>>0>g>>>0)+f|0)|0;e=g-b|0;g=F[d+8>>2];if((k|0)==(i|0)&e>>>0>=g>>>0|i>>>0>k>>>0){break d}}break c}e=f+k|0;b=b+g|0;e=b>>>0>>0?e+1|0:e;F[c+16>>2]=b;F[c+20>>2]=e;if(!Aa(c+80|0,c)){break c}if(!yd(c)){break c}b=F[c+4>>2];F[h>>2]=F[c>>2];F[h+4>>2]=b;b=F[c+36>>2];F[h+32>>2]=F[c+32>>2];F[h+36>>2]=b;b=F[c+28>>2];F[h+24>>2]=F[c+24>>2];F[h+28>>2]=b;b=F[c+20>>2];F[h+16>>2]=F[c+16>>2];F[h+20>>2]=b;b=F[c+12>>2];F[h+8>>2]=F[c+8>>2];F[h+12>>2]=b;m=1}Z=d+16|0;e:{if(!m){break e}b=0;c=0;g=0;m=0;j=Z-96|0;Z=j;F[j+72>>2]=0;F[j+64>>2]=0;F[j+68>>2]=0;F[j+48>>2]=0;F[j+52>>2]=0;F[j+40>>2]=0;F[j+44>>2]=0;F[j+56>>2]=1065353216;F[j+32>>2]=0;F[j+24>>2]=0;F[j+28>>2]=0;h=a;B=F[a+124>>2];f:{g:{h:{i:{j:{k:{l:{m:{if((n|0)<=0){break m}J=F[h+216>>2]!=F[h+220>>2];z=1;while(1){e=m;m=e+1|0;n:{o:{p:{q:{r:{s:{t:{u:{v:{w:{x:{y:{z:{A:{B:{if(!G[h+308|0]){break B}k=F[h+296>>2];d=F[h+304>>2];a=k+(d>>>3|0)|0;l=F[h+300>>2];if(a>>>0>=l>>>0){break B}f=G[a|0];a=d+1|0;F[h+304>>2]=a;p=f>>>(d&7)&1;if(!p){break B}i=0;f=a>>>3|0;r=k+f|0;C:{if(r>>>0>=l>>>0){d=a;a=0;break C}r=G[r|0];d=d+2|0;F[h+304>>2]=d;f=d>>>3|0;a=r>>>(a&7)&1}f=f+k|0;if(f>>>0>>0){f=G[f|0];F[h+304>>2]=d+1;i=f>>>(d&7)<<1&2}f=-1;i=p|(a|i)<<1;switch(i-1|0){case 6:break y;case 0:break z;case 2:case 4:break A;default:break l}}if((c|0)==(g|0)){f=-1;break l}d=-1;i=F[h+8>>2];z=F[i+24>>2];r=c-4|0;b=F[r>>2];a=-1;D:{if((b|0)==-1){break D}k=b+1|0;k=(k>>>0)%3|0?k:b-2|0;a=-1;if((k|0)==-1){break D}a=F[F[i>>2]+(k<<2)>>2]}f=F[z+(a<<2)>>2];if((f|0)!=-1){d=f+1|0;d=(d>>>0)%3|0?d:f-2|0}if((b|0)==(d|0)){f=-1;break l}if((b|0)!=-1){f=-1;if(F[F[i+12>>2]+(b<<2)>>2]!=-1){break l}}k=F[i+12>>2];if((d|0)!=-1){f=-1;if(F[k+(d<<2)>>2]!=-1){break l}}l=L(e,3);e=l+1|0;F[k+(b<<2)>>2]=e;s=e<<2;F[s+k>>2]=b;p=l+2|0;F[k+(d<<2)>>2]=p;u=p<<2;F[u+k>>2]=d;k=-1;e=-1;E:{if((b|0)==-1){break E}F:{if((b>>>0)%3|0){b=b-1|0;break F}b=b+2|0;e=-1;if((b|0)==-1){break E}}e=F[F[i>>2]+(b<<2)>>2]}b=e;G:{if((d|0)==-1){break G}e=d+1|0;e=(e>>>0)%3|0?e:d-2|0;if((e|0)==-1){break G}k=F[F[i>>2]+(e<<2)>>2]}f=-1;if((a|0)==(b|0)|(a|0)==(k|0)){break l}e=F[i>>2];F[e+(l<<2)>>2]=a;F[e+s>>2]=k;F[e+u>>2]=b;if((b|0)!=-1){F[z+(b<<2)>>2]=p}b=F[h+120>>2]+(a>>>3&536870908)|0;e=F[b>>2];M=b,N=oi(a)&e,F[M>>2]=N;F[r>>2]=l;b=g;break n}if((c|0)==(g|0)){break l}r=c-4|0;b=F[r>>2];a=F[h+8>>2];d=F[a+12>>2];if((b|0)!=-1&F[d+(b<<2)>>2]!=-1){break l}l=(i|0)==5;i=L(e,3);p=(l?2:1)+i|0;s=p<<2;F[s+d>>2]=b;F[d+(b<<2)>>2]=p;Ma(a+24|0,8324);d=F[h+8>>2];k=F[d+24>>2];if(F[d+28>>2]-k>>2>(B|0)){break l}d=F[d>>2];u=d+s|0;f=F[a+28>>2];a=F[a+24>>2];s=(f-a>>2)-1|0;F[u>>2]=s;if((a|0)!=(f|0)){F[k+(s<<2)>>2]=p}f=l?i:i+2|0;l=d+(i+l<<2)|0;H:{if((b|0)==-1){F[d+(f<<2)>>2]=-1;a=-1;break H}I:{J:{K:{if((b>>>0)%3|0){a=b-1|0;break K}a=b+2|0;if((a|0)==-1){break J}}a=F[d+(a<<2)>>2];F[d+(f<<2)>>2]=a;if((a|0)==-1){break I}F[k+(a<<2)>>2]=f;break I}F[d+(f<<2)>>2]=-1}f=b+1|0;b=(f>>>0)%3|0?f:b-2|0;a=-1;if((b|0)==-1){break H}a=F[d+(b<<2)>>2]}F[l>>2]=a;F[r>>2]=i;b=g;break t}if((b|0)==(c|0)){break l}a=c-4|0;k=F[a>>2];F[j+68>>2]=a;l=F[j+44>>2];L:{if(!l){c=a;break L}f=F[j+40>>2];p=ni(l)>>>0>1;d=e&l+2147483647;M:{if(!p){break M}d=e;if(d>>>0>>0){break M}d=(e>>>0)%(l>>>0)|0}i=d;d=F[f+(i<<2)>>2];if(!d){c=a;break L}d=F[d>>2];if(!d){c=a;break L}N:{if(!p){f=l-1|0;while(1){l=F[d+4>>2];O:{if((l|0)!=(e|0)){if((i|0)==(f&l)){break O}c=a;break L}if((e|0)==F[d+8>>2]){break N}}d=F[d>>2];if(d){continue}break}c=a;break L}while(1){f=F[d+4>>2];P:{if((f|0)!=(e|0)){if(f>>>0>=l>>>0){f=(f>>>0)%(l>>>0)|0}if((f|0)==(i|0)){break P}c=a;break L}if((e|0)==F[d+8>>2]){break N}}d=F[d>>2];if(d){continue}break}c=a;break L}if((a|0)!=(q|0)){F[a>>2]=F[d+12>>2];F[j+68>>2]=c;break L}a=q-b|0;g=a>>2;c=g+1|0;if(c>>>0>=1073741824){break x}f=a>>>1|0;f=a>>>0>=2147483644?1073741823:c>>>0>>0?f:c;if(f){if(f>>>0>=1073741824){break j}a=ka(f<<2)}else{a=0}g=a+(g<<2)|0;F[g>>2]=F[d+12>>2];c=g+4|0;if((b|0)!=(q|0)){while(1){g=g-4|0;q=q-4|0;F[g>>2]=F[q>>2];if((b|0)!=(q|0)){continue}break}}q=a+(f<<2)|0;F[j+72>>2]=q;F[j+68>>2]=c;F[j+64>>2]=g;if(b){ja(b)}}if((c|0)==(g|0)){break p}s=c-4|0;b=F[s>>2];if((b|0)==(k|0)){break p}a=(b|0)==-1;f=F[h+8>>2];if(!a&F[F[f+12>>2]+(b<<2)>>2]!=-1){break p}l=F[f+12>>2];if((k|0)!=-1&F[l+(k<<2)>>2]!=-1){break p}p=L(e,3);r=p+2|0;F[l+(b<<2)>>2]=r;e=r<<2;F[e+l>>2]=b;d=p+1|0;F[l+(k<<2)>>2]=d;u=d<<2;F[u+l>>2]=k;if(a){break w}if((b>>>0)%3|0){d=b-1|0;break s}d=b+2|0;if((d|0)!=-1){break s}a=F[f>>2];d=-1;break r}i=F[h+8>>2];Ma(i+24|0,8324);d=F[h+8>>2];a=L(e,3);k=F[i+28>>2];l=F[i+24>>2];p=k-l|0;i=p>>2;r=i-1|0;F[F[d>>2]+(a<<2)>>2]=r;Ma(d+24|0,8324);s=a+1|0;F[F[d>>2]+(s<<2)>>2]=(F[d+28>>2]-F[d+24>>2]>>2)-1;d=F[h+8>>2];Ma(d+24|0,8324);u=a+2|0;F[F[d>>2]+(u<<2)>>2]=(F[d+28>>2]-F[d+24>>2]>>2)-1;A=F[h+8>>2];d=F[A+24>>2];if(F[A+28>>2]-d>>2>(B|0)){break l}Q:{R:{if((k|0)!=(l|0)){F[d+(r<<2)>>2]=a;f=0;if((p|0)==-4){break R}}F[d+(i<<2)>>2]=s;f=i+1|0;if((f|0)==-1){break Q}}F[d+(f<<2)>>2]=u}if((c|0)!=(q|0)){F[c>>2]=a;c=c+4|0;F[j+68>>2]=c;break t}g=c-b|0;i=g>>2;d=i+1|0;if(d>>>0>=1073741824){break v}f=g>>>1|0;d=g>>>0>=2147483644?1073741823:d>>>0>>0?f:d;if(d){if(d>>>0>=1073741824){break j}f=ka(d<<2)}else{f=0}g=f+(i<<2)|0;F[g>>2]=a;q=f+(d<<2)|0;a=g+4|0;if((b|0)!=(c|0)){while(1){g=g-4|0;c=c-4|0;F[g>>2]=F[c>>2];if((b|0)!=(c|0)){continue}break}}F[j+72>>2]=q;F[j+68>>2]=a;F[j+64>>2]=g;if(!b){break u}ja(b);break u}na();v()}d=-1;a=F[f>>2];F[a+(p<<2)>>2]=-1;i=-1;break q}na();v()}c=a;b=g}a=F[h+40>>2];if((a|0)==F[h+36>>2]){break n}d=a-12|0;i=F[d+4>>2];f=n+(e^-1)|0;if(i>>>0>f>>>0){break p}if((f|0)!=(i|0)){break n}i=G[a-4|0];e=F[d>>2];F[h+40>>2]=d;if((e|0)<0){break p}k=c-4|0;a=F[k>>2];F[j+20>>2]=n+(e^-1);e=j+20|0;F[j+88>>2]=e;Fb(j,j+40|0,e,j+88|0);d=F[j>>2];S:{if(i&1){e=-1;if((a|0)==-1){break S}e=a+1|0;e=(e>>>0)%3|0?e:a-2|0;break S}e=-1;if((a|0)==-1){break S}e=a-1|0;if((a>>>0)%3|0){break S}e=a+2|0}F[d+12>>2]=e;d=F[h+40>>2];if((d|0)==F[h+36>>2]){break n}while(1){a=d-12|0;e=F[a+4>>2];if(e>>>0>f>>>0){break p}if((f|0)!=(e|0)){break n}d=G[d-4|0];e=F[a>>2];F[h+40>>2]=a;if((e|0)<0){break p}a=F[k>>2];F[j+20>>2]=n+(e^-1);e=j+20|0;F[j+88>>2]=e;Fb(j,j+40|0,e,j+88|0);i=F[j>>2];T:{if(d&1){e=-1;if((a|0)==-1){break T}e=a+1|0;e=(e>>>0)%3|0?e:a-2|0;break T}e=-1;if((a|0)==-1){break T}e=a-1|0;if((a>>>0)%3|0){break T}e=a+2|0}F[i+12>>2]=e;d=F[h+40>>2];if((d|0)!=F[h+36>>2]){continue}break}break n}a=F[f>>2];d=F[a+(d<<2)>>2]}F[(p<<2)+a>>2]=d;A=b+1|0;b=(A>>>0)%3|0?A:b-2|0;i=-1;if((b|0)==-1){break q}i=F[(b<<2)+a>>2]}F[a+u>>2]=i;U:{if((k|0)==-1){F[a+e>>2]=-1;i=-1;e=-1;break U}V:{W:{X:{if((k>>>0)%3|0){b=k-1|0;break X}b=k+2|0;if((b|0)==-1){break W}}b=F[(b<<2)+a>>2];F[a+e>>2]=b;if((b|0)==-1){break V}F[F[f+24>>2]+(b<<2)>>2]=r;break V}F[a+e>>2]=-1}i=-1;b=k+1|0;b=(b>>>0)%3|0?b:k-2|0;e=-1;if((b|0)==-1){break U}i=F[(b<<2)+a>>2];e=b}b=F[f+24>>2];k=b+(i<<2)|0;if((d|0)!=-1){F[b+(d<<2)>>2]=F[k>>2]}b=e;while(1){if((b|0)==-1){break o}F[(b<<2)+a>>2]=d;r=b+1|0;b=(r>>>0)%3|0?r:b-2|0;f=-1;Y:{if((b|0)==-1){break Y}b=F[l+(b<<2)>>2];f=-1;if((b|0)==-1){break Y}f=b+1|0;f=(f>>>0)%3|0?f:b-2|0}b=f;if((e|0)!=(b|0)){continue}break}}f=-1;if(!z){break m}break l}F[k>>2]=-1;Z:{if(J){break Z}if((w|0)!=(x|0)){F[x>>2]=i;x=x+4|0;F[j+28>>2]=x;break Z}a=w-o|0;d=a>>2;b=d+1|0;if(b>>>0>=1073741824){break i}e=a>>>1|0;e=a>>>0>=2147483644?1073741823:b>>>0>>0?e:b;if(e){if(e>>>0>=1073741824){break j}a=ka(e<<2)}else{a=0}b=a+(d<<2)|0;F[b>>2]=i;x=b+4|0;if((o|0)!=(w|0)){while(1){b=b-4|0;w=w-4|0;F[b>>2]=F[w>>2];if((o|0)!=(w|0)){continue}break}}w=a+(e<<2)|0;F[j+32>>2]=w;F[j+28>>2]=x;F[j+24>>2]=b;if(o){ja(o)}o=b}F[s>>2]=p;b=g}z=(m|0)<(n|0);if((m|0)!=(n|0)){continue}break}m=n}f=-1;a=F[h+8>>2];if(F[a+28>>2]-F[a+24>>2]>>2>(B|0)){break l}if((c|0)!=(g|0)){l=h+72|0;e=h+60|0;w=h+312|0;while(1){c=c-4|0;i=F[c>>2];F[j+68>>2]=c;_:{if(wa(w)){q=F[h+8>>2];k=F[q>>2];if(((F[q+4>>2]-k>>2>>>0)/3|0)<=(m|0)){f=-1;break l}a=-1;f=-1;b=-1;x=F[q+24>>2];g=-1;$:{if((i|0)==-1){break $}n=i+1|0;n=(n>>>0)%3|0?n:i-2|0;g=-1;if((n|0)==-1){break $}g=F[k+(n<<2)>>2]}n=g;o=F[x+(n<<2)>>2];aa:{if((o|0)==-1){d=1;g=-1;break aa}d=1;p=o+1|0;o=(p>>>0)%3|0?p:o-2|0;g=-1;if((o|0)==-1){break aa}d=0;a=o;g=a+1|0;g=(g>>>0)%3|0?g:a-2|0;if((g|0)!=-1){g=F[k+(g<<2)>>2]}else{g=-1}}o=F[(g<<2)+x>>2];if((o|0)!=-1){b=o+1|0;b=(b>>>0)%3|0?b:o-2|0}if((a|0)==(i|0)|(b|0)==(i|0)|((i|0)!=-1&F[F[q+12>>2]+(i<<2)>>2]!=-1|(a|0)==(b|0))){break l}if(!d&F[F[q+12>>2]+(a<<2)>>2]!=-1){break l}d=-1;o=F[q+12>>2];q=-1;ba:{if((b|0)==-1){break ba}if(F[o+(b<<2)>>2]!=-1){break l}f=b+1|0;f=(f>>>0)%3|0?f:b-2|0;q=-1;if((f|0)==-1){break ba}q=F[k+(f<<2)>>2]}f=L(m,3);F[j>>2]=f;F[o+(f<<2)>>2]=i;F[o+(i<<2)>>2]=f;f=F[j>>2]+1|0;F[o+(f<<2)>>2]=a;F[o+(a<<2)>>2]=f;a=F[j>>2]+2|0;F[o+(a<<2)>>2]=b;F[o+(b<<2)>>2]=a;a=F[j>>2];F[k+(a<<2)>>2]=g;b=a+1|0;f=k+(b<<2)|0;F[f>>2]=q;o=a+2|0;i=k+(o<<2)|0;F[i>>2]=n;a=F[h+120>>2];g=b?g:-1;n=a+(g>>>3&536870908)|0;k=F[n>>2];M=n,N=oi(g)&k,F[M>>2]=N;d=(b|0)!=-1?F[f>>2]:d;b=a+(d>>>3&536870908)|0;g=F[b>>2];M=b,N=oi(d)&g,F[M>>2]=N;b=-1;b=(o|0)!=-1?F[i>>2]:b;a=a+(b>>>3&536870908)|0;g=F[a>>2];M=a,N=oi(b)&g,F[M>>2]=N;D[j+88|0]=1;wd(e,j+88|0);Ma(l,j);m=m+1|0;g=F[j+64>>2];break _}b=F[h+64>>2];a=F[h+68>>2];if((b|0)==a<<5){if((b+1|0)<0){break h}if(b>>>0<=1073741822){a=a<<6;b=(b&-32)+32|0;a=a>>>0>b>>>0?a:b}else{a=2147483647}$a(e,a);b=F[h+64>>2]}F[h+64>>2]=b+1;a=F[h+60>>2]+(b>>>3&536870908)|0;d=F[a>>2];M=a,N=oi(b)&d,F[M>>2]=N;b=F[h+76>>2];if((b|0)!=F[h+80>>2]){F[b>>2]=i;F[h+76>>2]=b+4;break _}f=F[l>>2];a=b-f|0;o=a>>2;d=o+1|0;if(d>>>0>=1073741824){break g}n=a>>>1|0;n=a>>>0>=2147483644?1073741823:d>>>0>>0?n:d;if(n){if(n>>>0>=1073741824){break j}a=ka(n<<2)}else{a=0}d=a+(o<<2)|0;F[d>>2]=i;o=d+4|0;if((b|0)!=(f|0)){while(1){d=d-4|0;b=b-4|0;F[d>>2]=F[b>>2];if((b|0)!=(f|0)){continue}break}}F[h+80>>2]=a+(n<<2);F[h+76>>2]=o;F[h+72>>2]=d;if(!f){break _}ja(f)}if((c|0)!=(g|0)){continue}break}a=F[h+8>>2]}f=-1;if(((F[a+4>>2]-F[a>>2]>>2>>>0)/3|0)!=(m|0)){break l}f=F[a+28>>2]-F[a+24>>2]>>2;c=F[j+24>>2];n=F[j+28>>2];if((c|0)==(n|0)){break k}while(1){g=F[c>>2];e=F[a+24>>2];b=f-1|0;d=e+(b<<2)|0;if(F[d>>2]==-1){while(1){b=f-2|0;f=f-1|0;d=e+(b<<2)|0;if(F[d>>2]==-1){continue}break}}if(b>>>0>=g>>>0){F[j>>2]=a;d=F[d>>2];D[j+12|0]=1;F[j+8>>2]=d;F[j+4>>2]=d;if((d|0)!=-1){while(1){a=F[F[h+8>>2]>>2]+(d<<2)|0;if(F[a>>2]!=(b|0)){f=-1;break l}F[a>>2]=g;nc(j);d=F[j+8>>2];if((d|0)!=-1){continue}break}a=F[h+8>>2]}m=F[a+24>>2];e=m+(b<<2)|0;if((g|0)!=-1){F[m+(g<<2)>>2]=F[e>>2]}F[e>>2]=-1;e=1<>2];g=m+(g>>>3&536870908)|0;d=1<>>3&536870908)|0;if(d&F[m>>2]){b=e|F[g>>2]}else{b=F[g>>2]&(e^-1)}F[g>>2]=b;F[m>>2]=F[m>>2]&(d^-1);f=f-1|0}c=c+4|0;if((n|0)!=(c|0)){continue}break}}c=F[j+24>>2]}if(c){ja(c)}a=F[j+48>>2];if(a){while(1){c=F[a>>2];ja(a);a=c;if(a){continue}break}}a=F[j+40>>2];F[j+40>>2]=0;if(a){ja(a)}a=F[j+64>>2];if(a){F[j+68>>2]=a;ja(a)}Z=j+96|0;a=f;break f}oa();v()}na();v()}na();v()}na();v()}b=a;if((a|0)==-1){break e}a=C;c=F[a+16>>2];g=c+F[a>>2]|0;c=F[a+8>>2]-c|0;a=F[F[h+4>>2]+32>>2];E[a+38>>1]=H[a+38>>1];F[a>>2]=g;F[a+16>>2]=0;F[a+20>>2]=0;F[a+8>>2]=c;F[a+12>>2]=0;ca:{if(F[h+216>>2]==F[h+220>>2]){break ca}a=F[h+8>>2];if(F[a+4>>2]==F[a>>2]){break ca}c=0;while(1){if(Ad(h,c)){c=c+3|0;a=F[h+8>>2];if(c>>>0>2]-F[a>>2]>>2>>>0){continue}break ca}break}break e}if(G[h+308|0]){D[h+308|0]=0;g=F[h+292>>2];a=0;e=F[h+304>>2]+7|0;a=e>>>0<7?1:a;c=a>>>3|0;m=a<<29|e>>>3;a=m+F[h+288>>2]|0;e=c+g|0;F[h+288>>2]=a;F[h+292>>2]=a>>>0>>0?e+1|0:e}c=F[h+216>>2];if((c|0)!=F[h+220>>2]){a=0;while(1){e=L(a,144);Zc((e+c|0)+4|0,F[h+8>>2]);g=F[y>>2];m=g+e|0;c=F[m+132>>2];m=F[m+136>>2];if((c|0)!=(m|0)){while(1){Xc((e+F[y>>2]|0)+4|0,F[c>>2]);c=c+4|0;if((m|0)!=(c|0)){continue}break}g=F[y>>2]}if(!Yc((g+e|0)+4|0)){break e}a=a+1|0;c=F[h+216>>2];if(a>>>0<(F[h+220>>2]-c|0)/144>>>0){continue}break}}a=F[h+8>>2];Hb(h+184|0,F[a+28>>2]-F[a+24>>2]>>2);g=F[h+216>>2];if((g|0)!=F[h+220>>2]){c=0;while(1){a=L(c,144)+g|0;g=F[a+60>>2]-F[a+56>>2]>>2;e=a+104|0;a=F[h+8>>2];a=F[a+28>>2]-F[a+24>>2]>>2;Hb(e,(a|0)<(g|0)?g:a);c=c+1|0;g=F[h+216>>2];if(c>>>0<(F[h+220>>2]-g|0)/144>>>0){continue}break}}K=zd(h,b)}}Z=t- -64|0;return K|0}function Cf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0;B=c;c=0;m=Z-96|0;Z=m;l=m+16|0;ma(l,0,76);F[m+92>>2]=-1;F[m+8>>2]=0;F[m>>2]=0;F[m+4>>2]=0;r=Z-16|0;Z=r;F[l+68>>2]=0;F[l+72>>2]=0;F[l>>2]=b;s=Z-16|0;Z=s;u=b;a=F[b+20>>2];a:{if((F[b+24>>2]-a|0)<=0){break a}a=F[a>>2];if((a|0)==-1){break a}c=F[F[u+8>>2]+(a<<2)>>2]}b:{c:{d:{if(!c){a=0;break d}a=F[u+100>>2];e=F[u+96>>2];F[s+8>>2]=0;F[s>>2]=0;F[s+4>>2]=0;f=a-e|0;b=(f|0)/12|0;e:{if((a|0)==(e|0)){break e}if(b>>>0>=357913942){break c}d=ka(f);F[s>>2]=d;F[s+8>>2]=d+L(b,12);a=0;n=d;f=f-12|0;d=(f-((f>>>0)%12|0)|0)+12|0;f=ma(n,0,d);F[s+4>>2]=d+f;if(G[c+84|0]){c=b>>>0<=1?1:b;h=c&1;if(b>>>0>=2){g=c&-2;c=0;while(1){d=L(a,12);b=d+e|0;i=F[b+4>>2];j=F[b>>2];d=d+f|0;F[d+8>>2]=F[b+8>>2];F[d>>2]=j;F[d+4>>2]=i;d=L(a|1,12);b=d+e|0;i=F[b+4>>2];j=F[b>>2];d=d+f|0;F[d+8>>2]=F[b+8>>2];F[d>>2]=j;F[d+4>>2]=i;a=a+2|0;c=c+2|0;if((g|0)!=(c|0)){continue}break}}if(!h){break e}b=L(a,12);a=b+e|0;c=F[a+4>>2];e=F[a>>2];b=b+f|0;F[b+8>>2]=F[a+8>>2];F[b>>2]=e;F[b+4>>2]=c;break e}h=b>>>0<=1?1:b;a=F[c+68>>2];c=0;while(1){d=L(c,12);b=d+e|0;g=F[a+(F[b>>2]<<2)>>2];i=F[a+(F[b+4>>2]<<2)>>2];d=d+f|0;F[d+8>>2]=F[a+(F[b+8>>2]<<2)>>2];F[d+4>>2]=i;F[d>>2]=g;c=c+1|0;if((h|0)!=(c|0)){continue}break}}d=0;H=Z-16|0;Z=H;h=ka(88);Zb(h);C=Z-16|0;Z=C;F[h+80>>2]=0;F[h+84>>2]=0;a=F[h+76>>2];F[h+76>>2]=0;if(a){ja(a)}F[h+68>>2]=0;F[h+72>>2]=0;b=h- -64|0;a=F[b>>2];F[b>>2]=0;if(a){ja(a)}g=F[s+4>>2];b=F[s>>2];c=(g-b|0)/12|0;a=L(c,3);f=F[h>>2];e=F[h+4>>2]-f>>2;f:{if(a>>>0>e>>>0){nd(h,a-e|0);g=F[s+4>>2];b=F[s>>2];c=(g-b|0)/12|0;break f}if(a>>>0>=e>>>0){break f}F[h+4>>2]=f+(a<<2)}g:{if((b|0)==(g|0)){break g}e=c>>>0<=1?1:c;g=e&1;a=F[h>>2];if(c>>>0>=2){i=e&-2;c=0;while(1){e=L(d,12);j=e+a|0;f=b+e|0;F[j>>2]=F[f>>2];F[a+(e|4)>>2]=F[f+4>>2];F[j+8>>2]=F[f+8>>2];f=L(d|1,12);e=f+a|0;f=b+f|0;F[e>>2]=F[f>>2];F[e+4>>2]=F[f+4>>2];F[e+8>>2]=F[f+8>>2];d=d+2|0;c=c+2|0;if((i|0)!=(c|0)){continue}break}}if(!g){break g}c=L(d,12);a=c+a|0;b=b+c|0;F[a>>2]=F[b>>2];F[a+4>>2]=F[b+4>>2];F[a+8>>2]=F[b+8>>2]}F[C+12>>2]=-1;a=0;e=0;g=0;f=Z-32|0;Z=f;h:{i:{w=C+12|0;j:{if(!w){break j}c=F[h+4>>2];j=F[h>>2];d=c-j|0;i=d>>2;n=F[h+12>>2];b=F[h+16>>2]-n>>2;k:{if(i>>>0>b>>>0){ab(h+12|0,i-b|0,10228);c=F[h+4>>2];j=F[h>>2];d=c-j|0;i=d>>2;break k}if(b>>>0<=i>>>0){break k}F[h+16>>2]=n+(i<<2)}F[f+24>>2]=0;F[f+16>>2]=0;F[f+20>>2]=0;b=(c|0)==(j|0);if(!b){if((d|0)<0){break i}e=ka(d);F[f+20>>2]=e;F[f+16>>2]=e;F[f+24>>2]=(i<<2)+e}l:{m:{n:{o:{p:{if(d){while(1){i=F[(a<<2)+j>>2];b=F[f+20>>2]-e>>2;q:{if(i>>>0>>0){break q}F[f>>2]=0;d=i+1|0;if(d>>>0>b>>>0){Fa(f+16|0,d-b|0,f);j=F[h>>2];c=F[h+4>>2];e=F[f+16>>2];break q}if(b>>>0<=d>>>0){break q}F[f+20>>2]=(d<<2)+e}b=(i<<2)+e|0;F[b>>2]=F[b>>2]+1;a=a+1|0;d=c-j|0;i=d>>2;if(a>>>0>>0){continue}break}break p}d=0;if(!b){break o}break n}if((c|0)==(j|0)){d=0;break n}if(d>>>0>=2147483645){break m}}d=ka(d<<1);ma(d,255,i<<3)}F[f+8>>2]=0;F[f>>2]=0;F[f+4>>2]=0;b=F[f+20>>2];a=b-e|0;t=a>>2;r:{s:{if((b|0)==(e|0)){break s}if((a|0)<0){break r}q=ka(a);F[f>>2]=q;F[f+8>>2]=(t<<2)+q;b=ma(q,0,a);F[f+4>>2]=b+a;c=t>>>0<=1?1:t;n=c&3;a=0;if(c-1>>>0>=3){o=c&-4;while(1){c=g<<2;F[c+b>>2]=a;x=c|4;a=F[c+e>>2]+a|0;F[x+b>>2]=a;y=c|8;a=a+F[e+x>>2]|0;F[y+b>>2]=a;c=c|12;a=a+F[e+y>>2]|0;F[c+b>>2]=a;a=a+F[c+e>>2]|0;g=g+4|0;p=p+4|0;if((o|0)!=(p|0)){continue}break}}if(!n){break s}while(1){c=g<<2;F[c+b>>2]=a;g=g+1|0;a=F[c+e>>2]+a|0;k=k+1|0;if((n|0)!=(k|0)){continue}break}}if(!i){break l}x=F[h+40>>2];y=F[h+12>>2];n=0;while(1){I=n<<2;a=I+j|0;k=-1;c=n+1|0;b=(c>>>0)%3|0?c:n-2|0;if((b|0)!=-1){k=F[(b<<2)+j>>2]}b=F[a>>2];t:{u:{if(!((n>>>0)%3|0)){p=-1;a=n+2|0;if((a|0)!=-1){p=F[(a<<2)+j>>2]}if(!((b|0)==(k|0)|(b|0)==(p|0))&(k|0)!=(p|0)){break u}x=x+1|0;F[h+40>>2]=x;c=n+3|0;break t}p=F[a-4>>2]}a=p<<2;A=F[a+e>>2];v:{w:{if((A|0)<=0){break w}a=F[a+q>>2];g=0;while(1){o=(a<<3)+d|0;z=F[o>>2];if((z|0)==-1){break w}x:{if((k|0)!=(z|0)){break x}o=F[o+4>>2];if((o|0)!=-1){z=F[(o<<2)+j>>2]}else{z=-1}if((z|0)==(b|0)){break x}while(1){y:{b=a;g=g+1|0;if((A|0)<=(g|0)){break y}a=b+1|0;J=(a<<3)+d|0;z=F[J>>2];K=(b<<3)+d|0;F[K+4>>2]=F[J+4>>2];F[K>>2]=z;if((z|0)!=-1){continue}}break}F[(b<<3)+d>>2]=-1;if((o|0)==-1){break w}F[y+I>>2]=o;F[y+(o<<2)>>2]=n;break v}a=a+1|0;g=g+1|0;if((A|0)!=(g|0)){continue}break}}a=k<<2;k=F[a+e>>2];if((k|0)<=0){break v}a=F[a+q>>2];g=0;while(1){b=(a<<3)+d|0;if(F[b>>2]==-1){F[b>>2]=p;F[b+4>>2]=n;break v}a=a+1|0;g=g+1|0;if((k|0)!=(g|0)){continue}break}}}n=c;if(n>>>0>>0){continue}break}break l}break i}na();v()}F[w>>2]=t;if(q){ja(q)}if(d){ja(d)}a=F[f+16>>2];if(!a){break j}F[f+20>>2]=a;ja(a)}Z=f+32|0;x=(w|0)!=0;if(x){k=Z-32|0;Z=k;a=F[h>>2];g=F[h+4>>2];F[k+24>>2]=0;F[k+16>>2]=0;F[k+20>>2]=0;if((a|0)==(g|0)){c=g}else{a=g-a|0;if((a|0)<0){break i}a=a>>2;b=(a-1>>>5|0)+1|0;c=ka(b<<2);F[k+24>>2]=b;F[k+20>>2]=0;F[k+16>>2]=c;Yb(k+16|0,a);g=F[h>>2];c=F[h+4>>2]}F[k+8>>2]=0;F[k>>2]=0;while(1){z:{o=0;i=0;if((c|0)==(g|0)){break z}while(1){b=F[k+16>>2];A:{if(F[b+(i>>>3&536870908)>>2]>>>i&1){break A}c=F[k>>2];F[k+4>>2]=c;e=F[h+12>>2];a=i;while(1){B:{f=a+1|0;d=a;a=(f>>>0)%3|0?f:a-2|0;if((a|0)==-1){break B}a=F[e+(a<<2)>>2];if((a|0)==-1){break B}f=a+1|0;a=(f>>>0)%3|0?f:a-2|0;if((i|0)==(a|0)|(a|0)==-1){break B}if(!(F[b+(a>>>3&536870908)>>2]>>>a&1)){continue}}break}j=d;C:{D:{E:{while(1){a=F[k+16>>2]+(j>>>3&536870908)|0;F[a>>2]=F[a>>2]|1<>>0)%3|0?a:j-2|0;g=F[h>>2];y=(j>>>0)%3|0;b=(y?-1:2)+j|0;n=F[k>>2];A=(n|0)==(c|0);F:{if(A){break F}w=F[(f<<2)+g>>2];q=F[h+12>>2];a=n;if((b|0)!=-1){e=q+(b<<2)|0;while(1){G:{if((w|0)!=F[a>>2]){break G}p=F[a+4>>2];t=F[e>>2];if((p|0)==(t|0)){break G}e=b;c=-1;a=-1;if((p|0)==-1){break C}break D}a=a+8|0;if((c|0)!=(a|0)){continue}break}break F}while(1){if((w|0)==F[a>>2]){t=-1;e=-1;p=F[a+4>>2];if((p|0)!=-1){break D}}a=a+8|0;if((c|0)!=(a|0)){continue}break}}b=F[(b<<2)+g>>2];H:{if(F[k+8>>2]!=(c|0)){F[c>>2]=b;F[c+4>>2]=f;c=c+8|0;F[k+4>>2]=c;break H}a=c-n|0;p=a>>3;e=p+1|0;if(e>>>0>=536870912){break i}g=a>>>2|0;g=a>>>0>=2147483640?536870911:e>>>0>>0?g:e;if(g){if(g>>>0>=536870912){break E}e=ka(g<<3)}else{e=0}a=e+(p<<3)|0;F[a>>2]=b;F[a+4>>2]=f;b=a+8|0;if(!A){while(1){c=c-8|0;f=F[c+4>>2];a=a-8|0;F[a>>2]=F[c>>2];F[a+4>>2]=f;if((c|0)!=(n|0)){continue}break}c=F[k>>2]}F[k+8>>2]=e+(g<<3);F[k+4>>2]=b;F[k>>2]=a;if(c){ja(c)}c=b}I:{J:{if(y){a=j-1|0;break J}a=j+2|0;if((a|0)==-1){break I}}a=F[F[h+12>>2]+(a<<2)>>2];if((a|0)==-1){break I}j=a+((a>>>0)%3|0?-1:2)|0;if((d|0)==(j|0)){break I}if((j|0)!=-1){continue}}break}g=F[h>>2];break A}oa();v()}c=F[q+(p<<2)>>2];b=e;a=p}if((t|0)!=-1){F[q+(t<<2)>>2]=-1}if((c|0)!=-1){F[q+(c<<2)>>2]=-1}F[q+(b<<2)>>2]=-1;F[q+(a<<2)>>2]=-1;o=1}i=i+1|0;c=F[h+4>>2];if(i>>>0>2>>>0){continue}break}if(o){continue}}break}a=F[k>>2];if(a){ja(a)}a=F[k+16>>2];if(a){ja(a)}Z=k+32|0;n=0;g=Z-32|0;Z=g;e=F[C+12>>2];F[h+36>>2]=e;p=h+24|0;b=F[h+24>>2];a=F[h+28>>2]-b>>2;K:{L:{if(a>>>0>>0){ab(p,e-a|0,10228);F[g+24>>2]=0;F[g+16>>2]=0;F[g+20>>2]=0;break L}if(a>>>0>e>>>0){F[h+28>>2]=b+(e<<2)}F[g+24>>2]=0;F[g+16>>2]=0;F[g+20>>2]=0;if(!e){break K}}if((e|0)<0){break i}a=(e-1>>>5|0)+1|0;b=ka(a<<2);F[g+24>>2]=a;F[g+20>>2]=0;F[g+16>>2]=b;Yb(g+16|0,e)}a=F[h>>2];b=F[h+4>>2];F[g+8>>2]=0;F[g>>2]=0;F[g+4>>2]=0;M:{if((a|0)==(b|0)){a=b}else{a=b-a|0;if((a|0)<0){break i}a=a>>2;b=(a-1>>>5|0)+1|0;c=ka(b<<2);F[g+8>>2]=b;F[g+4>>2]=0;F[g>>2]=c;Yb(g,a);b=F[h>>2];a=F[h+4>>2]}if(a-b>>>0<12){break M}N:{while(1){q=L(n,3);d=(q<<2)+b|0;f=F[d>>2];c=-1;i=q+1|0;if((i|0)!=-1){c=F[(i<<2)+b>>2]}O:{if((c|0)==(f|0)){break O}i=f;f=F[d+8>>2];if((i|0)==(f|0)|(c|0)==(f|0)){break O}k=0;i=F[g>>2];while(1){f=k+q|0;if(!(F[(f>>>3&536870908)+i>>2]>>>f&1)){a=F[(f<<2)+b>>2];c=1<>2];b=a>>>5|0;i=F[d+(b<<2)>>2];t=c&i;if(t){c=F[h+28>>2];P:{if((c|0)!=F[h+32>>2]){F[c>>2]=-1;F[h+28>>2]=c+4;break P}i=F[p>>2];b=c-i|0;o=b>>2;d=o+1|0;if(d>>>0>=1073741824){break i}j=b>>>1|0;j=b>>>0>=2147483644?1073741823:d>>>0>>0?j:d;if(j){if(j>>>0>=1073741824){break N}b=ka(j<<2)}else{b=0}d=b+(o<<2)|0;F[d>>2]=-1;o=d+4|0;if((c|0)!=(i|0)){while(1){d=d-4|0;c=c-4|0;F[d>>2]=F[c>>2];if((c|0)!=(i|0)){continue}break}}F[h+32>>2]=b+(j<<2);F[h+28>>2]=o;F[h+24>>2]=d;if(!i){break P}ja(i)}c=F[h+52>>2];Q:{if((c|0)!=F[h+56>>2]){F[c>>2]=a;F[h+52>>2]=c+4;break Q}i=F[h+48>>2];b=c-i|0;o=b>>2;d=o+1|0;if(d>>>0>=1073741824){break i}j=b>>>1|0;j=b>>>0>=2147483644?1073741823:d>>>0>>0?j:d;if(j){if(j>>>0>=1073741824){break N}b=ka(j<<2)}else{b=0}d=b+(o<<2)|0;F[d>>2]=a;a=d+4|0;if((c|0)!=(i|0)){while(1){d=d-4|0;c=c-4|0;F[d>>2]=F[c>>2];if((c|0)!=(i|0)){continue}break}}F[h+56>>2]=b+(j<<2);F[h+52>>2]=a;F[h+48>>2]=d;if(!i){break Q}ja(i)}c=F[g+20>>2];a=F[g+24>>2];if((c|0)==a<<5){if((c+1|0)<0){break i}b=g+16|0;if(c>>>0<=1073741822){a=a<<6;c=(c&-32)+32|0;a=a>>>0>c>>>0?a:c}else{a=2147483647}$a(b,a);c=F[g+20>>2]}F[g+20>>2]=c+1;d=F[g+16>>2];a=d+(c>>>3&536870908)|0;b=F[a>>2];N=a,O=oi(c)&b,F[N>>2]=O;c=1<>>5|0;i=F[(b<<2)+d>>2];a=e;e=a+1|0}F[(b<<2)+d>>2]=c|i;o=F[h+24>>2]+(a<<2)|0;j=F[h+12>>2];b=F[h>>2];i=F[g>>2];c=f;R:{S:{T:{while(1){if((c|0)==-1){break T}d=(c>>>3&536870908)+i|0;F[d>>2]=F[d>>2]|1<>2]=c;if(t){F[(c<<2)+b>>2]=a}w=c+1|0;c=(w>>>0)%3|0?w:c-2|0;d=-1;U:{if((c|0)==-1){break U}c=F[j+(c<<2)>>2];d=-1;if((c|0)==-1){break U}d=c+1|0;d=(d>>>0)%3|0?d:c-2|0}c=d;if((f|0)!=(c|0)){continue}break}if((f|0)!=-1){break R}c=1;break S}if((f>>>0)%3|0){c=f-1|0;break S}c=f+2|0;if((c|0)==-1){break R}}c=F[j+(c<<2)>>2];if((c|0)==-1){break R}V:{if((c>>>0)%3|0){c=c-1|0;break V}c=c+2|0;if((c|0)==-1){break R}}f=F[h+12>>2];b=F[h>>2];while(1){d=(c>>>3&536870908)+i|0;F[d>>2]=F[d>>2]|1<>2]=a}W:{if((c>>>0)%3|0){c=c-1|0;break W}c=c+2|0;if((c|0)==-1){break R}}c=F[f+(c<<2)>>2];if((c|0)==-1){break R}c=c+((c>>>0)%3|0?-1:2)|0;if((c|0)!=-1){continue}break}}}k=k+1|0;if((k|0)!=3){continue}break}b=F[h>>2];a=F[h+4>>2]}n=n+1|0;if(n>>>0<(a-b>>2>>>0)/3>>>0){continue}break}break M}oa();v()}c=0;F[h+44>>2]=0;a=F[g+16>>2];b=F[g+20>>2];if(b){e=b&31;b=(b>>>3&536870908)+a|0;d=a;i=0;while(1){if(!(F[d>>2]>>>c&1)){i=i+1|0;F[h+44>>2]=i}f=(c|0)==31;c=f?0:c+1|0;d=(f<<2)+d|0;if((b|0)!=(d|0)|(c|0)!=(e|0)){continue}break}}b=F[g>>2];if(b){ja(b);a=F[g+16>>2]}if(a){ja(a)}Z=g+32|0}Z=C+16|0;if(!x){F[H+8>>2]=0;Za(h);h=0}Z=H+16|0;a=h;break h}na();v()}b=F[s>>2];if(!b){break d}F[s+4>>2]=b;ja(b)}Z=s+16|0;break b}na();v()}c=F[l+4>>2];b=a;F[l+4>>2]=a;if(c){Za(c);b=F[l+4>>2]}X:{if(!b){break X}a=F[u+100>>2];c=F[u+96>>2];D[r+12|0]=0;Ea(l+56|0,(a-c|0)/12|0,r+12|0);a=F[u+100>>2];c=F[u+96>>2];if((a|0)==(c|0)){break X}while(1){if(!(F[F[l+56>>2]+(E>>>3&536870908)>>2]>>>E&1)){a=L(E,3);Vb(l,0,a);c=F[l+8>>2];e=F[l+12>>2];Vb(l,1,a+1|0);f=F[l+20>>2];d=F[l+24>>2];Vb(l,2,a+2|0);n=(c|0)==(e|0)?-1:0;a=d-f>>2;c=e-c>>2;e=a>>>0>c>>>0;c=F[l+36>>2]-F[l+32>>2]>>2>>>0>(e?a:c)>>>0?2:e?1:n;Y:{if(F[l+68>>2]<=0){break Y}F[r+12>>2]=F[l+76>>2];F[r+8>>2]=m;Qa(r+8|0,r+12|0);a=F[((c<<2)+l|0)+44>>2];if((a|0)<0){a=-1}else{e=(a>>>0)/3|0;a=F[(F[F[l>>2]+96>>2]+L(e,12)|0)+(a-L(e,3)<<2)>>2]}F[r+12>>2]=a;F[r+8>>2]=m;Qa(r+8|0,r+12|0);e=F[l+72>>2];F[l+72>>2]=e+2;if(!(e&1)){break Y}F[r+12>>2]=a;F[r+8>>2]=m;Qa(r+8|0,r+12|0);F[l+72>>2]=F[l+72>>2]+1}d=0;e=Z-16|0;Z=e;F[l+68>>2]=F[l+68>>2]+1;a=L(c,12)+l|0;a=F[a+12>>2]-F[a+8>>2]|0;if((a|0)>0){a=a>>>2|0;h=a>>>0<=1?1:a;c=F[((c<<2)+l|0)+44>>2];while(1){a=c;f=(a>>>0)/3|0;c=(a|0)==-1;g=c?-1:f;i=F[l+56>>2]+(g>>>3&536870908)|0;F[i>>2]=F[i>>2]|1<>2]=F[l+72>>2]+1;Z:{_:{$:{aa:{ba:{if(!d){ca:{if((a|0)>=0){F[e+12>>2]=F[(F[F[l>>2]+96>>2]+L(f,12)|0)+((a>>>0)%3<<2)>>2];F[e+8>>2]=m;Qa(e+8|0,e+12|0);break ca}F[e+12>>2]=-1;F[e+8>>2]=m;Qa(e+8|0,e+12|0);if(c){break ba}}c=-1;f=a+1|0;f=(f>>>0)%3|0?f:a-2|0;if((f|0)>=0){g=(f>>>0)/3|0;f=F[(F[F[l>>2]+96>>2]+L(g,12)|0)+(f-L(g,3)<<2)>>2]}else{f=-1}F[e+12>>2]=f;F[e+8>>2]=m;Qa(e+8|0,e+12|0);f=((a>>>0)%3|0?-1:2)+a|0;if((f|0)<0){break aa}c=(f>>>0)/3|0;c=F[(F[F[l>>2]+96>>2]+L(c,12)|0)+(f-L(c,3)<<2)>>2];break aa}c=(a|0)<0?-1:F[(F[F[l>>2]+96>>2]+L(f,12)|0)+((a>>>0)%3<<2)>>2];F[l+76>>2]=c;F[e+12>>2]=c;F[e+8>>2]=m;Qa(e+8|0,e+12|0);if(d&1){c=-1;if((a|0)==-1){break Z}if((L(f,3)|0)!=(a|0)){a=a-1|0;break _}a=a+2|0;break $}c=-1;if((a|0)==-1){break Z}c=a+1|0;a=(c>>>0)%3|0?c:a-2|0;break $}c=-1;F[e+12>>2]=-1;F[e+8>>2]=m;Qa(e+8|0,e+12|0)}F[l+76>>2]=c;F[e+12>>2]=c;F[e+8>>2]=m;Qa(e+8|0,e+12|0)}c=-1;if((a|0)==-1){break Z}}c=F[F[F[l+4>>2]+12>>2]+(a<<2)>>2]}d=d+1|0;if((h|0)!=(d|0)){continue}break}}Z=e+16|0;c=F[u+96>>2];a=F[u+100>>2]}E=E+1|0;if(E>>>0<(a-c|0)/12>>>0){continue}break}}Z=r+16|0;da:{if(b){a=F[B>>2];if(a){F[B+4>>2]=a;ja(a)}F[B>>2]=F[m>>2];F[B+4>>2]=F[m+4>>2];F[B+8>>2]=F[m+8>>2];M=F[m+84>>2];break da}a=F[m>>2];if(!a){break da}F[m+4>>2]=a;ja(a)}a=F[m+72>>2];if(a){ja(a)}a=F[m+48>>2];if(a){F[m+52>>2]=a;ja(a)}a=F[m+36>>2];if(a){F[m+40>>2]=a;ja(a)}a=F[m+24>>2];if(a){F[m+28>>2]=a;ja(a)}a=F[m+20>>2];F[m+20>>2]=0;if(a){Za(a)}Z=m+96|0;return M|0}function sf(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0;i=b;a=0;b=0;a:{b:{switch(d-1|0){case 0:j=F[i+80>>2];h=G[c+24|0];c:{if((L(j,h)|0)!=(e|0)){break c}d=F[c+28>>2]!=1;b=G[c+84|0];if(!(d|!b)){la(f,F[F[c>>2]>>2]+F[c+48>>2]|0,e);b=1;break c}if(h){a=ka(h);ma(a,0,h)}d:{if(!j){b=1;break d}if(!d){if(h){d=0;e=0;while(1){i=d+f|0;k=F[F[c>>2]>>2];m=F[c+48>>2];g=F[c+40>>2];b=ki(g,F[c+44>>2],G[c+84|0]?e:F[F[c+68>>2]+(e<<2)>>2],0);n=b;b=b+m|0;la(i,la(a,b+k|0,g),h);d=d+h|0;b=1;e=e+1|0;if((j|0)!=(e|0)){continue}break}break d}if(b){b=1;h=F[c>>2];e=F[c+48>>2];f=F[c+40>>2];i=F[c+44>>2];if((j|0)!=1){g=j&-2;c=0;d=0;while(1){k=F[h>>2];m=ki(f,i,c,0)+e|0;k=la(a,k+m|0,f);m=F[h>>2];n=ki(f,i,c|1,0)+e|0;la(k,m+n|0,f);c=c+2|0;d=d+2|0;if((g|0)!=(d|0)){continue}break}g=c}if(!(j&1)){break d}c=F[h>>2];d=ki(g,0,f,i)+e|0;la(a,c+d|0,f);break d}b=1;h=F[c>>2];e=F[c+48>>2];g=F[c+68>>2];f=F[c+40>>2];i=F[c+44>>2];c=0;if((j|0)!=1){k=j&-2;d=0;while(1){m=F[h>>2];n=c<<2;l=ki(f,i,F[n+g>>2],0)+e|0;m=la(a,m+l|0,f);l=F[h>>2];n=ki(f,i,F[g+(n|4)>>2],0)+e|0;la(m,l+n|0,f);c=c+2|0;d=d+2|0;if((k|0)!=(d|0)){continue}break}}if(!(j&1)){break d}d=F[h>>2];c=ki(f,i,F[g+(c<<2)>>2],0)+e|0;la(a,c+d|0,f);break d}b=0;if(!h){d=0;while(1){if(!Cb(c,G[c+84|0]?d:F[F[c+68>>2]+(d<<2)>>2],D[c+24|0],a)){break d}d=d+1|0;b=j>>>0<=d>>>0;if((d|0)!=(j|0)){continue}break}break d}d=0;e=0;while(1){if(!Cb(c,G[c+84|0]?e:F[F[c+68>>2]+(e<<2)>>2],D[c+24|0],a)){break d}la(d+f|0,a,h);d=d+h|0;e=e+1|0;b=j>>>0<=e>>>0;if((e|0)!=(j|0)){continue}break}}if(!a){break c}ja(a)}break a;case 2:n=G[c+24|0];l=n<<1;j=F[i+80>>2];e:{if((L(l,j)|0)!=(e|0)){break e}i=F[c+28>>2]!=3;d=G[c+84|0];if(!(i|!d)){la(f,F[F[c>>2]>>2]+F[c+48>>2]|0,e);a=1;break e}f:{if(!n){e=0;break f}e=ka(l);ma(e,0,l)}g:{if(!j){a=1;break g}if(!i){o=F[c+68>>2];k=F[c>>2];b=F[c+48>>2];i=F[c+40>>2];m=F[c+44>>2];if(n){if(!d){c=0;d=0;while(1){a=1;g=F[k>>2];p=ki(i,m,F[o+(d<<2)>>2],0)+b|0;la((c<<1)+f|0,la(e,g+p|0,i),l);c=c+n|0;d=d+1|0;if((j|0)!=(d|0)){continue}break}break g}c=0;while(1){a=1;o=F[k>>2];p=ki(g,h,i,m)+b|0;la((c<<1)+f|0,la(e,o+p|0,i),l);c=c+n|0;d=h;g=g+1|0;d=g?d:d+1|0;h=d;if((j|0)!=(g|0)|d){continue}break}break g}if(!d){a=1;c=0;if((j|0)!=1){f=j&-2;d=0;while(1){h=F[k>>2];g=c<<2;n=ki(i,m,F[g+o>>2],0)+b|0;h=la(e,h+n|0,i);n=F[k>>2];g=ki(i,m,F[o+(g|4)>>2],0)+b|0;la(h,g+n|0,i);c=c+2|0;d=d+2|0;if((f|0)!=(d|0)){continue}break}}if(!(j&1)){break g}d=F[k>>2];b=ki(i,m,F[o+(c<<2)>>2],0)+b|0;la(e,b+d|0,i);break g}n=j&1;a=1;if((j|0)!=1){j=j&-2;f=0;c=0;while(1){d=F[k>>2];l=ki(g,h,i,m)+b|0;d=la(e,d+l|0,i);l=F[k>>2];o=ki(i,m,g|1,h)+b|0;la(d,l+o|0,i);g=g+2|0;h=g>>>0<2?h+1|0:h;f=f+2|0;d=f>>>0<2?c+1|0:c;c=d;if((f|0)!=(j|0)|c){continue}break}}if(!n){break g}c=F[k>>2];b=ki(g,h,i,m)+b|0;la(e,b+c|0,i);break g}if(!n){d=0;while(1){if(!Ab(c,G[c+84|0]?d:F[F[c+68>>2]+(d<<2)>>2],D[c+24|0],e)){break g}d=d+1|0;a=j>>>0<=d>>>0;if((d|0)!=(j|0)){continue}break}break g}d=0;while(1){if(!Ab(c,G[c+84|0]?d:F[F[c+68>>2]+(d<<2)>>2],D[c+24|0],e)){break g}la((b<<1)+f|0,e,l);b=b+n|0;d=d+1|0;a=j>>>0<=d>>>0;if((d|0)!=(j|0)){continue}break}}if(!e){break e}ja(e)}b=a;break a;case 4:l=G[c+24|0];o=l<<2;j=F[i+80>>2];h:{if((L(o,j)|0)!=(e|0)){break h}i=F[c+28>>2]!=5;d=G[c+84|0];if(!(i|!d)){la(f,F[F[c>>2]>>2]+F[c+48>>2]|0,e);b=1;break h}i:{if(!l){e=0;break i}e=ka(o);ma(e,0,o)}b=1;j:{if(!j){break j}if(!i){a=F[c+68>>2];m=F[c>>2];i=F[c+48>>2];k=F[c+40>>2];n=F[c+44>>2];if(l){if(!d){c=0;d=0;while(1){g=F[m>>2];p=ki(k,n,F[a+(d<<2)>>2],0)+i|0;la((c<<2)+f|0,la(e,g+p|0,k),o);c=c+l|0;d=d+1|0;if((j|0)!=(d|0)){continue}break}break j}c=0;while(1){d=F[m>>2];p=ki(g,h,k,n)+i|0;la((c<<2)+f|0,la(e,d+p|0,k),o);c=c+l|0;g=g+1|0;a=g?h:h+1|0;h=a;if((j|0)!=(g|0)|h){continue}break}break j}if(!d){c=0;if((j|0)!=1){f=j&-2;d=0;while(1){h=F[m>>2];g=c<<2;l=ki(k,n,F[g+a>>2],0)+i|0;h=la(e,h+l|0,k);l=F[m>>2];g=ki(k,n,F[a+(g|4)>>2],0)+i|0;la(h,g+l|0,k);c=c+2|0;d=d+2|0;if((f|0)!=(d|0)){continue}break}}if(!(j&1)){break j}d=F[m>>2];a=ki(k,n,F[a+(c<<2)>>2],0)+i|0;la(e,a+d|0,k);break j}l=j&1;if((j|0)!=1){j=j&-2;f=0;c=0;while(1){a=F[m>>2];d=ki(g,h,k,n)+i|0;a=la(e,a+d|0,k);d=F[m>>2];o=ki(k,n,g|1,h)+i|0;la(a,d+o|0,k);d=h;g=g+2|0;h=g>>>0<2?d+1|0:d;f=f+2|0;a=f>>>0<2?c+1|0:c;c=a;if((f|0)!=(j|0)|c){continue}break}}if(!l){break j}a=F[m>>2];c=ki(g,h,k,n)+i|0;la(e,a+c|0,k);break j}b=0;if(!l){d=0;while(1){if(!yb(c,G[c+84|0]?d:F[F[c+68>>2]+(d<<2)>>2],D[c+24|0],e)){break j}d=d+1|0;b=j>>>0<=d>>>0;if((d|0)!=(j|0)){continue}break}break j}d=0;while(1){if(!yb(c,G[c+84|0]?d:F[F[c+68>>2]+(d<<2)>>2],D[c+24|0],e)){break j}la((a<<2)+f|0,e,o);a=a+l|0;d=d+1|0;b=j>>>0<=d>>>0;if((d|0)!=(j|0)){continue}break}}if(!e){break h}ja(e)}break a;case 1:j=F[i+80>>2];h=G[c+24|0];k:{if((L(j,h)|0)!=(e|0)){break k}d=F[c+28>>2]!=2;b=G[c+84|0];if(!(d|!b)){la(f,F[F[c>>2]>>2]+F[c+48>>2]|0,e);b=1;break k}if(h){a=ka(h);ma(a,0,h)}l:{if(!j){b=1;break l}if(!d){if(h){d=0;e=0;while(1){i=d+f|0;k=F[F[c>>2]>>2];m=F[c+48>>2];g=F[c+40>>2];b=ki(g,F[c+44>>2],G[c+84|0]?e:F[F[c+68>>2]+(e<<2)>>2],0);n=b;b=b+m|0;la(i,la(a,b+k|0,g),h);d=d+h|0;b=1;e=e+1|0;if((j|0)!=(e|0)){continue}break}break l}if(b){b=1;h=F[c>>2];e=F[c+48>>2];f=F[c+40>>2];i=F[c+44>>2];if((j|0)!=1){g=j&-2;c=0;d=0;while(1){k=F[h>>2];m=ki(f,i,c,0)+e|0;k=la(a,k+m|0,f);m=F[h>>2];n=ki(f,i,c|1,0)+e|0;la(k,m+n|0,f);c=c+2|0;d=d+2|0;if((g|0)!=(d|0)){continue}break}g=c}if(!(j&1)){break l}c=F[h>>2];d=ki(g,0,f,i)+e|0;la(a,c+d|0,f);break l}b=1;h=F[c>>2];e=F[c+48>>2];g=F[c+68>>2];f=F[c+40>>2];i=F[c+44>>2];c=0;if((j|0)!=1){k=j&-2;d=0;while(1){m=F[h>>2];n=c<<2;l=ki(f,i,F[n+g>>2],0)+e|0;m=la(a,m+l|0,f);l=F[h>>2];n=ki(f,i,F[g+(n|4)>>2],0)+e|0;la(m,l+n|0,f);c=c+2|0;d=d+2|0;if((k|0)!=(d|0)){continue}break}}if(!(j&1)){break l}d=F[h>>2];c=ki(f,i,F[g+(c<<2)>>2],0)+e|0;la(a,c+d|0,f);break l}b=0;if(!h){d=0;while(1){if(!Bb(c,G[c+84|0]?d:F[F[c+68>>2]+(d<<2)>>2],D[c+24|0],a)){break l}d=d+1|0;b=j>>>0<=d>>>0;if((d|0)!=(j|0)){continue}break}break l}d=0;e=0;while(1){if(!Bb(c,G[c+84|0]?e:F[F[c+68>>2]+(e<<2)>>2],D[c+24|0],a)){break l}la(d+f|0,a,h);d=d+h|0;e=e+1|0;b=j>>>0<=e>>>0;if((e|0)!=(j|0)){continue}break}}if(!a){break k}ja(a)}break a;case 3:n=G[c+24|0];l=n<<1;j=F[i+80>>2];m:{if((L(l,j)|0)!=(e|0)){break m}i=F[c+28>>2]!=4;d=G[c+84|0];if(!(i|!d)){la(f,F[F[c>>2]>>2]+F[c+48>>2]|0,e);a=1;break m}n:{if(!n){e=0;break n}e=ka(l);ma(e,0,l)}o:{if(!j){a=1;break o}if(!i){o=F[c+68>>2];k=F[c>>2];b=F[c+48>>2];i=F[c+40>>2];m=F[c+44>>2];if(n){if(!d){c=0;d=0;while(1){a=1;g=F[k>>2];p=ki(i,m,F[o+(d<<2)>>2],0)+b|0;la((c<<1)+f|0,la(e,g+p|0,i),l);c=c+n|0;d=d+1|0;if((j|0)!=(d|0)){continue}break}break o}c=0;while(1){a=1;o=F[k>>2];p=ki(g,h,i,m)+b|0;la((c<<1)+f|0,la(e,o+p|0,i),l);c=c+n|0;d=h;g=g+1|0;d=g?d:d+1|0;h=d;if((j|0)!=(g|0)|d){continue}break}break o}if(!d){a=1;c=0;if((j|0)!=1){f=j&-2;d=0;while(1){h=F[k>>2];g=c<<2;n=ki(i,m,F[g+o>>2],0)+b|0;h=la(e,h+n|0,i);n=F[k>>2];g=ki(i,m,F[o+(g|4)>>2],0)+b|0;la(h,g+n|0,i);c=c+2|0;d=d+2|0;if((f|0)!=(d|0)){continue}break}}if(!(j&1)){break o}d=F[k>>2];b=ki(i,m,F[o+(c<<2)>>2],0)+b|0;la(e,b+d|0,i);break o}n=j&1;a=1;if((j|0)!=1){j=j&-2;f=0;c=0;while(1){d=F[k>>2];l=ki(g,h,i,m)+b|0;d=la(e,d+l|0,i);l=F[k>>2];o=ki(i,m,g|1,h)+b|0;la(d,l+o|0,i);g=g+2|0;h=g>>>0<2?h+1|0:h;f=f+2|0;d=f>>>0<2?c+1|0:c;c=d;if((f|0)!=(j|0)|c){continue}break}}if(!n){break o}c=F[k>>2];b=ki(g,h,i,m)+b|0;la(e,b+c|0,i);break o}if(!n){d=0;while(1){if(!zb(c,G[c+84|0]?d:F[F[c+68>>2]+(d<<2)>>2],D[c+24|0],e)){break o}d=d+1|0;a=j>>>0<=d>>>0;if((d|0)!=(j|0)){continue}break}break o}d=0;while(1){if(!zb(c,G[c+84|0]?d:F[F[c+68>>2]+(d<<2)>>2],D[c+24|0],e)){break o}la((b<<1)+f|0,e,l);b=b+n|0;d=d+1|0;a=j>>>0<=d>>>0;if((d|0)!=(j|0)){continue}break}}if(!e){break m}ja(e)}b=a;break a;case 5:l=G[c+24|0];o=l<<2;j=F[i+80>>2];p:{if((L(o,j)|0)!=(e|0)){break p}i=F[c+28>>2]!=6;d=G[c+84|0];if(!(i|!d)){la(f,F[F[c>>2]>>2]+F[c+48>>2]|0,e);b=1;break p}q:{if(!l){e=0;break q}e=ka(o);ma(e,0,o)}b=1;r:{if(!j){break r}if(!i){a=F[c+68>>2];m=F[c>>2];i=F[c+48>>2];k=F[c+40>>2];n=F[c+44>>2];if(l){if(!d){c=0;d=0;while(1){g=F[m>>2];p=ki(k,n,F[a+(d<<2)>>2],0)+i|0;la((c<<2)+f|0,la(e,g+p|0,k),o);c=c+l|0;d=d+1|0;if((j|0)!=(d|0)){continue}break}break r}c=0;while(1){d=F[m>>2];p=ki(g,h,k,n)+i|0;la((c<<2)+f|0,la(e,d+p|0,k),o);c=c+l|0;g=g+1|0;a=g?h:h+1|0;h=a;if((j|0)!=(g|0)|h){continue}break}break r}if(!d){c=0;if((j|0)!=1){f=j&-2;d=0;while(1){h=F[m>>2];g=c<<2;l=ki(k,n,F[g+a>>2],0)+i|0;h=la(e,h+l|0,k);l=F[m>>2];g=ki(k,n,F[a+(g|4)>>2],0)+i|0;la(h,g+l|0,k);c=c+2|0;d=d+2|0;if((f|0)!=(d|0)){continue}break}}if(!(j&1)){break r}d=F[m>>2];a=ki(k,n,F[a+(c<<2)>>2],0)+i|0;la(e,a+d|0,k);break r}l=j&1;if((j|0)!=1){j=j&-2;f=0;c=0;while(1){a=F[m>>2];d=ki(g,h,k,n)+i|0;a=la(e,a+d|0,k);d=F[m>>2];o=ki(k,n,g|1,h)+i|0;la(a,d+o|0,k);d=h;g=g+2|0;h=g>>>0<2?d+1|0:d;f=f+2|0;a=f>>>0<2?c+1|0:c;c=a;if((f|0)!=(j|0)|c){continue}break}}if(!l){break r}a=F[m>>2];c=ki(g,h,k,n)+i|0;la(e,a+c|0,k);break r}b=0;if(!l){d=0;while(1){if(!xb(c,G[c+84|0]?d:F[F[c+68>>2]+(d<<2)>>2],D[c+24|0],e)){break r}d=d+1|0;b=j>>>0<=d>>>0;if((d|0)!=(j|0)){continue}break}break r}d=0;while(1){if(!xb(c,G[c+84|0]?d:F[F[c+68>>2]+(d<<2)>>2],D[c+24|0],e)){break r}la((a<<2)+f|0,e,o);a=a+l|0;d=d+1|0;b=j>>>0<=d>>>0;if((d|0)!=(j|0)){continue}break}}if(!e){break p}ja(e)}break a;case 8:p=G[c+24|0];q=p<<2;k=F[i+80>>2];s:{if((L(q,k)|0)!=(e|0)){break s}i=F[c+28>>2];t:{if(!p){break t}a=ka(q);d=a;m=q-4|0;l=(m>>>2|0)+1&7;if(l){e=0;while(1){F[d>>2]=-1073741824;d=d+4|0;e=e+1|0;if((l|0)!=(e|0)){continue}break}}if(m>>>0<28){break t}e=(p<<2)+a|0;while(1){F[d+24>>2]=-1073741824;F[d+28>>2]=-1073741824;F[d+16>>2]=-1073741824;F[d+20>>2]=-1073741824;F[d+8>>2]=-1073741824;F[d+12>>2]=-1073741824;F[d>>2]=-1073741824;F[d+4>>2]=-1073741824;d=d+32|0;if((e|0)!=(d|0)){continue}break}}u:{if(!k){b=1;break u}if((i|0)==9){r=F[c+68>>2];l=F[c>>2];i=F[c+48>>2];s=G[c+84|0];m=F[c+44>>2];c=F[c+40>>2];o=c;if(p){e=0;d=0;while(1){h=(e<<2)+f|0;g=F[l>>2];b=ki(c,m,s?d:F[r+(d<<2)>>2],0)+i|0;la(h,la(a,b+g|0,o),q);e=e+p|0;b=1;d=d+1|0;if((k|0)!=(d|0)){continue}break}break u}if(!s){b=1;d=0;if((k|0)!=1){f=k&-2;e=0;while(1){h=F[l>>2];g=d<<2;j=ki(c,m,F[g+r>>2],0)+i|0;h=la(a,h+j|0,o);j=F[l>>2];g=ki(c,m,F[r+(g|4)>>2],0)+i|0;la(h,j+g|0,o);d=d+2|0;e=e+2|0;if((f|0)!=(e|0)){continue}break}}if(!(k&1)){break u}e=F[l>>2];c=ki(c,m,F[r+(d<<2)>>2],0)+i|0;la(a,c+e|0,o);break u}f=k&1;b=1;if((k|0)!=1){k=k&-2;while(1){d=F[l>>2];e=ki(g,h,c,m)+i|0;d=la(a,d+e|0,o);e=F[l>>2];p=ki(c,m,g|1,h)+i|0;la(d,e+p|0,o);g=g+2|0;h=g>>>0<2?h+1|0:h;d=j;e=n+2|0;d=e>>>0<2?d+1|0:d;n=e;j=d;if((e|0)!=(k|0)|d){continue}break}}if(!f){break u}d=F[l>>2];c=ki(g,h,c,m)+i|0;la(a,c+d|0,o);break u}if(!p){d=0;while(1){if(!lb(c,G[c+84|0]?d:F[F[c+68>>2]+(d<<2)>>2],D[c+24|0],a)){break u}d=d+1|0;b=k>>>0<=d>>>0;if((d|0)!=(k|0)){continue}break}break u}e=0;d=0;while(1){if(!lb(c,G[c+84|0]?d:F[F[c+68>>2]+(d<<2)>>2],D[c+24|0],a)){break u}la((e<<2)+f|0,a,q);e=e+p|0;d=d+1|0;b=k>>>0<=d>>>0;if((d|0)!=(k|0)){continue}break}}if(!a){break s}ja(a)}a=b;break;default:break b}}b=a}return b|0}function Pd(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;h=Z-80|0;Z=h;e=F[c+36>>2];F[h+72>>2]=F[c+32>>2];F[h+76>>2]=e;f=F[c+28>>2];e=h- -64|0;F[e>>2]=F[c+24>>2];F[e+4>>2]=f;e=F[c+20>>2];F[h+56>>2]=F[c+16>>2];F[h+60>>2]=e;e=F[c+12>>2];F[h+48>>2]=F[c+8>>2];F[h+52>>2]=e;e=F[c+4>>2];F[h+40>>2]=F[c>>2];F[h+44>>2]=e;jc(a,h+40|0,h+24|0);a:{if(F[a>>2]){break a}if(D[a+15|0]<0){ja(F[a+4>>2])}if(G[h+31|0]!=1){b=ka(32);D[b+20|0]=0;c=G[1446]|G[1447]<<8|(G[1448]<<16|G[1449]<<24);D[b+16|0]=c;D[b+17|0]=c>>>8;D[b+18|0]=c>>>16;D[b+19|0]=c>>>24;c=G[1442]|G[1443]<<8|(G[1444]<<16|G[1445]<<24);d=G[1438]|G[1439]<<8|(G[1440]<<16|G[1441]<<24);D[b+8|0]=d;D[b+9|0]=d>>>8;D[b+10|0]=d>>>16;D[b+11|0]=d>>>24;D[b+12|0]=c;D[b+13|0]=c>>>8;D[b+14|0]=c>>>16;D[b+15|0]=c>>>24;c=G[1434]|G[1435]<<8|(G[1436]<<16|G[1437]<<24);d=G[1430]|G[1431]<<8|(G[1432]<<16|G[1433]<<24);D[b|0]=d;D[b+1|0]=d>>>8;D[b+2|0]=d>>>16;D[b+3|0]=d>>>24;D[b+4|0]=c;D[b+5|0]=c>>>8;D[b+6|0]=c>>>16;D[b+7|0]=c>>>24;F[a>>2]=-1;ra(a+4|0,b,20);ja(b);break a}j=Z-16|0;Z=j;b:{c:{switch(G[h+32|0]){case 0:e=Kd(ka(48));F[e>>2]=9864;F[h+8>>2]=0;F[h+12>>2]=0;F[h>>2]=0;F[h+4>>2]=0;F[h+16>>2]=e;break b;case 1:e=Kd(ka(52));F[e+48>>2]=0;F[e>>2]=8176;F[h+8>>2]=0;F[h+12>>2]=0;F[h>>2]=0;F[h+4>>2]=0;F[h+16>>2]=e;break b;default:break c}}f=ka(32);D[f+28|0]=0;e=G[1520]|G[1521]<<8|(G[1522]<<16|G[1523]<<24);D[f+24|0]=e;D[f+25|0]=e>>>8;D[f+26|0]=e>>>16;D[f+27|0]=e>>>24;e=G[1516]|G[1517]<<8|(G[1518]<<16|G[1519]<<24);g=G[1512]|G[1513]<<8|(G[1514]<<16|G[1515]<<24);D[f+16|0]=g;D[f+17|0]=g>>>8;D[f+18|0]=g>>>16;D[f+19|0]=g>>>24;D[f+20|0]=e;D[f+21|0]=e>>>8;D[f+22|0]=e>>>16;D[f+23|0]=e>>>24;e=G[1508]|G[1509]<<8|(G[1510]<<16|G[1511]<<24);g=G[1504]|G[1505]<<8|(G[1506]<<16|G[1507]<<24);D[f+8|0]=g;D[f+9|0]=g>>>8;D[f+10|0]=g>>>16;D[f+11|0]=g>>>24;D[f+12|0]=e;D[f+13|0]=e>>>8;D[f+14|0]=e>>>16;D[f+15|0]=e>>>24;e=G[1500]|G[1501]<<8|(G[1502]<<16|G[1503]<<24);g=G[1496]|G[1497]<<8|(G[1498]<<16|G[1499]<<24);D[f|0]=g;D[f+1|0]=g>>>8;D[f+2|0]=g>>>16;D[f+3|0]=g>>>24;D[f+4|0]=e;D[f+5|0]=e>>>8;D[f+6|0]=e>>>16;D[f+7|0]=e>>>24;F[j>>2]=-1;e=j|4;ra(e,f,28);k=D[j+15|0];F[h>>2]=F[j>>2];g=h+4|0;d:{if((k|0)>=0){k=F[e+4>>2];F[g>>2]=F[e>>2];F[g+4>>2]=k;F[g+8>>2]=F[e+8>>2];F[h+16>>2]=0;break d}ra(g,F[j+4>>2],F[j+8>>2]);e=D[j+15|0];F[h+16>>2]=0;if((e|0)>=0){break d}ja(F[j+4>>2])}ja(f)}Z=j+16|0;e=F[h>>2];e:{if(e){F[a>>2]=e;a=a+4|0;if(D[h+15|0]>=0){b=h|4;c=F[b+4>>2];F[a>>2]=F[b>>2];F[a+4>>2]=c;F[a+8>>2]=F[b+8>>2];break e}ra(a,F[h+4>>2],F[h+8>>2]);break e}e=F[h+16>>2];F[h+16>>2]=0;F[e+44>>2]=d;f=Z-32|0;Z=f;F[e+32>>2]=c;F[e+40>>2]=b;F[e+4>>2]=d;jc(a,c,f+16|0);f:{if(F[a>>2]){break f}if(D[a+15|0]<0){ja(F[a+4>>2])}b=G[f+23|0];if(($[F[F[e>>2]+8>>2]](e)|0)!=(b|0)){b=ka(64);D[b+50|0]=0;c=G[1304]|G[1305]<<8;D[b+48|0]=c;D[b+49|0]=c>>>8;c=G[1300]|G[1301]<<8|(G[1302]<<16|G[1303]<<24);d=G[1296]|G[1297]<<8|(G[1298]<<16|G[1299]<<24);D[b+40|0]=d;D[b+41|0]=d>>>8;D[b+42|0]=d>>>16;D[b+43|0]=d>>>24;D[b+44|0]=c;D[b+45|0]=c>>>8;D[b+46|0]=c>>>16;D[b+47|0]=c>>>24;c=G[1292]|G[1293]<<8|(G[1294]<<16|G[1295]<<24);d=G[1288]|G[1289]<<8|(G[1290]<<16|G[1291]<<24);D[b+32|0]=d;D[b+33|0]=d>>>8;D[b+34|0]=d>>>16;D[b+35|0]=d>>>24;D[b+36|0]=c;D[b+37|0]=c>>>8;D[b+38|0]=c>>>16;D[b+39|0]=c>>>24;c=G[1284]|G[1285]<<8|(G[1286]<<16|G[1287]<<24);d=G[1280]|G[1281]<<8|(G[1282]<<16|G[1283]<<24);D[b+24|0]=d;D[b+25|0]=d>>>8;D[b+26|0]=d>>>16;D[b+27|0]=d>>>24;D[b+28|0]=c;D[b+29|0]=c>>>8;D[b+30|0]=c>>>16;D[b+31|0]=c>>>24;c=G[1276]|G[1277]<<8|(G[1278]<<16|G[1279]<<24);d=G[1272]|G[1273]<<8|(G[1274]<<16|G[1275]<<24);D[b+16|0]=d;D[b+17|0]=d>>>8;D[b+18|0]=d>>>16;D[b+19|0]=d>>>24;D[b+20|0]=c;D[b+21|0]=c>>>8;D[b+22|0]=c>>>16;D[b+23|0]=c>>>24;c=G[1268]|G[1269]<<8|(G[1270]<<16|G[1271]<<24);d=G[1264]|G[1265]<<8|(G[1266]<<16|G[1267]<<24);D[b+8|0]=d;D[b+9|0]=d>>>8;D[b+10|0]=d>>>16;D[b+11|0]=d>>>24;D[b+12|0]=c;D[b+13|0]=c>>>8;D[b+14|0]=c>>>16;D[b+15|0]=c>>>24;c=G[1260]|G[1261]<<8|(G[1262]<<16|G[1263]<<24);d=G[1256]|G[1257]<<8|(G[1258]<<16|G[1259]<<24);D[b|0]=d;D[b+1|0]=d>>>8;D[b+2|0]=d>>>16;D[b+3|0]=d>>>24;D[b+4|0]=c;D[b+5|0]=c>>>8;D[b+6|0]=c>>>16;D[b+7|0]=c>>>24;F[a>>2]=-1;ra(a+4|0,b,50);ja(b);break f}c=G[f+21|0];D[e+36|0]=c;d=G[f+22|0];D[e+37|0]=d;if((c|0)!=2){b=ka(32);D[b+26|0]=0;c=G[1427]|G[1428]<<8;D[b+24|0]=c;D[b+25|0]=c>>>8;c=G[1423]|G[1424]<<8|(G[1425]<<16|G[1426]<<24);d=G[1419]|G[1420]<<8|(G[1421]<<16|G[1422]<<24);D[b+16|0]=d;D[b+17|0]=d>>>8;D[b+18|0]=d>>>16;D[b+19|0]=d>>>24;D[b+20|0]=c;D[b+21|0]=c>>>8;D[b+22|0]=c>>>16;D[b+23|0]=c>>>24;c=G[1415]|G[1416]<<8|(G[1417]<<16|G[1418]<<24);d=G[1411]|G[1412]<<8|(G[1413]<<16|G[1414]<<24);D[b+8|0]=d;D[b+9|0]=d>>>8;D[b+10|0]=d>>>16;D[b+11|0]=d>>>24;D[b+12|0]=c;D[b+13|0]=c>>>8;D[b+14|0]=c>>>16;D[b+15|0]=c>>>24;c=G[1407]|G[1408]<<8|(G[1409]<<16|G[1410]<<24);d=G[1403]|G[1404]<<8|(G[1405]<<16|G[1406]<<24);D[b|0]=d;D[b+1|0]=d>>>8;D[b+2|0]=d>>>16;D[b+3|0]=d>>>24;D[b+4|0]=c;D[b+5|0]=c>>>8;D[b+6|0]=c>>>16;D[b+7|0]=c>>>24;F[a>>2]=-5;ra(a+4|0,b,26);ja(b);break f}b=b?2:3;if((b|0)!=(d|0)){b=ka(32);D[b+26|0]=0;c=G[1400]|G[1401]<<8;D[b+24|0]=c;D[b+25|0]=c>>>8;c=G[1396]|G[1397]<<8|(G[1398]<<16|G[1399]<<24);d=G[1392]|G[1393]<<8|(G[1394]<<16|G[1395]<<24);D[b+16|0]=d;D[b+17|0]=d>>>8;D[b+18|0]=d>>>16;D[b+19|0]=d>>>24;D[b+20|0]=c;D[b+21|0]=c>>>8;D[b+22|0]=c>>>16;D[b+23|0]=c>>>24;c=G[1388]|G[1389]<<8|(G[1390]<<16|G[1391]<<24);d=G[1384]|G[1385]<<8|(G[1386]<<16|G[1387]<<24);D[b+8|0]=d;D[b+9|0]=d>>>8;D[b+10|0]=d>>>16;D[b+11|0]=d>>>24;D[b+12|0]=c;D[b+13|0]=c>>>8;D[b+14|0]=c>>>16;D[b+15|0]=c>>>24;c=G[1380]|G[1381]<<8|(G[1382]<<16|G[1383]<<24);d=G[1376]|G[1377]<<8|(G[1378]<<16|G[1379]<<24);D[b|0]=d;D[b+1|0]=d>>>8;D[b+2|0]=d>>>16;D[b+3|0]=d>>>24;D[b+4|0]=c;D[b+5|0]=c>>>8;D[b+6|0]=c>>>16;D[b+7|0]=c>>>24;F[a>>2]=-5;ra(a+4|0,b,26);ja(b);break f}E[F[e+32>>2]+38>>1]=b|512;g:{if(E[f+26>>1]>=0){break g}j=Z-16|0;Z=j;d=ka(36);b=d;F[b+4>>2]=0;F[b+8>>2]=0;F[b+24>>2]=0;F[b+28>>2]=0;b=b+16|0;F[b>>2]=0;F[b+4>>2]=0;F[d>>2]=d+4;F[d+32>>2]=0;F[d+12>>2]=b;F[j>>2]=0;c=F[e+32>>2];k=Z-16|0;Z=k;b=0;h:{if(!d){break h}F[j>>2]=c;F[k+12>>2]=0;b=0;if(!fb(1,k+12|0,c)){break h}n=F[k+12>>2];if(n){while(1){i:{if(fb(1,k+8|0,F[j>>2])){b=ka(28);F[b+4>>2]=0;F[b+8>>2]=0;c=b+16|0;F[c>>2]=0;F[c+4>>2]=0;F[b>>2]=b+4;F[b+12>>2]=c;F[b+24>>2]=F[k+8>>2];if(Vc(j,b)){break i}Ca(b+12|0,F[b+16>>2]);Ba(b,F[b+4>>2]);ja(b)}b=0;break h}g=Z-16|0;Z=g;F[g+8>>2]=b;j:{if(!b){break j}c=F[d+28>>2];k:{if(c>>>0>2]){F[g+8>>2]=0;F[c>>2]=b;F[d+28>>2]=c+4;break k}c=0;l:{m:{n:{i=F[d+24>>2];m=F[d+28>>2]-i>>2;b=m+1|0;if(b>>>0<1073741824){i=F[d+32>>2]-i|0;l=i>>>1|0;i=i>>>0>=2147483644?1073741823:b>>>0>>0?l:b;if(i){if(i>>>0>=1073741824){break n}c=ka(i<<2)}l=F[g+8>>2];F[g+8>>2]=0;b=(m<<2)+c|0;F[b>>2]=l;i=(i<<2)+c|0;m=b+4|0;c=F[d+28>>2];l=F[d+24>>2];if((c|0)==(l|0)){break m}while(1){c=c-4|0;p=F[c>>2];F[c>>2]=0;b=b-4|0;F[b>>2]=p;if((c|0)!=(l|0)){continue}break}F[d+32>>2]=i;i=F[d+28>>2];F[d+28>>2]=m;c=F[d+24>>2];F[d+24>>2]=b;if((c|0)==(i|0)){break l}while(1){i=i-4|0;b=F[i>>2];F[i>>2]=0;if(b){Ca(b+12|0,F[b+16>>2]);Ba(b,F[b+4>>2]);ja(b)}if((c|0)!=(i|0)){continue}break}break l}na();v()}oa();v()}F[d+32>>2]=i;F[d+28>>2]=m;F[d+24>>2]=b}if(c){ja(c)}}b=F[g+8>>2];F[g+8>>2]=0;if(!b){break j}Ca(b+12|0,F[b+16>>2]);Ba(b,F[b+4>>2]);ja(b)}Z=g+16|0;o=o+1|0;if((n|0)!=(o|0)){continue}break}}b=Vc(j,d)}Z=k+16|0;o:{if(b){c=F[e+4>>2];b=F[c+4>>2];F[c+4>>2]=d;if(b){ic(b)}F[a>>2]=0;F[a+4>>2]=0;F[a+8>>2]=0;F[a+12>>2]=0;break o}b=ka(32);D[b+26|0]=0;c=G[1549]|G[1550]<<8;D[b+24|0]=c;D[b+25|0]=c>>>8;c=G[1545]|G[1546]<<8|(G[1547]<<16|G[1548]<<24);g=G[1541]|G[1542]<<8|(G[1543]<<16|G[1544]<<24);D[b+16|0]=g;D[b+17|0]=g>>>8;D[b+18|0]=g>>>16;D[b+19|0]=g>>>24;D[b+20|0]=c;D[b+21|0]=c>>>8;D[b+22|0]=c>>>16;D[b+23|0]=c>>>24;c=G[1537]|G[1538]<<8|(G[1539]<<16|G[1540]<<24);g=G[1533]|G[1534]<<8|(G[1535]<<16|G[1536]<<24);D[b+8|0]=g;D[b+9|0]=g>>>8;D[b+10|0]=g>>>16;D[b+11|0]=g>>>24;D[b+12|0]=c;D[b+13|0]=c>>>8;D[b+14|0]=c>>>16;D[b+15|0]=c>>>24;c=G[1529]|G[1530]<<8|(G[1531]<<16|G[1532]<<24);g=G[1525]|G[1526]<<8|(G[1527]<<16|G[1528]<<24);D[b|0]=g;D[b+1|0]=g>>>8;D[b+2|0]=g>>>16;D[b+3|0]=g>>>24;D[b+4|0]=c;D[b+5|0]=c>>>8;D[b+6|0]=c>>>16;D[b+7|0]=c>>>24;F[a>>2]=-1;ra(a+4|0,b,26);ja(b);F[j+8>>2]=0;ic(d)}Z=j+16|0;if(F[a>>2]){break f}if(D[a+15|0]>=0){break g}ja(F[a+4>>2])}if(!($[F[F[e>>2]+12>>2]](e)|0)){b=ka(48);D[b+33|0]=0;D[b+32|0]=G[1374];c=G[1370]|G[1371]<<8|(G[1372]<<16|G[1373]<<24);d=G[1366]|G[1367]<<8|(G[1368]<<16|G[1369]<<24);D[b+24|0]=d;D[b+25|0]=d>>>8;D[b+26|0]=d>>>16;D[b+27|0]=d>>>24;D[b+28|0]=c;D[b+29|0]=c>>>8;D[b+30|0]=c>>>16;D[b+31|0]=c>>>24;c=G[1362]|G[1363]<<8|(G[1364]<<16|G[1365]<<24);d=G[1358]|G[1359]<<8|(G[1360]<<16|G[1361]<<24);D[b+16|0]=d;D[b+17|0]=d>>>8;D[b+18|0]=d>>>16;D[b+19|0]=d>>>24;D[b+20|0]=c;D[b+21|0]=c>>>8;D[b+22|0]=c>>>16;D[b+23|0]=c>>>24;c=G[1354]|G[1355]<<8|(G[1356]<<16|G[1357]<<24);d=G[1350]|G[1351]<<8|(G[1352]<<16|G[1353]<<24);D[b+8|0]=d;D[b+9|0]=d>>>8;D[b+10|0]=d>>>16;D[b+11|0]=d>>>24;D[b+12|0]=c;D[b+13|0]=c>>>8;D[b+14|0]=c>>>16;D[b+15|0]=c>>>24;c=G[1346]|G[1347]<<8|(G[1348]<<16|G[1349]<<24);d=G[1342]|G[1343]<<8|(G[1344]<<16|G[1345]<<24);D[b|0]=d;D[b+1|0]=d>>>8;D[b+2|0]=d>>>16;D[b+3|0]=d>>>24;D[b+4|0]=c;D[b+5|0]=c>>>8;D[b+6|0]=c>>>16;D[b+7|0]=c>>>24;F[a>>2]=-1;ra(a+4|0,b,33);ja(b);break f}if(!($[F[F[e>>2]+20>>2]](e)|0)){b=Eb(f,1552);F[a>>2]=-1;c=a+4|0;if(D[b+11|0]>=0){d=F[b+4>>2];F[c>>2]=F[b>>2];F[c+4>>2]=d;F[c+8>>2]=F[b+8>>2];break f}ra(c,F[b>>2],F[b+4>>2]);if(D[b+11|0]>=0){break f}ja(F[b>>2]);break f}if(!($[F[F[e>>2]+24>>2]](e)|0)){b=Eb(f,1307);F[a>>2]=-1;c=a+4|0;if(D[b+11|0]>=0){d=F[b+4>>2];F[c>>2]=F[b>>2];F[c+4>>2]=d;F[c+8>>2]=F[b+8>>2];break f}ra(c,F[b>>2],F[b+4>>2]);if(D[b+11|0]>=0){break f}ja(F[b>>2]);break f}F[a>>2]=0;F[a+4>>2]=0;F[a+8>>2]=0;F[a+12>>2]=0}Z=f+32|0;if(!F[a>>2]){if(D[a+15|0]<0){ja(F[a+4>>2])}F[a>>2]=0;F[a+4>>2]=0;F[a+8>>2]=0;F[a+12>>2]=0}$[F[F[e>>2]+4>>2]](e)}a=F[h+16>>2];F[h+16>>2]=0;if(a){$[F[F[a>>2]+4>>2]](a)}if(D[h+15|0]>=0){break a}ja(F[h+4>>2])}Z=h+80|0}function Ub(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;l=Z-16|0;Z=l;a:{b:{c:{d:{e:{f:{g:{h:{i:{if(a>>>0<=244){g=F[2941];h=a>>>0<11?16:a+11&-8;c=h>>>3|0;b=g>>>c|0;if(b&3){c=c+((b^-1)&1)|0;a=c<<3;b=a+11804|0;d=F[a+11812>>2];a=F[d+8>>2];j:{if((b|0)==(a|0)){m=11764,n=oi(c)&g,F[m>>2]=n;break j}F[a+12>>2]=b;F[b+8>>2]=a}a=d+8|0;b=c<<3;F[d+4>>2]=b|3;b=b+d|0;F[b+4>>2]=F[b+4>>2]|1;break a}k=F[2943];if(k>>>0>=h>>>0){break i}if(b){a=2<>2];a=F[e+8>>2];k:{if((b|0)==(a|0)){g=oi(d)&g;F[2941]=g;break k}F[a+12>>2]=b;F[b+8>>2]=a}F[e+4>>2]=h|3;c=e+h|0;a=d<<3;d=a-h|0;F[c+4>>2]=d|1;F[a+e>>2]=d;if(k){b=(k&-8)+11804|0;f=F[2946];a=1<<(k>>>3);l:{if(!(a&g)){F[2941]=a|g;a=b;break l}a=F[b+8>>2]}F[b+8>>2]=f;F[a+12>>2]=f;F[f+12>>2]=b;F[f+8>>2]=a}a=e+8|0;F[2946]=c;F[2943]=d;break a}j=F[2942];if(!j){break i}c=F[(ji(0-j&j)<<2)+12068>>2];f=(F[c+4>>2]&-8)-h|0;b=c;while(1){m:{a=F[b+16>>2];if(!a){a=F[b+20>>2];if(!a){break m}}b=(F[a+4>>2]&-8)-h|0;d=b>>>0>>0;f=d?b:f;c=d?a:c;b=a;continue}break}i=F[c+24>>2];d=F[c+12>>2];if((d|0)!=(c|0)){a=F[c+8>>2];F[a+12>>2]=d;F[d+8>>2]=a;break b}b=c+20|0;a=F[b>>2];if(!a){a=F[c+16>>2];if(!a){break h}b=c+16|0}while(1){e=b;d=a;b=a+20|0;a=F[b>>2];if(a){continue}b=d+16|0;a=F[d+16>>2];if(a){continue}break}F[e>>2]=0;break b}h=-1;if(a>>>0>4294967231){break i}a=a+11|0;h=a&-8;j=F[2942];if(!j){break i}f=0-h|0;g=0;n:{if(h>>>0<256){break n}g=31;if(h>>>0>16777215){break n}a=O(a>>>8|0);g=((h>>>38-a&1)-(a<<1)|0)+62|0}b=F[(g<<2)+12068>>2];o:{p:{q:{if(!b){a=0;break q}a=0;c=h<<((g|0)!=31?25-(g>>>1|0)|0:0);while(1){r:{e=(F[b+4>>2]&-8)-h|0;if(e>>>0>=f>>>0){break r}d=b;f=e;if(e){break r}f=0;a=b;break p}e=F[b+20>>2];b=F[((c>>>29&4)+b|0)+16>>2];a=e?(e|0)==(b|0)?a:e:a;c=c<<1;if(b){continue}break}}if(!(a|d)){d=0;a=2<>2]}if(!a){break o}}while(1){b=(F[a+4>>2]&-8)-h|0;c=b>>>0>>0;f=c?b:f;d=c?a:d;b=F[a+16>>2];if(b){a=b}else{a=F[a+20>>2]}if(a){continue}break}}if(!d|F[2943]-h>>>0<=f>>>0){break i}g=F[d+24>>2];c=F[d+12>>2];if((d|0)!=(c|0)){a=F[d+8>>2];F[a+12>>2]=c;F[c+8>>2]=a;break c}b=d+20|0;a=F[b>>2];if(!a){a=F[d+16>>2];if(!a){break g}b=d+16|0}while(1){e=b;c=a;b=a+20|0;a=F[b>>2];if(a){continue}b=c+16|0;a=F[c+16>>2];if(a){continue}break}F[e>>2]=0;break c}a=F[2943];if(a>>>0>=h>>>0){d=F[2946];b=a-h|0;s:{if(b>>>0>=16){c=d+h|0;F[c+4>>2]=b|1;F[a+d>>2]=b;F[d+4>>2]=h|3;break s}F[d+4>>2]=a|3;a=a+d|0;F[a+4>>2]=F[a+4>>2]|1;c=0;b=0}F[2943]=b;F[2946]=c;a=d+8|0;break a}i=F[2944];if(i>>>0>h>>>0){b=i-h|0;F[2944]=b;c=F[2947];a=c+h|0;F[2947]=a;F[a+4>>2]=b|1;F[c+4>>2]=h|3;a=c+8|0;break a}a=0;j=h+47|0;if(F[3059]){c=F[3061]}else{F[3062]=-1;F[3063]=-1;F[3060]=4096;F[3061]=4096;F[3059]=l+12&-16^1431655768;F[3064]=0;F[3052]=0;c=4096}e=j+c|0;f=0-c|0;b=e&f;if(b>>>0<=h>>>0){break a}d=F[3051];if(d){c=F[3049];g=c+b|0;if(d>>>0>>0|c>>>0>=g>>>0){break a}}t:{if(!(G[12208]&4)){u:{v:{w:{x:{d=F[2947];if(d){a=12212;while(1){c=F[a>>2];if(c>>>0<=d>>>0&d>>>0>2]>>>0){break x}a=F[a+8>>2];if(a){continue}break}}c=eb(0);if((c|0)==-1){break u}g=b;d=F[3060];a=d-1|0;if(a&c){g=(b-c|0)+(a+c&0-d)|0}if(g>>>0<=h>>>0){break u}d=F[3051];if(d){a=F[3049];f=a+g|0;if(d>>>0>>0|a>>>0>=f>>>0){break u}}a=eb(g);if((c|0)!=(a|0)){break w}break t}g=f&e-i;c=eb(g);if((c|0)==(F[a>>2]+F[a+4>>2]|0)){break v}a=c}if((a|0)==-1){break u}if(h+48>>>0<=g>>>0){c=a;break t}c=F[3061];c=c+(j-g|0)&0-c;if((eb(c)|0)==-1){break u}g=c+g|0;c=a;break t}if((c|0)!=-1){break t}}F[3052]=F[3052]|4}c=eb(b);a=eb(0);if((c|0)==-1|(a|0)==-1|a>>>0<=c>>>0){break d}g=a-c|0;if(g>>>0<=h+40>>>0){break d}}a=F[3049]+g|0;F[3049]=a;if(a>>>0>I[3050]){F[3050]=a}y:{e=F[2947];if(e){a=12212;while(1){d=F[a>>2];b=F[a+4>>2];if((d+b|0)==(c|0)){break y}a=F[a+8>>2];if(a){continue}break}break f}a=F[2945];if(!(a>>>0<=c>>>0?a:0)){F[2945]=c}a=0;F[3054]=g;F[3053]=c;F[2949]=-1;F[2950]=F[3059];F[3056]=0;while(1){d=a<<3;b=d+11804|0;F[d+11812>>2]=b;F[d+11816>>2]=b;a=a+1|0;if((a|0)!=32){continue}break}d=g-40|0;a=c+8&7?-8-c&7:0;b=d-a|0;F[2944]=b;a=a+c|0;F[2947]=a;F[a+4>>2]=b|1;F[(c+d|0)+4>>2]=40;F[2948]=F[3063];break e}if(G[a+12|0]&8|d>>>0>e>>>0|c>>>0<=e>>>0){break f}F[a+4>>2]=b+g;a=e+8&7?-8-e&7:0;c=a+e|0;F[2947]=c;b=F[2944]+g|0;a=b-a|0;F[2944]=a;F[c+4>>2]=a|1;F[(b+e|0)+4>>2]=40;F[2948]=F[3063];break e}d=0;break b}c=0;break c}if(I[2945]>c>>>0){F[2945]=c}b=c+g|0;a=12212;z:{A:{B:{C:{D:{E:{while(1){if((b|0)!=F[a>>2]){a=F[a+8>>2];if(a){continue}break E}break}if(!(G[a+12|0]&8)){break D}}a=12212;while(1){b=F[a>>2];if(b>>>0<=e>>>0){f=b+F[a+4>>2]|0;if(f>>>0>e>>>0){break C}}a=F[a+8>>2];continue}}F[a>>2]=c;F[a+4>>2]=F[a+4>>2]+g;j=(c+8&7?-8-c&7:0)+c|0;F[j+4>>2]=h|3;g=b+(b+8&7?-8-b&7:0)|0;i=h+j|0;a=g-i|0;if((e|0)==(g|0)){F[2947]=i;a=F[2944]+a|0;F[2944]=a;F[i+4>>2]=a|1;break A}if(F[2946]==(g|0)){F[2946]=i;a=F[2943]+a|0;F[2943]=a;F[i+4>>2]=a|1;F[a+i>>2]=a;break A}f=F[g+4>>2];if((f&3)==1){e=f&-8;F:{if(f>>>0<=255){d=F[g+8>>2];b=f>>>3|0;c=F[g+12>>2];if((c|0)==(d|0)){m=11764,n=F[2941]&oi(b),F[m>>2]=n;break F}F[d+12>>2]=c;F[c+8>>2]=d;break F}h=F[g+24>>2];c=F[g+12>>2];G:{if((g|0)!=(c|0)){b=F[g+8>>2];F[b+12>>2]=c;F[c+8>>2]=b;break G}H:{f=g+20|0;b=F[f>>2];if(b){break H}f=g+16|0;b=F[f>>2];if(b){break H}c=0;break G}while(1){d=f;c=b;f=c+20|0;b=F[f>>2];if(b){continue}f=c+16|0;b=F[c+16>>2];if(b){continue}break}F[d>>2]=0}if(!h){break F}d=F[g+28>>2];b=(d<<2)+12068|0;I:{if(F[b>>2]==(g|0)){F[b>>2]=c;if(c){break I}m=11768,n=F[2942]&oi(d),F[m>>2]=n;break F}F[h+(F[h+16>>2]==(g|0)?16:20)>>2]=c;if(!c){break F}}F[c+24>>2]=h;b=F[g+16>>2];if(b){F[c+16>>2]=b;F[b+24>>2]=c}b=F[g+20>>2];if(!b){break F}F[c+20>>2]=b;F[b+24>>2]=c}g=e+g|0;f=F[g+4>>2];a=a+e|0}F[g+4>>2]=f&-2;F[i+4>>2]=a|1;F[a+i>>2]=a;if(a>>>0<=255){b=(a&-8)+11804|0;c=F[2941];a=1<<(a>>>3);J:{if(!(c&a)){F[2941]=a|c;a=b;break J}a=F[b+8>>2]}F[b+8>>2]=i;F[a+12>>2]=i;F[i+12>>2]=b;F[i+8>>2]=a;break A}f=31;if(a>>>0<=16777215){b=O(a>>>8|0);f=((a>>>38-b&1)-(b<<1)|0)+62|0}F[i+28>>2]=f;F[i+16>>2]=0;F[i+20>>2]=0;b=(f<<2)+12068|0;d=F[2942];c=1<>2]=i;break K}f=a<<((f|0)!=31?25-(f>>>1|0)|0:0);c=F[b>>2];while(1){b=c;if((F[c+4>>2]&-8)==(a|0)){break B}c=f>>>29|0;f=f<<1;d=(c&4)+b|0;c=F[d+16>>2];if(c){continue}break}F[d+16>>2]=i}F[i+24>>2]=b;F[i+12>>2]=i;F[i+8>>2]=i;break A}d=g-40|0;a=c+8&7?-8-c&7:0;b=d-a|0;F[2944]=b;a=a+c|0;F[2947]=a;F[a+4>>2]=b|1;F[(c+d|0)+4>>2]=40;F[2948]=F[3063];a=(f+(f-39&7?39-f&7:0)|0)-47|0;d=a>>>0>>0?e:a;F[d+4>>2]=27;a=F[3056];F[d+16>>2]=F[3055];F[d+20>>2]=a;a=F[3054];F[d+8>>2]=F[3053];F[d+12>>2]=a;F[3055]=d+8;F[3054]=g;F[3053]=c;F[3056]=0;a=d+24|0;while(1){F[a+4>>2]=7;b=a+8|0;a=a+4|0;if(b>>>0>>0){continue}break}if((d|0)==(e|0)){break e}F[d+4>>2]=F[d+4>>2]&-2;f=d-e|0;F[e+4>>2]=f|1;F[d>>2]=f;if(f>>>0<=255){b=(f&-8)+11804|0;c=F[2941];a=1<<(f>>>3);L:{if(!(c&a)){F[2941]=a|c;a=b;break L}a=F[b+8>>2]}F[b+8>>2]=e;F[a+12>>2]=e;F[e+12>>2]=b;F[e+8>>2]=a;break e}a=31;if(f>>>0<=16777215){a=O(f>>>8|0);a=((f>>>38-a&1)-(a<<1)|0)+62|0}F[e+28>>2]=a;F[e+16>>2]=0;F[e+20>>2]=0;b=(a<<2)+12068|0;d=F[2942];c=1<>2]=e;break M}a=f<<((a|0)!=31?25-(a>>>1|0)|0:0);d=F[b>>2];while(1){b=d;if((f|0)==(F[b+4>>2]&-8)){break z}c=a>>>29|0;a=a<<1;c=(c&4)+b|0;d=F[c+16>>2];if(d){continue}break}F[c+16>>2]=e}F[e+24>>2]=b;F[e+12>>2]=e;F[e+8>>2]=e;break e}a=F[b+8>>2];F[a+12>>2]=i;F[b+8>>2]=i;F[i+24>>2]=0;F[i+12>>2]=b;F[i+8>>2]=a}a=j+8|0;break a}a=F[b+8>>2];F[a+12>>2]=e;F[b+8>>2]=e;F[e+24>>2]=0;F[e+12>>2]=b;F[e+8>>2]=a}a=F[2944];if(a>>>0<=h>>>0){break d}b=a-h|0;F[2944]=b;c=F[2947];a=c+h|0;F[2947]=a;F[a+4>>2]=b|1;F[c+4>>2]=h|3;a=c+8|0;break a}F[2940]=48;a=0;break a}N:{if(!g){break N}b=F[d+28>>2];a=(b<<2)+12068|0;O:{if(F[a>>2]==(d|0)){F[a>>2]=c;if(c){break O}j=oi(b)&j;F[2942]=j;break N}F[g+(F[g+16>>2]==(d|0)?16:20)>>2]=c;if(!c){break N}}F[c+24>>2]=g;a=F[d+16>>2];if(a){F[c+16>>2]=a;F[a+24>>2]=c}a=F[d+20>>2];if(!a){break N}F[c+20>>2]=a;F[a+24>>2]=c}P:{if(f>>>0<=15){a=f+h|0;F[d+4>>2]=a|3;a=a+d|0;F[a+4>>2]=F[a+4>>2]|1;break P}F[d+4>>2]=h|3;e=d+h|0;F[e+4>>2]=f|1;F[e+f>>2]=f;if(f>>>0<=255){b=(f&-8)+11804|0;c=F[2941];a=1<<(f>>>3);Q:{if(!(c&a)){F[2941]=a|c;a=b;break Q}a=F[b+8>>2]}F[b+8>>2]=e;F[a+12>>2]=e;F[e+12>>2]=b;F[e+8>>2]=a;break P}a=31;if(f>>>0<=16777215){a=O(f>>>8|0);a=((f>>>38-a&1)-(a<<1)|0)+62|0}F[e+28>>2]=a;F[e+16>>2]=0;F[e+20>>2]=0;b=(a<<2)+12068|0;R:{c=1<>2]=e;break S}a=f<<((a|0)!=31?25-(a>>>1|0)|0:0);h=F[b>>2];while(1){b=h;if((F[b+4>>2]&-8)==(f|0)){break R}c=a>>>29|0;a=a<<1;c=(c&4)+b|0;h=F[c+16>>2];if(h){continue}break}F[c+16>>2]=e}F[e+24>>2]=b;F[e+12>>2]=e;F[e+8>>2]=e;break P}a=F[b+8>>2];F[a+12>>2]=e;F[b+8>>2]=e;F[e+24>>2]=0;F[e+12>>2]=b;F[e+8>>2]=a}a=d+8|0;break a}T:{if(!i){break T}b=F[c+28>>2];a=(b<<2)+12068|0;U:{if(F[a>>2]==(c|0)){F[a>>2]=d;if(d){break U}m=11768,n=oi(b)&j,F[m>>2]=n;break T}F[i+(F[i+16>>2]==(c|0)?16:20)>>2]=d;if(!d){break T}}F[d+24>>2]=i;a=F[c+16>>2];if(a){F[d+16>>2]=a;F[a+24>>2]=d}a=F[c+20>>2];if(!a){break T}F[d+20>>2]=a;F[a+24>>2]=d}V:{if(f>>>0<=15){a=f+h|0;F[c+4>>2]=a|3;a=a+c|0;F[a+4>>2]=F[a+4>>2]|1;break V}F[c+4>>2]=h|3;d=c+h|0;F[d+4>>2]=f|1;F[d+f>>2]=f;if(k){b=(k&-8)+11804|0;e=F[2946];a=1<<(k>>>3);W:{if(!(a&g)){F[2941]=a|g;a=b;break W}a=F[b+8>>2]}F[b+8>>2]=e;F[a+12>>2]=e;F[e+12>>2]=b;F[e+8>>2]=a}F[2946]=d;F[2943]=f}a=c+8|0}Z=l+16|0;return a|0}function Vc(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,w=0,x=0,y=0,z=0,A=0;m=Z-32|0;Z=m;o=ka(12);F[o+8>>2]=0;F[o+4>>2]=b;F[o>>2]=0;s=o+12|0;b=s;a:{b:{c:{while(1){b=b-12|0;w=F[b+8>>2];j=F[b+4>>2];t=F[b>>2];if(t){if((w|0)>1e3){break a}F[m+24>>2]=0;F[m+16>>2]=0;F[m+20>>2]=0;d=1;c=F[a>>2];e=F[c+8>>2];h=F[c+12>>2];g=F[c+20>>2];f=F[c+16>>2];d:{if((h|0)<=(g|0)&f>>>0>=e>>>0|(g|0)>(h|0)){break d}e=G[f+F[c>>2]|0];h=c;c=g;f=f+1|0;c=f?c:c+1|0;F[h+16>>2]=f;F[h+20>>2]=c;Sb(m+16|0,e);if(e){c=F[a>>2];n=Tb(m+16|0);p=F[c+8>>2];g=F[c+12>>2];h=F[c+20>>2];f=F[c+16>>2];k=f+e|0;h=k>>>0>>0?h+1|0:h;if((g|0)<=(h|0)&k>>>0>p>>>0|(g|0)<(h|0)){break d}la(n,f+F[c>>2]|0,e);d=F[c+20>>2];f=e;e=e+F[c+16>>2]|0;d=f>>>0>e>>>0?d+1|0:d;F[c+16>>2]=e;F[c+20>>2]=d}j=ka(24);c=j;F[c+4>>2]=0;F[c+8>>2]=0;c=c+16|0;F[c>>2]=0;F[c+4>>2]=0;F[j>>2]=j+4;F[j+12>>2]=c;e=Z-32|0;Z=e;h=t+12|0;c=m+16|0;u=Ya(h,c);i=t+16|0;e:{if((u|0)==(i|0)){F[e+16>>2]=c;f:{g:{d=F[h+4>>2];h:{if(!d){f=h+4|0;c=f;break h}f=G[c+11|0];g=f<<24>>24<0;n=g?F[c>>2]:c;g=g?F[c+4>>2]:f;while(1){c=d;d=G[c+27|0];f=d<<24>>24<0;d=f?F[c+20>>2]:d;p=d>>>0>>0;i:{j:{k:{l:{k=p?d:g;m:{if(k){f=f?F[c+16>>2]:c+16|0;q=sa(n,f,k);if(!q){if(d>>>0>g>>>0){break m}break l}if((q|0)>=0){break l}break m}if(d>>>0<=g>>>0){break k}}f=c;d=F[c>>2];if(d){continue}break h}d=sa(f,n,k);if(d){break j}}if(p){break i}break g}if((d|0)>=0){break g}}d=F[c+4>>2];if(d){continue}break}f=c+4|0}d=ka(32);n=d+16|0;g=F[e+16>>2];n:{if(D[g+11|0]>=0){p=F[g+4>>2];F[n>>2]=F[g>>2];F[n+4>>2]=p;F[n+8>>2]=F[g+8>>2];break n}ra(n,F[g>>2],F[g+4>>2])}F[d+8>>2]=c;F[d>>2]=0;F[d+4>>2]=0;F[d+28>>2]=0;F[f>>2]=d;c=d;g=F[F[h>>2]>>2];if(g){F[h>>2]=g;c=F[f>>2]}nb(F[h+4>>2],c);F[h+8>>2]=F[h+8>>2]+1;c=1;break f}d=c;c=0}D[e+28|0]=c;F[e+24>>2]=d;d=F[e+24>>2];c=F[d+28>>2];F[d+28>>2]=j;if(!c){break e}Ca(c+12|0,F[c+16>>2]);Ba(c,F[c+4>>2]);ja(c);break e}if(!j){break e}Ca(j+12|0,F[j+16>>2]);Ba(j,F[j+4>>2]);ja(j)}Z=e+32|0;d=(i|0)!=(u|0)}if(D[m+27|0]<0){ja(F[m+16>>2])}if(d){break a}}if(!j){break a}F[m+16>>2]=0;if(!fb(1,m+16|0,F[a>>2])){break a}q=0;x=F[m+16>>2];if(x){while(1){d=0;i=Z-32|0;Z=i;F[i+24>>2]=0;F[i+16>>2]=0;F[i+20>>2]=0;c=F[a>>2];f=F[c+8>>2];o:{p:{h=F[c+12>>2];g=F[c+20>>2];e=F[c+16>>2];q:{if((h|0)<=(g|0)&e>>>0>=f>>>0|(g|0)>(h|0)){break q}f=G[e+F[c>>2]|0];h=c;c=g;e=e+1|0;c=e?c:c+1|0;F[h+16>>2]=e;F[h+20>>2]=c;Sb(i+16|0,f);if(f){e=F[a>>2];n=Tb(i+16|0);p=F[e+8>>2];g=F[e+12>>2];c=F[e+20>>2];h=F[e+16>>2];k=h+f|0;c=k>>>0>>0?c+1|0:c;if(k>>>0>p>>>0&(c|0)>=(g|0)|(c|0)>(g|0)){break q}la(n,h+F[e>>2]|0,f);c=F[e+20>>2];g=f;f=f+F[e+16>>2]|0;c=g>>>0>f>>>0?c+1|0:c;F[e+16>>2]=f;F[e+20>>2]=c}F[i+12>>2]=0;if(!fb(1,i+12|0,F[a>>2])){break q}f=F[i+12>>2];if(!f){break q}e=F[a>>2];c=F[e+8>>2];h=F[e+16>>2];g=c-h|0;c=F[e+12>>2]-(F[e+20>>2]+(c>>>0>>0)|0)|0;if((c|0)<=0&f>>>0>g>>>0|(c|0)<0){break q}F[i+8>>2]=0;F[i>>2]=0;F[i+4>>2]=0;if((f|0)<0){break p}d=ka(f);F[i>>2]=d;c=d+f|0;F[i+8>>2]=c;l=ma(d,0,f);F[i+4>>2]=c;h=F[e+12>>2];y=h;p=F[e+8>>2];c=F[e+20>>2];k=F[e+16>>2];g=f+k|0;c=g>>>0>>0?c+1|0:c;u=g;n=c;r:{if((c|0)<=(h|0)&g>>>0<=p>>>0|(c|0)<(h|0)){la(l,F[e>>2]+k|0,f);d=F[e+20>>2];c=f+F[e+16>>2]|0;d=c>>>0>>0?d+1|0:d;F[e+16>>2]=c;F[e+20>>2]=d;h=Z-48|0;Z=h;e=Ya(j,i+16|0);if((e|0)!=(j+4|0)){c=F[e+4>>2];s:{if(!c){c=e;while(1){d=F[c+8>>2];f=F[d>>2]!=(c|0);c=d;if(f){continue}break}break s}while(1){d=c;c=F[c>>2];if(c){continue}break}}if((e|0)==F[j>>2]){F[j>>2]=d}F[j+8>>2]=F[j+8>>2]-1;f=F[j+4>>2];t:{u:{g=e;d=e;e=F[d>>2];if(e){c=F[g+4>>2];if(!c){break u}while(1){d=c;c=F[c>>2];if(c){continue}break}}e=F[d+4>>2];if(e){break u}e=0;k=1;break t}F[e+8>>2]=F[d+8>>2];k=0}l=F[d+8>>2];c=F[l>>2];v:{if((d|0)==(c|0)){F[l>>2]=e;if((d|0)==(f|0)){c=0;f=e;break v}c=F[l+4>>2];break v}F[l+4>>2]=e}r=!G[d+12|0];if((d|0)!=(g|0)){l=F[g+8>>2];F[d+8>>2]=l;F[l+(((g|0)!=F[F[g+8>>2]>>2])<<2)>>2]=d;l=F[g>>2];F[d>>2]=l;F[l+8>>2]=d;l=F[g+4>>2];F[d+4>>2]=l;if(l){F[l+8>>2]=d}D[d+12|0]=G[g+12|0];f=(f|0)==(g|0)?d:f}w:{if(r|!f){break w}if(k){while(1){e=G[c+12|0];x:{d=F[c+8>>2];if(F[d>>2]!=(c|0)){if(!e){D[c+12|0]=1;D[d+12|0]=0;e=F[d+4>>2];k=F[e>>2];F[d+4>>2]=k;if(k){F[k+8>>2]=d}F[e+8>>2]=F[d+8>>2];k=F[d+8>>2];F[(((d|0)!=F[k>>2])<<2)+k>>2]=e;F[e>>2]=d;F[d+8>>2]=e;d=c;c=F[c>>2];f=(c|0)==(f|0)?d:f;c=F[c+4>>2]}y:{z:{d=F[c>>2];A:{if(!(G[d+12|0]?0:d)){e=F[c+4>>2];if(G[e+12|0]?0:e){break A}D[c+12|0]=0;c=F[c+8>>2];B:{if((f|0)==(c|0)){c=f;break B}if(G[c+12|0]){break x}}D[c+12|0]=1;break w}e=F[c+4>>2];if(!e){break z}}if(G[e+12|0]){break z}d=c;break y}D[d+12|0]=1;D[c+12|0]=0;e=F[d+4>>2];F[c>>2]=e;if(e){F[e+8>>2]=c}F[d+8>>2]=F[c+8>>2];e=F[c+8>>2];F[((F[e>>2]!=(c|0))<<2)+e>>2]=d;F[d+4>>2]=c;F[c+8>>2]=d;e=c}c=F[d+8>>2];D[d+12|0]=G[c+12|0];D[c+12|0]=1;D[e+12|0]=1;d=F[c+4>>2];e=F[d>>2];F[c+4>>2]=e;if(e){F[e+8>>2]=c}F[d+8>>2]=F[c+8>>2];e=F[c+8>>2];F[(((c|0)!=F[e>>2])<<2)+e>>2]=d;F[d>>2]=c;F[c+8>>2]=d;break w}if(!e){D[c+12|0]=1;D[d+12|0]=0;e=F[c+4>>2];F[d>>2]=e;if(e){F[e+8>>2]=d}F[c+8>>2]=F[d+8>>2];e=F[d+8>>2];F[(((d|0)!=F[e>>2])<<2)+e>>2]=c;F[c+4>>2]=d;F[d+8>>2]=c;f=(d|0)==(f|0)?c:f;c=F[d>>2]}e=F[c>>2];C:{if(!(!e|G[e+12|0])){d=c;break C}d=F[c+4>>2];if(!(G[d+12|0]?0:d)){D[c+12|0]=0;c=F[c+8>>2];if((c|0)!=(f|0)?G[c+12|0]:0){break x}D[c+12|0]=1;break w}if(e){if(!G[e+12|0]){d=c;break C}d=F[c+4>>2]}D[d+12|0]=1;D[c+12|0]=0;e=F[d>>2];F[c+4>>2]=e;if(e){F[e+8>>2]=c}F[d+8>>2]=F[c+8>>2];e=F[c+8>>2];F[((F[e>>2]!=(c|0))<<2)+e>>2]=d;F[d>>2]=c;F[c+8>>2]=d;e=c}c=F[d+8>>2];D[d+12|0]=G[c+12|0];D[c+12|0]=1;D[e+12|0]=1;d=F[c>>2];e=F[d+4>>2];F[c>>2]=e;if(e){F[e+8>>2]=c}F[d+8>>2]=F[c+8>>2];e=F[c+8>>2];F[(((c|0)!=F[e>>2])<<2)+e>>2]=d;F[d+4>>2]=c;F[c+8>>2]=d;break w}d=c;c=F[c+8>>2];c=F[(((d|0)==F[c>>2])<<2)+c>>2];continue}}D[e+12|0]=1}c=F[g+28>>2];if(c){F[g+32>>2]=c;ja(c)}if(D[g+27|0]<0){ja(F[g+16>>2])}ja(g)}F[h+8>>2]=0;F[h>>2]=0;F[h+4>>2]=0;c=F[i+4>>2];d=F[i>>2];f=c-d|0;e=0;D:{E:{if((c|0)!=(d|0)){if((f|0)<0){break E}e=ka(f);c=ma(e,0,f);g=c+f|0;F[h+8>>2]=g;F[h+4>>2]=g;F[h>>2]=c;c=d}la(e,c,f);F:{if(D[i+27|0]>=0){F[h+24>>2]=F[i+24>>2];c=F[i+20>>2];F[h+16>>2]=F[i+16>>2];F[h+20>>2]=c;break F}ra(h+16|0,F[i+16>>2],F[i+20>>2])}Tc(h+28|0,h);f=h+16|0;c=f;G:{H:{d=F[j+4>>2];I:{if(!d){e=j+4|0;c=e;break I}e=G[c+11|0];g=e<<24>>24<0;k=g?F[c>>2]:c;g=g?F[c+4>>2]:e;while(1){c=d;d=G[c+27|0];e=d<<24>>24<0;d=e?F[c+20>>2]:d;l=d>>>0>>0;J:{K:{L:{M:{r=l?d:g;N:{if(r){e=e?F[c+16>>2]:c+16|0;z=sa(k,e,r);if(!z){if(d>>>0>g>>>0){break N}break M}if((z|0)>=0){break M}break N}if(d>>>0<=g>>>0){break L}}e=c;d=F[c>>2];if(d){continue}break I}d=sa(e,k,r);if(d){break K}}if(l){break J}break H}if((d|0)>=0){break H}}d=F[c+4>>2];if(d){continue}break}e=c+4|0}d=ka(40);F[d+24>>2]=F[f+8>>2];g=F[f+4>>2];F[d+16>>2]=F[f>>2];F[d+20>>2]=g;F[f>>2]=0;F[f+4>>2]=0;F[f+8>>2]=0;Tc(d+28|0,f+12|0);F[d+8>>2]=c;F[d>>2]=0;F[d+4>>2]=0;F[e>>2]=d;c=d;f=F[F[j>>2]>>2];if(f){F[j>>2]=f;c=F[e>>2]}nb(F[j+4>>2],c);F[j+8>>2]=F[j+8>>2]+1;c=1;break G}d=c;c=0}D[h+44|0]=c;F[h+40>>2]=d;c=F[h+28>>2];if(c){F[h+32>>2]=c;ja(c)}if(D[h+27|0]<0){ja(F[h+16>>2])}c=F[h>>2];if(c){F[h+4>>2]=c;ja(c)}Z=h+48|0;break D}na();v()}d=F[i>>2];if(!d){break r}}F[i+4>>2]=d;ja(d)}d=(n|0)<=(y|0)&p>>>0>=u>>>0|(n|0)<(y|0)}if(D[i+27|0]<0){ja(F[i+16>>2])}Z=i+32|0;break o}na();v()}if(!d){break a}q=q+1|0;if((x|0)!=(q|0)){continue}break}}F[m+12>>2]=0;if(!fb(1,m+12|0,F[a>>2])){break a}c=F[a>>2];e=F[c+8>>2];f=F[c+16>>2];h=e-f|0;d=F[m+12>>2];c=F[c+12>>2]-(F[c+20>>2]+(e>>>0>>0)|0)|0;if(h>>>0>>0&(c|0)<=0|(c|0)<0){break a}if(d){q=0;h=((t|0)!=0)+w|0;while(1){O:{if(b>>>0>>0){F[b+8>>2]=h;F[b+4>>2]=0;F[b>>2]=j;b=b+12|0;d=F[m+12>>2];break O}c=b-o|0;g=(c|0)/12|0;b=g+1|0;if(b>>>0>=357913942){break c}e=(s-o|0)/12|0;f=e<<1;e=e>>>0>=178956970?357913941:b>>>0>>0?f:b;if(e){if(e>>>0>=357913942){break b}f=ka(L(e,12))}else{f=0}b=f+L(g,12)|0;F[b+8>>2]=h;F[b+4>>2]=0;F[b>>2]=j;c=pa(b+L((c|0)/-12|0,12)|0,o,c);s=f+L(e,12)|0;b=b+12|0;if(o){ja(o)}o=c}q=q+1|0;if(q>>>0>>0){continue}break}}if((b|0)!=(o|0)){continue}break}A=1;break a}na();v()}oa();v()}if(o){ja(o)}Z=m+32|0;return A}function me(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;h=Z-48|0;Z=h;a:{if((c|0)!=1){break a}i=F[a+4>>2];c=F[a+12>>2];F[h+40>>2]=0;F[h+32>>2]=0;F[h+36>>2]=0;F[h+24>>2]=0;F[h+28>>2]=0;F[h+16>>2]=0;F[h+20>>2]=0;F[h+8>>2]=0;F[h+12>>2]=0;d=h+8|0;b:{if((b|0)==-2){break b}k=F[F[F[i+4>>2]+8>>2]+(c<<2)>>2];if(($[F[F[i>>2]+8>>2]](i)|0)==1){j=Z-32|0;Z=j;l=F[F[F[i+4>>2]+8>>2]+(c<<2)>>2];c:{d:{e:{if(($[F[F[i>>2]+8>>2]](i)|0)!=1|b-1>>>0>5){break e}g=$[F[F[i>>2]+36>>2]](i)|0;f=$[F[F[i>>2]+44>>2]](i,c)|0;if(!g|!f){break e}c=$[F[F[i>>2]+40>>2]](i,c)|0;if(c){a=F[i+44>>2];F[j+12>>2]=c;F[j+8>>2]=a;F[j+20>>2]=f;F[j+16>>2]=f+12;f=j+8|0;a=0;f:{g:{switch(b-1|0){case 0:b=ka(60);F[b+4>>2]=l;F[b>>2]=2960;a=F[d+4>>2];F[b+8>>2]=F[d>>2];F[b+12>>2]=a;a=F[d+12>>2];F[b+16>>2]=F[d+8>>2];F[b+20>>2]=a;a=F[d+20>>2];F[b+24>>2]=F[d+16>>2];F[b+28>>2]=a;F[b+40>>2]=0;F[b+32>>2]=0;F[b+36>>2]=0;a=F[d+24>>2];g=F[d+28>>2];if((a|0)!=(g|0)){c=g-a|0;if((c|0)<0){break d}e=ka(c);F[b+32>>2]=e;F[b+40>>2]=(c&-4)+e;while(1){F[e>>2]=F[a>>2];e=e+4|0;a=a+4|0;if((g|0)!=(a|0)){continue}break}F[b+36>>2]=e}a=F[f+4>>2];F[b+44>>2]=F[f>>2];F[b+48>>2]=a;a=F[f+12>>2];F[b+52>>2]=F[f+8>>2];F[b+56>>2]=a;F[b>>2]=2252;a=b;break f;case 3:b=ka(112);F[b+4>>2]=l;F[b>>2]=2960;a=F[d+4>>2];F[b+8>>2]=F[d>>2];F[b+12>>2]=a;a=F[d+12>>2];F[b+16>>2]=F[d+8>>2];F[b+20>>2]=a;a=F[d+20>>2];F[b+24>>2]=F[d+16>>2];F[b+28>>2]=a;F[b+40>>2]=0;F[b+32>>2]=0;F[b+36>>2]=0;a=F[d+24>>2];g=F[d+28>>2];if((a|0)!=(g|0)){c=g-a|0;if((c|0)<0){break d}e=ka(c);F[b+32>>2]=e;F[b+40>>2]=(c&-4)+e;while(1){F[e>>2]=F[a>>2];e=e+4|0;a=a+4|0;if((g|0)!=(a|0)){continue}break}F[b+36>>2]=e}a=F[f+4>>2];F[b+44>>2]=F[f>>2];F[b+48>>2]=a;a=F[f+12>>2];F[b+52>>2]=F[f+8>>2];F[b+56>>2]=a;F[b+60>>2]=0;F[b+64>>2]=0;F[b>>2]=3016;F[b+68>>2]=0;F[b+72>>2]=0;F[b+76>>2]=0;F[b+80>>2]=0;F[b+84>>2]=0;F[b+88>>2]=0;F[b+92>>2]=0;F[b+96>>2]=0;F[b+100>>2]=0;F[b+104>>2]=0;F[b+108>>2]=0;a=b;break f;case 4:b=ka(104);F[b+4>>2]=l;F[b>>2]=2960;a=F[d+4>>2];F[b+8>>2]=F[d>>2];F[b+12>>2]=a;a=F[d+12>>2];F[b+16>>2]=F[d+8>>2];F[b+20>>2]=a;a=F[d+20>>2];F[b+24>>2]=F[d+16>>2];F[b+28>>2]=a;F[b+40>>2]=0;F[b+32>>2]=0;F[b+36>>2]=0;a=F[d+24>>2];g=F[d+28>>2];if((a|0)!=(g|0)){c=g-a|0;if((c|0)<0){break d}e=ka(c);F[b+32>>2]=e;F[b+40>>2]=(c&-4)+e;while(1){F[e>>2]=F[a>>2];e=e+4|0;a=a+4|0;if((g|0)!=(a|0)){continue}break}F[b+36>>2]=e}a=F[f+4>>2];F[b+44>>2]=F[f>>2];F[b+48>>2]=a;a=F[f+12>>2];F[b+52>>2]=F[f+8>>2];F[b+56>>2]=a;F[b+84>>2]=0;F[b+76>>2]=0;F[b+80>>2]=0;F[b+60>>2]=0;F[b+64>>2]=0;F[b>>2]=3264;a=F[f+4>>2];F[b+88>>2]=F[f>>2];F[b+92>>2]=a;a=F[f+12>>2];F[b+96>>2]=F[f+8>>2];F[b+100>>2]=a;a=b;break f;case 5:break g;default:break f}}a=ka(128);F[a+4>>2]=l;F[a>>2]=2960;b=F[d+4>>2];F[a+8>>2]=F[d>>2];F[a+12>>2]=b;b=F[d+12>>2];F[a+16>>2]=F[d+8>>2];F[a+20>>2]=b;b=F[d+20>>2];F[a+24>>2]=F[d+16>>2];F[a+28>>2]=b;F[a+40>>2]=0;F[a+32>>2]=0;F[a+36>>2]=0;h:{i:{c=F[d+28>>2];b=F[d+24>>2];if((c|0)!=(b|0)){c=c-b|0;if((c|0)<0){break i}b=ka(c);F[a+36>>2]=b;F[a+32>>2]=b;F[a+40>>2]=(c&-4)+b;e=F[d+24>>2];c=F[d+28>>2];if((e|0)!=(c|0)){while(1){F[b>>2]=F[e>>2];b=b+4|0;e=e+4|0;if((c|0)!=(e|0)){continue}break}}F[a+36>>2]=b}F[a>>2]=2904;b=F[f+4>>2];F[a+44>>2]=F[f>>2];F[a+48>>2]=b;b=F[f+12>>2];F[a+52>>2]=F[f+8>>2];F[a+56>>2]=b;b=a- -64|0;F[b>>2]=0;F[b+4>>2]=0;F[a+60>>2]=4128;F[a>>2]=3500;b=F[f+4>>2];F[a+72>>2]=F[f>>2];F[a+76>>2]=b;b=F[f+12>>2];F[a+80>>2]=F[f+8>>2];F[a+84>>2]=b;F[a+104>>2]=1065353216;F[a+108>>2]=-1;F[a+96>>2]=-1;F[a+100>>2]=-1;F[a+88>>2]=1;F[a+92>>2]=-1;F[a+60>>2]=3736;F[a+112>>2]=0;F[a+116>>2]=0;D[a+117|0]=0;D[a+118|0]=0;D[a+119|0]=0;D[a+120|0]=0;D[a+121|0]=0;D[a+122|0]=0;D[a+123|0]=0;D[a+124|0]=0;break h}na();v()}break f}e=a;break e}a=F[i+44>>2];F[j+12>>2]=g;F[j+8>>2]=a;F[j+20>>2]=f;F[j+16>>2]=f+12;f=j+8|0;a=0;j:{k:{switch(b-1|0){case 0:b=ka(60);F[b+4>>2]=l;F[b>>2]=2960;a=F[d+4>>2];F[b+8>>2]=F[d>>2];F[b+12>>2]=a;a=F[d+12>>2];F[b+16>>2]=F[d+8>>2];F[b+20>>2]=a;a=F[d+20>>2];F[b+24>>2]=F[d+16>>2];F[b+28>>2]=a;F[b+40>>2]=0;F[b+32>>2]=0;F[b+36>>2]=0;a=F[d+24>>2];g=F[d+28>>2];if((a|0)!=(g|0)){c=g-a|0;if((c|0)<0){break d}e=ka(c);F[b+32>>2]=e;F[b+40>>2]=(c&-4)+e;while(1){F[e>>2]=F[a>>2];e=e+4|0;a=a+4|0;if((g|0)!=(a|0)){continue}break}F[b+36>>2]=e}a=F[f+4>>2];F[b+44>>2]=F[f>>2];F[b+48>>2]=a;a=F[f+12>>2];F[b+52>>2]=F[f+8>>2];F[b+56>>2]=a;F[b>>2]=4156;a=b;break j;case 3:b=ka(112);F[b+4>>2]=l;F[b>>2]=2960;a=F[d+4>>2];F[b+8>>2]=F[d>>2];F[b+12>>2]=a;a=F[d+12>>2];F[b+16>>2]=F[d+8>>2];F[b+20>>2]=a;a=F[d+20>>2];F[b+24>>2]=F[d+16>>2];F[b+28>>2]=a;F[b+40>>2]=0;F[b+32>>2]=0;F[b+36>>2]=0;a=F[d+24>>2];g=F[d+28>>2];if((a|0)!=(g|0)){c=g-a|0;if((c|0)<0){break d}e=ka(c);F[b+32>>2]=e;F[b+40>>2]=(c&-4)+e;while(1){F[e>>2]=F[a>>2];e=e+4|0;a=a+4|0;if((g|0)!=(a|0)){continue}break}F[b+36>>2]=e}a=F[f+4>>2];F[b+44>>2]=F[f>>2];F[b+48>>2]=a;a=F[f+12>>2];F[b+52>>2]=F[f+8>>2];F[b+56>>2]=a;F[b+60>>2]=0;F[b+64>>2]=0;F[b>>2]=4580;F[b+68>>2]=0;F[b+72>>2]=0;F[b+76>>2]=0;F[b+80>>2]=0;F[b+84>>2]=0;F[b+88>>2]=0;F[b+92>>2]=0;F[b+96>>2]=0;F[b+100>>2]=0;F[b+104>>2]=0;F[b+108>>2]=0;a=b;break j;case 4:b=ka(104);F[b+4>>2]=l;F[b>>2]=2960;a=F[d+4>>2];F[b+8>>2]=F[d>>2];F[b+12>>2]=a;a=F[d+12>>2];F[b+16>>2]=F[d+8>>2];F[b+20>>2]=a;a=F[d+20>>2];F[b+24>>2]=F[d+16>>2];F[b+28>>2]=a;F[b+40>>2]=0;F[b+32>>2]=0;F[b+36>>2]=0;a=F[d+24>>2];g=F[d+28>>2];if((a|0)!=(g|0)){c=g-a|0;if((c|0)<0){break d}e=ka(c);F[b+32>>2]=e;F[b+40>>2]=(c&-4)+e;while(1){F[e>>2]=F[a>>2];e=e+4|0;a=a+4|0;if((g|0)!=(a|0)){continue}break}F[b+36>>2]=e}a=F[f+4>>2];F[b+44>>2]=F[f>>2];F[b+48>>2]=a;a=F[f+12>>2];F[b+52>>2]=F[f+8>>2];F[b+56>>2]=a;F[b+84>>2]=0;F[b+76>>2]=0;F[b+80>>2]=0;F[b+60>>2]=0;F[b+64>>2]=0;F[b>>2]=4816;a=F[f+4>>2];F[b+88>>2]=F[f>>2];F[b+92>>2]=a;a=F[f+12>>2];F[b+96>>2]=F[f+8>>2];F[b+100>>2]=a;a=b;break j;case 5:break k;default:break j}}a=ka(128);F[a+4>>2]=l;F[a>>2]=2960;b=F[d+4>>2];F[a+8>>2]=F[d>>2];F[a+12>>2]=b;b=F[d+12>>2];F[a+16>>2]=F[d+8>>2];F[a+20>>2]=b;b=F[d+20>>2];F[a+24>>2]=F[d+16>>2];F[a+28>>2]=b;F[a+40>>2]=0;F[a+32>>2]=0;F[a+36>>2]=0;l:{m:{c=F[d+28>>2];b=F[d+24>>2];if((c|0)!=(b|0)){c=c-b|0;if((c|0)<0){break m}b=ka(c);F[a+36>>2]=b;F[a+32>>2]=b;F[a+40>>2]=(c&-4)+b;e=F[d+24>>2];c=F[d+28>>2];if((e|0)!=(c|0)){while(1){F[b>>2]=F[e>>2];b=b+4|0;e=e+4|0;if((c|0)!=(e|0)){continue}break}}F[a+36>>2]=b}F[a>>2]=4524;b=F[f+4>>2];F[a+44>>2]=F[f>>2];F[a+48>>2]=b;b=F[f+12>>2];F[a+52>>2]=F[f+8>>2];F[a+56>>2]=b;b=a- -64|0;F[b>>2]=0;F[b+4>>2]=0;F[a+60>>2]=5624;F[a>>2]=5040;b=F[f+4>>2];F[a+72>>2]=F[f>>2];F[a+76>>2]=b;b=F[f+12>>2];F[a+80>>2]=F[f+8>>2];F[a+84>>2]=b;F[a+104>>2]=1065353216;F[a+108>>2]=-1;F[a+96>>2]=-1;F[a+100>>2]=-1;F[a+88>>2]=1;F[a+92>>2]=-1;F[a+60>>2]=5260;F[a+112>>2]=0;F[a+116>>2]=0;D[a+117|0]=0;D[a+118|0]=0;D[a+119|0]=0;D[a+120|0]=0;D[a+121|0]=0;D[a+122|0]=0;D[a+123|0]=0;D[a+124|0]=0;break l}na();v()}break j}e=a}Z=j+32|0;break c}na();v()}if(e){break b}}e=ka(44);F[e+4>>2]=k;F[e>>2]=2960;a=F[d+4>>2];F[e+8>>2]=F[d>>2];F[e+12>>2]=a;a=F[d+12>>2];F[e+16>>2]=F[d+8>>2];F[e+20>>2]=a;a=F[d+20>>2];F[e+24>>2]=F[d+16>>2];F[e+28>>2]=a;F[e+40>>2]=0;F[e+32>>2]=0;F[e+36>>2]=0;n:{c=F[d+24>>2];b=F[d+28>>2];if((c|0)!=(b|0)){a=b-c|0;if((a|0)<0){break n}k=ka(a);F[e+32>>2]=k;F[e+40>>2]=(a&-4)+k;while(1){F[k>>2]=F[c>>2];k=k+4|0;c=c+4|0;if((b|0)!=(c|0)){continue}break}F[e+36>>2]=k}F[e>>2]=5652;break b}na();v()}k=e;a=F[h+32>>2];if(!a){break a}F[h+36>>2]=a;ja(a)}Z=h+48|0;return k|0}function rf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,w=0,x=0,y=0,z=0,A=0;m=Z-16|0;Z=m;F[m+12>>2]=b;b=ka(32);F[m>>2]=b;F[m+4>>2]=24;F[m+8>>2]=-2147483616;c=G[1196]|G[1197]<<8|(G[1198]<<16|G[1199]<<24);d=G[1192]|G[1193]<<8|(G[1194]<<16|G[1195]<<24);D[b+16|0]=d;D[b+17|0]=d>>>8;D[b+18|0]=d>>>16;D[b+19|0]=d>>>24;D[b+20|0]=c;D[b+21|0]=c>>>8;D[b+22|0]=c>>>16;D[b+23|0]=c>>>24;c=G[1188]|G[1189]<<8|(G[1190]<<16|G[1191]<<24);d=G[1184]|G[1185]<<8|(G[1186]<<16|G[1187]<<24);D[b+8|0]=d;D[b+9|0]=d>>>8;D[b+10|0]=d>>>16;D[b+11|0]=d>>>24;D[b+12|0]=c;D[b+13|0]=c>>>8;D[b+14|0]=c>>>16;D[b+15|0]=c>>>24;c=G[1180]|G[1181]<<8|(G[1182]<<16|G[1183]<<24);d=G[1176]|G[1177]<<8|(G[1178]<<16|G[1179]<<24);D[b|0]=d;D[b+1|0]=d>>>8;D[b+2|0]=d>>>16;D[b+3|0]=d>>>24;D[b+4|0]=c;D[b+5|0]=c>>>8;D[b+6|0]=c>>>16;D[b+7|0]=c>>>24;D[b+24|0]=0;l=Z-48|0;Z=l;f=F[m+12>>2];d=a;a=a+16|0;b=F[a>>2];a:{b:{if(!b){break b}c=a;while(1){e=(f|0)>F[b+16>>2];c=e?c:b;b=F[(e?b+4|0:b)>>2];if(b){continue}break}if((a|0)==(c|0)){break b}if((f|0)>=F[c+16>>2]){break a}}F[l+28>>2]=0;F[l+32>>2]=0;y=l+24|0;F[l+24>>2]=y|4;a=l+16|0;F[a>>2]=0;F[a+4>>2]=0;F[l+8>>2]=f;F[l+12>>2]=a;t=l+8|0;a=t;x=Z-16|0;Z=x;u=d+12|0;c=F[u+4>>2];c:{d:{if(!c){o=u+4|0;d=o;break d}a=F[a>>2];while(1){d=c;b=F[c+16>>2];if((b|0)>(a|0)){o=d;c=F[d>>2];if(c){continue}break d}if((a|0)<=(b|0)){g=d;a=0;break c}c=F[d+4>>2];if(c){continue}break}o=d+4|0}g=ka(32);b=F[t>>2];q=g+24|0;a=q;F[a>>2]=0;F[a+4>>2]=0;F[g+16>>2]=b;r=g+20|0;F[r>>2]=a;c=F[t+4>>2];z=t+8|0;if((c|0)!=(z|0)){while(1){p=Z-16|0;Z=p;a=p+8|0;k=c+16|0;e:{f:{g:{h:{i:{j:{k:{f=q;e=r+4|0;l:{if((f|0)==(e|0)){break l}b=G[f+27|0];h=b<<24>>24<0;i=G[k+11|0];n=i<<24>>24;j=(n|0)<0;i=j?F[k+4>>2]:i;b=h?F[f+20>>2]:b;s=i>>>0>b>>>0;w=s?b:i;if(w){j=j?F[k>>2]:k;h=h?F[f+16>>2]:f+16|0;A=sa(j,h,w);if(!A){if(b>>>0>i>>>0){break l}break k}if((A|0)>=0){break k}break l}if(b>>>0<=i>>>0){break j}}h=F[f>>2];m:{a=f;n:{if((a|0)==F[r>>2]){break n}o:{if(!h){b=f;while(1){a=F[b+8>>2];i=F[a>>2]==(b|0);b=a;if(i){continue}break}break o}b=h;while(1){a=b;b=F[b+4>>2];if(b){continue}break}}i=G[k+11|0];s=i<<24>>24;b=(s|0)<0;j=G[a+27|0];n=j<<24>>24<0;p:{i=b?F[k+4>>2]:i;j=n?F[a+20>>2]:j;w=i>>>0>>0?i:j;if(w){b=sa(n?F[a+16>>2]:a+16|0,b?F[k>>2]:k,w);if(b){break p}}if(i>>>0>j>>>0){break n}break m}if((b|0)>=0){break m}}if(!h){F[p+12>>2]=f;a=f;break e}F[p+12>>2]=a;a=a+4|0;break e}b=F[e>>2];if(!b){F[p+12>>2]=e;a=e;break e}h=(s|0)<0?F[k>>2]:k;f=e;while(1){a=b;b=G[b+27|0];e=b<<24>>24<0;b=e?F[a+20>>2]:b;k=b>>>0>>0;q:{r:{s:{t:{n=k?b:i;u:{if(n){e=e?F[a+16>>2]:a+16|0;j=sa(h,e,n);if(!j){if(b>>>0>i>>>0){break u}break t}if((j|0)>=0){break t}break u}if(b>>>0<=i>>>0){break s}}f=a;b=F[a>>2];if(b){continue}break g}b=sa(e,h,n);if(b){break r}}if(k){break q}break g}if((b|0)>=0){break g}}f=a+4|0;b=F[a+4>>2];if(b){continue}break}break g}b=sa(h,j,w);if(b){break i}}if(s){break h}break f}if((b|0)>=0){break f}}h=F[f+4>>2];v:{if(!h){b=f;while(1){a=F[b+8>>2];j=F[a>>2]!=(b|0);b=a;if(j){continue}break}break v}b=h;while(1){a=b;b=F[b>>2];if(b){continue}break}}w:{x:{if((a|0)==(e|0)){break x}j=G[a+27|0];b=j<<24>>24<0;y:{j=b?F[a+20>>2]:j;s=i>>>0>j>>>0?j:i;if(s){b=sa((n|0)<0?F[k>>2]:k,b?F[a+16>>2]:a+16|0,s);if(b){break y}}if(i>>>0>>0){break x}break w}if((b|0)>=0){break w}}if(!h){F[p+12>>2]=f;a=f+4|0;break e}F[p+12>>2]=a;break e}b=F[e>>2];if(!b){F[p+12>>2]=e;a=e;break e}h=(n|0)<0?F[k>>2]:k;f=e;while(1){a=b;b=G[b+27|0];e=b<<24>>24<0;b=e?F[a+20>>2]:b;k=b>>>0>>0;z:{A:{B:{C:{n=k?b:i;D:{if(n){e=e?F[a+16>>2]:a+16|0;j=sa(h,e,n);if(!j){if(b>>>0>i>>>0){break D}break C}if((j|0)>=0){break C}break D}if(b>>>0<=i>>>0){break B}}f=a;b=F[a>>2];if(b){continue}break g}b=sa(e,h,n);if(b){break A}}if(k){break z}break g}if((b|0)>=0){break g}}f=a+4|0;b=F[a+4>>2];if(b){continue}break}}F[p+12>>2]=a;a=f;break e}F[p+12>>2]=f;F[a>>2]=f}f=a;a=F[a>>2];if(a){b=0}else{a=ka(40);b=a+16|0;E:{if(D[c+27|0]>=0){e=F[c+20>>2];F[b>>2]=F[c+16>>2];F[b+4>>2]=e;F[b+8>>2]=F[c+24>>2];break E}ra(b,F[c+16>>2],F[c+20>>2])}b=a+28|0;F:{if(D[c+39|0]>=0){e=F[c+32>>2];F[b>>2]=F[c+28>>2];F[b+4>>2]=e;F[b+8>>2]=F[c+36>>2];break F}ra(b,F[c+28>>2],F[c+32>>2])}F[a+8>>2]=F[p+12>>2];F[a>>2]=0;F[a+4>>2]=0;F[f>>2]=a;b=a;e=F[F[r>>2]>>2];if(e){F[r>>2]=e;b=F[f>>2]}nb(F[r+4>>2],b);F[r+8>>2]=F[r+8>>2]+1;b=1}D[x+12|0]=b;F[x+8>>2]=a;Z=p+16|0;b=F[c+4>>2];G:{if(b){while(1){c=b;b=F[b>>2];if(b){continue}break G}}while(1){a=c;c=F[c+8>>2];if((a|0)!=F[c>>2]){continue}break}}if((c|0)!=(z|0)){continue}break}}F[g+8>>2]=d;F[g>>2]=0;F[g+4>>2]=0;F[o>>2]=g;c=g;a=F[F[u>>2]>>2];if(a){F[u>>2]=a;c=F[o>>2]}nb(F[u+4>>2],c);F[u+8>>2]=F[u+8>>2]+1;a=1}D[l+44|0]=a;F[l+40>>2]=g;Z=x+16|0;c=F[l+40>>2];ib(t|4,F[l+16>>2]);ib(y,F[l+28>>2])}f=Z-48|0;Z=f;d=f+8|0;g=Z-32|0;Z=g;o=g+32|0;b=o;a=g+21|0;H:{if((b|0)==(a|0)){break H}}e=b-a|0;I:{if((e|0)<=9){h=61;if((e|0)<(I[2684]<=1|0)){break I}}D[a|0]=49;b=a+1|0;h=0}F[g+12>>2]=h;F[g+8>>2]=b;h=Z-16|0;Z=h;e=Z-16|0;Z=e;J:{q=F[g+8>>2];g=q-a|0;if(g>>>0<=2147483631){K:{if(g>>>0<11){D[d+11|0]=g|G[d+11|0]&128;D[d+11|0]=G[d+11|0]&127;b=d;break K}t=e+8|0;if(g>>>0>=11){k=g+16&-16;b=k-1|0;b=(b|0)==11?k:b}else{b=10}sb(t,b+1|0);b=F[e+8>>2];F[d>>2]=b;F[d+8>>2]=F[d+8>>2]&-2147483648|F[e+12>>2]&2147483647;F[d+8>>2]=F[d+8>>2]|-2147483648;F[d+4>>2]=g}while(1){if((a|0)!=(q|0)){D[b|0]=G[a|0];b=b+1|0;a=a+1|0;continue}break}D[e+7|0]=0;D[b|0]=G[e+7|0];Z=e+16|0;break J}za();v()}Z=h+16|0;Z=o;F[f+32>>2]=m;L:{M:{a=c+20|0;d=F[a+4>>2];N:{if(!d){g=a+4|0;c=g;break N}b=G[m+11|0];c=b<<24>>24<0;e=c?F[m>>2]:m;b=c?F[m+4>>2]:b;while(1){c=d;d=G[c+27|0];g=d<<24>>24<0;d=g?F[c+20>>2]:d;o=d>>>0>>0;O:{P:{Q:{R:{h=o?d:b;S:{if(h){g=g?F[c+16>>2]:c+16|0;q=sa(e,g,h);if(!q){if(b>>>0>>0){break S}break R}if((q|0)>=0){break R}break S}if(b>>>0>=d>>>0){break Q}}g=c;d=F[c>>2];if(d){continue}break N}d=sa(g,e,h);if(d){break P}}if(o){break O}break M}if((d|0)>=0){break M}}d=F[c+4>>2];if(d){continue}break}g=c+4|0}d=ka(40);e=d+16|0;b=F[f+32>>2];T:{if(D[b+11|0]>=0){o=F[b+4>>2];F[e>>2]=F[b>>2];F[e+4>>2]=o;F[e+8>>2]=F[b+8>>2];break T}ra(e,F[b>>2],F[b+4>>2])}F[d+8>>2]=c;F[d>>2]=0;F[d+4>>2]=0;F[d+36>>2]=0;F[d+28>>2]=0;F[d+32>>2]=0;F[g>>2]=d;c=d;b=F[F[a>>2]>>2];if(b){F[a>>2]=b;c=F[g>>2]}nb(F[a+4>>2],c);F[a+8>>2]=F[a+8>>2]+1;a=1;break L}d=c;a=0}D[f+44|0]=a;F[f+40>>2]=d;a=F[f+40>>2];if(D[a+39|0]<0){ja(F[a+28>>2])}b=F[f+12>>2];F[a+28>>2]=F[f+8>>2];F[a+32>>2]=b;F[a+36>>2]=F[f+16>>2];Z=f+48|0;Z=l+48|0;if(D[m+11|0]<0){ja(F[m>>2])}Z=m+16|0}function zd(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,w=0;h=Z-32|0;Z=h;g=F[F[a+4>>2]+44>>2];c=F[a+8>>2];d=F[c>>2];c=F[c+4>>2];F[h+24>>2]=0;F[h+16>>2]=0;F[h+20>>2]=0;d=(c-d>>2>>>0)/3|0;c=F[g+96>>2];f=(F[g+100>>2]-c|0)/12|0;a:{if(d>>>0>f>>>0){e=d-f|0;i=F[g+104>>2];c=F[g+100>>2];if(e>>>0<=(i-c|0)/12>>>0){b:{if(!e){break b}d=c;f=L(e,12)-12|0;i=((f>>>0)/12|0)+1&3;if(i){while(1){l=F[h+20>>2];F[d>>2]=F[h+16>>2];F[d+4>>2]=l;F[d+8>>2]=F[h+24>>2];d=d+12|0;j=j+1|0;if((i|0)!=(j|0)){continue}break}}c=L(e,12)+c|0;if(f>>>0<36){break b}while(1){f=F[h+20>>2];F[d>>2]=F[h+16>>2];F[d+4>>2]=f;F[d+8>>2]=F[h+24>>2];F[d+20>>2]=F[h+24>>2];f=F[h+20>>2];F[d+12>>2]=F[h+16>>2];F[d+16>>2]=f;F[d+32>>2]=F[h+24>>2];f=F[h+20>>2];F[d+24>>2]=F[h+16>>2];F[d+28>>2]=f;f=F[h+20>>2];F[d+36>>2]=F[h+16>>2];F[d+40>>2]=f;F[d+44>>2]=F[h+24>>2];d=d+48|0;if((d|0)!=(c|0)){continue}break}}F[g+100>>2]=c;break a}c:{f=F[g+96>>2];n=(c-f|0)/12|0;d=n+e|0;if(d>>>0<357913942){f=(i-f|0)/12|0;i=f<<1;i=f>>>0>=178956970?357913941:d>>>0>>0?i:d;if(i){if(i>>>0>=357913942){break c}l=ka(L(i,12))}f=L(n,12)+l|0;d=f;e=L(e,12);n=e-12|0;q=((n>>>0)/12|0)+1&3;if(q){while(1){r=F[h+20>>2];F[d>>2]=F[h+16>>2];F[d+4>>2]=r;F[d+8>>2]=F[h+24>>2];d=d+12|0;j=j+1|0;if((q|0)!=(j|0)){continue}break}}e=e+f|0;if(n>>>0>=36){while(1){j=F[h+20>>2];F[d>>2]=F[h+16>>2];F[d+4>>2]=j;F[d+8>>2]=F[h+24>>2];F[d+20>>2]=F[h+24>>2];j=F[h+20>>2];F[d+12>>2]=F[h+16>>2];F[d+16>>2]=j;F[d+32>>2]=F[h+24>>2];j=F[h+20>>2];F[d+24>>2]=F[h+16>>2];F[d+28>>2]=j;j=F[h+20>>2];F[d+36>>2]=F[h+16>>2];F[d+40>>2]=j;F[d+44>>2]=F[h+24>>2];d=d+48|0;if((e|0)!=(d|0)){continue}break}}j=F[g+96>>2];if((j|0)!=(c|0)){while(1){c=c-12|0;n=F[c+4>>2];f=f-12|0;d=f;F[d>>2]=F[c>>2];F[d+4>>2]=n;F[d+8>>2]=F[c+8>>2];if((c|0)!=(j|0)){continue}break}c=F[g+96>>2]}F[g+104>>2]=L(i,12)+l;F[g+100>>2]=e;F[g+96>>2]=f;if(c){ja(c)}break a}na();v()}oa();v()}if(d>>>0>=f>>>0){break a}F[g+100>>2]=c+L(d,12)}d:{if(F[a+216>>2]==F[a+220>>2]){j=F[a+4>>2];c=F[j+44>>2];d=F[c+100>>2];f=F[c+96>>2];if((d|0)!=(f|0)){c=(d-f|0)/12|0;o=c>>>0<=1?1:c;c=0;while(1){d=F[a+8>>2];i=f+L(c,12)|0;g=L(c,3);e:{f:{if((g|0)==-1){e=F[(F[d>>2]+(g<<2)|0)+4>>2];k=-1;g=1;break f}e=-1;k=F[F[d>>2]+(g<<2)>>2];l=g+1|0;if((l|0)==-1){g=0;break f}e=F[F[d>>2]+(l<<2)>>2];g=g+2|0;m=-1;if((g|0)==-1){break e}}m=F[F[d>>2]+(g<<2)>>2]}F[i+8>>2]=m;F[i+4>>2]=e;F[i>>2]=k;c=c+1|0;if((o|0)!=(c|0)){continue}break}}F[F[j+4>>2]+80>>2]=b;c=1;break d}d=0;F[h+24>>2]=0;F[h+16>>2]=0;F[h+20>>2]=0;l=F[a+8>>2];c=F[l>>2];g=F[l+4>>2];F[h+8>>2]=0;F[h>>2]=0;F[h+4>>2]=0;b=0;g:{h:{i:{j:{k:{l:{if((c|0)!=(g|0)){c=g-c|0;if((c|0)<0){break l}b=ka(c);F[h>>2]=b;F[h+8>>2]=(c&-4)+b;u=h,w=ma(b,0,c)+c|0,F[u+4>>2]=w}c=F[l+24>>2];if((F[l+28>>2]-c|0)<4){break h}f=0;while(1){g=F[(p<<2)+c>>2];m:{if((g|0)==-1){break m}n:{if(F[F[a+120>>2]+(p>>>3&536870908)>>2]>>>p&1){break n}n=F[a+216>>2];c=F[a+220>>2];if((n|0)==(c|0)){break n}e=g+2|0;i=(g>>>0)%3|0;q=i?g-1|0:e;c=(c-n|0)/144|0;r=c>>>0<=1?1:c;j=0;t=(i|0)!=0|(e|0)!=-1;while(1){s=g<<2;i=L(j,144)+n|0;c=F[s+F[F[i+68>>2]>>2]>>2];o:{if(!(F[F[i+16>>2]+(c>>>3&536870908)>>2]>>>c&1)){break o}c=-1;p:{if(!t){break p}e=F[F[l+12>>2]+(q<<2)>>2];c=-1;if((e|0)==-1){break p}c=e-1|0;if((e>>>0)%3|0){break p}c=e+2|0}if((g|0)==(c|0)){break o}e=s;s=F[i+32>>2];i=F[e+s>>2];while(1){e=0;if((c|0)==-1){break g}if((i|0)!=F[s+(c<<2)>>2]){g=c;break n}q:{r:{if((c>>>0)%3|0){e=c-1|0;break r}e=c+2|0;m=-1;if((e|0)==-1){break q}}c=F[F[l+12>>2]+(e<<2)>>2];m=-1;if((c|0)==-1){break q}m=c-1|0;if((c>>>0)%3|0){break q}m=c+2|0}c=m;if((g|0)!=(c|0)){continue}break}}j=j+1|0;if((r|0)!=(j|0)){continue}break}}i=k-f|0;e=i>>2;F[(g<<2)+b>>2]=e;s:{if(k>>>0>>0){F[k>>2]=g;k=k+4|0;F[h+20>>2]=k;break s}c=e+1|0;if(c>>>0>=1073741824){break k}d=o-f|0;k=d>>>1|0;c=d>>>0>=2147483644?1073741823:c>>>0>>0?k:c;if(c){if(c>>>0>=1073741824){break j}d=ka(c<<2)}else{d=0}e=d+(e<<2)|0;F[e>>2]=g;m=c<<2;c=pa(d,f,i);o=m+c|0;F[h+24>>2]=o;k=e+4|0;F[h+20>>2]=k;F[h+16>>2]=c;if(f){ja(f);l=F[a+8>>2]}f=c}if((g|0)==-1){break m}t:{if((g>>>0)%3|0){c=g-1|0;break t}c=g+2|0;if((c|0)==-1){break m}}c=F[F[l+12>>2]+(c<<2)>>2];if((c|0)==-1){break m}c=c+((c>>>0)%3|0?-1:2)|0;if((c|0)==-1){break m}e=g;if((c|0)==(g|0)){break m}while(1){i=c;u:{v:{c=F[a+220>>2];j=F[a+216>>2];if((c|0)==(j|0)){break v}c=(c-j|0)/144|0;n=c>>>0<=1?1:c;c=0;while(1){q=F[(j+L(c,144)|0)+32>>2];r=i<<2;if(F[q+r>>2]==F[q+(e<<2)>>2]){c=c+1|0;if((n|0)!=(c|0)){continue}break v}break}j=k-d|0;e=j>>2;F[b+r>>2]=e;if(k>>>0>>0){F[k>>2]=i;k=k+4|0;F[h+20>>2]=k;f=d;break u}c=e+1|0;if(c>>>0>=1073741824){break i}f=o-d|0;k=f>>>1|0;c=f>>>0>=2147483644?1073741823:c>>>0>>0?k:c;if(c){if(c>>>0>=1073741824){break j}f=ka(c<<2)}else{f=0}e=f+(e<<2)|0;F[e>>2]=i;m=c<<2;c=pa(f,d,j);o=m+c|0;F[h+24>>2]=o;k=e+4|0;F[h+20>>2]=k;F[h+16>>2]=c;if(!d){d=c;break u}ja(d);l=F[a+8>>2];d=c;break u}F[(i<<2)+b>>2]=F[(e<<2)+b>>2]}if((i|0)==-1){break m}w:{if((i>>>0)%3|0){c=i-1|0;break w}c=i+2|0;if((c|0)==-1){break m}}c=F[F[l+12>>2]+(c<<2)>>2];if((c|0)==-1){break m}c=c+((c>>>0)%3|0?-1:2)|0;if((c|0)==-1){break m}e=i;if((c|0)!=(g|0)){continue}break}}p=p+1|0;c=F[l+24>>2];if((p|0)>2]-c>>2){continue}break}break h}na();v()}na();v()}oa();v()}na();v()}i=F[a+4>>2];a=F[i+44>>2];c=F[a+100>>2];a=F[a+96>>2];x:{if((c|0)==(a|0)){break x}g=(c-a|0)/12|0;f=g>>>0<=1?1:g;l=f&1;c=0;if(g>>>0>=2){j=f&-2;g=0;while(1){e=L(c,12);f=e+b|0;o=F[f>>2];p=F[f+4>>2];e=a+e|0;F[e+8>>2]=F[f+8>>2];F[e>>2]=o;F[e+4>>2]=p;e=L(c|1,12);f=e+b|0;o=F[f>>2];p=F[f+4>>2];e=a+e|0;F[e+8>>2]=F[f+8>>2];F[e>>2]=o;F[e+4>>2]=p;c=c+2|0;g=g+2|0;if((j|0)!=(g|0)){continue}break}}if(!l){break x}g=L(c,12);c=g+b|0;f=F[c>>2];e=F[c+4>>2];a=a+g|0;F[a+8>>2]=F[c+8>>2];F[a>>2]=f;F[a+4>>2]=e}F[F[i+4>>2]+80>>2]=k-d>>2;e=1}c=e;if(b){ja(b)}if(!d){break d}F[h+20>>2]=d;ja(d)}Z=h+32|0;return c}function de(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0,O=0,P=0;g=Z+-64|0;Z=g;F[a+8>>2]=e;y=a+32|0;f=F[y>>2];d=F[a+36>>2]-f>>2;a:{b:{if(d>>>0>>0){qa(y,e-d|0);F[g+56>>2]=0;F[g+60>>2]=0;F[g+48>>2]=0;F[g+52>>2]=0;F[g+40>>2]=0;F[g+44>>2]=0;F[g+32>>2]=0;F[g+36>>2]=0;F[g+24>>2]=0;F[g+28>>2]=0;F[g+16>>2]=0;F[g+20>>2]=0;F[g>>2]=0;break b}if(d>>>0>e>>>0){F[a+36>>2]=f+(e<<2)}F[g+56>>2]=0;F[g+60>>2]=0;F[g+48>>2]=0;F[g+52>>2]=0;F[g+40>>2]=0;F[g+44>>2]=0;F[g+32>>2]=0;F[g+36>>2]=0;F[g+24>>2]=0;F[g+28>>2]=0;F[g+16>>2]=0;F[g+20>>2]=0;F[g>>2]=0;d=0;if(!e){break a}}Fa(g+16|0,e,g);h=F[g+28>>2];d=F[g+32>>2]}F[g>>2]=0;d=d-h>>2;c:{if(d>>>0>=e>>>0){if(d>>>0<=e>>>0){break c}F[g+32>>2]=(e<<2)+h;break c}Fa(g+16|12,e-d|0,g)}F[g>>2]=0;f=F[g+40>>2];d=F[g+44>>2]-f>>2;d:{if(d>>>0>=e>>>0){if(d>>>0<=e>>>0){break d}F[g+44>>2]=f+(e<<2);break d}Fa(g+40|0,e-d|0,g)}F[g>>2]=0;f=F[g+52>>2];d=F[g+56>>2]-f>>2;e:{if(d>>>0>=e>>>0){if(d>>>0<=e>>>0){break e}F[g+56>>2]=f+(e<<2);break e}Fa(g+52|0,e-d|0,g)}f:{if(F[a+8>>2]<=0){break f}i=F[g+16>>2];j=F[a+32>>2];h=0;while(1){d=h<<2;f=F[d+i>>2];m=F[a+16>>2];g:{if((f|0)>(m|0)){F[d+j>>2]=m;break g}d=d+j|0;m=F[a+12>>2];if((m|0)>(f|0)){F[d>>2]=m;break g}F[d>>2]=f}h=h+1|0;d=F[a+8>>2];if((h|0)<(d|0)){continue}break}if((d|0)<=0){break f}d=0;while(1){i=d<<2;f=i+c|0;i=F[b+i>>2]+F[j+i>>2]|0;F[f>>2]=i;h:{if((i|0)>F[a+16>>2]){i=i-F[a+20>>2]|0}else{if((i|0)>=F[a+12>>2]){break h}i=i+F[a+20>>2]|0}F[f>>2]=i}d=d+1|0;if((d|0)>2]){continue}break}}H=F[a+52>>2];t=F[a+48>>2];z=ka(16);d=z;F[d>>2]=0;F[d+4>>2]=0;F[d+8>>2]=0;F[d+12>>2]=0;F[g+8>>2]=0;F[g>>2]=0;F[g+4>>2]=0;i:{if(e){if(e>>>0>=1073741824){break i}d=e<<2;r=ka(d);F[g>>2]=r;F[g+8>>2]=d+r;ma(r,0,d)}A=1;d=F[a+56>>2];B=F[d>>2];d=F[d+4>>2]-B|0;j:{if((d|0)<8){break j}w=d>>2;I=(w|0)<=2?2:w;J=w>>>0<=1?1:w;C=e&-2;D=e&1;K=e&-4;E=e&3;G=e-1|0;M=e<<2;N=e>>>0<4;A=0;m=1;while(1){k:{l:{m:{n:{if((m|0)!=(J|0)){o:{p:{f=F[(m<<2)+B>>2];if((f|0)==-1){break p}k=1;d=f+2|0;j=(f>>>0)%3|0;x=j?f-1|0:d;s=1<>2];O=n+(x>>>3&536870908)|0;i=0;P=(j|0)!=0|(d|0)!=-1;d=f;q:{while(1){r:{if(F[n+(d>>>3&536870908)>>2]>>>d&1){break r}j=F[F[F[t+64>>2]+12>>2]+(d<<2)>>2];if((j|0)==-1){break r}l=F[H>>2];h=F[t+28>>2];p=F[l+(F[h+(j<<2)>>2]<<2)>>2];if((p|0)>=(m|0)){break r}q=j+1|0;q=F[l+(F[h+(((q>>>0)%3|0?q:j-2|0)<<2)>>2]<<2)>>2];if((q|0)>=(m|0)){break r}h=F[l+(F[h+(j+((j>>>0)%3|0?-1:2)<<2)>>2]<<2)>>2];if((h|0)>=(m|0)){break r}s:{if(!e){break s}j=F[(g+16|0)+L(i,12)>>2];l=L(e,h);q=L(e,q);p=L(e,p);h=0;o=0;if(G){while(1){F[j+(h<<2)>>2]=(F[(h+l<<2)+c>>2]+F[(h+q<<2)+c>>2]|0)-F[(h+p<<2)+c>>2];u=h|1;F[j+(u<<2)>>2]=(F[(l+u<<2)+c>>2]+F[(q+u<<2)+c>>2]|0)-F[(p+u<<2)+c>>2];h=h+2|0;o=o+2|0;if((C|0)!=(o|0)){continue}break}}if(!D){break s}F[j+(h<<2)>>2]=(F[(h+l<<2)+c>>2]+F[(h+q<<2)+c>>2]|0)-F[(h+p<<2)+c>>2]}j=4;i=i+1|0;if((i|0)==4){break q}}t:{if(k&1){h=d-2|0;j=d+1|0;d=-1;j=(j>>>0)%3|0?j:h;if((j|0)==-1|F[n+(j>>>3&536870908)>>2]>>>j&1){break t}j=F[F[F[t+64>>2]+12>>2]+(j<<2)>>2];if((j|0)==-1){break t}d=j+1|0;d=(d>>>0)%3|0?d:j-2|0;break t}u:{if((d>>>0)%3|0){h=d-1|0;break u}h=d+2|0;d=-1;if((h|0)==-1){break t}}d=-1;if(F[n+(h>>>3&536870908)>>2]>>>h&1){break t}j=F[F[F[t+64>>2]+12>>2]+(h<<2)>>2];if((j|0)==-1){break t}if((j>>>0)%3|0){d=j-1|0;break t}d=j+2|0}v:{if((d|0)==(f|0)){break v}if((d|0)==-1&k){if(!P|s&F[O>>2]){break v}d=F[F[F[t+64>>2]+12>>2]+(x<<2)>>2];if((d|0)==-1){break v}k=0;d=(d>>>0)%3|0?d-1|0:d+2|0}if((d|0)!=-1){continue}}break}j=i;if((j|0)<=0){break p}}if(e){ma(r,0,M)}d=j-1|0;q=(d<<2)+z|0;d=L(d,12)+a|0;u=d;x=F[d- -64>>2];k=0;d=F[g>>2];f=0;while(1){i=F[q>>2];F[q>>2]=i+1;if(i>>>0>=x>>>0){break j}w:{if(F[F[u+60>>2]+(i>>>3&536870908)>>2]>>>i&1){break w}f=f+1|0;if(!e){break w}n=F[(g+16|0)+L(k,12)>>2];i=0;h=0;p=0;if(!N){while(1){l=h<<2;o=l+d|0;F[o>>2]=F[l+n>>2]+F[o>>2];o=l|4;s=o+d|0;F[s>>2]=F[n+o>>2]+F[s>>2];o=l|8;s=o+d|0;F[s>>2]=F[n+o>>2]+F[s>>2];l=l|12;o=l+d|0;F[o>>2]=F[l+n>>2]+F[o>>2];h=h+4|0;p=p+4|0;if((K|0)!=(p|0)){continue}break}}if(!E){break w}while(1){l=h<<2;p=l+d|0;F[p>>2]=F[l+n>>2]+F[p>>2];h=h+1|0;i=i+1|0;if((E|0)!=(i|0)){continue}break}}k=k+1|0;if((k|0)!=(j|0)){continue}break}i=L(e,m);if(!f){break o}if(!e){break l}h=0;d=0;if(G){break n}break m}i=L(e,m)}if(F[a+8>>2]<=0){break k}k=(L(m-1|0,e)<<2)+c|0;j=F[y>>2];h=0;while(1){d=h<<2;f=F[d+k>>2];n=F[a+16>>2];x:{if((f|0)>(n|0)){F[d+j>>2]=n;break x}d=d+j|0;n=F[a+12>>2];if((n|0)>(f|0)){F[d>>2]=n;break x}F[d>>2]=f}h=h+1|0;f=F[a+8>>2];if((h|0)<(f|0)){continue}break}d=0;if((f|0)<=0){break k}f=i<<2;h=f+c|0;k=b+f|0;while(1){i=d<<2;f=i+h|0;i=F[i+k>>2]+F[j+i>>2]|0;F[f>>2]=i;y:{if((i|0)>F[a+16>>2]){i=i-F[a+20>>2]|0}else{if((i|0)>=F[a+12>>2]){break y}i=i+F[a+20>>2]|0}F[f>>2]=i}d=d+1|0;if((d|0)>2]){continue}break}break k}ta();v()}while(1){j=h<<2;k=j+r|0;F[k>>2]=F[k>>2]/(f|0);j=(j|4)+r|0;F[j>>2]=F[j>>2]/(f|0);h=h+2|0;d=d+2|0;if((C|0)!=(d|0)){continue}break}}if(!D){break l}d=(h<<2)+r|0;F[d>>2]=F[d>>2]/(f|0)}if(F[a+8>>2]<=0){break k}j=F[y>>2];h=0;while(1){d=h<<2;f=F[d+r>>2];k=F[a+16>>2];z:{if((f|0)>(k|0)){F[d+j>>2]=k;break z}d=d+j|0;k=F[a+12>>2];if((k|0)>(f|0)){F[d>>2]=k;break z}F[d>>2]=f}h=h+1|0;f=F[a+8>>2];if((h|0)<(f|0)){continue}break}d=0;if((f|0)<=0){break k}f=i<<2;h=f+c|0;k=b+f|0;while(1){i=d<<2;f=i+h|0;i=F[i+k>>2]+F[j+i>>2]|0;F[f>>2]=i;A:{if((i|0)>F[a+16>>2]){i=i-F[a+20>>2]|0}else{if((i|0)>=F[a+12>>2]){break A}i=i+F[a+20>>2]|0}F[f>>2]=i}d=d+1|0;if((d|0)>2]){continue}break}}m=m+1|0;A=(w|0)<=(m|0);if((m|0)!=(I|0)){continue}break}}a=F[g>>2];if(a){ja(a)}ja(z);a=F[g+52>>2];if(a){F[g+56>>2]=a;ja(a)}a=F[g+40>>2];if(a){F[g+44>>2]=a;ja(a)}a=F[g+28>>2];if(a){F[g+32>>2]=a;ja(a)}a=F[g+16>>2];if(a){F[g+20>>2]=a;ja(a)}Z=g- -64|0;return A|0}na();v()}function $h(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,D=0,E=0,G=0,H=0,I=0,J=0,K=0,M=0,N=0;h=Z+-64|0;Z=h;F[a+8>>2]=e;x=a+32|0;f=F[x>>2];d=F[a+36>>2]-f>>2;a:{b:{if(d>>>0>>0){qa(x,e-d|0);F[h+56>>2]=0;F[h+60>>2]=0;F[h+48>>2]=0;F[h+52>>2]=0;F[h+40>>2]=0;F[h+44>>2]=0;F[h+32>>2]=0;F[h+36>>2]=0;F[h+24>>2]=0;F[h+28>>2]=0;F[h+16>>2]=0;F[h+20>>2]=0;F[h>>2]=0;break b}if(d>>>0>e>>>0){F[a+36>>2]=f+(e<<2)}F[h+56>>2]=0;F[h+60>>2]=0;F[h+48>>2]=0;F[h+52>>2]=0;F[h+40>>2]=0;F[h+44>>2]=0;F[h+32>>2]=0;F[h+36>>2]=0;F[h+24>>2]=0;F[h+28>>2]=0;F[h+16>>2]=0;F[h+20>>2]=0;F[h>>2]=0;d=0;if(!e){break a}}Fa(h+16|0,e,h);i=F[h+28>>2];d=F[h+32>>2]}F[h>>2]=0;d=d-i>>2;c:{if(d>>>0>=e>>>0){if(d>>>0<=e>>>0){break c}F[h+32>>2]=(e<<2)+i;break c}Fa(h+16|12,e-d|0,h)}F[h>>2]=0;f=F[h+40>>2];d=F[h+44>>2]-f>>2;d:{if(d>>>0>=e>>>0){if(d>>>0<=e>>>0){break d}F[h+44>>2]=f+(e<<2);break d}Fa(h+40|0,e-d|0,h)}F[h>>2]=0;f=F[h+52>>2];d=F[h+56>>2]-f>>2;e:{if(d>>>0>=e>>>0){if(d>>>0<=e>>>0){break e}F[h+56>>2]=f+(e<<2);break e}Fa(h+52|0,e-d|0,h)}f:{if(F[a+8>>2]<=0){break f}g=F[h+16>>2];j=F[a+32>>2];i=0;while(1){d=i<<2;f=F[d+g>>2];m=F[a+16>>2];g:{if((f|0)>(m|0)){F[d+j>>2]=m;break g}d=d+j|0;m=F[a+12>>2];if((m|0)>(f|0)){F[d>>2]=m;break g}F[d>>2]=f}i=i+1|0;d=F[a+8>>2];if((i|0)<(d|0)){continue}break}if((d|0)<=0){break f}d=0;while(1){g=d<<2;f=g+c|0;g=F[b+g>>2]+F[g+j>>2]|0;F[f>>2]=g;h:{if((g|0)>F[a+16>>2]){g=g-F[a+20>>2]|0}else{if((g|0)>=F[a+12>>2]){break h}g=g+F[a+20>>2]|0}F[f>>2]=g}d=d+1|0;if((d|0)>2]){continue}break}}H=F[a+52>>2];A=F[a+48>>2];y=ka(16);d=y;F[d>>2]=0;F[d+4>>2]=0;F[d+8>>2]=0;F[d+12>>2]=0;F[h+8>>2]=0;F[h>>2]=0;F[h+4>>2]=0;i:{if(e){if(e>>>0>=1073741824){break i}d=e<<2;t=ka(d);F[h>>2]=t;F[h+8>>2]=d+t;ma(t,0,d)}z=1;d=F[a+56>>2];B=F[d>>2];d=F[d+4>>2]-B|0;j:{if((d|0)<8){break j}w=d>>2;I=(w|0)<=2?2:w;J=w>>>0<=1?1:w;C=e&-2;D=e&1;K=e&-4;E=e&3;G=e-1|0;M=e<<2;N=e>>>0<4;z=0;m=1;while(1){k:{l:{m:{n:{if((m|0)!=(J|0)){o:{p:{f=F[(m<<2)+B>>2];if((f|0)==-1){break p}n=F[A+12>>2];d=f+2|0;g=(f>>>0)%3|0;q=n+((g?f-1|0:d)<<2)|0;j=0;u=(g|0)!=0|(d|0)!=-1;k=1;d=f;q:{while(1){g=F[n+(d<<2)>>2];r:{if((g|0)==-1){break r}l=-1;p=F[H>>2];r=F[A>>2];i=p+(F[r+(g<<2)>>2]<<2)|0;o=g+1|0;o=(o>>>0)%3|0?o:g-2|0;if((o|0)!=-1){l=F[r+(o<<2)>>2]}o=F[i>>2];s:{t:{if((g>>>0)%3|0){i=g-1|0;break t}i=g+2|0;s=-1;if((i|0)==-1){break s}}s=F[r+(i<<2)>>2]}if((m|0)<=(o|0)){break r}i=F[p+(l<<2)>>2];if((i|0)>=(m|0)){break r}l=F[p+(s<<2)>>2];if((l|0)>=(m|0)){break r}g=F[(h+16|0)+L(j,12)>>2];u:{if(!e){break u}l=L(e,l);r=L(e,i);p=L(e,o);i=0;s=0;if(G){while(1){F[g+(i<<2)>>2]=(F[(i+l<<2)+c>>2]+F[(i+r<<2)+c>>2]|0)-F[(i+p<<2)+c>>2];o=i|1;F[g+(o<<2)>>2]=(F[(l+o<<2)+c>>2]+F[(o+r<<2)+c>>2]|0)-F[(o+p<<2)+c>>2];i=i+2|0;s=s+2|0;if((C|0)!=(s|0)){continue}break}}if(!D){break u}F[g+(i<<2)>>2]=(F[(i+l<<2)+c>>2]+F[(i+r<<2)+c>>2]|0)-F[(i+p<<2)+c>>2]}g=4;j=j+1|0;if((j|0)==4){break q}}v:{if(k&1){i=d+1|0;d=(i>>>0)%3|0?i:d-2|0;g=-1;if((d|0)==-1){break v}d=F[n+(d<<2)>>2];g=-1;if((d|0)==-1){break v}g=d+1|0;g=(g>>>0)%3|0?g:d-2|0;break v}w:{if((d>>>0)%3|0){i=d-1|0;break w}i=d+2|0;g=-1;if((i|0)==-1){break v}}d=F[n+(i<<2)>>2];g=-1;if((d|0)==-1){break v}g=d-1|0;if((d>>>0)%3|0){break v}g=d+2|0}d=g;x:{if((f|0)==(d|0)){break x}if((d|0)==-1&k){if(!u){break x}d=F[q>>2];if((d|0)==-1){break x}k=0;d=(d>>>0)%3|0?d-1|0:d+2|0}if((d|0)!=-1){continue}}break}g=j;if((g|0)<=0){break p}}if(e){ma(t,0,M)}d=g-1|0;r=(d<<2)+y|0;d=L(d,12)+a|0;o=d;s=F[d- -64>>2];k=0;d=F[h>>2];f=0;while(1){j=F[r>>2];F[r>>2]=j+1;if(j>>>0>=s>>>0){break j}y:{if(F[F[o+60>>2]+(j>>>3&536870908)>>2]>>>j&1){break y}f=f+1|0;if(!e){break y}j=F[(h+16|0)+L(k,12)>>2];l=0;i=0;p=0;if(!N){while(1){n=i<<2;q=n+d|0;F[q>>2]=F[j+n>>2]+F[q>>2];q=n|4;u=q+d|0;F[u>>2]=F[j+q>>2]+F[u>>2];q=n|8;u=q+d|0;F[u>>2]=F[j+q>>2]+F[u>>2];n=n|12;q=n+d|0;F[q>>2]=F[j+n>>2]+F[q>>2];i=i+4|0;p=p+4|0;if((K|0)!=(p|0)){continue}break}}if(!E){break y}while(1){n=i<<2;p=n+d|0;F[p>>2]=F[j+n>>2]+F[p>>2];i=i+1|0;l=l+1|0;if((E|0)!=(l|0)){continue}break}}k=k+1|0;if((k|0)!=(g|0)){continue}break}g=L(e,m);if(!f){break o}if(!e){break l}i=0;d=0;if(G){break n}break m}g=L(e,m)}if(F[a+8>>2]<=0){break k}k=(L(m-1|0,e)<<2)+c|0;j=F[x>>2];i=0;while(1){d=i<<2;f=F[d+k>>2];l=F[a+16>>2];z:{if((f|0)>(l|0)){F[d+j>>2]=l;break z}d=d+j|0;l=F[a+12>>2];if((l|0)>(f|0)){F[d>>2]=l;break z}F[d>>2]=f}i=i+1|0;f=F[a+8>>2];if((i|0)<(f|0)){continue}break}d=0;if((f|0)<=0){break k}f=g<<2;i=f+c|0;k=b+f|0;while(1){g=d<<2;f=g+i|0;g=F[g+k>>2]+F[g+j>>2]|0;F[f>>2]=g;A:{if((g|0)>F[a+16>>2]){g=g-F[a+20>>2]|0}else{if((g|0)>=F[a+12>>2]){break A}g=g+F[a+20>>2]|0}F[f>>2]=g}d=d+1|0;if((d|0)>2]){continue}break}break k}ta();v()}while(1){j=i<<2;k=j+t|0;F[k>>2]=F[k>>2]/(f|0);j=(j|4)+t|0;F[j>>2]=F[j>>2]/(f|0);i=i+2|0;d=d+2|0;if((C|0)!=(d|0)){continue}break}}if(!D){break l}d=(i<<2)+t|0;F[d>>2]=F[d>>2]/(f|0)}if(F[a+8>>2]<=0){break k}j=F[x>>2];i=0;while(1){d=i<<2;f=F[d+t>>2];k=F[a+16>>2];B:{if((f|0)>(k|0)){F[d+j>>2]=k;break B}d=d+j|0;k=F[a+12>>2];if((k|0)>(f|0)){F[d>>2]=k;break B}F[d>>2]=f}i=i+1|0;f=F[a+8>>2];if((i|0)<(f|0)){continue}break}d=0;if((f|0)<=0){break k}f=g<<2;i=f+c|0;k=b+f|0;while(1){g=d<<2;f=g+i|0;g=F[g+k>>2]+F[g+j>>2]|0;F[f>>2]=g;C:{if((g|0)>F[a+16>>2]){g=g-F[a+20>>2]|0}else{if((g|0)>=F[a+12>>2]){break C}g=g+F[a+20>>2]|0}F[f>>2]=g}d=d+1|0;if((d|0)>2]){continue}break}}m=m+1|0;z=(w|0)<=(m|0);if((m|0)!=(I|0)){continue}break}}a=F[h>>2];if(a){ja(a)}ja(y);a=F[h+52>>2];if(a){F[h+56>>2]=a;ja(a)}a=F[h+40>>2];if(a){F[h+44>>2]=a;ja(a)}a=F[h+28>>2];if(a){F[h+32>>2]=a;ja(a)}a=F[h+16>>2];if(a){F[h+20>>2]=a;ja(a)}Z=h- -64|0;return z|0}na();v()}function Yh(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,$=0,aa=0;a:{b:{if((e|0)!=2){break b}F[a+8>>2]=2;F[a- -64>>2]=f;M=a+32|0;e=F[M>>2];d=F[a+36>>2]-e|0;c:{if(d>>>0<=7){qa(M,2-(d>>>2|0)|0);break c}if((d|0)==8){break c}F[a+36>>2]=e+8}i=1;d=F[a+56>>2];d=F[d+4>>2]-F[d>>2]|0;if((d|0)<=0){break b}o=a+60|0;d=d>>>2|0;X=d>>>0<=1?1:d;Y=a+68|0;d=0;while(1){f=F[a+56>>2];e=F[f>>2];if(F[f+4>>2]-e>>2>>>0<=d>>>0){break a}k=Z-80|0;Z=k;f=-1;d:{e:{e=F[e+(d<<2)>>2];if((e|0)==-1){break e}i=F[o+32>>2];g=e+1|0;g=(g>>>0)%3|0?g:e-2|0;if((g|0)!=-1){f=F[F[i>>2]+(g<<2)>>2]}p=-1;e=e+((e>>>0)%3|0?-1:2)|0;if((e|0)!=-1){p=F[F[i>>2]+(e<<2)>>2]}i=F[o+36>>2];e=F[i>>2];i=F[i+4>>2]-e>>2;if(i>>>0<=f>>>0|i>>>0<=p>>>0){break e}f:{g:{h:{i:{j:{k:{j=F[e+(p<<2)>>2];f=F[e+(f<<2)>>2];if((j|0)>=(d|0)|(f|0)>=(d|0)){break k}i=(j<<3)+c|0;w=F[i+4>>2];g=(f<<3)+c|0;e=F[g+4>>2];l=F[i>>2];i=F[g>>2];if(!((l|0)!=(i|0)|(e|0)!=(w|0))){F[o+8>>2]=i;F[o+12>>2]=e;break j}p=F[F[o+4>>2]+(d<<2)>>2];F[k+72>>2]=0;F[k+76>>2]=0;g=k- -64|0;F[g>>2]=0;F[g+4>>2]=0;F[k+56>>2]=0;F[k+60>>2]=0;g=F[o>>2];if(!G[g+84|0]){p=F[F[g+68>>2]+(p<<2)>>2]}Ga(g,p,D[g+24|0],k+56|0);p=F[F[o+4>>2]+(f<<2)>>2];F[k+48>>2]=0;F[k+52>>2]=0;F[k+40>>2]=0;F[k+44>>2]=0;F[k+32>>2]=0;F[k+36>>2]=0;g=F[o>>2];if(!G[g+84|0]){p=F[F[g+68>>2]+(p<<2)>>2]}Ga(g,p,D[g+24|0],k+32|0);p=F[F[o+4>>2]+(j<<2)>>2];F[k+24>>2]=0;F[k+28>>2]=0;F[k+16>>2]=0;F[k+20>>2]=0;F[k+8>>2]=0;F[k+12>>2]=0;g=F[o>>2];if(!G[g+84|0]){p=F[F[g+68>>2]+(p<<2)>>2]}Ga(g,p,D[g+24|0],k+8|0);g=F[k+16>>2];n=F[k+40>>2];x=g-n|0;N=F[k+44>>2];g=F[k+20>>2]-(N+(g>>>0>>0)|0)|0;H=g;j=ki(x,g,x,g);q=_;g=F[k+8>>2];z=F[k+32>>2];A=g-z|0;O=F[k+36>>2];g=F[k+12>>2]-(O+(g>>>0>>0)|0)|0;I=g;h=j;j=ki(A,g,A,g);g=h+j|0;h=_+q|0;h=g>>>0>>0?h+1|0:h;j=F[k+24>>2];B=F[k+48>>2];C=j-B|0;P=F[k+52>>2];j=F[k+28>>2]-(P+(j>>>0>>0)|0)|0;J=j;m=g;g=ki(C,j,C,j);r=m+g|0;h=_+h|0;s=g>>>0>r>>>0?h+1|0:h;if(!(s|r)){break k}p=0;E=mi(-1,2147483647,r,s);f=i>>31;R=f;h=f>>31;Q=i;g=h;q=i^g;i=q-g|0;f=(f^g)-((g>>>0>q>>>0)+g|0)|0;g=f;f=e>>31;S=f;K=e;e=f>>31;q=K^e;m=q-e|0;h=f>>31;e=(h^f)-((e>>>0>q>>>0)+h|0)|0;f=(g|0)==(e|0)&i>>>0>m>>>0|e>>>0>>0;i=f?i:m;j=_;e=f?g:e;if((j|0)==(e|0)&i>>>0>E>>>0|e>>>0>j>>>0){break f}i=F[k+64>>2];T=F[k+68>>2];e=ki(i-n|0,T-((i>>>0>>0)+N|0)|0,x,H);f=_;g=F[k+56>>2];U=F[k+60>>2];j=ki(g-z|0,U-((g>>>0>>0)+O|0)|0,A,I);e=j+e|0;h=_+f|0;h=e>>>0>>0?h+1|0:h;f=e;m=F[k+72>>2];V=F[k+76>>2];e=ki(m-B|0,V-((m>>>0>>0)+P|0)|0,C,J);j=f+e|0;f=_+h|0;q=e>>>0>j>>>0?f+1|0:f;e=l;E=e-Q|0;e=(e>>31)-((e>>>0>>0)+R|0)|0;W=e;l=e>>31;y=l^E;f=y-l|0;h=e>>31;e=(h^e)-((l>>>0>y>>>0)+h|0)|0;h=e;y=w-K|0;e=(w>>31)-((w>>>0>>0)+S|0)|0;w=e;l=f;t=e>>31;u=t^y;L=u-t|0;f=e>>31;e=(f^e)-((t>>>0>u>>>0)+f|0)|0;f=(h|0)==(e|0)&l>>>0>L>>>0|e>>>0>>0;f=mi(-1,2147483647,f?l:L,f?h:e)>>>0>>0;e=_;if(f&(e|0)<=(q|0)|(e|0)<(q|0)){break f}e=I>>31;f=e;l=e^A;e=l-e|0;f=(f^I)-((f>>>0>l>>>0)+f|0)|0;h=H>>31;t=h^x;u=t-h|0;l=(h^H)-((h>>>0>t>>>0)+h|0)|0;h=(f|0)==(l|0)&e>>>0>u>>>0|f>>>0>l>>>0;e=h?e:u;f=h?f:l;h=J>>31;L=e;t=h^C;u=t-h|0;l=(h^J)-((h>>>0>t>>>0)+h|0)|0;e=(f|0)==(l|0)&e>>>0>u>>>0|f>>>0>l>>>0;f=mi(-1,2147483647,e?L:u,e?f:l)>>>0>>0;e=_;if(f&(e|0)<=(q|0)|(e|0)<(q|0)){break f}l=1;e=0;f=n;n=li(ki(j,q,x,H),_,r,s);f=f+n|0;h=_+N|0;h=f>>>0>>0?h+1|0:h;n=i-f|0;f=T-((f>>>0>i>>>0)+h|0)|0;n=ki(n,f,n,f);x=_;f=g;h=li(ki(j,q,A,I),_,r,s);i=h+z|0;g=_+O|0;g=h>>>0>i>>>0?g+1|0:g;h=f-i|0;f=U-((f>>>0>>0)+g|0)|0;g=ki(h,f,h,f);i=g+n|0;f=_+x|0;f=g>>>0>i>>>0?f+1|0:f;n=i;g=li(ki(j,q,C,J),_,r,s);i=g+B|0;h=_+P|0;h=g>>>0>i>>>0?h+1|0:h;g=m-i|0;i=V-((i>>>0>m>>>0)+h|0)|0;m=ki(g,i,g,i);i=m+n|0;g=_+f|0;f=ki(i,i>>>0>>0?g+1|0:g,r,s);i=_;m=i;if(!i&f>>>0<=1){break i}h=f;while(1){g=e<<1|l>>>31;l=l<<1;e=g;n=!i&h>>>0>7|(i|0)!=0;h=(i&3)<<30|h>>>2;i=i>>>2|0;if(n){continue}break}break h}if((d|0)>(f|0)){e=f<<1}else{if((d|0)<=0){F[o+8>>2]=0;F[o+12>>2]=0;break j}e=(d<<1)-2|0}e=(e<<2)+c|0;F[o+8>>2]=F[e>>2];F[o+12>>2]=F[e+4>>2]}p=1;break f}e=m;l=f;if(f-1|0){break g}}while(1){i=mi(f,m,l,e);h=e+_|0;e=i+l|0;h=e>>>0>>0?h+1|0:h;l=(h&1)<<31|e>>>1;e=h>>>1|0;i=ki(l,e,l,e);g=_;if((m|0)==(g|0)&f>>>0>>0|g>>>0>m>>>0){continue}break}}f=F[o+20>>2];if(!f){break f}g=f-1|0;h=F[F[o+16>>2]+(g>>>3&536870908)>>2];F[o+20>>2]=g;p=1;f=ki(j,q,y,w);i=_;n=ki(r,s,K,S);m=n+f|0;f=_+i|0;f=m>>>0>>0?f+1|0:f;i=ki(l,e,E,W);g=h>>>g&1;h=g?0-i|0:i;m=h+m|0;n=f;f=_;i=n+(g?0-(f+((i|0)!=0)|0)|0:f)|0;$=o,aa=li(m,h>>>0>m>>>0?i+1|0:i,r,s),F[$+12>>2]=aa;f=ki(j,q,E,W);i=_;j=ki(r,s,Q,R);f=j+f|0;h=_+i|0;e=ki(l,e,y,w);i=0-e|0;l=_;h=(f>>>0>>0?h+1|0:h)+(g?l:0-(((e|0)!=0)+l|0)|0)|0;i=g?e:i;f=i+f|0;$=o,aa=li(f,f>>>0>>0?h+1|0:h,r,s),F[$+8>>2]=aa}Z=k+80|0;e=p;break d}ta();v()}i=e;if(!e){return 0}l:{if(F[a+8>>2]<=0){break l}l=F[M>>2];e=0;while(1){f=e<<2;g=F[f+Y>>2];j=F[a+16>>2];m:{if((g|0)>(j|0)){F[f+l>>2]=j;break m}f=f+l|0;j=F[a+12>>2];if((j|0)>(g|0)){F[f>>2]=j;break m}F[f>>2]=g}e=e+1|0;g=F[a+8>>2];if((e|0)<(g|0)){continue}break}f=0;if((g|0)<=0){break l}e=d<<3;j=e+c|0;q=b+e|0;while(1){g=f<<2;e=g+j|0;g=F[g+q>>2]+F[g+l>>2]|0;F[e>>2]=g;n:{if((g|0)>F[a+16>>2]){g=g-F[a+20>>2]|0}else{if((g|0)>=F[a+12>>2]){break n}g=g+F[a+20>>2]|0}F[e>>2]=g}f=f+1|0;if((f|0)>2]){continue}break}}d=d+1|0;if((X|0)!=(d|0)){continue}break}}return i|0}ta();v()}function hi(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,w=0,x=0,y=0,z=0,A=0,B=0,C=0,E=0,H=0,I=0,J=0,K=0,L=0,M=0,N=0,O=0,P=0,Q=0,R=0,S=0,T=0,U=0,V=0,W=0,X=0,Y=0,$=0,aa=0;a:{b:{if((e|0)!=2){break b}F[a+8>>2]=2;F[a- -64>>2]=f;M=a+32|0;e=F[M>>2];d=F[a+36>>2]-e|0;c:{if(d>>>0<=7){qa(M,2-(d>>>2|0)|0);break c}if((d|0)==8){break c}F[a+36>>2]=e+8}p=1;d=F[a+56>>2];d=F[d+4>>2]-F[d>>2]|0;if((d|0)<=0){break b}o=a+60|0;d=d>>>2|0;X=d>>>0<=1?1:d;Y=a+68|0;d=0;while(1){e=F[a+56>>2];h=F[e>>2];if(F[e+4>>2]-h>>2>>>0<=d>>>0){break a}k=Z-80|0;Z=k;f=-1;h=F[h+(d<<2)>>2];e=-1;d:{if((h|0)==-1){break d}e=h+1|0;f=(e>>>0)%3|0?e:h-2|0;e=h-1|0;if((h>>>0)%3|0){break d}e=h+2|0}g=F[o+36>>2];h=F[g>>2];e:{f:{g:{h:{i:{g=F[g+4>>2]-h>>2;i=f<<2;f=F[F[o+32>>2]+28>>2];j=F[i+f>>2];if(g>>>0<=j>>>0){break i}e=F[f+(e<<2)>>2];if(e>>>0>=g>>>0){break i}j:{k:{l=F[h+(e<<2)>>2];f=F[h+(j<<2)>>2];if((l|0)>=(d|0)|(f|0)>=(d|0)){break k}h=(l<<3)+c|0;w=F[h+4>>2];g=(f<<3)+c|0;e=F[g+4>>2];j=F[h>>2];h=F[g>>2];if(!((j|0)!=(h|0)|(e|0)!=(w|0))){F[o+8>>2]=h;F[o+12>>2]=e;break j}p=F[F[o+4>>2]+(d<<2)>>2];F[k+72>>2]=0;F[k+76>>2]=0;g=k- -64|0;F[g>>2]=0;F[g+4>>2]=0;F[k+56>>2]=0;F[k+60>>2]=0;g=F[o>>2];if(!G[g+84|0]){p=F[F[g+68>>2]+(p<<2)>>2]}Ga(g,p,D[g+24|0],k+56|0);p=F[F[o+4>>2]+(f<<2)>>2];F[k+48>>2]=0;F[k+52>>2]=0;F[k+40>>2]=0;F[k+44>>2]=0;F[k+32>>2]=0;F[k+36>>2]=0;g=F[o>>2];if(!G[g+84|0]){p=F[F[g+68>>2]+(p<<2)>>2]}Ga(g,p,D[g+24|0],k+32|0);p=F[F[o+4>>2]+(l<<2)>>2];F[k+24>>2]=0;F[k+28>>2]=0;F[k+16>>2]=0;F[k+20>>2]=0;F[k+8>>2]=0;F[k+12>>2]=0;g=F[o>>2];if(!G[g+84|0]){p=F[F[g+68>>2]+(p<<2)>>2]}Ga(g,p,D[g+24|0],k+8|0);g=F[k+16>>2];n=F[k+40>>2];x=g-n|0;N=F[k+44>>2];g=F[k+20>>2]-(N+(g>>>0>>0)|0)|0;H=g;l=ki(x,g,x,g);q=_;g=F[k+8>>2];z=F[k+32>>2];A=g-z|0;O=F[k+36>>2];g=F[k+12>>2]-(O+(g>>>0>>0)|0)|0;I=g;i=l;l=ki(A,g,A,g);g=i+l|0;i=_+q|0;i=g>>>0>>0?i+1|0:i;l=F[k+24>>2];B=F[k+48>>2];C=l-B|0;P=F[k+52>>2];l=F[k+28>>2]-(P+(l>>>0>>0)|0)|0;J=l;m=g;g=ki(C,l,C,l);r=m+g|0;i=_+i|0;s=g>>>0>r>>>0?i+1|0:i;if(!(s|r)){break k}p=0;E=mi(-1,2147483647,r,s);f=h>>31;R=f;i=f>>31;Q=h;g=i;q=h^g;h=q-g|0;f=(f^g)-((g>>>0>q>>>0)+g|0)|0;g=f;f=e>>31;S=f;K=e;e=f>>31;q=K^e;m=q-e|0;i=f>>31;e=(i^f)-((e>>>0>q>>>0)+i|0)|0;f=(g|0)==(e|0)&h>>>0>m>>>0|e>>>0>>0;h=f?h:m;l=_;e=f?g:e;if((l|0)==(e|0)&h>>>0>E>>>0|e>>>0>l>>>0){break e}h=F[k+64>>2];T=F[k+68>>2];e=ki(h-n|0,T-((h>>>0>>0)+N|0)|0,x,H);f=_;g=F[k+56>>2];U=F[k+60>>2];l=ki(g-z|0,U-((g>>>0>>0)+O|0)|0,A,I);e=l+e|0;i=_+f|0;i=e>>>0>>0?i+1|0:i;f=e;m=F[k+72>>2];V=F[k+76>>2];e=ki(m-B|0,V-((m>>>0>>0)+P|0)|0,C,J);l=f+e|0;f=_+i|0;q=e>>>0>l>>>0?f+1|0:f;e=j;E=e-Q|0;e=(e>>31)-((e>>>0>>0)+R|0)|0;W=e;j=e>>31;y=j^E;f=y-j|0;i=e>>31;e=(i^e)-((j>>>0>y>>>0)+i|0)|0;i=e;y=w-K|0;e=(w>>31)-((w>>>0>>0)+S|0)|0;w=e;j=f;t=e>>31;u=t^y;L=u-t|0;f=e>>31;e=(f^e)-((t>>>0>u>>>0)+f|0)|0;f=(i|0)==(e|0)&j>>>0>L>>>0|e>>>0>>0;f=mi(-1,2147483647,f?j:L,f?i:e)>>>0>>0;e=_;if(f&(e|0)<=(q|0)|(e|0)<(q|0)){break e}e=I>>31;f=e;j=e^A;e=j-e|0;f=(f^I)-((f>>>0>j>>>0)+f|0)|0;i=H>>31;t=i^x;u=t-i|0;j=(i^H)-((i>>>0>t>>>0)+i|0)|0;i=(f|0)==(j|0)&e>>>0>u>>>0|f>>>0>j>>>0;e=i?e:u;f=i?f:j;i=J>>31;L=e;t=i^C;u=t-i|0;j=(i^J)-((i>>>0>t>>>0)+i|0)|0;e=(f|0)==(j|0)&e>>>0>u>>>0|f>>>0>j>>>0;f=mi(-1,2147483647,e?L:u,e?f:j)>>>0>>0;e=_;if(f&(e|0)<=(q|0)|(e|0)<(q|0)){break e}j=1;e=0;f=n;n=li(ki(l,q,x,H),_,r,s);f=f+n|0;i=_+N|0;i=f>>>0>>0?i+1|0:i;n=h-f|0;f=T-((f>>>0>h>>>0)+i|0)|0;n=ki(n,f,n,f);x=_;f=g;i=li(ki(l,q,A,I),_,r,s);h=i+z|0;g=_+O|0;g=h>>>0>>0?g+1|0:g;i=f-h|0;f=U-((f>>>0>>0)+g|0)|0;g=ki(i,f,i,f);h=g+n|0;f=_+x|0;f=h>>>0>>0?f+1|0:f;n=h;g=li(ki(l,q,C,J),_,r,s);h=g+B|0;i=_+P|0;i=h>>>0>>0?i+1|0:i;g=m-h|0;h=V-((h>>>0>m>>>0)+i|0)|0;m=ki(g,h,g,h);h=m+n|0;g=_+f|0;f=ki(h,h>>>0>>0?g+1|0:g,r,s);h=_;m=h;if(!h&f>>>0<=1){break h}i=f;while(1){g=e<<1|j>>>31;j=j<<1;e=g;n=!h&i>>>0>7|(h|0)!=0;i=(h&3)<<30|i>>>2;h=h>>>2|0;if(n){continue}break}break g}if((d|0)>(f|0)){e=f<<1}else{if((d|0)<=0){F[o+8>>2]=0;F[o+12>>2]=0;break j}e=(d<<1)-2|0}e=(e<<2)+c|0;F[o+8>>2]=F[e>>2];F[o+12>>2]=F[e+4>>2]}p=1;break e}ta();v()}e=m;j=f;if(f-1|0){break f}}while(1){h=mi(f,m,j,e);i=e+_|0;e=h+j|0;i=e>>>0>>0?i+1|0:i;j=(i&1)<<31|e>>>1;e=i>>>1|0;h=ki(j,e,j,e);g=_;if((m|0)==(g|0)&f>>>0>>0|g>>>0>m>>>0){continue}break}}f=F[o+20>>2];if(!f){break e}g=f-1|0;i=F[F[o+16>>2]+(g>>>3&536870908)>>2];F[o+20>>2]=g;p=1;f=ki(l,q,y,w);h=_;n=ki(r,s,K,S);m=n+f|0;f=_+h|0;f=m>>>0>>0?f+1|0:f;h=ki(j,e,E,W);g=i>>>g&1;i=g?0-h|0:h;m=i+m|0;n=f;f=_;h=n+(g?0-(f+((h|0)!=0)|0)|0:f)|0;$=o,aa=li(m,i>>>0>m>>>0?h+1|0:h,r,s),F[$+12>>2]=aa;f=ki(l,q,E,W);h=_;l=ki(r,s,Q,R);f=l+f|0;i=_+h|0;e=ki(j,e,y,w);h=0-e|0;j=_;i=(f>>>0>>0?i+1|0:i)+(g?j:0-(((e|0)!=0)+j|0)|0)|0;h=g?e:h;f=h+f|0;$=o,aa=li(f,f>>>0>>0?i+1|0:i,r,s),F[$+8>>2]=aa}Z=k+80|0;if(!p){return 0}l:{if(F[a+8>>2]<=0){break l}g=F[M>>2];e=0;while(1){f=e<<2;h=F[f+Y>>2];j=F[a+16>>2];m:{if((h|0)>(j|0)){F[f+g>>2]=j;break m}f=f+g|0;j=F[a+12>>2];if((j|0)>(h|0)){F[f>>2]=j;break m}F[f>>2]=h}e=e+1|0;h=F[a+8>>2];if((e|0)<(h|0)){continue}break}f=0;if((h|0)<=0){break l}e=d<<3;j=e+c|0;l=b+e|0;while(1){h=f<<2;e=h+j|0;h=F[h+l>>2]+F[h+g>>2]|0;F[e>>2]=h;n:{if((h|0)>F[a+16>>2]){i=h-F[a+20>>2]|0}else{if((h|0)>=F[a+12>>2]){break n}i=h+F[a+20>>2]|0}F[e>>2]=i}f=f+1|0;if((f|0)>2]){continue}break}}d=d+1|0;if((X|0)!=(d|0)){continue}break}}return p|0}ta();v()}function Gd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;n=Z-96|0;Z=n;m=F[a+4>>2];d=F[m+32>>2];j=F[d+8>>2];i=F[d+12>>2];e=i;c=F[d+20>>2];f=F[d+16>>2];a:{if((e|0)<=(c|0)&f>>>0>=j>>>0|(c|0)>(e|0)){break a}o=F[d>>2];h=G[o+f|0];g=f+1|0;e=g?c:c+1|0;F[d+16>>2]=g;F[d+20>>2]=e;if((e|0)>=(i|0)&g>>>0>=j>>>0|(e|0)>(i|0)){break a}p=G[g+o|0];g=f+2|0;e=g>>>0<2?c+1|0:c;F[d+16>>2]=g;F[d+20>>2]=e;l=h<<24>>24;b:{if((l|0)>=0){k=F[a+216>>2];if(h>>>0>=(F[a+220>>2]-k|0)/144>>>0){break a}k=k+L(h,144)|0;if(F[k>>2]<0){break b}break a}if(F[a+212>>2]>=0){break a}k=a+212|0}F[k>>2]=b;c:{d:{e:{f:{g:{h:{k=H[m+36>>1];i:{if(((k<<8|k>>>8)&65535)>>>0>=258){if((e|0)>=(i|0)&g>>>0>=j>>>0|(e|0)>(i|0)){break a}e=G[g+o|0];f=f+3|0;c=f>>>0<3?c+1|0:c;F[d+16>>2]=f;F[d+20>>2]=c;if(e>>>0>1){break a}d=e>>>0<2?e:0;if(!p){break i}if(!d){break h}break a}if(p){break g}d=0}if((l|0)<0){e=a+184|0}else{c=F[a+216>>2]+L(h,144)|0;D[c+100|0]=0;e=c+104|0}if((d|0)!=1){break e}c=Z-112|0;Z=c;g=F[F[a+4>>2]+44>>2];d=ka(120);F[d>>2]=8924;F[d+4>>2]=0;F[d+116>>2]=0;F[d+112>>2]=e;F[d+108>>2]=g;F[d+12>>2]=0;F[d+16>>2]=0;F[d+20>>2]=0;F[d+24>>2]=0;F[d+28>>2]=0;F[d+32>>2]=0;F[d+36>>2]=0;F[d+40>>2]=0;F[d+44>>2]=0;F[d+48>>2]=0;F[d+52>>2]=0;F[d+56>>2]=0;F[d+60>>2]=0;F[d+8>>2]=9136;f=d- -64|0;F[f>>2]=0;F[f+4>>2]=0;F[d+72>>2]=0;F[d+76>>2]=0;F[d+80>>2]=0;F[d+84>>2]=0;F[d+88>>2]=0;F[d+104>>2]=0;F[d+96>>2]=0;F[d+100>>2]=0;f=F[a+8>>2];F[c+48>>2]=0;F[c+52>>2]=0;F[c+40>>2]=0;F[c+44>>2]=0;j=c+32|0;F[j>>2]=0;F[j+4>>2]=0;F[c+24>>2]=0;F[c+28>>2]=0;h=c- -64|0;F[h>>2]=0;F[h+4>>2]=0;F[c+72>>2]=0;F[c+76>>2]=0;F[c+80>>2]=0;F[c+84>>2]=0;F[c+88>>2]=0;F[c+104>>2]=0;F[c+16>>2]=0;F[c+20>>2]=0;F[c+56>>2]=0;F[c+60>>2]=0;F[c+8>>2]=9136;F[c+96>>2]=0;F[c+100>>2]=0;F[c+12>>2]=f;h=F[f>>2];i=F[f+4>>2];D[c+111|0]=0;k=j;j=c+111|0;Ea(k,(i-h>>2>>>0)/3|0,j);h=F[c+12>>2];i=F[h+28>>2];h=F[h+24>>2];D[c+111|0]=0;Ea(c+44|0,i-h>>2,j);F[c+28>>2]=d;F[c+24>>2]=g;F[c+20>>2]=e;F[c+16>>2]=f;f=d+8|0;e=c+8|0;lc(f,e);j:{if((e|0)==(f|0)){F[d+92>>2]=F[e+84>>2];break j}gb(d+56|0,F[e+48>>2],F[e+52>>2]);gb(d+68|0,F[e+60>>2],F[e- -64>>2]);gb(d+80|0,F[e+72>>2],F[e+76>>2]);F[d+92>>2]=F[e+84>>2];k:{h=F[e+92>>2];j=F[e+88>>2];i=h-j|0;e=i>>2;f=F[d+104>>2];g=F[d+96>>2];if(e>>>0<=f-g>>2>>>0){i=F[d+100>>2]-g|0;f=i+j|0;m=i>>2;i=e>>>0>m>>>0?f:h;l=i-j|0;if((i|0)!=(j|0)){pa(g,j,l)}if(e>>>0>m>>>0){e=F[d+100>>2];if((h|0)!=(i|0)){while(1){F[e>>2]=F[f>>2];e=e+4|0;f=f+4|0;if((h|0)!=(f|0)){continue}break}}F[d+100>>2]=e;break k}F[d+100>>2]=g+l;break k}if(g){F[d+100>>2]=g;ja(g);F[d+104>>2]=0;F[d+96>>2]=0;F[d+100>>2]=0;f=0}l:{if((i|0)<0){break l}g=f>>>1|0;e=f>>>0>=2147483644?1073741823:e>>>0>>0?g:e;if(e>>>0>=1073741824){break l}f=e<<2;e=ka(f);F[d+96>>2]=e;F[d+104>>2]=e+f;if((h|0)!=(j|0)){f=e;e=(i-4&-4)+4|0;e=la(f,j,e)+e|0}F[d+100>>2]=e;break k}na();v()}}F[c+8>>2]=9136;e=F[c+96>>2];if(e){F[c+100>>2]=e;ja(e)}e=F[c+80>>2];if(e){F[c+84>>2]=e;ja(e)}e=F[c+68>>2];if(e){F[c+72>>2]=e;ja(e)}e=F[c+56>>2];if(e){F[c+60>>2]=e;ja(e)}F[c+8>>2]=9372;e=F[c+44>>2];if(e){ja(e)}e=F[c+32>>2];if(e){ja(e)}Z=c+112|0;break d}if((l|0)>=0){break f}break a}if((l|0)<0){break a}}e=F[a+216>>2];c=F[m+44>>2];d=ka(80);F[d>>2]=9684;F[d+4>>2]=0;F[d+76>>2]=0;F[d+68>>2]=c;F[d+8>>2]=8624;F[d+12>>2]=0;F[d+16>>2]=0;F[d+20>>2]=0;F[d+24>>2]=0;F[d+28>>2]=0;F[d+32>>2]=0;F[d+36>>2]=0;F[d+40>>2]=0;F[d+44>>2]=0;F[d+48>>2]=0;F[d+52>>2]=0;e=e+L(h,144)|0;f=e+104|0;F[d+72>>2]=f;F[d- -64>>2]=0;F[d+56>>2]=0;F[d+60>>2]=0;F[n+24>>2]=c;c=n;F[c+68>>2]=0;F[c+72>>2]=0;F[c+60>>2]=0;F[c+64>>2]=0;F[c+52>>2]=0;F[c+56>>2]=0;F[c+44>>2]=0;F[c+48>>2]=0;F[c+84>>2]=0;F[c+88>>2]=0;F[c+76>>2]=0;F[c+80>>2]=0;F[c+28>>2]=d;g=F[c+28>>2];F[c+8>>2]=F[c+24>>2];F[c+12>>2]=g;F[c+20>>2]=f;f=e+4|0;F[c+16>>2]=f;F[c+36>>2]=0;F[c+40>>2]=0;F[c+32>>2]=8624;e=F[c+20>>2];F[c>>2]=F[c+16>>2];F[c+4>>2]=e;e=c+32|0;Fd(e,f,c);c=d+8|0;lc(c,e);if((c|0)!=(e|0)){gb(d+56|0,F[e+48>>2],F[e+52>>2])}Ed(e);break c}c=Z+-64|0;Z=c;g=F[F[a+4>>2]+44>>2];d=ka(80);F[d>>2]=9392;F[d+4>>2]=0;F[d+76>>2]=0;F[d+72>>2]=e;F[d+68>>2]=g;F[d+8>>2]=9556;F[d+12>>2]=0;F[d+16>>2]=0;F[d+20>>2]=0;F[d+24>>2]=0;F[d+28>>2]=0;F[d+32>>2]=0;F[d+36>>2]=0;F[d+40>>2]=0;F[d+44>>2]=0;F[d+48>>2]=0;F[d+52>>2]=0;F[d- -64>>2]=0;j=d+56|0;f=j;F[f>>2]=0;F[f+4>>2]=0;f=F[a+8>>2];F[c+40>>2]=0;F[c+44>>2]=0;F[c+32>>2]=0;F[c+36>>2]=0;h=c+24|0;F[h>>2]=0;F[h+4>>2]=0;F[c+16>>2]=0;F[c+20>>2]=0;F[c+56>>2]=0;F[c+8>>2]=0;F[c+12>>2]=0;F[c+48>>2]=0;F[c+52>>2]=0;F[c>>2]=9556;F[c+4>>2]=f;i=F[f>>2];l=F[f+4>>2];D[c+63|0]=0;k=h;h=c+63|0;Ea(k,(l-i>>2>>>0)/3|0,h);i=F[c+4>>2];l=F[i+28>>2];i=F[i+24>>2];D[c+63|0]=0;Ea(c+36|0,l-i>>2,h);F[c+20>>2]=d;F[c+16>>2]=g;F[c+12>>2]=e;F[c+8>>2]=f;lc(d+8|0,c);gb(j,F[c+48>>2],F[c+52>>2]);F[c>>2]=9556;e=F[c+48>>2];if(e){F[c+52>>2]=e;ja(e)}F[c>>2]=9372;e=F[c+36>>2];if(e){ja(e)}e=F[c+24>>2];if(e){ja(e)}Z=c- -64|0}if(!d){break a}}d=yc(ka(64),d);c=F[a+4>>2];a=d;d=b;m:{n:{if((d|0)>=0){g=c+8|0;b=F[c+12>>2];j=F[c+8>>2];e=b-j>>2;o:{if((e|0)>(d|0)){break o}f=d+1|0;if(d>>>0>=e>>>0){Pb(g,f-e|0);break o}if(e>>>0<=f>>>0){break o}f=j+(f<<2)|0;if((f|0)!=(b|0)){while(1){b=b-4|0;e=F[b>>2];F[b>>2]=0;if(e){$[F[F[e>>2]+4>>2]](e)}if((b|0)!=(f|0)){continue}break}}F[c+12>>2]=f}c=F[g>>2]+(d<<2)|0;b=F[c>>2];F[c>>2]=a;if(b){break n}break m}b=a;if(!a){break m}}$[F[F[b>>2]+4>>2]](b)}q=(d^-1)>>>31|0}Z=n+96|0;return q|0}function Ab(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=M(0),n=M(0),o=0;a:{b:{if(!d){break b}c:{switch(F[a+28>>2]-1|0){case 0:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}E[(g<<1)+d>>1]=D[b|0];b=b+1|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}break a;case 1:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}E[(g<<1)+d>>1]=G[b|0];b=b+1|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}break a;case 2:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}E[(g<<1)+d>>1]=H[b>>1];b=b+2|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}break a;case 3:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){return 0}e=E[b>>1];if((e|0)<0){break b}E[(g<<1)+d>>1]=e;b=b+2|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}break a;case 4:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}e=F[b>>2];if(e+32768>>>0>65535){break b}E[(g<<1)+d>>1]=e;b=b+4|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}break a;case 5:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}e=F[b>>2];if(e>>>0>32767){break b}E[(g<<1)+d>>1]=e;b=b+4|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}break a;case 6:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;k=F[e+4>>2];while(1){if(b>>>0>=k>>>0){break b}h=F[b+4>>2];e=F[b>>2];i=e+32768|0;h=i>>>0<32768?h+1|0:h;if(!h&i>>>0>65535|h){break b}E[(g<<1)+d>>1]=e;b=b+8|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}break a;case 7:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}k=F[b+4>>2];e=F[b>>2];if(!k&e>>>0>32767|k){break b}E[(g<<1)+d>>1]=e;b=b+8|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}break a;case 8:d:{e:{e=G[a+24|0];c=c&255;if(!(c>>>0>e>>>0?e:c)){break e}e=F[a>>2];j=F[e>>2];g=j;f=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+f|0;g=b+g|0;f=F[e+4>>2];e=f-j|0;if(!G[a+32|0]){j=0;if((b|0)>=(e|0)){break d}b=0;while(1){m=J[g>>2];if(m>=M(32767)|m>1]=i;b=b+1|0;e=G[a+24|0];if(b>>>0>=(c>>>0>e>>>0?e:c)>>>0){break e}g=g+4|0;if(f>>>0>g>>>0){continue}break}break d}j=0;if((b|0)>=(e|0)){break d}b=0;while(1){m=J[g>>2];if(m>=M(32767)|mM(1)){break d}e=(b<<1)+d|0;l=R(+m*32767+.5);f:{if(N(l)<2147483648){i=~~l;break f}i=-2147483648}E[e>>1]=i;b=b+1|0;e=G[a+24|0];if(b>>>0>=(c>>>0>e>>>0?e:c)>>>0){break e}g=g+4|0;if(f>>>0>g>>>0){continue}break}break d}j=1;if(c>>>0<=e>>>0){break d}ma((e<<1)+d|0,0,c-e<<1)}return j;case 9:g:{h:{e=G[a+24|0];c=c&255;if(!(c>>>0>e>>>0?e:c)){break h}e=F[a>>2];j=F[e>>2];g=j;f=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+f|0;g=b+g|0;f=F[e+4>>2];e=f-j|0;if(!G[a+32|0]){j=0;if((b|0)>=(e|0)){break g}b=0;while(1){l=K[g>>3];if(l>=32767|l<-32768|l!=l){break g}o=N(l);if(o==Infinity){break g}e=(b<<1)+d|0;if(o<2147483648){i=~~l}else{i=-2147483648}E[e>>1]=i;b=b+1|0;e=G[a+24|0];if(b>>>0>=(c>>>0>e>>>0?e:c)>>>0){break h}g=g+8|0;if(f>>>0>g>>>0){continue}break}break g}j=0;if((b|0)>=(e|0)){break g}b=0;while(1){l=K[g>>3];if(l>=32767|l<-32768|(N(l)==Infinity|l!=l)){break g}if(l<0|l>1){break g}e=(b<<1)+d|0;l=R(l*32767+.5);i:{if(N(l)<2147483648){i=~~l;break i}i=-2147483648}E[e>>1]=i;b=b+1|0;e=G[a+24|0];if(b>>>0>=(c>>>0>e>>>0?e:c)>>>0){break h}g=g+8|0;if(f>>>0>g>>>0){continue}break}break g}j=1;if(c>>>0<=e>>>0){break g}ma((e<<1)+d|0,0,c-e<<1)}return j;case 10:break c;default:break b}}e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}E[(g<<1)+d>>1]=G[b|0];b=b+1|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}ma((e<<1)+d|0,0,(c&255)-e<<1)}return j}ma((e<<1)+d|0,0,(c&255)-e<<1);return 1}function yb(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=M(0),n=M(0),o=0;a:{b:{if(!d){break b}c:{switch(F[a+28>>2]-1|0){case 0:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}F[(g<<2)+d>>2]=D[b|0];b=b+1|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}break a;case 1:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}F[(g<<2)+d>>2]=G[b|0];b=b+1|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}break a;case 2:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}F[(g<<2)+d>>2]=E[b>>1];b=b+2|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}break a;case 3:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}F[(g<<2)+d>>2]=H[b>>1];b=b+2|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}break a;case 4:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}F[(g<<2)+d>>2]=F[b>>2];b=b+4|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}break a;case 5:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){return 0}e=F[b>>2];if((e|0)<0){break b}F[(g<<2)+d>>2]=e;b=b+4|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}break a;case 6:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;k=F[e+4>>2];while(1){if(b>>>0>=k>>>0){break b}h=F[b+4>>2];e=F[b>>2];if(e- -2147483648>>>0<2147483648?h+1|0:h){break b}F[(g<<2)+d>>2]=e;b=b+8|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}break a;case 7:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}k=F[b+4>>2];e=F[b>>2];if(!k&e>>>0>2147483647|k){break b}F[(g<<2)+d>>2]=e;b=b+8|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}break a;case 8:d:{e:{e=G[a+24|0];c=c&255;if(!(c>>>0>e>>>0?e:c)){break e}e=F[a>>2];j=F[e>>2];g=j;f=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+f|0;g=b+g|0;f=F[e+4>>2];e=f-j|0;if(!G[a+32|0]){j=0;if((b|0)>=(e|0)){break d}b=0;while(1){m=J[g>>2];if(m>=M(2147483648)|m>2]=i;b=b+1|0;e=G[a+24|0];if(b>>>0>=(c>>>0>e>>>0?e:c)>>>0){break e}g=g+4|0;if(f>>>0>g>>>0){continue}break}break d}j=0;if((b|0)>=(e|0)){break d}b=0;while(1){m=J[g>>2];if(m>=M(2147483648)|mM(1)){break d}e=(b<<2)+d|0;l=R(+m*2147483647+.5);f:{if(N(l)<2147483648){i=~~l;break f}i=-2147483648}F[e>>2]=i;b=b+1|0;e=G[a+24|0];if(b>>>0>=(c>>>0>e>>>0?e:c)>>>0){break e}g=g+4|0;if(f>>>0>g>>>0){continue}break}break d}j=1;if(c>>>0<=e>>>0){break d}ma((e<<2)+d|0,0,c-e<<2)}return j;case 9:g:{h:{e=G[a+24|0];c=c&255;if(!(c>>>0>e>>>0?e:c)){break h}e=F[a>>2];j=F[e>>2];g=j;f=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+f|0;g=b+g|0;f=F[e+4>>2];e=f-j|0;if(!G[a+32|0]){j=0;if((b|0)>=(e|0)){break g}b=0;while(1){l=K[g>>3];if(l>=2147483647|l<-2147483648|l!=l){break g}o=N(l);if(o==Infinity){break g}e=(b<<2)+d|0;if(o<2147483648){i=~~l}else{i=-2147483648}F[e>>2]=i;b=b+1|0;e=G[a+24|0];if(b>>>0>=(c>>>0>e>>>0?e:c)>>>0){break h}g=g+8|0;if(f>>>0>g>>>0){continue}break}break g}j=0;if((b|0)>=(e|0)){break g}b=0;while(1){l=K[g>>3];if(l>=2147483647|l<-2147483648|(N(l)==Infinity|l!=l)){break g}if(l<0|l>1){break g}e=(b<<2)+d|0;l=R(l*2147483647+.5);i:{if(N(l)<2147483648){i=~~l;break i}i=-2147483648}F[e>>2]=i;b=b+1|0;e=G[a+24|0];if(b>>>0>=(c>>>0>e>>>0?e:c)>>>0){break h}g=g+8|0;if(f>>>0>g>>>0){continue}break}break g}j=1;if(c>>>0<=e>>>0){break g}ma((e<<2)+d|0,0,c-e<<2)}return j;case 10:break c;default:break b}}e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}F[(g<<2)+d>>2]=G[b|0];b=b+1|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}j=1;if(e>>>0>=f>>>0){break b}ma((e<<2)+d|0,0,(c&255)-e<<2)}return j}ma((e<<2)+d|0,0,(c&255)-e<<2);return 1}function zb(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=M(0);a:{b:{if(!d){break b}c:{switch(F[a+28>>2]-1|0){case 0:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){return 0}e=D[b|0];if((e|0)<0){break b}E[(g<<1)+d>>1]=e&255;b=b+1|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break b}break a;case 1:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}E[(g<<1)+d>>1]=G[b|0];b=b+1|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break b}break a;case 2:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){return 0}e=E[b>>1];if((e|0)<0){break b}E[(g<<1)+d>>1]=e;b=b+2|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break b}break a;case 3:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}E[(g<<1)+d>>1]=H[b>>1];b=b+2|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break b}break a;case 4:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}e=F[b>>2];if(e>>>0>65535){break b}E[(g<<1)+d>>1]=e;b=b+4|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break b}break a;case 5:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}e=F[b>>2];if(e>>>0>65535){break b}E[(g<<1)+d>>1]=e;b=b+4|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break b}break a;case 6:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}k=F[b+4>>2];e=F[b>>2];if(!k&e>>>0>65535|k){break b}E[(g<<1)+d>>1]=e;b=b+8|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break b}break a;case 7:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}k=F[b+4>>2];e=F[b>>2];if(!k&e>>>0>65535|k){break b}E[(g<<1)+d>>1]=e;b=b+8|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break b}break a;case 8:d:{e:{e=G[a+24|0];c=c&255;if(!(c>>>0>e>>>0?e:c)){break e}e=F[a>>2];l=F[e>>2];g=l;f=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+f|0;g=b+g|0;f=F[e+4>>2];e=f-l|0;if(!G[a+32|0]){l=0;if((b|0)>=(e|0)){break d}b=0;while(1){m=J[g>>2];if(m>=M(65535)|m=M(0)){i=~~m>>>0}else{i=0}E[e>>1]=i;b=b+1|0;e=G[a+24|0];if(b>>>0>=(c>>>0>e>>>0?e:c)>>>0){break e}g=g+4|0;if(f>>>0>g>>>0){continue}break}break d}l=0;if((b|0)>=(e|0)){break d}b=0;while(1){m=J[g>>2];if(m>=M(65535)|mM(1)){break d}e=(b<<1)+d|0;j=R(+m*65535+.5);f:{if(j<4294967296&j>=0){i=~~j>>>0;break f}i=0}E[e>>1]=i;b=b+1|0;e=G[a+24|0];if(b>>>0>=(c>>>0>e>>>0?e:c)>>>0){break e}g=g+4|0;if(f>>>0>g>>>0){continue}break}break d}l=1;if(c>>>0<=e>>>0){break d}ma((e<<1)+d|0,0,c-e<<1)}return l;case 9:g:{h:{e=G[a+24|0];c=c&255;if(!(c>>>0>e>>>0?e:c)){break h}e=F[a>>2];l=F[e>>2];g=l;f=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+f|0;g=b+g|0;f=F[e+4>>2];e=f-l|0;if(!G[a+32|0]){l=0;if((b|0)>=(e|0)){break g}b=0;while(1){j=K[g>>3];if(j>=65535|j<0|(N(j)==Infinity|j!=j)){break g}e=(b<<1)+d|0;if(j<4294967296&j>=0){i=~~j>>>0}else{i=0}E[e>>1]=i;b=b+1|0;e=G[a+24|0];if(b>>>0>=(c>>>0>e>>>0?e:c)>>>0){break h}g=g+8|0;if(f>>>0>g>>>0){continue}break}break g}l=0;if((b|0)>=(e|0)){break g}b=0;while(1){j=K[g>>3];if(j>=65535|j<0|(N(j)==Infinity|j!=j)){break g}if(j>1){break g}e=(b<<1)+d|0;j=R(j*65535+.5);i:{if(j<4294967296&j>=0){i=~~j>>>0;break i}i=0}E[e>>1]=i;b=b+1|0;e=G[a+24|0];if(b>>>0>=(c>>>0>e>>>0?e:c)>>>0){break h}g=g+8|0;if(f>>>0>g>>>0){continue}break}break g}l=1;if(c>>>0<=e>>>0){break g}ma((e<<1)+d|0,0,c-e<<1)}return l;case 10:break c;default:break b}}e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];k=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+k|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}E[(g<<1)+d>>1]=G[b|0];b=b+1|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break b}ma((e<<1)+d|0,0,(c&255)-e<<1)}return l}ma((e<<1)+d|0,0,(c&255)-e<<1);return 1}function Ga(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=M(0),l=0,m=0,n=M(0),o=0;a:{if(!d){break a}b:{c:{switch(F[a+28>>2]-1|0){case 0:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);j=b;b=b+i|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break a}e=(g<<3)+d|0;i=D[b|0];F[e>>2]=i;F[e+4>>2]=i>>31;b=b+1|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}if(e>>>0>=f>>>0){break a}d=(e<<3)+d|0;a=(c&255)-e|0;break b;case 1:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);j=b;b=b+i|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break a}e=(g<<3)+d|0;F[e>>2]=G[b|0];F[e+4>>2]=0;b=b+1|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}if(e>>>0>=f>>>0){break a}d=(e<<3)+d|0;a=(c&255)-e|0;break b;case 2:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);j=b;b=b+i|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break a}e=(g<<3)+d|0;i=E[b>>1];F[e>>2]=i;F[e+4>>2]=i>>31;b=b+2|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}if(e>>>0>=f>>>0){break a}d=(e<<3)+d|0;a=(c&255)-e|0;break b;case 3:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);j=b;b=b+i|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break a}e=(g<<3)+d|0;F[e>>2]=H[b>>1];F[e+4>>2]=0;b=b+2|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}if(e>>>0>=f>>>0){break a}d=(e<<3)+d|0;a=(c&255)-e|0;break b;case 4:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);j=b;b=b+i|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break a}e=(g<<3)+d|0;i=F[b>>2];F[e>>2]=i;F[e+4>>2]=i>>31;b=b+4|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}if(e>>>0>=f>>>0){break a}d=(e<<3)+d|0;a=(c&255)-e|0;break b;case 5:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);j=b;b=b+i|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break a}e=(g<<3)+d|0;F[e>>2]=F[b>>2];F[e+4>>2]=0;b=b+4|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}if(e>>>0>=f>>>0){break a}d=(e<<3)+d|0;a=(c&255)-e|0;break b;case 6:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);j=b;b=b+i|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break a}i=F[b+4>>2];e=(g<<3)+d|0;F[e>>2]=F[b>>2];F[e+4>>2]=i;b=b+8|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}if(e>>>0>=f>>>0){break a}d=(e<<3)+d|0;a=(c&255)-e|0;break b;case 7:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);j=b;b=b+i|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break a}e=F[b>>2];i=F[b+4>>2];if((i|0)<0){break a}j=(g<<3)+d|0;F[j>>2]=e;F[j+4>>2]=i;b=b+8|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}if(e>>>0>=f>>>0){break a}d=(e<<3)+d|0;a=(c&255)-e|0;break b;case 8:d:{e=G[a+24|0];f=c&255;if(!(e>>>0>>0?e:f)){break d}if(G[a+32|0]){break a}e=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);j=b;b=b+e|0;e=F[a>>2];i=F[e+4>>2];e=F[e>>2];if((b|0)>=(i-e|0)){break a}g=b+e|0;h=c&255;b=0;while(1){k=J[g>>2];if(k>=M(0x8000000000000000)|k=M(1)?~~(k>M(0)?M(P(M(R(M(k*M(2.3283064365386963e-10)))),M(4294967296))):M(S(M(M(k-M(~~k>>>0>>>0))*M(2.3283064365386963e-10)))))>>>0:0;m=~~k>>>0;break e}j=-2147483648;m=0}F[e>>2]=m;F[e+4>>2]=j;b=b+1|0;e=G[a+24|0];if(b>>>0>=(e>>>0>>0?e:h)>>>0){break d}g=g+4|0;if(i>>>0>g>>>0){continue}break}break a}if(e>>>0>=f>>>0){break a}d=(e<<3)+d|0;a=(c&255)-e|0;break b;case 9:f:{e=G[a+24|0];f=c&255;if(!(e>>>0>>0?e:f)){break f}if(G[a+32|0]){break a}e=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);j=b;b=b+e|0;e=F[a>>2];i=F[e+4>>2];e=F[e>>2];if((b|0)>=(i-e|0)){break a}g=b+e|0;h=c&255;b=0;while(1){l=K[g>>3];if(l>=0x8000000000000000|l<-0x8000000000000000|l!=l){break a}o=N(l);if(o==Infinity){break a}e=(b<<3)+d|0;g:{if(o<0x8000000000000000){j=N(l)>=1?~~(l>0?P(R(l*2.3283064365386963e-10),4294967295):S((l-+(~~l>>>0>>>0))*2.3283064365386963e-10))>>>0:0;m=~~l>>>0;break g}j=-2147483648;m=0}F[e>>2]=m;F[e+4>>2]=j;b=b+1|0;e=G[a+24|0];if(b>>>0>=(e>>>0>>0?e:h)>>>0){break f}g=g+8|0;if(i>>>0>g>>>0){continue}break}break a}if(e>>>0>=f>>>0){break a}d=(e<<3)+d|0;a=(c&255)-e|0;break b;case 10:break c;default:break a}}e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);j=b;b=b+i|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break a}e=(g<<3)+d|0;F[e>>2]=G[b|0];F[e+4>>2]=0;b=b+1|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}if(e>>>0>=f>>>0){break a}d=(e<<3)+d|0;a=(c&255)-e|0}ma(d,0,a<<3)}}function le(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;j=a;a:{b:{c:{d:{e:{f:{g:{h:{a=F[a+8>>2];switch(F[a+28>>2]-1|0){case 4:break c;case 5:break d;case 2:break e;case 3:break f;case 0:break g;case 1:break h;default:break a}}f=G[a+24|0];c=ka(f);a=F[j+16>>2];if(F[a+80>>2]){g=F[F[a>>2]>>2]+F[a+48>>2]|0}else{g=0}if(!b){break b}if(f){o=f&252;l=f&3;h=f>>>0<4;while(1){a=0;e=0;if(!h){while(1){k=g+(d<<2)|0;D[a+c|0]=F[k>>2];D[(a|1)+c|0]=F[k+4>>2];D[(a|2)+c|0]=F[k+8>>2];D[(a|3)+c|0]=F[k+12>>2];a=a+4|0;d=d+4|0;e=e+4|0;if((o|0)!=(e|0)){continue}break}}e=0;if(l){while(1){D[a+c|0]=F[g+(d<<2)>>2];a=a+1|0;d=d+1|0;e=e+1|0;if((l|0)!=(e|0)){continue}break}}la(F[F[F[j+8>>2]+64>>2]>>2]+m|0,c,f);m=f+m|0;n=n+1|0;if((n|0)!=(b|0)){continue}break}break b}a=0;if((b|0)!=1){g=b&-2;while(1){la(F[F[F[j+8>>2]+64>>2]>>2]+a|0,c,f);a=a+f|0;la(a+F[F[F[j+8>>2]+64>>2]>>2]|0,c,f);a=a+f|0;d=d+2|0;if((g|0)!=(d|0)){continue}break}}if(!(b&1)){break b}la(F[F[F[j+8>>2]+64>>2]>>2]+a|0,c,f);break b}f=G[a+24|0];c=ka(f);a=F[j+16>>2];if(F[a+80>>2]){g=F[F[a>>2]>>2]+F[a+48>>2]|0}else{g=0}if(!b){break b}if(f){o=f&252;l=f&3;h=f>>>0<4;while(1){a=0;e=0;if(!h){while(1){k=g+(d<<2)|0;D[a+c|0]=F[k>>2];D[(a|1)+c|0]=F[k+4>>2];D[(a|2)+c|0]=F[k+8>>2];D[(a|3)+c|0]=F[k+12>>2];a=a+4|0;d=d+4|0;e=e+4|0;if((o|0)!=(e|0)){continue}break}}e=0;if(l){while(1){D[a+c|0]=F[g+(d<<2)>>2];a=a+1|0;d=d+1|0;e=e+1|0;if((l|0)!=(e|0)){continue}break}}la(F[F[F[j+8>>2]+64>>2]>>2]+m|0,c,f);m=f+m|0;n=n+1|0;if((n|0)!=(b|0)){continue}break}break b}a=0;if((b|0)!=1){g=b&-2;while(1){la(F[F[F[j+8>>2]+64>>2]>>2]+a|0,c,f);a=a+f|0;la(a+F[F[F[j+8>>2]+64>>2]>>2]|0,c,f);a=a+f|0;d=d+2|0;if((g|0)!=(d|0)){continue}break}}if(!(b&1)){break b}la(F[F[F[j+8>>2]+64>>2]>>2]+a|0,c,f);break b}h=G[a+24|0];i=h<<1;c=ka(i);a=F[j+16>>2];if(F[a+80>>2]){g=F[F[a>>2]>>2]+F[a+48>>2]|0}else{g=0}if(!b){break b}if(h){o=h&252;l=h&3;h=h>>>0<4;while(1){a=0;e=0;if(!h){while(1){f=a<<1;k=g+(d<<2)|0;E[f+c>>1]=F[k>>2];E[(f|2)+c>>1]=F[k+4>>2];E[(f|4)+c>>1]=F[k+8>>2];E[(f|6)+c>>1]=F[k+12>>2];a=a+4|0;d=d+4|0;e=e+4|0;if((o|0)!=(e|0)){continue}break}}e=0;if(l){while(1){E[(a<<1)+c>>1]=F[g+(d<<2)>>2];a=a+1|0;d=d+1|0;e=e+1|0;if((l|0)!=(e|0)){continue}break}}la(F[F[F[j+8>>2]+64>>2]>>2]+n|0,c,i);n=i+n|0;m=m+1|0;if((m|0)!=(b|0)){continue}break}break b}a=0;if((b|0)!=1){g=b&-2;while(1){la(F[F[F[j+8>>2]+64>>2]>>2]+a|0,c,i);a=a+i|0;la(a+F[F[F[j+8>>2]+64>>2]>>2]|0,c,i);a=a+i|0;d=d+2|0;if((g|0)!=(d|0)){continue}break}}if(!(b&1)){break b}la(F[F[F[j+8>>2]+64>>2]>>2]+a|0,c,i);break b}h=G[a+24|0];i=h<<1;c=ka(i);a=F[j+16>>2];if(F[a+80>>2]){g=F[F[a>>2]>>2]+F[a+48>>2]|0}else{g=0}if(!b){break b}if(h){o=h&252;l=h&3;h=h>>>0<4;while(1){a=0;e=0;if(!h){while(1){f=a<<1;k=g+(d<<2)|0;E[f+c>>1]=F[k>>2];E[(f|2)+c>>1]=F[k+4>>2];E[(f|4)+c>>1]=F[k+8>>2];E[(f|6)+c>>1]=F[k+12>>2];a=a+4|0;d=d+4|0;e=e+4|0;if((o|0)!=(e|0)){continue}break}}e=0;if(l){while(1){E[(a<<1)+c>>1]=F[g+(d<<2)>>2];a=a+1|0;d=d+1|0;e=e+1|0;if((l|0)!=(e|0)){continue}break}}la(F[F[F[j+8>>2]+64>>2]>>2]+n|0,c,i);n=i+n|0;m=m+1|0;if((m|0)!=(b|0)){continue}break}break b}a=0;if((b|0)!=1){g=b&-2;while(1){la(F[F[F[j+8>>2]+64>>2]>>2]+a|0,c,i);a=a+i|0;la(a+F[F[F[j+8>>2]+64>>2]>>2]|0,c,i);a=a+i|0;d=d+2|0;if((g|0)!=(d|0)){continue}break}}if(!(b&1)){break b}la(F[F[F[j+8>>2]+64>>2]>>2]+a|0,c,i);break b}h=G[a+24|0];i=h<<2;c=ka(i);a=F[j+16>>2];if(F[a+80>>2]){g=F[F[a>>2]>>2]+F[a+48>>2]|0}else{g=0}if(!b){break b}if(h){o=h&252;l=h&3;h=h>>>0<4;while(1){a=0;e=0;if(!h){while(1){f=a<<2;k=g+(d<<2)|0;F[f+c>>2]=F[k>>2];F[(f|4)+c>>2]=F[k+4>>2];F[(f|8)+c>>2]=F[k+8>>2];F[(f|12)+c>>2]=F[k+12>>2];a=a+4|0;d=d+4|0;e=e+4|0;if((o|0)!=(e|0)){continue}break}}e=0;if(l){while(1){F[(a<<2)+c>>2]=F[g+(d<<2)>>2];a=a+1|0;d=d+1|0;e=e+1|0;if((l|0)!=(e|0)){continue}break}}la(F[F[F[j+8>>2]+64>>2]>>2]+n|0,c,i);n=i+n|0;m=m+1|0;if((m|0)!=(b|0)){continue}break}break b}a=0;if((b|0)!=1){g=b&-2;while(1){la(F[F[F[j+8>>2]+64>>2]>>2]+a|0,c,i);a=a+i|0;la(a+F[F[F[j+8>>2]+64>>2]>>2]|0,c,i);a=a+i|0;d=d+2|0;if((g|0)!=(d|0)){continue}break}}if(!(b&1)){break b}la(F[F[F[j+8>>2]+64>>2]>>2]+a|0,c,i);break b}h=G[a+24|0];i=h<<2;c=ka(i);a=F[j+16>>2];if(F[a+80>>2]){g=F[F[a>>2]>>2]+F[a+48>>2]|0}else{g=0}if(!b){break b}if(h){o=h&252;l=h&3;h=h>>>0<4;while(1){a=0;e=0;if(!h){while(1){f=a<<2;k=g+(d<<2)|0;F[f+c>>2]=F[k>>2];F[(f|4)+c>>2]=F[k+4>>2];F[(f|8)+c>>2]=F[k+8>>2];F[(f|12)+c>>2]=F[k+12>>2];a=a+4|0;d=d+4|0;e=e+4|0;if((o|0)!=(e|0)){continue}break}}e=0;if(l){while(1){F[(a<<2)+c>>2]=F[g+(d<<2)>>2];a=a+1|0;d=d+1|0;e=e+1|0;if((l|0)!=(e|0)){continue}break}}la(F[F[F[j+8>>2]+64>>2]>>2]+n|0,c,i);n=i+n|0;m=m+1|0;if((m|0)!=(b|0)){continue}break}break b}a=0;if((b|0)!=1){g=b&-2;while(1){la(F[F[F[j+8>>2]+64>>2]>>2]+a|0,c,i);a=a+i|0;la(a+F[F[F[j+8>>2]+64>>2]>>2]|0,c,i);a=a+i|0;d=d+2|0;if((g|0)!=(d|0)){continue}break}}if(!(b&1)){break b}la(F[F[F[j+8>>2]+64>>2]>>2]+a|0,c,i)}ja(c);c=1}return c|0}function xb(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=M(0);a:{b:{if(!d){break b}c:{switch(F[a+28>>2]-1|0){case 0:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];l=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+l|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}F[(g<<2)+d>>2]=D[b|0];b=b+1|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 1:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];l=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+l|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}F[(g<<2)+d>>2]=G[b|0];b=b+1|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 2:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];l=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+l|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}F[(g<<2)+d>>2]=E[b>>1];b=b+2|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 3:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];l=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+l|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}F[(g<<2)+d>>2]=H[b>>1];b=b+2|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 4:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];l=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+l|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}F[(g<<2)+d>>2]=F[b>>2];b=b+4|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 5:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];l=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+l|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}F[(g<<2)+d>>2]=F[b>>2];b=b+4|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 6:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];l=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+l|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}e=F[b>>2];if(F[b+4>>2]){break b}F[(g<<2)+d>>2]=e;b=b+8|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 7:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];l=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+l|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}e=F[b>>2];if(F[b+4>>2]){break b}F[(g<<2)+d>>2]=e;b=b+8|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 8:d:{e:{e=G[a+24|0];c=c&255;if(!(c>>>0>e>>>0?e:c)){break e}e=F[a>>2];k=F[e>>2];g=k;f=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+f|0;g=b+g|0;f=F[e+4>>2];e=f-k|0;if(!G[a+32|0]){k=0;if((b|0)>=(e|0)){break d}b=0;while(1){m=J[g>>2];if(m>=M(4294967296)|m=M(0)){i=~~m>>>0}else{i=0}F[e>>2]=i;b=b+1|0;e=G[a+24|0];if(b>>>0>=(c>>>0>e>>>0?e:c)>>>0){break e}g=g+4|0;if(f>>>0>g>>>0){continue}break}break d}k=0;if((b|0)>=(e|0)){break d}b=0;while(1){m=J[g>>2];if(m>=M(4294967296)|mM(1)){break d}e=(b<<2)+d|0;j=R(+m*4294967295+.5);f:{if(j<4294967296&j>=0){i=~~j>>>0;break f}i=0}F[e>>2]=i;b=b+1|0;e=G[a+24|0];if(b>>>0>=(c>>>0>e>>>0?e:c)>>>0){break e}g=g+4|0;if(f>>>0>g>>>0){continue}break}break d}k=1;if(c>>>0<=e>>>0){break d}ma((e<<2)+d|0,0,c-e<<2)}return k;case 9:g:{h:{e=G[a+24|0];c=c&255;if(!(c>>>0>e>>>0?e:c)){break h}e=F[a>>2];k=F[e>>2];g=k;f=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+f|0;g=b+g|0;f=F[e+4>>2];e=f-k|0;if(!G[a+32|0]){k=0;if((b|0)>=(e|0)){break g}b=0;while(1){j=K[g>>3];if(j>=4294967295|j<0|(N(j)==Infinity|j!=j)){break g}e=(b<<2)+d|0;if(j<4294967296&j>=0){i=~~j>>>0}else{i=0}F[e>>2]=i;b=b+1|0;e=G[a+24|0];if(b>>>0>=(c>>>0>e>>>0?e:c)>>>0){break h}g=g+8|0;if(f>>>0>g>>>0){continue}break}break g}k=0;if((b|0)>=(e|0)){break g}b=0;while(1){j=K[g>>3];if(j>=4294967295|j<0|(N(j)==Infinity|j!=j)){break g}if(j>1){break g}e=(b<<2)+d|0;j=R(j*4294967295+.5);i:{if(j<4294967296&j>=0){i=~~j>>>0;break i}i=0}F[e>>2]=i;b=b+1|0;e=G[a+24|0];if(b>>>0>=(c>>>0>e>>>0?e:c)>>>0){break h}g=g+8|0;if(f>>>0>g>>>0){continue}break}break g}k=1;if(c>>>0<=e>>>0){break g}ma((e<<2)+d|0,0,c-e<<2)}return k;case 10:break c;default:break b}}e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];h=F[e>>2];l=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);i=b;b=b+l|0;b=b+h|0;h=F[e+4>>2];while(1){if(b>>>0>=h>>>0){break b}F[(g<<2)+d>>2]=G[b|0];b=b+1|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}ma((e<<2)+d|0,0,(c&255)-e<<2)}return k}ma((e<<2)+d|0,0,(c&255)-e<<2);return 1}function rd(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;a:{b:{c:{d:{e:{if(F[a+92>>2]==F[a+88>>2]){break e}c=F[a+52>>2];f:{if((c|0)!=F[a+56>>2]){F[c>>2]=b;F[a+52>>2]=c+4;break f}h=F[a+48>>2];g=c-h|0;d=g>>2;f=d+1|0;if(f>>>0>=1073741824){break a}e=g>>>1|0;g=g>>>0>=2147483644?1073741823:f>>>0>>0?e:f;if(g){if(g>>>0>=1073741824){break d}e=ka(g<<2)}else{e=0}f=e+(d<<2)|0;F[f>>2]=b;d=f+4|0;if((c|0)!=(h|0)){while(1){f=f-4|0;c=c-4|0;F[f>>2]=F[c>>2];if((c|0)!=(h|0)){continue}break}}F[a+56>>2]=e+(g<<2);F[a+52>>2]=d;F[a+48>>2]=f;if(!h){break f}ja(h)}F[a+84>>2]=0;c=-1;e=-1;g:{if((b|0)==-1){break g}d=F[a+4>>2];e=b+1|0;e=(e>>>0)%3|0?e:b-2|0;if((e|0)!=-1){c=F[F[d>>2]+(e<<2)>>2]}h:{if((b>>>0)%3|0){l=b-1|0;break h}l=b+2|0;e=-1;if((l|0)==-1){break g}}e=F[F[d>>2]+(l<<2)>>2]}i=e>>>3&536870908;d=F[a+36>>2];h=d+(c>>>3&536870908)|0;g=F[h>>2];f=1<>2]=f|g;f=a+8|0;if((b|0)!=-1){d=b+1|0;d=(d>>>0)%3|0?d:b-2|0}else{d=-1}Ka(f,c,d);d=F[a+36>>2]}f=d+i|0;d=F[f>>2];c=1<>2]=c|d;d=a+8|0;c=-1;i:{if((b|0)==-1){break i}c=b-1|0;if((b>>>0)%3|0){break i}c=b+2|0}Ka(d,e,c)}c=-1;c=(b|0)!=-1?F[F[F[a+4>>2]>>2]+(b<<2)>>2]:c;f=F[a+36>>2]+(c>>>3&536870908)|0;d=F[f>>2];e=1<>2]=d|e;Ka(a+8|0,c,b)}d=F[a+84>>2];if((d|0)>2){break e}while(1){e=L(d,12)+a|0;b=F[e+52>>2];if((b|0)==F[e+48>>2]){d=d+1|0;if((d|0)!=3){continue}break e}b=b-4|0;c=F[b>>2];F[e+52>>2]=b;F[a+84>>2]=d;if((c|0)==-1){break e}f=F[a+24>>2];b=(c>>>0)/3|0;j:{if(F[f+(b>>>3&268435452)>>2]>>>b&1){break j}k:{while(1){k=(c>>>0)/3|0;b=(k>>>3&268435452)+f|0;F[b>>2]=F[b>>2]|1<>2]>>2]+(c<<2)>>2]:d;f=F[a+36>>2]+(d>>>3&536870908)|0;e=F[f>>2];b=1<>2]=b|e;i=F[(F[F[a+16>>2]+96>>2]+L(k,12)|0)+((c>>>0)%3<<2)>>2];l=F[F[a+20>>2]+4>>2];f=F[l+4>>2];t:{if((f|0)!=F[l+8>>2]){F[f>>2]=i;F[l+4>>2]=f+4;break t}j=F[l>>2];h=f-j|0;g=h>>2;e=g+1|0;if(e>>>0>=1073741824){break s}b=h>>>1|0;h=h>>>0>=2147483644?1073741823:b>>>0>e>>>0?b:e;if(h){if(h>>>0>=1073741824){break d}e=ka(h<<2)}else{e=0}b=e+(g<<2)|0;F[b>>2]=i;g=b+4|0;if((f|0)!=(j|0)){while(1){b=b-4|0;f=f-4|0;F[b>>2]=F[f>>2];if((f|0)!=(j|0)){continue}break}}F[l+8>>2]=e+(h<<2);F[l+4>>2]=g;F[l>>2]=b;if(!j){break t}ja(j)}j=F[a+12>>2];f=F[j+4>>2];u:{if((f|0)!=F[j+8>>2]){F[f>>2]=c;F[j+4>>2]=f+4;break u}i=F[j>>2];h=f-i|0;g=h>>2;e=g+1|0;if(e>>>0>=1073741824){break r}b=h>>>1|0;h=h>>>0>=2147483644?1073741823:b>>>0>e>>>0?b:e;if(h){if(h>>>0>=1073741824){break d}e=ka(h<<2)}else{e=0}b=e+(g<<2)|0;F[b>>2]=c;g=b+4|0;if((f|0)!=(i|0)){while(1){b=b-4|0;f=f-4|0;F[b>>2]=F[f>>2];if((f|0)!=(i|0)){continue}break}}F[j+8>>2]=e+(h<<2);F[j+4>>2]=g;F[j>>2]=b;if(!i){break u}ja(i)}b=F[a+12>>2];F[F[b+12>>2]+(d<<2)>>2]=F[b+24>>2];F[b+24>>2]=F[b+24>>2]+1}if((c|0)==-1){break k}g=F[a+4>>2];f=-1;b=c+1|0;b=(b>>>0)%3|0?b:c-2|0;if((b|0)!=-1){f=F[F[g+12>>2]+(b<<2)>>2]}v:{w:{if((L(k,3)|0)!=(c|0)){d=c-1|0;break w}d=c+2|0;c=-1;if((d|0)==-1){break v}}c=F[F[g+12>>2]+(d<<2)>>2]}d=(c|0)==-1;e=(c>>>0)/3|0;if((f|0)!=-1){b=(f>>>0)/3|0;b=F[F[a+24>>2]+(b>>>3&268435452)>>2]&1<>2]+(b>>>3&536870908)>>2]>>>b&1){break x}k=0;b=F[F[g>>2]+(c<<2)>>2];if(!(F[F[a+36>>2]+(b>>>3&536870908)>>2]>>>b&1)){b=F[a+88>>2]+(b<<2)|0;e=F[b>>2];F[b>>2]=e+1;k=(e|0)<=0?2:1}if(F[a+84>>2]>=(k|0)&l){break m}j=L(k,12)+a|0;b=F[j+52>>2];y:{if((b|0)!=F[j+56>>2]){F[b>>2]=c;F[j+52>>2]=b+4;break y}i=F[j+48>>2];h=b-i|0;d=h>>2;g=d+1|0;if(g>>>0>=1073741824){break c}e=h>>>1|0;g=h>>>0>=2147483644?1073741823:e>>>0>g>>>0?e:g;if(g){if(g>>>0>=1073741824){break d}e=ka(g<<2)}else{e=0}d=e+(d<<2)|0;F[d>>2]=c;c=d+4|0;if((b|0)!=(i|0)){while(1){d=d-4|0;b=b-4|0;F[d>>2]=F[b>>2];if((b|0)!=(i|0)){continue}break}}F[j+48>>2]=d;F[j+52>>2]=c;F[j+56>>2]=e+(g<<2);if(!i){break y}ja(i)}if(F[a+84>>2]<=(k|0)){break x}F[a+84>>2]=k}if(l){break k}c=-1;if((f|0)==-1){break n}}c=F[F[F[a+4>>2]>>2]+(f<<2)>>2]}b=0;if(!(F[F[a+36>>2]+(c>>>3&536870908)>>2]>>>c&1)){b=F[a+88>>2]+(c<<2)|0;c=F[b>>2];F[b>>2]=c+1;b=(c|0)<=0?2:1}if(F[a+84>>2]<(b|0)){break l}c=f}f=F[a+24>>2];continue}break}k=L(b,12)+a|0;c=F[k+52>>2];z:{if((c|0)!=F[k+56>>2]){F[c>>2]=f;F[k+52>>2]=c+4;break z}i=F[k+48>>2];h=c-i|0;d=h>>2;g=d+1|0;if(g>>>0>=1073741824){break b}e=h>>>1|0;g=h>>>0>=2147483644?1073741823:e>>>0>g>>>0?e:g;if(g){if(g>>>0>=1073741824){break d}e=ka(g<<2)}else{e=0}d=e+(d<<2)|0;F[d>>2]=f;f=d+4|0;if((c|0)!=(i|0)){while(1){d=d-4|0;c=c-4|0;F[d>>2]=F[c>>2];if((c|0)!=(i|0)){continue}break}}F[k+48>>2]=d;F[k+52>>2]=f;F[k+56>>2]=e+(g<<2);if(!i){break z}ja(i)}d=F[a+84>>2];if((d|0)<=(b|0)){break j}F[a+84>>2]=b;d=b;break j}d=F[a+84>>2]}if((d|0)<3){continue}break}}return 1}oa();v()}na();v()}na();v()}na();v()}function Mc(a){var b=0,c=0,d=0,e=0,f=0,g=0;e=Z-16|0;Z=e;F[e+12>>2]=a;a:{if(a>>>0<=211){d=F[Lc(10352,10544,e+12|0)>>2];break a}if(a>>>0>=4294967292){V();v()}f=(a>>>0)/210|0;d=L(f,210);F[e+8>>2]=a-d;g=Lc(10544,10736,e+8|0)-10544>>2;while(1){d=F[(g<<2)+10544>>2]+d|0;a=5;while(1){b:{if((a|0)==47){a=211;while(1){b=(d>>>0)/(a>>>0)|0;if(b>>>0>>0){break a}if((L(a,b)|0)==(d|0)){break b}b=a+10|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+12|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+16|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+18|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+22|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+28|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+30|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+36|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+40|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+42|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+46|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+52|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+58|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+60|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+66|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+70|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+72|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+78|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+82|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+88|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+96|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+100|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+102|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+106|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+108|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+112|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+120|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+126|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+130|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+136|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+138|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+142|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+148|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+150|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+156|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+162|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+166|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+168|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+172|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+178|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+180|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+186|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+190|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+192|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+196|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+198|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}if((L(b,c)|0)==(d|0)){break b}b=a+208|0;c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}a=a+210|0;if((L(b,c)|0)!=(d|0)){continue}break}break b}b=F[(a<<2)+10352>>2];c=(d>>>0)/(b>>>0)|0;if(b>>>0>c>>>0){break a}a=a+1|0;if((L(b,c)|0)!=(d|0)){continue}}break}d=g+1|0;a=(d|0)==48;g=a?0:d;f=a+f|0;d=L(f,210);continue}}Z=e+16|0;return d}function lb(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=M(0),k=0,l=0;a:{if(!d){break a}b:{c:{switch(F[a+28>>2]-1|0){case 0:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];g=F[e>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);k=b;b=b+i|0;b=b+g|0;g=F[e+4>>2];i=G[a+32|0];while(1){if(b>>>0>=g>>>0){break a}j=M(D[b|0]);J[(h<<2)+d>>2]=i?M(j/M(127)):j;b=b+1|0;h=h+1|0;e=G[a+24|0];if(h>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break a}d=(e<<2)+d|0;a=(c&255)-e|0;break b;case 1:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];g=F[e>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);k=b;b=b+i|0;b=b+g|0;g=F[e+4>>2];i=G[a+32|0];while(1){if(b>>>0>=g>>>0){break a}j=M(G[b|0]);J[(h<<2)+d>>2]=i?M(j/M(255)):j;b=b+1|0;h=h+1|0;e=G[a+24|0];if(h>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break a}d=(e<<2)+d|0;a=(c&255)-e|0;break b;case 2:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];g=F[e>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);k=b;b=b+i|0;b=b+g|0;g=F[e+4>>2];i=G[a+32|0];while(1){if(b>>>0>=g>>>0){break a}j=M(E[b>>1]);J[(h<<2)+d>>2]=i?M(j/M(32767)):j;b=b+2|0;h=h+1|0;e=G[a+24|0];if(h>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break a}d=(e<<2)+d|0;a=(c&255)-e|0;break b;case 3:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];g=F[e>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);k=b;b=b+i|0;b=b+g|0;g=F[e+4>>2];i=G[a+32|0];while(1){if(b>>>0>=g>>>0){break a}j=M(H[b>>1]);J[(h<<2)+d>>2]=i?M(j/M(65535)):j;b=b+2|0;h=h+1|0;e=G[a+24|0];if(h>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break a}d=(e<<2)+d|0;a=(c&255)-e|0;break b;case 4:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];g=F[e>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);k=b;b=b+i|0;b=b+g|0;g=F[e+4>>2];i=G[a+32|0];while(1){if(b>>>0>=g>>>0){break a}j=M(F[b>>2]);J[(h<<2)+d>>2]=i?M(j*M(4.656612873077393e-10)):j;b=b+4|0;h=h+1|0;e=G[a+24|0];if(h>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break a}d=(e<<2)+d|0;a=(c&255)-e|0;break b;case 5:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];g=F[e>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);k=b;b=b+i|0;b=b+g|0;g=F[e+4>>2];i=G[a+32|0];while(1){if(b>>>0>=g>>>0){break a}j=M(I[b>>2]);J[(h<<2)+d>>2]=i?M(j*M(2.3283064365386963e-10)):j;b=b+4|0;h=h+1|0;e=G[a+24|0];if(h>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break a}d=(e<<2)+d|0;a=(c&255)-e|0;break b;case 6:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];g=F[e>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);k=b;b=b+i|0;b=b+g|0;g=F[e+4>>2];i=G[a+32|0];while(1){if(b>>>0>=g>>>0){break a}j=M(+I[b>>2]+ +F[b+4>>2]*4294967296);J[(h<<2)+d>>2]=i?M(j*M(10842021724855044e-35)):j;b=b+8|0;h=h+1|0;e=G[a+24|0];if(h>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break a}d=(e<<2)+d|0;a=(c&255)-e|0;break b;case 7:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];g=F[e>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);k=b;b=b+i|0;b=b+g|0;g=F[e+4>>2];i=G[a+32|0];while(1){if(b>>>0>=g>>>0){break a}j=M(+I[b>>2]+ +I[b+4>>2]*4294967296);J[(h<<2)+d>>2]=i?M(j*M(5.421010862427522e-20)):j;b=b+8|0;h=h+1|0;e=G[a+24|0];if(h>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break a}d=(e<<2)+d|0;a=(c&255)-e|0;break b;case 8:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];g=F[e>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);k=b;b=b+i|0;b=b+g|0;g=F[e+4>>2];while(1){if(b>>>0>=g>>>0){break a}J[(h<<2)+d>>2]=J[b>>2];b=b+4|0;h=h+1|0;e=G[a+24|0];if(h>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break a}d=(e<<2)+d|0;a=(c&255)-e|0;break b;case 9:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];g=F[e>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);k=b;b=b+i|0;b=b+g|0;g=F[e+4>>2];while(1){if(b>>>0>=g>>>0){break a}J[(h<<2)+d>>2]=K[b>>3];b=b+8|0;h=h+1|0;e=G[a+24|0];if(h>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break a}d=(e<<2)+d|0;a=(c&255)-e|0;break b;case 10:break c;default:break a}}e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[a>>2];g=F[e>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);k=b;b=b+i|0;b=b+g|0;g=F[e+4>>2];while(1){if(b>>>0>=g>>>0){break a}J[(h<<2)+d>>2]=G[b|0]?M(1):M(0);b=b+1|0;h=h+1|0;e=G[a+24|0];if(h>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}l=1;if(e>>>0>=f>>>0){break a}d=(e<<2)+d|0;a=(c&255)-e|0}ma(d,0,a<<2)}return l}function Cb(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=M(0),m=M(0);a:{b:{if(!d){break b}c:{switch(F[a+28>>2]-1|0){case 0:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[F[a>>2]>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(I[F[a>>2]+4>>2]<=b>>>0){break b}D[d+g|0]=G[b|0];b=b+1|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 1:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[F[a>>2]>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(I[F[a>>2]+4>>2]<=b>>>0){return 0}e=D[b|0];if((e|0)<0){break b}D[d+g|0]=e;b=b+1|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 2:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[F[a>>2]>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(I[F[a>>2]+4>>2]<=b>>>0){break b}e=H[b>>1];if((e+128&65535)>>>0>255){break b}D[d+g|0]=e;b=b+2|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 3:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[F[a>>2]>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(I[F[a>>2]+4>>2]<=b>>>0){break b}e=H[b>>1];if(e>>>0>127){break b}D[d+g|0]=e;b=b+2|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 4:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[F[a>>2]>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(I[F[a>>2]+4>>2]<=b>>>0){break b}e=F[b>>2];if(e+128>>>0>255){break b}D[d+g|0]=e;b=b+4|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 5:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[F[a>>2]>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(I[F[a>>2]+4>>2]<=b>>>0){break b}e=F[b>>2];if(e>>>0>127){break b}D[d+g|0]=e;b=b+4|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 6:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[F[a>>2]>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(I[F[a>>2]+4>>2]<=b>>>0){break b}i=F[b+4>>2];e=F[b>>2];h=e+128|0;i=h>>>0<128?i+1|0:i;if(!i&h>>>0>255|i){break b}D[d+g|0]=e;b=b+8|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 7:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[F[a>>2]>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(I[F[a>>2]+4>>2]<=b>>>0){break b}i=F[b+4>>2];e=F[b>>2];if(!i&e>>>0>127|i){break b}D[d+g|0]=e;b=b+8|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 8:e=G[a+24|0];c=c&255;d:{if(c>>>0>e>>>0?e:c){e=F[F[a>>2]>>2];f=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);h=b;b=b+f|0;b=b+e|0;while(1){if(I[F[a>>2]+4>>2]<=b>>>0){break d}l=J[b>>2];if(l>=M(127)|lM(1)){break d}j=R(+l*127+.5);if(!(N(j)<2147483648)){break f}h=~~j;break e}if(!(m>>0<(c>>>0>e>>>0?e:c)>>>0){continue}break}}k=1;if(c>>>0<=e>>>0){break d}ma(d+e|0,0,c-e|0)}return k;case 9:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[F[a>>2]>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(I[F[a>>2]+4>>2]<=b>>>0){break b}j=K[b>>3];if(j>=127|j<-128|(N(j)==Infinity|j!=j)){break b}e=d+g|0;if(G[a+32|0]){if(j<0|j>1){break b}j=R(j*127+.5)}g:{if(N(j)<2147483648){h=~~j;break g}h=-2147483648}D[e|0]=h;b=b+8|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 10:break c;default:break b}}e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[F[a>>2]>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(I[F[a>>2]+4>>2]<=b>>>0){break b}D[d+g|0]=G[b|0];b=b+1|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}ma(d+e|0,0,(c&255)-e|0)}return k}ma(d+e|0,0,(c&255)-e|0);return 1}function Bb(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=M(0);a:{b:{if(!d){break b}c:{switch(F[a+28>>2]-1|0){case 0:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[F[a>>2]>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(I[F[a>>2]+4>>2]<=b>>>0){return 0}e=D[b|0];if((e|0)<0){break b}D[d+g|0]=e;b=b+1|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 1:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[F[a>>2]>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(I[F[a>>2]+4>>2]<=b>>>0){break b}D[d+g|0]=G[b|0];b=b+1|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 2:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[F[a>>2]>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(I[F[a>>2]+4>>2]<=b>>>0){break b}e=H[b>>1];if(e>>>0>255){break b}D[d+g|0]=e;b=b+2|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 3:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[F[a>>2]>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(I[F[a>>2]+4>>2]<=b>>>0){break b}e=H[b>>1];if(e>>>0>255){break b}D[d+g|0]=e;b=b+2|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 4:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[F[a>>2]>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(I[F[a>>2]+4>>2]<=b>>>0){break b}e=F[b>>2];if(e>>>0>255){break b}D[d+g|0]=e;b=b+4|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 5:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[F[a>>2]>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(I[F[a>>2]+4>>2]<=b>>>0){break b}e=F[b>>2];if(e>>>0>255){break b}D[d+g|0]=e;b=b+4|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 6:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[F[a>>2]>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(I[F[a>>2]+4>>2]<=b>>>0){break b}i=F[b+4>>2];e=F[b>>2];if(!i&e>>>0>255|i){break b}D[d+g|0]=e;b=b+8|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 7:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[F[a>>2]>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(I[F[a>>2]+4>>2]<=b>>>0){break b}i=F[b+4>>2];e=F[b>>2];if(!i&e>>>0>255|i){break b}D[d+g|0]=e;b=b+8|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 8:e=G[a+24|0];c=c&255;d:{if(c>>>0>e>>>0?e:c){e=F[F[a>>2]>>2];f=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);h=b;b=b+f|0;b=b+e|0;while(1){if(I[F[a>>2]+4>>2]<=b>>>0){break d}l=J[b>>2];if(l>=M(255)|lM(1)){break d}j=R(+l*255+.5);if(!(j<4294967296&j>=0)){break f}h=~~j>>>0;break e}if(!(l=M(0))){break f}h=~~l>>>0;break e}h=0}D[e|0]=h;b=b+4|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(c>>>0>e>>>0?e:c)>>>0){continue}break}}k=1;if(c>>>0<=e>>>0){break d}ma(d+e|0,0,c-e|0)}return k;case 9:e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[F[a>>2]>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(I[F[a>>2]+4>>2]<=b>>>0){break b}j=K[b>>3];if(j>=255|j<0|(N(j)==Infinity|j!=j)){break b}e=d+g|0;if(G[a+32|0]){if(j>1){break b}j=R(j*255+.5)}g:{if(j<4294967296&j>=0){h=~~j>>>0;break g}h=0}D[e|0]=h;b=b+8|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}break a;case 10:break c;default:break b}}e=G[a+24|0];f=c&255;if(e>>>0>>0?e:f){e=F[F[a>>2]>>2];i=F[a+48>>2];b=ki(F[a+40>>2],F[a+44>>2],b,0);h=b;b=b+i|0;b=b+e|0;while(1){if(I[F[a>>2]+4>>2]<=b>>>0){break b}D[d+g|0]=G[b|0];b=b+1|0;g=g+1|0;e=G[a+24|0];if(g>>>0<(e>>>0>>0?e:f)>>>0){continue}break}}k=1;if(e>>>0>=f>>>0){break b}ma(d+e|0,0,(c&255)-e|0)}return k}ma(d+e|0,0,(c&255)-e|0);return 1}function jc(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;e=Z-48|0;Z=e;f=H[5053]|H[5054]<<16;d=H[5051]|H[5052]<<16;E[e+38>>1]=d;E[e+40>>1]=d>>>16;E[e+42>>1]=f;E[e+44>>1]=f>>>16;d=F[2525];F[e+32>>2]=F[2524];F[e+36>>2]=d;d=F[2523];F[e+24>>2]=F[2522];F[e+28>>2]=d;d=F[2521];F[e+16>>2]=F[2520];F[e+20>>2]=d;g=F[b+8>>2];i=F[b+12>>2];h=F[b+20>>2];d=F[b+16>>2];f=d+5|0;h=f>>>0<5?h+1|0:h;a:{b:{if(g>>>0>>0&(h|0)>=(i|0)|(h|0)>(i|0)){d=ya(e+16|0);if(d>>>0>=2147483632){break a}c:{d:{if(d>>>0>=11){b=(d|15)+1|0;c=ka(b);F[e+8>>2]=b|-2147483648;F[e>>2]=c;F[e+4>>2]=d;b=c+d|0;break d}D[e+11|0]=d;b=d+e|0;c=e;if(!d){break c}}la(c,e+16|0,d)}D[b|0]=0;F[a>>2]=-2;b=a+4|0;if(D[e+11|0]>=0){a=F[e+4>>2];F[b>>2]=F[e>>2];F[b+4>>2]=a;F[b+8>>2]=F[e+8>>2];break b}ra(b,F[e>>2],F[e+4>>2]);if(D[e+11|0]>=0){break b}ja(F[e>>2]);break b}f=d+F[b>>2]|0;d=G[f|0]|G[f+1|0]<<8|(G[f+2|0]<<16|G[f+3|0]<<24);D[c|0]=d;D[c+1|0]=d>>>8;D[c+2|0]=d>>>16;D[c+3|0]=d>>>24;D[c+4|0]=G[f+4|0];d=F[b+20>>2];f=F[b+16>>2]+5|0;d=f>>>0<5?d+1|0:d;F[b+16>>2]=f;F[b+20>>2]=d;if(sa(c,1250,5)){d=ka(32);D[d+17|0]=0;D[d+16|0]=G[1494];c=G[1490]|G[1491]<<8|(G[1492]<<16|G[1493]<<24);b=G[1486]|G[1487]<<8|(G[1488]<<16|G[1489]<<24);D[d+8|0]=b;D[d+9|0]=b>>>8;D[d+10|0]=b>>>16;D[d+11|0]=b>>>24;D[d+12|0]=c;D[d+13|0]=c>>>8;D[d+14|0]=c>>>16;D[d+15|0]=c>>>24;c=G[1482]|G[1483]<<8|(G[1484]<<16|G[1485]<<24);b=G[1478]|G[1479]<<8|(G[1480]<<16|G[1481]<<24);D[d|0]=b;D[d+1|0]=b>>>8;D[d+2|0]=b>>>16;D[d+3|0]=b>>>24;D[d+4|0]=c;D[d+5|0]=c>>>8;D[d+6|0]=c>>>16;D[d+7|0]=c>>>24;F[a>>2]=-1;ra(a+4|0,d,17);ja(d);break b}g=F[b+12>>2];if((g|0)<=(d|0)&I[b+8>>2]<=f>>>0|(d|0)>(g|0)){d=ya(e+16|0);if(d>>>0>=2147483632){break a}e:{f:{if(d>>>0>=11){b=(d|15)+1|0;c=ka(b);F[e+8>>2]=b|-2147483648;F[e>>2]=c;F[e+4>>2]=d;b=c+d|0;break f}D[e+11|0]=d;b=d+e|0;c=e;if(!d){break e}}la(c,e+16|0,d)}D[b|0]=0;F[a>>2]=-2;b=a+4|0;if(D[e+11|0]>=0){a=F[e+4>>2];F[b>>2]=F[e>>2];F[b+4>>2]=a;F[b+8>>2]=F[e+8>>2];break b}ra(b,F[e>>2],F[e+4>>2]);if(D[e+11|0]>=0){break b}ja(F[e>>2]);break b}D[c+5|0]=G[f+F[b>>2]|0];g=F[b+20>>2];d=F[b+16>>2]+1|0;g=d?g:g+1|0;F[b+16>>2]=d;F[b+20>>2]=g;f=F[b+12>>2];if((f|0)<=(g|0)&I[b+8>>2]<=d>>>0|(g|0)>(f|0)){d=ya(e+16|0);if(d>>>0>=2147483632){break a}g:{h:{if(d>>>0>=11){b=(d|15)+1|0;c=ka(b);F[e+8>>2]=b|-2147483648;F[e>>2]=c;F[e+4>>2]=d;b=c+d|0;break h}D[e+11|0]=d;b=d+e|0;c=e;if(!d){break g}}la(c,e+16|0,d)}D[b|0]=0;F[a>>2]=-2;b=a+4|0;if(D[e+11|0]>=0){a=F[e+4>>2];F[b>>2]=F[e>>2];F[b+4>>2]=a;F[b+8>>2]=F[e+8>>2];break b}ra(b,F[e>>2],F[e+4>>2]);if(D[e+11|0]>=0){break b}ja(F[e>>2]);break b}D[c+6|0]=G[d+F[b>>2]|0];h=F[b+20>>2];d=F[b+16>>2]+1|0;h=d?h:h+1|0;F[b+16>>2]=d;F[b+20>>2]=h;f=F[b+12>>2];if((f|0)<=(h|0)&I[b+8>>2]<=d>>>0|(f|0)<(h|0)){d=ya(e+16|0);if(d>>>0>=2147483632){break a}i:{j:{if(d>>>0>=11){b=(d|15)+1|0;c=ka(b);F[e+8>>2]=b|-2147483648;F[e>>2]=c;F[e+4>>2]=d;b=c+d|0;break j}D[e+11|0]=d;b=d+e|0;c=e;if(!d){break i}}la(c,e+16|0,d)}D[b|0]=0;F[a>>2]=-2;b=a+4|0;if(D[e+11|0]>=0){a=F[e+4>>2];F[b>>2]=F[e>>2];F[b+4>>2]=a;F[b+8>>2]=F[e+8>>2];break b}ra(b,F[e>>2],F[e+4>>2]);if(D[e+11|0]>=0){break b}ja(F[e>>2]);break b}D[c+7|0]=G[d+F[b>>2]|0];g=F[b+20>>2];d=F[b+16>>2]+1|0;g=d?g:g+1|0;F[b+16>>2]=d;F[b+20>>2]=g;f=F[b+12>>2];if((f|0)<=(g|0)&I[b+8>>2]<=d>>>0|(g|0)>(f|0)){c=Eb(e,e+16|0);F[a>>2]=-2;b=a+4|0;if(D[c+11|0]>=0){a=F[c+4>>2];F[b>>2]=F[c>>2];F[b+4>>2]=a;F[b+8>>2]=F[c+8>>2];break b}ra(b,F[c>>2],F[c+4>>2]);if(D[c+11|0]>=0){break b}ja(F[c>>2]);break b}D[c+8|0]=G[d+F[b>>2]|0];d=F[b+20>>2];g=F[b+16>>2];f=g+1|0;i=f?d:d+1|0;F[b+16>>2]=f;F[b+20>>2]=i;i=F[b+8>>2];h=F[b+12>>2];g=g+3|0;d=g>>>0<3?d+1|0:d;if(g>>>0>i>>>0&(d|0)>=(h|0)|(d|0)>(h|0)){c=Eb(e,e+16|0);F[a>>2]=-2;b=a+4|0;if(D[c+11|0]>=0){a=F[c+4>>2];F[b>>2]=F[c>>2];F[b+4>>2]=a;F[b+8>>2]=F[c+8>>2];break b}ra(b,F[c>>2],F[c+4>>2]);if(D[c+11|0]>=0){break b}ja(F[c>>2]);break b}d=c;c=F[b>>2]+f|0;E[d+10>>1]=G[c|0]|G[c+1|0]<<8;g=F[b+20>>2];c=F[b+16>>2]+2|0;g=c>>>0<2?g+1|0:g;F[b+16>>2]=c;F[b+20>>2]=g;F[a+8>>2]=0;F[a+12>>2]=0;F[a>>2]=0;F[a+4>>2]=0}Z=e+48|0;return}za();v()}function Mb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,w=0,x=0,y=0;e=Z-96|0;Z=e;f=F[a+16>>2];D[e+92|0]=1;F[e+88>>2]=b;F[e+84>>2]=b;F[e+80>>2]=f;j=F[a+20>>2];d=F[j>>2];a:{b:{f=F[F[f+28>>2]+(b<<2)>>2];if(f>>>0>2]-d>>2>>>0){d=F[F[a+8>>2]+(F[d+(f<<2)>>2]<<2)>>2];f=F[a+4>>2];if(!G[f+84|0]){d=F[F[f+68>>2]+(d<<2)>>2]}F[e+72>>2]=0;F[e+76>>2]=0;j=e- -64|0;F[j>>2]=0;F[j+4>>2]=0;F[e+56>>2]=0;F[e+60>>2]=0;Ga(f,d,D[f+24|0],e+56|0);if((b|0)!=-1){f=b+1|0;j=(f>>>0)%3|0?f:b-2|0;m=((b>>>0)%3|0?-1:2)+b|0;while(1){d=j;f=m;c:{if(!F[a+28>>2]){break c}f=b+1|0;d=(f>>>0)%3|0?f:b-2|0;f=b-1|0;if((b>>>0)%3|0){break c}f=b+2|0}n=F[a+20>>2];b=F[n>>2];d=F[F[F[a+16>>2]+28>>2]+(d<<2)>>2];if(d>>>0>=F[n+4>>2]-b>>2>>>0){break b}d=F[F[a+8>>2]+(F[b+(d<<2)>>2]<<2)>>2];b=F[a+4>>2];if(!G[b+84|0]){d=F[F[b+68>>2]+(d<<2)>>2]}F[e+48>>2]=0;F[e+52>>2]=0;F[e+40>>2]=0;F[e+44>>2]=0;F[e+32>>2]=0;F[e+36>>2]=0;Ga(b,d,D[b+24|0],e+32|0);d=F[a+20>>2];b=F[d>>2];f=F[F[F[a+16>>2]+28>>2]+(f<<2)>>2];if(f>>>0>=F[d+4>>2]-b>>2>>>0){break a}d=F[F[a+8>>2]+(F[b+(f<<2)>>2]<<2)>>2];b=F[a+4>>2];if(!G[b+84|0]){d=F[F[b+68>>2]+(d<<2)>>2]}F[e+24>>2]=0;F[e+28>>2]=0;F[e+16>>2]=0;F[e+20>>2]=0;F[e+8>>2]=0;F[e+12>>2]=0;Ga(b,d,D[b+24|0],e+8|0);g=F[e+8>>2];b=F[e+56>>2];d=g-b|0;p=F[e+60>>2];t=F[e+12>>2]-(p+(b>>>0>g>>>0)|0)|0;h=F[e+40>>2];f=F[e+64>>2];n=h-f|0;u=F[e+68>>2];y=F[e+44>>2]-(u+(f>>>0>h>>>0)|0)|0;g=ki(d,t,n,y);w=o-g|0;x=i-(_+(g>>>0>o>>>0)|0)|0;i=w;h=F[e+16>>2];g=h-f|0;u=F[e+20>>2]-((f>>>0>h>>>0)+u|0)|0;k=F[e+32>>2];h=k-b|0;w=F[e+36>>2]-((b>>>0>k>>>0)+p|0)|0;b=ki(g,u,h,w);o=i+b|0;i=_+x|0;i=b>>>0>o>>>0?i+1|0:i;b=l;l=d;p=t;k=F[e+48>>2];f=F[e+72>>2];d=k-f|0;t=F[e+76>>2];x=F[e+52>>2]-(t+(f>>>0>k>>>0)|0)|0;l=ki(l,p,d,x);k=b+l|0;b=_+q|0;b=k>>>0>>0?b+1|0:b;l=F[e+24>>2];p=l-f|0;f=F[e+28>>2]-((f>>>0>l>>>0)+t|0)|0;q=ki(p,f,h,w);l=k-q|0;q=b-(_+(k>>>0>>0)|0)|0;b=ki(g,u,d,x);d=r-b|0;b=s-(_+(b>>>0>r>>>0)|0)|0;s=ki(p,f,n,y);r=s+d|0;b=_+b|0;s=r>>>0>>0?b+1|0:b;b=F[e+88>>2];f=F[e+80>>2];d:{if(G[e+92|0]){e:{f:{g:{h:{if((b|0)==-1){break h}d=b+1|0;b=(d>>>0)%3|0?d:b-2|0;if((b|0)==-1|F[F[f>>2]+(b>>>3&536870908)>>2]>>>b&1){break h}b=F[F[F[f+64>>2]+12>>2]+(b<<2)>>2];if((b|0)!=-1){break g}}F[e+88>>2]=-1;break f}d=b+1|0;b=(d>>>0)%3|0?d:b-2|0;F[e+88>>2]=b;if((b|0)!=-1){break e}}b=F[e+84>>2];d=-1;i:{if((b|0)==-1){break i}j:{if((b>>>0)%3|0){b=b-1|0;break j}b=b+2|0;d=-1;if((b|0)==-1){break i}}d=-1;if(F[F[f>>2]+(b>>>3&536870908)>>2]>>>b&1){break i}b=F[F[F[f+64>>2]+12>>2]+(b<<2)>>2];d=-1;if((b|0)==-1){break i}d=b-1|0;if((b>>>0)%3|0){break i}d=b+2|0}D[e+92|0]=0;F[e+88>>2]=d;break d}if((b|0)!=F[e+84>>2]){break d}F[e+88>>2]=-1;break d}d=-1;k:{if((b|0)==-1){break k}l:{if((b>>>0)%3|0){b=b-1|0;break l}b=b+2|0;d=-1;if((b|0)==-1){break k}}d=-1;if(F[F[f>>2]+(b>>>3&536870908)>>2]>>>b&1){break k}b=F[F[F[f+64>>2]+12>>2]+(b<<2)>>2];d=-1;if((b|0)==-1){break k}d=b-1|0;if((b>>>0)%3|0){break k}d=b+2|0}F[e+88>>2]=d}b=F[e+88>>2];if((b|0)!=-1){continue}break}}b=s>>31;f=b^r;d=f-b|0;b=(b^s)-((b>>>0>f>>>0)+b|0)|0;m=-1;f=2147483647;g=q>>31;h=g^l;j=h-g|0;n=(g^q)-((h>>>0>>0)+g|0)|0;h=n;k=j^-1;g=h^2147483647;n=i;m:{n:{if(!F[a+28>>2]){if((b|0)==(g|0)&d>>>0>k>>>0|b>>>0>g>>>0){break m}b=b+h|0;a=d+j|0;b=a>>>0>>0?b+1|0:b;f=a;g=i;a=g>>31;d=a;m=d^o;a=m-d|0;i=a;d=(d^g)-((d>>>0>m>>>0)+d|0)|0;a=a+f|0;d=d^2147483647;i=(d|0)==(b|0)&(i^-1)>>>0>>0|b>>>0>d>>>0;a=i?-1:a;if(!(i&0)&(a|0)<=536870912|(a|0)<536870912){break m}b=0;a=a>>>29|0;break n}o:{if((b|0)==(g|0)&d>>>0>k>>>0|b>>>0>g>>>0){break o}b=b+h|0;a=d+j|0;b=a>>>0>>0?b+1|0:b;k=i;d=i>>31;h=d^o;i=h-d|0;j=(d^k)-((d>>>0>h>>>0)+d|0)|0;g=j^2147483647;d=a;a=i;if((g|0)==(b|0)&d>>>0>(a^-1)>>>0|b>>>0>g>>>0){break o}b=b+j|0;m=a+d|0;b=m>>>0>>0?b+1|0:b;f=b;if(!b&m>>>0<536870913){break m}}b=f>>>29|0;a=(f&536870911)<<3|m>>>29}o=li(o,n,a,b);l=li(l,q,a,b);r=li(r,s,a,b)}F[c+8>>2]=o;F[c+4>>2]=l;F[c>>2]=r;Z=e+96|0;return}ta();v()}ta();v()}ta();v()}function te(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0;g=Z-16|0;Z=g;f=1;m=$[F[F[a>>2]+24>>2]](a)|0;a:{if((m|0)<=0){break a}r=a+48|0;f=0;while(1){b:{c:{if(!F[($[F[F[a>>2]+28>>2]](a)|0)+40>>2]){break c}o=l<<2;d=F[o+F[a+36>>2]>>2];c=F[d+8>>2];e=bb(d);if(!e){break c}h=F[($[F[F[a>>2]+28>>2]](a)|0)+40>>2];F[g+12>>2]=F[c+56>>2];d=ka(32);F[g>>2]=d;F[g+4>>2]=24;F[g+8>>2]=-2147483616;c=G[1196]|G[1197]<<8|(G[1198]<<16|G[1199]<<24);b=G[1192]|G[1193]<<8|(G[1194]<<16|G[1195]<<24);D[d+16|0]=b;D[d+17|0]=b>>>8;D[d+18|0]=b>>>16;D[d+19|0]=b>>>24;D[d+20|0]=c;D[d+21|0]=c>>>8;D[d+22|0]=c>>>16;D[d+23|0]=c>>>24;c=G[1188]|G[1189]<<8|(G[1190]<<16|G[1191]<<24);b=G[1184]|G[1185]<<8|(G[1186]<<16|G[1187]<<24);D[d+8|0]=b;D[d+9|0]=b>>>8;D[d+10|0]=b>>>16;D[d+11|0]=b>>>24;D[d+12|0]=c;D[d+13|0]=c>>>8;D[d+14|0]=c>>>16;D[d+15|0]=c>>>24;c=G[1180]|G[1181]<<8|(G[1182]<<16|G[1183]<<24);b=G[1176]|G[1177]<<8|(G[1178]<<16|G[1179]<<24);D[d|0]=b;D[d+1|0]=b>>>8;D[d+2|0]=b>>>16;D[d+3|0]=b>>>24;D[d+4|0]=c;D[d+5|0]=c>>>8;D[d+6|0]=c>>>16;D[d+7|0]=c>>>24;D[d+24|0]=0;c=h+16|0;b=F[c>>2];d:{e:{if(!b){break e}i=F[g+12>>2];d=c;while(1){k=(i|0)>F[b+16>>2];d=k?d:b;b=F[(k?b+4|0:b)>>2];if(b){continue}break}if((c|0)==(d|0)|(i|0)>2]){break e}b=F[d+24>>2];if(!b){break e}i=d+20|0;d=G[g+11|0];c=d<<24>>24<0;k=c?F[g>>2]:g;d=c?F[g+4>>2]:d;while(1){c=G[b+27|0];j=c<<24>>24<0;c=j?F[b+20>>2]:c;p=c>>>0>>0;f:{g:{h:{i:{j:{k:{n=p?c:d;if(n){j=j?F[b+16>>2]:b+16|0;q=sa(k,j,n);if(q){break k}if(c>>>0<=d>>>0){break j}break f}if(c>>>0<=d>>>0){break i}break f}if((q|0)<0){break f}}c=sa(j,k,n);if(c){break h}}if(p){break g}d=gc(i,g);break d}if((c|0)<0){break g}d=gc(i,g);break d}b=b+4|0}b=F[b>>2];if(b){continue}break}}d=gc(h,g)}if(D[g+11|0]<0){ja(F[g>>2])}if(!d){break c}d=0;c=F[F[o+F[a+36>>2]>>2]+8>>2];if(!F[c+64>>2]){b=ka(32);F[b+16>>2]=0;F[b+20>>2]=0;F[b+8>>2]=0;F[b>>2]=0;F[b+4>>2]=0;F[b+24>>2]=0;F[b+28>>2]=0;f=F[c+64>>2];F[c+64>>2]=b;if(f){b=F[f>>2];if(b){F[f+4>>2]=b;ja(b)}ja(f);b=F[c+64>>2]}F[c>>2]=b;f=F[b+20>>2];F[c+8>>2]=F[b+16>>2];F[c+12>>2]=f;f=F[b+24>>2];b=F[b+28>>2];F[c+48>>2]=0;F[c+52>>2]=0;F[c+40>>2]=0;F[c+44>>2]=0;F[c+16>>2]=f;F[c+20>>2]=b}l:{D[c+24|0]=G[e+24|0];F[c+28>>2]=F[e+28>>2];D[c+32|0]=G[e+32|0];b=F[e+44>>2];F[c+40>>2]=F[e+40>>2];F[c+44>>2]=b;b=F[e+52>>2];F[c+48>>2]=F[e+48>>2];F[c+52>>2]=b;F[c+56>>2]=F[e+56>>2];b=F[e+12>>2];F[c+8>>2]=F[e+8>>2];F[c+12>>2]=b;b=F[e+20>>2];F[c+16>>2]=F[e+16>>2];F[c+20>>2]=b;F[c+60>>2]=F[e+60>>2];f=F[e>>2];m:{if(!f){F[c>>2]=0;b=1;break m}h=F[c>>2];b=0;if(!h){break m}b=F[f>>2];f=F[f+4>>2]-b|0;md(h,b,f,0);b=1}if(!b){break l}D[c+84|0]=G[e+84|0];F[c+80>>2]=F[e+80>>2];if((c|0)!=(e|0)){gb(c+68|0,F[e+68>>2],F[e+72>>2])}n:{h=F[e+88>>2];o:{if(h){f=ka(40);e=F[h>>2];F[f+16>>2]=0;F[f+8>>2]=0;F[f+12>>2]=0;F[f>>2]=e;e=F[h+12>>2];b=F[h+8>>2];if((e|0)!=(b|0)){b=e-b|0;if((b|0)<0){break n}e=ka(b);F[f+12>>2]=e;F[f+8>>2]=e;F[f+16>>2]=b+e;b=F[h+8>>2];i=F[h+12>>2];p:{if((b|0)==(i|0)){break p}k=i+(b^-1)|0;j=i-b&7;if(j){while(1){D[e|0]=G[b|0];e=e+1|0;b=b+1|0;d=d+1|0;if((j|0)!=(d|0)){continue}break}}if(k>>>0<7){break p}while(1){D[e|0]=G[b|0];D[e+1|0]=G[b+1|0];D[e+2|0]=G[b+2|0];D[e+3|0]=G[b+3|0];D[e+4|0]=G[b+4|0];D[e+5|0]=G[b+5|0];D[e+6|0]=G[b+6|0];D[e+7|0]=G[b+7|0];e=e+8|0;b=b+8|0;if((i|0)!=(b|0)){continue}break}}F[f+12>>2]=e}d=F[h+36>>2];F[f+32>>2]=F[h+32>>2];F[f+36>>2]=d;d=F[h+28>>2];F[f+24>>2]=F[h+24>>2];F[f+28>>2]=d;e=F[c+88>>2];F[c+88>>2]=f;if(e){break o}break l}e=F[c+88>>2];F[c+88>>2]=0;if(!e){break l}}d=F[e+8>>2];if(d){F[e+12>>2]=d;ja(d)}ja(e);break l}na();v()}break b}d=F[F[a+36>>2]+(l<<2)>>2];if(!($[F[F[d>>2]+24>>2]](d,r)|0)){break a}}l=l+1|0;f=(m|0)<=(l|0);if((l|0)!=(m|0)){continue}break}}Z=g+16|0;return f|0}function Jg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;f=Z-32|0;Z=f;a:{if(!hb(1,f+28|0,F[a+32>>2])){break a}if(!hb(1,f+24|0,F[a+32>>2])){break a}l=F[f+28>>2];if(l>>>0>1431655765){break a}d=F[a+32>>2];c=d;i=F[c+8>>2];b=F[c+16>>2];h=F[c+12>>2];c=F[c+20>>2];g=li(i-b|0,h-(c+(b>>>0>i>>>0)|0)|0,3,0);if(!_&g>>>0>>0){break a}n=F[f+24>>2];g=ki(l,0,3,0);if(!_&g>>>0>>0|((c|0)>=(h|0)&b>>>0>=i>>>0|(c|0)>(h|0))){break a}i=G[b+F[d>>2]|0];b=b+1|0;c=b?c:c+1|0;F[d+16>>2]=b;F[d+20>>2]=c;b:{c:{if(!i){d=0;c=Z-32|0;Z=c;F[c+24>>2]=0;F[c+16>>2]=0;F[c+20>>2]=0;d:{e:{b=L(l,3);if(b){if(b>>>0>=1073741824){break e}i=L(l,12);d=ka(i);ma(d,0,i)}b=mc(b,1,F[a+32>>2],d);f:{g:{if(!(!l|!b)){i=0;while(1){h:{g=e;b=(i<<2)+d|0;h=F[b>>2];e=h>>>1|0;h=g+(h&1?0-e|0:e)|0;if((h|0)<0){break h}F[c>>2]=h;e=F[b+4>>2];g=e>>>1|0;h=h+(e&1?0-g|0:g)|0;if((h|0)<0){break h}F[c+4>>2]=h;b=F[b+8>>2];e=b>>>1|0;e=h+(b&1?0-e|0:e)|0;if((e|0)<0){break h}F[c+8>>2]=e;mb(F[a+44>>2]+96|0,c);i=i+3|0;b=1;j=j+1|0;if((j|0)!=(l|0)){continue}break g}break}b=0;break g}if(!d){break f}}ja(d)}Z=c+32|0;break d}na();v()}if(b){break c}break a}if(n>>>0<=255){if(!l){break c}while(1){i:{F[f+16>>2]=0;F[f+8>>2]=0;F[f+12>>2]=0;d=F[a+32>>2];b=d;i=F[b+16>>2];e=F[b+8>>2];c=F[b+20>>2];g=F[b+12>>2];b=g;if(e>>>0<=i>>>0&(c|0)>=(b|0)|(b|0)<(c|0)){break i}j=F[d>>2];m=G[j+i|0];b=c;h=i+1|0;b=h?b:b+1|0;F[d+16>>2]=h;F[d+20>>2]=b;F[f+8>>2]=m;m=e>>>0>>0&(c|0)>=(g|0)|(c|0)>(g|0);e=m?i:e;g=m?c:g;if((e|0)==(h|0)&(g|0)==(b|0)){break i}m=G[h+j|0];b=c;h=i+2|0;b=h>>>0<2?b+1|0:b;F[d+16>>2]=h;F[d+20>>2]=b;F[f+12>>2]=m;if((e|0)==(h|0)&(b|0)==(g|0)){break i}h=G[h+j|0];b=c;c=i+3|0;b=c>>>0<3?b+1|0:b;F[d+16>>2]=c;F[d+20>>2]=b;F[f+16>>2]=h;mb(F[a+44>>2]+96|0,f+8|0);k=k+1|0;if((l|0)!=(k|0)){continue}break c}break}k=0;break a}if(n>>>0<=65535){if(!l){break c}while(1){j:{F[f+16>>2]=0;F[f+8>>2]=0;F[f+12>>2]=0;j=F[a+32>>2];b=j;c=F[b+8>>2];d=F[b+12>>2];h=F[b+16>>2];b=F[b+20>>2];i=b;e=h+2|0;b=e>>>0<2?b+1|0:b;if(c>>>0>>0&(b|0)>=(d|0)|(b|0)>(d|0)){break j}m=F[j>>2];g=m+h|0;g=G[g|0]|G[g+1|0]<<8;F[j+16>>2]=e;F[j+20>>2]=b;F[f+8>>2]=g;b=i;g=h+4|0;b=g>>>0<4?b+1|0:b;if(c>>>0>>0&(b|0)>=(d|0)|(b|0)>(d|0)){break j}e=e+m|0;e=G[e|0]|G[e+1|0]<<8;F[j+16>>2]=g;F[j+20>>2]=b;F[f+12>>2]=e;e=c;b=i;c=h+6|0;b=c>>>0<6?b+1|0:b;if(c>>>0>e>>>0&(b|0)>=(d|0)|(b|0)>(d|0)){break j}d=g+m|0;d=G[d|0]|G[d+1|0]<<8;F[j+16>>2]=c;F[j+20>>2]=b;F[f+16>>2]=d;mb(F[a+44>>2]+96|0,f+8|0);k=k+1|0;if((l|0)!=(k|0)){continue}break c}break}k=0;break a}k:{if(n>>>0>2097151){break k}b=H[a+36>>1];if(((b<<8|b>>>8)&65535)>>>0<514){break k}if(!l){break c}while(1){l:{F[f+16>>2]=0;F[f+8>>2]=0;F[f+12>>2]=0;if(!hb(1,f+4|0,F[a+32>>2])){break l}F[f+8>>2]=F[f+4>>2];if(!hb(1,f+4|0,F[a+32>>2])){break l}F[f+12>>2]=F[f+4>>2];if(!hb(1,f+4|0,F[a+32>>2])){break l}F[f+16>>2]=F[f+4>>2];mb(F[a+44>>2]+96|0,f+8|0);k=k+1|0;if((l|0)!=(k|0)){continue}break c}break}k=0;break a}if(!l){break c}while(1){F[f+16>>2]=0;F[f+8>>2]=0;F[f+12>>2]=0;j=F[a+32>>2];b=j;c=F[b+8>>2];d=F[b+12>>2];h=F[b+16>>2];b=F[b+20>>2];i=b;e=h+4|0;b=e>>>0<4?b+1|0:b;if(c>>>0>>0&(b|0)>=(d|0)|(b|0)>(d|0)){break b}m=F[j>>2];g=m+h|0;g=G[g|0]|G[g+1|0]<<8|(G[g+2|0]<<16|G[g+3|0]<<24);F[j+16>>2]=e;F[j+20>>2]=b;F[f+8>>2]=g;b=i;g=h+8|0;b=g>>>0<8?b+1|0:b;if(c>>>0>>0&(b|0)>=(d|0)|(b|0)>(d|0)){break b}e=e+m|0;e=G[e|0]|G[e+1|0]<<8|(G[e+2|0]<<16|G[e+3|0]<<24);F[j+16>>2]=g;F[j+20>>2]=b;F[f+12>>2]=e;e=c;b=i;c=h+12|0;b=c>>>0<12?b+1|0:b;if(c>>>0>e>>>0&(b|0)>=(d|0)|(b|0)>(d|0)){break b}d=g+m|0;d=G[d|0]|G[d+1|0]<<8|(G[d+2|0]<<16|G[d+3|0]<<24);F[j+16>>2]=c;F[j+20>>2]=b;F[f+16>>2]=d;mb(F[a+44>>2]+96|0,f+8|0);k=k+1|0;if((l|0)!=(k|0)){continue}break}}F[F[a+4>>2]+80>>2]=n;k=1;break a}k=0}Z=f+32|0;return k|0}function Ld(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0;g=Z+-64|0;Z=g;F[g+56>>2]=0;F[g+48>>2]=0;F[g+52>>2]=0;F[g+40>>2]=0;F[g+44>>2]=0;F[g+32>>2]=0;F[g+36>>2]=0;F[g+24>>2]=0;F[g+28>>2]=0;F[g+16>>2]=0;F[g+20>>2]=0;F[g+8>>2]=0;F[g+12>>2]=0;h=g+8|0;a:{b:{if(!H[b+38>>1]){break b}if(!Ta(1,h+12|0,b)){break b}e=F[b+8>>2];f=F[b+16>>2];j=e-f|0;k=F[h+12>>2];e=F[b+12>>2]-(F[b+20>>2]+(e>>>0>>0)|0)|0;if(j>>>0>>6>>>0&(e|0)<=0|(e|0)<0){break b}e=F[h>>2];d=F[h+4>>2]-e>>2;c:{if(d>>>0>>0){qa(h,k-d|0);k=F[h+12>>2];break c}if(d>>>0<=k>>>0){break c}F[h+4>>2]=e+(k<<2)}i=1;if(!k){break a}e=F[b+16>>2];d=F[b+20>>2];r=F[h>>2];l=F[b+8>>2];o=F[b+12>>2];j=0;while(1){i=0;if((d|0)>=(o|0)&e>>>0>=l>>>0|(d|0)>(o|0)){break a}i=F[b>>2];p=G[i+e|0];e=e+1|0;d=e?d:d+1|0;F[b+16>>2]=e;F[b+20>>2]=d;f=p>>>2|0;m=0;d:{e:{f:{g:{s=p&3;switch(s|0){case 3:break g;case 0:break e;default:break f}}f=f+j|0;i=0;if(f>>>0>=k>>>0){break a}ma(r+(j<<2)|0,0,(p&252)+4|0);j=f;break d}while(1){if((e|0)==(l|0)&(d|0)==(o|0)){break b}k=G[e+i|0];e=e+1|0;d=e?d:d+1|0;F[b+16>>2]=e;F[b+20>>2]=d;f=k<<(m<<3|6)|f;m=m+1|0;if((s|0)!=(m|0)){continue}break}}F[r+(j<<2)>>2]=f}j=j+1|0;k=F[h+12>>2];if(j>>>0>>0){continue}break}d=h+16|0;o=F[h>>2];f=F[h+16>>2];e=F[h+20>>2]-f|0;h:{if(e>>>0<=4194303){qa(d,1048576-(e>>>2|0)|0);break h}if((e|0)==4194304){break h}F[h+20>>2]=f+4194304}e=h+28|0;j=F[e>>2];f=F[h+32>>2]-j>>3;i:{if(f>>>0>>0){_a(e,k-f|0);j=F[e>>2];break i}if(f>>>0>k>>>0){F[h+32>>2]=(k<<3)+j}if(!k){break b}}l=F[d>>2];d=0;i=0;while(1){e=o+(d<<2)|0;h=F[e>>2];m=(d<<3)+j|0;f=i;F[m+4>>2]=f;F[m>>2]=h;e=F[e>>2];i=e+f|0;if(i>>>0>1048576){break b}j:{if(f>>>0>=i>>>0){break j}m=0;h=e&7;if(h){while(1){F[l+(f<<2)>>2]=d;f=f+1|0;m=m+1|0;if((h|0)!=(m|0)){continue}break}}if(e-1>>>0<=6){break j}while(1){e=l+(f<<2)|0;F[e>>2]=d;F[e+28>>2]=d;F[e+24>>2]=d;F[e+20>>2]=d;F[e+16>>2]=d;F[e+12>>2]=d;F[e+8>>2]=d;F[e+4>>2]=d;f=f+8|0;if((i|0)!=(f|0)){continue}break}}d=d+1|0;if((k|0)!=(d|0)){continue}break}n=(i|0)==1048576}i=n}k:{if(!i|(F[g+20>>2]?0:a)){break k}i=0;j=Z-16|0;Z=j;l:{if(!Sa(1,j+8|0,b)){break l}d=F[b+8>>2];f=F[b+16>>2];l=d-f|0;n=F[j+12>>2];h=F[b+20>>2];d=F[b+12>>2]-(h+(d>>>0>>0)|0)|0;e=F[j+8>>2];if((n|0)==(d|0)&e>>>0>l>>>0|d>>>0>>0){break l}d=h+n|0;l=e+f|0;d=l>>>0>>0?d+1|0:d;F[b+16>>2]=l;F[b+20>>2]=d;if((e|0)<=0){break l}b=f+F[b>>2]|0;F[g+48>>2]=b;d=e-1|0;f=d+b|0;l=G[f|0];m:{if(l>>>0<=63){F[g+52>>2]=d;b=G[f|0]&63;break m}n:{switch((l>>>6|0)-1|0){case 0:if(e>>>0<2){break l}d=e-2|0;F[g+52>>2]=d;b=b+d|0;b=G[b+1|0]<<8&16128|G[b|0];break m;case 1:if(e>>>0<3){break l}d=e-3|0;F[g+52>>2]=d;b=b+d|0;b=G[b+1|0]<<8|G[b+2|0]<<16&4128768|G[b|0];break m;default:break n}}d=e-4|0;F[g+52>>2]=d;b=b+d|0;b=(G[b|0]|G[b+1|0]<<8|(G[b+2|0]<<16|G[b+3|0]<<24))&1073741823}F[g+56>>2]=b+4194304;i=b>>>0<1069547520}Z=j+16|0;if(!i){break k}if(!a){t=1;break k}b=F[g+52>>2];f=F[g+56>>2];d=F[g+36>>2];e=F[g+48>>2];j=F[g+24>>2];while(1){o:{if(f>>>0>4194303){break o}while(1){if((b|0)<=0){break o}b=b-1|0;F[g+52>>2]=b;f=G[b+e|0]|f<<8;F[g+56>>2]=f;if(f>>>0<4194304){continue}break}}i=f&1048575;l=F[j+(i<<2)>>2];n=d+(l<<3)|0;f=(L(F[n>>2],f>>>20|0)+i|0)-F[n+4>>2]|0;F[g+56>>2]=f;F[(q<<2)+c>>2]=l;t=1;q=q+1|0;if((q|0)!=(a|0)){continue}break}}a=F[g+36>>2];if(a){F[g+40>>2]=a;ja(a)}a=F[g+24>>2];if(a){F[g+28>>2]=a;ja(a)}a=F[g+8>>2];if(a){F[g+12>>2]=a;ja(a)}Z=g- -64|0;return t}function kh(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=M(0),f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=M(0),p=0,q=0,r=0,s=0,t=0,u=0,v=0,w=0,x=0;if(F[c>>2]==F[c+4>>2]){m=F[d+80>>2];u=Z-16|0;Z=u;g=F[a+4>>2];k=G[b+24|0];h=F[d+48>>2];n=F[F[d>>2]>>2];c=u+8|0;F[c>>2]=1065353216;d=c;J[c>>2]=M(-1<>2];c=ka(k<<2);a:{if(!m|!k){break a}p=h+n|0;o=J[d>>2];n=F[a+8>>2];v=F[b>>2];d=F[b+48>>2];g=F[b+40>>2];w=F[b+44>>2];if(!G[b+84|0]){f=F[b+68>>2];s=k&254;t=k&1;a=0;while(1){b=F[v>>2];l=ki(g,w,F[f+(i<<2)>>2],0)+d|0;h=la(c,b+l|0,g);b=0;q=0;if((k|0)!=1){while(1){l=p+(a<<2)|0;j=b<<2;e=M(R(M(M(o*M(J[j+h>>2]-J[n+j>>2]))+M(.5))));b:{if(M(N(e))>2]=r;j=j|4;e=M(R(M(M(o*M(J[j+h>>2]-J[n+j>>2]))+M(.5))));c:{if(M(N(e))>2]=j;b=b+2|0;a=a+2|0;q=q+2|0;if((s|0)!=(q|0)){continue}break}}if(t){l=p+(a<<2)|0;b=b<<2;e=M(R(M(M(o*M(J[b+h>>2]-J[b+n>>2]))+M(.5))));d:{if(M(N(e))>2]=b;a=a+1|0}i=i+1|0;if((m|0)!=(i|0)){continue}break}break a}s=k&254;t=k&1;a=0;while(1){b=F[v>>2];h=ki(g,w,i,l)+d|0;j=la(c,b+h|0,g);b=0;q=0;if((k|0)!=1){while(1){h=p+(a<<2)|0;f=b<<2;e=M(R(M(M(o*M(J[f+j>>2]-J[f+n>>2]))+M(.5))));e:{if(M(N(e))>2]=r;f=f|4;e=M(R(M(M(o*M(J[f+j>>2]-J[f+n>>2]))+M(.5))));f:{if(M(N(e))>2]=f;b=b+2|0;a=a+2|0;q=q+2|0;if((s|0)!=(q|0)){continue}break}}if(t){h=p+(a<<2)|0;b=b<<2;e=M(R(M(M(o*M(J[b+j>>2]-J[b+n>>2]))+M(.5))));g:{if(M(N(e))>2]=b;a=a+1|0}b=l;i=i+1|0;b=i?b:b+1|0;l=b;if((i|0)!=(m|0)|b){continue}break}}ja(c);Z=u+16|0;return 1}j=Z-16|0;Z=j;m=F[a+4>>2];i=G[b+24|0];g=F[d+48>>2];h=F[F[d>>2]>>2];d=j+8|0;F[d>>2]=1065353216;l=d;J[d>>2]=M(-1<>2];d=ka(i<<2);m=F[c+4>>2];q=F[c>>2];h:{if(!i|(m|0)==(q|0)){break h}n=h+g|0;c=m-q>>2;u=c>>>0<=1?1:c;o=J[l>>2];h=F[a+8>>2];v=F[b>>2];l=F[b+48>>2];m=F[b+40>>2];w=F[b+44>>2];if(G[b+84|0]){s=i&254;t=i&1;a=0;c=0;while(1){b=F[v>>2];g=ki(m,w,F[q+(c<<2)>>2],0)+l|0;p=la(d,b+g|0,m);b=0;k=0;if((i|0)!=1){while(1){g=n+(a<<2)|0;f=b<<2;e=M(R(M(M(o*M(J[f+p>>2]-J[h+f>>2]))+M(.5))));i:{if(M(N(e))>2]=r;f=f|4;e=M(R(M(M(o*M(J[f+p>>2]-J[h+f>>2]))+M(.5))));j:{if(M(N(e))>2]=f;b=b+2|0;a=a+2|0;k=k+2|0;if((s|0)!=(k|0)){continue}break}}if(t){g=n+(a<<2)|0;b=b<<2;e=M(R(M(M(o*M(J[b+p>>2]-J[b+h>>2]))+M(.5))));k:{if(M(N(e))>2]=b;a=a+1|0}c=c+1|0;if((u|0)!=(c|0)){continue}break}break h}s=F[b+68>>2];t=i&254;x=i&1;a=0;c=0;while(1){b=F[v>>2];g=ki(m,w,F[s+(F[q+(c<<2)>>2]<<2)>>2],0)+l|0;p=la(d,b+g|0,m);b=0;k=0;if((i|0)!=1){while(1){g=n+(a<<2)|0;f=b<<2;e=M(R(M(M(o*M(J[f+p>>2]-J[h+f>>2]))+M(.5))));l:{if(M(N(e))>2]=r;f=f|4;e=M(R(M(M(o*M(J[f+p>>2]-J[h+f>>2]))+M(.5))));m:{if(M(N(e))>2]=f;b=b+2|0;a=a+2|0;k=k+2|0;if((t|0)!=(k|0)){continue}break}}if(x){g=n+(a<<2)|0;b=b<<2;e=M(R(M(M(o*M(J[b+p>>2]-J[b+h>>2]))+M(.5))));n:{if(M(N(e))>2]=b;a=a+1|0}c=c+1|0;if((u|0)!=(c|0)){continue}break}}ja(d);Z=j+16|0;return 1} +function Cd(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=F[a+4>>2];e=F[a>>2];f=(c-e|0)/144|0;if(f>>>0>>0){e=a;b=b-f|0;h=F[a+8>>2];c=F[a+4>>2];a:{if(b>>>0<=(h-c|0)/144>>>0){b:{if(!b){break b}a=c;f=b&7;if(f){while(1){va(a);a=a+144|0;d=d+1|0;if((f|0)!=(d|0)){continue}break}}c=L(b,144)+c|0;if((b-1&268435455)>>>0<7){break b}while(1){va(a);va(a+144|0);va(a+288|0);va(a+432|0);va(a+576|0);va(a+720|0);va(a+864|0);va(a+1008|0);a=a+1152|0;if((c|0)!=(a|0)){continue}break}}F[e+4>>2]=c;break a}c:{d:{e:{a=c;c=F[e>>2];i=(a-c|0)/144|0;a=i+b|0;if(a>>>0<29826162){c=(h-c|0)/144|0;f=c<<1;f=c>>>0>=14913080?29826161:a>>>0>>0?f:a;if(f){if(f>>>0>=29826162){break e}g=ka(L(f,144))}c=L(i,144)+g|0;a=c;h=b&7;if(h){while(1){va(a);a=a+144|0;d=d+1|0;if((h|0)!=(d|0)){continue}break}}h=L(b,144)+c|0;if((b-1&268435455)>>>0>=7){while(1){va(a);va(a+144|0);va(a+288|0);va(a+432|0);va(a+576|0);va(a+720|0);va(a+864|0);va(a+1008|0);a=a+1152|0;if((h|0)!=(a|0)){continue}break}}b=L(f,144)+g|0;d=F[e+4>>2];f=F[e>>2];if((d|0)==(f|0)){break d}while(1){c=c-144|0;d=d-144|0;a=d;F[c>>2]=F[a>>2];F[c+4>>2]=F[a+4>>2];F[c+8>>2]=F[a+8>>2];F[c+12>>2]=F[a+12>>2];F[a+12>>2]=0;F[a+4>>2]=0;F[a+8>>2]=0;F[c+16>>2]=F[a+16>>2];F[c+20>>2]=F[a+20>>2];F[c+24>>2]=F[a+24>>2];F[a+24>>2]=0;F[a+16>>2]=0;F[a+20>>2]=0;g=G[a+28|0];F[c+40>>2]=0;F[c+32>>2]=0;F[c+36>>2]=0;D[c+28|0]=g;F[c+32>>2]=F[a+32>>2];F[c+36>>2]=F[a+36>>2];F[c+40>>2]=F[a+40>>2];F[a+40>>2]=0;F[a+32>>2]=0;F[a+36>>2]=0;F[c+52>>2]=0;F[c+44>>2]=0;F[c+48>>2]=0;F[c+44>>2]=F[a+44>>2];F[c+48>>2]=F[a+48>>2];F[c+52>>2]=F[a+52>>2];F[a+52>>2]=0;F[a+44>>2]=0;F[a+48>>2]=0;g=c- -64|0;F[g>>2]=0;F[c+56>>2]=0;F[c+60>>2]=0;F[c+56>>2]=F[a+56>>2];F[c+60>>2]=F[a+60>>2];i=g;g=a- -64|0;F[i>>2]=F[g>>2];F[g>>2]=0;F[a+56>>2]=0;F[a+60>>2]=0;F[c+68>>2]=F[a+68>>2];g=F[a+72>>2];F[c+84>>2]=0;F[c+76>>2]=0;F[c+80>>2]=0;F[c+72>>2]=g;F[c+76>>2]=F[a+76>>2];F[c+80>>2]=F[a+80>>2];F[c+84>>2]=F[a+84>>2];F[a+84>>2]=0;F[a+76>>2]=0;F[a+80>>2]=0;F[c+96>>2]=0;F[c+88>>2]=0;F[c+92>>2]=0;F[c+88>>2]=F[a+88>>2];F[c+92>>2]=F[a+92>>2];F[c+96>>2]=F[a+96>>2];F[a+96>>2]=0;F[a+88>>2]=0;F[a+92>>2]=0;g=G[a+100|0];F[c+112>>2]=0;F[c+104>>2]=0;F[c+108>>2]=0;D[c+100|0]=g;F[c+104>>2]=F[a+104>>2];F[c+108>>2]=F[a+108>>2];F[c+112>>2]=F[a+112>>2];F[a+112>>2]=0;F[a+104>>2]=0;F[a+108>>2]=0;F[c+124>>2]=0;F[c+116>>2]=0;F[c+120>>2]=0;F[c+116>>2]=F[a+116>>2];F[c+120>>2]=F[a+120>>2];F[c+124>>2]=F[a+124>>2];F[a+124>>2]=0;F[a+116>>2]=0;F[a+120>>2]=0;g=F[a+128>>2];F[c+140>>2]=0;F[c+132>>2]=0;F[c+136>>2]=0;F[c+128>>2]=g;F[c+132>>2]=F[a+132>>2];F[c+136>>2]=F[a+136>>2];F[c+140>>2]=F[a+140>>2];F[a+140>>2]=0;F[a+132>>2]=0;F[a+136>>2]=0;if((a|0)!=(f|0)){continue}break}F[e+8>>2]=b;a=F[e+4>>2];F[e+4>>2]=h;d=F[e>>2];F[e>>2]=c;if((a|0)==(d|0)){break c}while(1){b=a-144|0;c=F[b+132>>2];if(c){F[a-8>>2]=c;ja(c)}c=F[a-28>>2];if(c){F[a-24>>2]=c;ja(c)}c=F[a-40>>2];if(c){F[a-36>>2]=c;ja(c)}Gb(a-140|0);a=b;if((d|0)!=(a|0)){continue}break}break c}na();v()}oa();v()}F[e+8>>2]=b;F[e+4>>2]=h;F[e>>2]=c}if(d){ja(d)}}return}if(b>>>0>>0){e=e+L(b,144)|0;if((e|0)!=(c|0)){while(1){b=c-144|0;d=F[b+132>>2];if(d){F[c-8>>2]=d;ja(d)}d=F[c-28>>2];if(d){F[c-24>>2]=d;ja(d)}d=F[c-40>>2];if(d){F[c-36>>2]=d;ja(d)}Gb(c-140|0);c=b;if((e|0)!=(c|0)){continue}break}}F[a+4>>2]=e}}function Yc(a){var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;F[a+56>>2]=F[a+52>>2];F[a+44>>2]=F[a+40>>2];b=F[a+64>>2];c=F[b+24>>2];if((c|0)==F[b+28>>2]){return 1}a:{b:{c:{while(1){g=i;i=F[(k<<2)+c>>2];d:{if((i|0)==-1){i=g;break d}b=F[a+56>>2];e:{if((b|0)!=F[a+60>>2]){F[b>>2]=g;F[a+56>>2]=b+4;break e}d=F[a+52>>2];e=b-d|0;h=e>>2;c=h+1|0;if(c>>>0>=1073741824){break c}f=e>>>1|0;f=e>>>0>=2147483644?1073741823:c>>>0>>0?f:c;if(f){if(f>>>0>=1073741824){break b}e=ka(f<<2)}else{e=0}c=e+(h<<2)|0;F[c>>2]=g;h=c+4|0;if((b|0)!=(d|0)){while(1){c=c-4|0;b=b-4|0;F[c>>2]=F[b>>2];if((b|0)!=(d|0)){continue}break}}F[a+60>>2]=e+(f<<2);F[a+56>>2]=h;F[a+52>>2]=c;if(!d){break e}ja(d)}f:{g:{if(!(F[F[a+12>>2]+(k>>>3&536870908)>>2]>>>k&1)){break g}e=i+1|0;e=(e>>>0)%3|0?e:i-2|0;if((e|0)==-1|F[F[a>>2]+(e>>>3&536870908)>>2]>>>e&1){break g}e=F[F[F[a+64>>2]+12>>2]+(e<<2)>>2];if((e|0)==-1){break g}b=e+1|0;b=(b>>>0)%3|0?b:e-2|0;if((b|0)==-1){break g}c=F[a+64>>2];f=F[a>>2];while(1){e=b;b=-1;d=e+1|0;d=(d>>>0)%3|0?d:e-2|0;h:{if((d|0)==-1|F[f+(d>>>3&536870908)>>2]>>>d&1){break h}d=F[F[c+12>>2]+(d<<2)>>2];if((d|0)==-1){break h}b=d+1|0;b=(b>>>0)%3|0?b:d-2|0}if((b|0)!=(i|0)){if((b|0)==-1){break f}continue}break}return 0}e=i}F[F[a+28>>2]+(e<<2)>>2]=g;b=F[a+44>>2];i:{if((b|0)!=F[a+48>>2]){F[b>>2]=e;F[a+44>>2]=b+4;break i}d=F[a+40>>2];i=b-d|0;h=i>>2;c=h+1|0;if(c>>>0>=1073741824){break a}f=i>>>1|0;f=i>>>0>=2147483644?1073741823:c>>>0>>0?f:c;if(f){if(f>>>0>=1073741824){break b}i=ka(f<<2)}else{i=0}c=i+(h<<2)|0;F[c>>2]=e;h=c+4|0;if((b|0)!=(d|0)){while(1){c=c-4|0;b=b-4|0;F[c>>2]=F[b>>2];if((b|0)!=(d|0)){continue}break}}F[a+48>>2]=i+(f<<2);F[a+44>>2]=h;F[a+40>>2]=c;if(!d){break i}ja(d)}i=g+1|0;b=F[a+64>>2];if((e|0)==-1){break d}j:{if((e>>>0)%3|0){c=e-1|0;break j}c=e+2|0;if((c|0)==-1){break d}}d=F[F[b+12>>2]+(c<<2)>>2];if((d|0)==-1){break d}f=d+((d>>>0)%3|0?-1:2)|0;if((f|0)==-1|(e|0)==(f|0)){break d}while(1){b=f+1|0;b=(b>>>0)%3|0?b:f-2|0;if(F[F[a>>2]+(b>>>3&536870908)>>2]>>>b&1){b=F[a+56>>2];k:{if((b|0)!=F[a+60>>2]){F[b>>2]=i;F[a+56>>2]=b+4;break k}d=F[a+52>>2];g=b-d|0;j=g>>2;c=j+1|0;if(c>>>0>=1073741824){break c}h=g>>>1|0;h=g>>>0>=2147483644?1073741823:c>>>0>>0?h:c;if(h){if(h>>>0>=1073741824){break b}g=ka(h<<2)}else{g=0}c=g+(j<<2)|0;F[c>>2]=i;j=c+4|0;if((b|0)!=(d|0)){while(1){c=c-4|0;b=b-4|0;F[c>>2]=F[b>>2];if((b|0)!=(d|0)){continue}break}}F[a+60>>2]=g+(h<<2);F[a+56>>2]=j;F[a+52>>2]=c;if(!d){break k}ja(d)}d=i+1|0;b=F[a+44>>2];l:{if((b|0)!=F[a+48>>2]){F[b>>2]=f;F[a+44>>2]=b+4;break l}h=F[a+40>>2];g=b-h|0;l=g>>2;c=l+1|0;if(c>>>0>=1073741824){break a}j=g>>>1|0;j=g>>>0>=2147483644?1073741823:c>>>0>>0?j:c;if(j){if(j>>>0>=1073741824){break b}g=ka(j<<2)}else{g=0}c=g+(l<<2)|0;F[c>>2]=f;l=c+4|0;if((b|0)!=(h|0)){while(1){c=c-4|0;b=b-4|0;F[c>>2]=F[b>>2];if((b|0)!=(h|0)){continue}break}}F[a+48>>2]=g+(j<<2);F[a+44>>2]=l;F[a+40>>2]=c;if(!h){break l}ja(h)}g=i;i=d}F[F[a+28>>2]+(f<<2)>>2]=g;b=F[a+64>>2];m:{if((f>>>0)%3|0){c=f-1|0;break m}c=f+2|0;if((c|0)==-1){break d}}d=F[F[b+12>>2]+(c<<2)>>2];if((d|0)==-1){break d}f=d+((d>>>0)%3|0?-1:2)|0;if((f|0)==-1){break d}if((e|0)!=(f|0)){continue}break}}k=k+1|0;c=F[b+24>>2];if(k>>>0>2]-c>>2>>>0){continue}break}return 1}na();v()}oa();v()}na();v()}function Kb(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,w=0,x=0,y=0;f=Z-96|0;Z=f;e=F[a+16>>2];D[f+92|0]=1;F[f+88>>2]=b;F[f+84>>2]=b;F[f+80>>2]=e;a:{if((b|0)==-1){break a}j=F[a+20>>2];d=F[j>>2];e=F[F[e>>2]+(b<<2)>>2];if(e>>>0>=F[j+4>>2]-d>>2>>>0){break a}e=F[F[a+8>>2]+(F[d+(e<<2)>>2]<<2)>>2];d=F[a+4>>2];if(!G[d+84|0]){e=F[F[d+68>>2]+(e<<2)>>2]}F[f+72>>2]=0;F[f+76>>2]=0;j=f- -64|0;F[j>>2]=0;F[j+4>>2]=0;F[f+56>>2]=0;F[f+60>>2]=0;Ga(d,e,D[d+24|0],f+56|0);e=b+1|0;j=(e>>>0)%3|0?e:b-2|0;n=((b>>>0)%3|0?-1:2)+b|0;b:{c:{while(1){d=j;e=n;d:{if(!F[a+28>>2]){break d}e=b+1|0;d=(e>>>0)%3|0?e:b-2|0;e=b-1|0;if((b>>>0)%3|0){break d}e=b+2|0}if((d|0)==-1){break b}m=F[a+20>>2];b=F[m>>2];d=F[F[F[a+16>>2]>>2]+(d<<2)>>2];if(d>>>0>=F[m+4>>2]-b>>2>>>0){break b}d=F[F[a+8>>2]+(F[(d<<2)+b>>2]<<2)>>2];b=F[a+4>>2];if(!G[b+84|0]){d=F[F[b+68>>2]+(d<<2)>>2]}F[f+48>>2]=0;F[f+52>>2]=0;F[f+40>>2]=0;F[f+44>>2]=0;F[f+32>>2]=0;F[f+36>>2]=0;Ga(b,d,D[b+24|0],f+32|0);if((e|0)==-1){break c}d=F[a+20>>2];b=F[d>>2];e=F[F[F[a+16>>2]>>2]+(e<<2)>>2];if(e>>>0>=F[d+4>>2]-b>>2>>>0){break c}d=F[F[a+8>>2]+(F[b+(e<<2)>>2]<<2)>>2];b=F[a+4>>2];if(!G[b+84|0]){d=F[F[b+68>>2]+(d<<2)>>2]}F[f+24>>2]=0;F[f+28>>2]=0;F[f+16>>2]=0;F[f+20>>2]=0;F[f+8>>2]=0;F[f+12>>2]=0;Ga(b,d,D[b+24|0],f+8|0);g=F[f+8>>2];b=F[f+56>>2];d=g-b|0;p=F[f+60>>2];t=F[f+12>>2]-(p+(b>>>0>g>>>0)|0)|0;i=F[f+40>>2];e=F[f+64>>2];m=i-e|0;u=F[f+68>>2];y=F[f+44>>2]-(u+(e>>>0>i>>>0)|0)|0;g=ki(d,t,m,y);w=o-g|0;x=h-(_+(g>>>0>o>>>0)|0)|0;h=w;i=F[f+16>>2];g=i-e|0;u=F[f+20>>2]-((e>>>0>i>>>0)+u|0)|0;k=F[f+32>>2];i=k-b|0;w=F[f+36>>2]-((b>>>0>k>>>0)+p|0)|0;b=ki(g,u,i,w);o=h+b|0;h=_+x|0;h=b>>>0>o>>>0?h+1|0:h;b=l;l=d;p=t;k=F[f+48>>2];e=F[f+72>>2];d=k-e|0;t=F[f+76>>2];x=F[f+52>>2]-(t+(e>>>0>k>>>0)|0)|0;l=ki(l,p,d,x);k=b+l|0;b=_+q|0;b=k>>>0>>0?b+1|0:b;l=F[f+24>>2];p=l-e|0;e=F[f+28>>2]-((e>>>0>l>>>0)+t|0)|0;q=ki(p,e,i,w);l=k-q|0;q=b-(_+(k>>>0>>0)|0)|0;b=ki(g,u,d,x);d=r-b|0;b=s-(_+(b>>>0>r>>>0)|0)|0;s=ki(p,e,m,y);r=s+d|0;b=_+b|0;s=r>>>0>>0?b+1|0:b;nc(f+80|0);b=F[f+88>>2];if((b|0)!=-1){continue}break}b=s>>31;e=b^r;d=e-b|0;b=(b^s)-((b>>>0>e>>>0)+b|0)|0;n=-1;e=2147483647;m=q>>31;g=m;i=g^l;j=i-g|0;m=(g^q)-((i>>>0>>0)+g|0)|0;i=m;k=j^-1;g=i^2147483647;m=h;e:{f:{if(!F[a+28>>2]){if((b|0)==(g|0)&d>>>0>k>>>0|b>>>0>g>>>0){break e}b=b+i|0;a=d+j|0;b=a>>>0>>0?b+1|0:b;e=a;g=h;a=g>>31;d=a;n=d^o;a=n-d|0;h=a;d=(d^g)-((d>>>0>n>>>0)+d|0)|0;a=a+e|0;d=d^2147483647;h=(d|0)==(b|0)&(h^-1)>>>0>>0|b>>>0>d>>>0;a=h?-1:a;if(!(h&0)&(a|0)<=536870912|(a|0)<536870912){break e}b=0;a=a>>>29|0;break f}g:{if((b|0)==(g|0)&d>>>0>k>>>0|b>>>0>g>>>0){break g}b=b+i|0;a=d+j|0;b=a>>>0>>0?b+1|0:b;k=h;h=h>>31;g=h;i=g^o;h=i-g|0;j=(g^k)-((g>>>0>i>>>0)+g|0)|0;g=j^2147483647;d=a;a=h;if((g|0)==(b|0)&d>>>0>(a^-1)>>>0|b>>>0>g>>>0){break g}b=b+j|0;n=a+d|0;b=n>>>0>>0?b+1|0:b;e=b;if(!b&n>>>0<536870913){break e}}b=e>>>29|0;a=(e&536870911)<<3|n>>>29}o=li(o,m,a,b);l=li(l,q,a,b);r=li(r,s,a,b)}F[c+8>>2]=o;F[c+4>>2]=l;F[c>>2]=r;Z=f+96|0;return}ta();v()}ta();v()}ta();v()}function Nc(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;a:{if((b|0)<0){break a}c=F[a+12>>2];d=F[a+8>>2];if(c-d>>2>>>0<=b>>>0){break a}d=d+(b<<2)|0;e=F[d>>2];i=F[e+60>>2];f=F[e+56>>2];e=d+4|0;if((e|0)!=(c|0)){while(1){h=F[e>>2];F[e>>2]=0;g=F[d>>2];F[d>>2]=h;if(g){xa(g)}d=d+4|0;e=e+4|0;if((e|0)!=(c|0)){continue}break}c=F[a+12>>2]}if((c|0)!=(d|0)){while(1){c=c-4|0;e=F[c>>2];F[c>>2]=0;if(e){xa(e)}if((c|0)!=(d|0)){continue}break}}F[a+12>>2]=d;g=F[a+4>>2];b:{if(!g|(i|0)<0){break b}c=F[g+24>>2];d=F[g+28>>2];if((c|0)==(d|0)){break b}while(1){if((i|0)==F[F[c>>2]+24>>2]){d=c+4|0;i=F[g+28>>2];if((d|0)!=(i|0)){while(1){h=F[d>>2];F[d>>2]=0;e=F[c>>2];F[c>>2]=h;if(e){Ca(e+12|0,F[e+16>>2]);Ba(e,F[e+4>>2]);ja(e)}c=c+4|0;d=d+4|0;if((i|0)!=(d|0)){continue}break}d=F[g+28>>2]}if((c|0)!=(d|0)){while(1){d=d-4|0;e=F[d>>2];F[d>>2]=0;if(e){Ca(e+12|0,F[e+16>>2]);Ba(e,F[e+4>>2]);ja(e)}if((c|0)!=(d|0)){continue}break}}F[g+28>>2]=c;break b}c=c+4|0;if((d|0)!=(c|0)){continue}break}}c:{if((f|0)>4){break c}d:{e=L(f,12)+a|0;c=F[e+20>>2];d=F[e+24>>2];if((c|0)==(d|0)){break d}while(1){if(F[c>>2]==(b|0)){break d}c=c+4|0;if((d|0)!=(c|0)){continue}break}break c}if((c|0)==(d|0)){break c}f=c;c=c+4|0;pa(f,c,d-c|0);F[e+24>>2]=d-4}c=F[a+24>>2];d=F[a+20>>2];e:{if((c|0)==(d|0)){break e}e=c-d|0;c=e>>2;g=c>>>0<=1?1:c;i=g&1;c=0;if(e>>>0>=8){g=g&-2;e=0;while(1){f=c<<2;h=f+d|0;j=F[h>>2];if((j|0)>(b|0)){F[h>>2]=j-1}f=d+(f|4)|0;h=F[f>>2];if((h|0)>(b|0)){F[f>>2]=h-1}c=c+2|0;e=e+2|0;if((g|0)!=(e|0)){continue}break}}if(!i){break e}c=d+(c<<2)|0;d=F[c>>2];if((d|0)<=(b|0)){break e}F[c>>2]=d-1}c=F[a+36>>2];d=F[a+32>>2];f:{if((c|0)==(d|0)){break f}e=c-d|0;c=e>>2;g=c>>>0<=1?1:c;i=g&1;c=0;if(e>>>0>=8){g=g&-2;e=0;while(1){f=c<<2;h=f+d|0;j=F[h>>2];if((j|0)>(b|0)){F[h>>2]=j-1}f=d+(f|4)|0;h=F[f>>2];if((h|0)>(b|0)){F[f>>2]=h-1}c=c+2|0;e=e+2|0;if((g|0)!=(e|0)){continue}break}}if(!i){break f}c=d+(c<<2)|0;d=F[c>>2];if((d|0)<=(b|0)){break f}F[c>>2]=d-1}c=F[a+48>>2];d=F[a+44>>2];g:{if((c|0)==(d|0)){break g}e=c-d|0;c=e>>2;g=c>>>0<=1?1:c;i=g&1;c=0;if(e>>>0>=8){g=g&-2;e=0;while(1){f=c<<2;h=f+d|0;j=F[h>>2];if((j|0)>(b|0)){F[h>>2]=j-1}f=d+(f|4)|0;h=F[f>>2];if((h|0)>(b|0)){F[f>>2]=h-1}c=c+2|0;e=e+2|0;if((g|0)!=(e|0)){continue}break}}if(!i){break g}c=d+(c<<2)|0;d=F[c>>2];if((d|0)<=(b|0)){break g}F[c>>2]=d-1}c=F[a+60>>2];d=F[a+56>>2];h:{if((c|0)==(d|0)){break h}e=c-d|0;c=e>>2;g=c>>>0<=1?1:c;i=g&1;c=0;if(e>>>0>=8){g=g&-2;e=0;while(1){f=c<<2;h=f+d|0;j=F[h>>2];if((j|0)>(b|0)){F[h>>2]=j-1}f=d+(f|4)|0;h=F[f>>2];if((h|0)>(b|0)){F[f>>2]=h-1}c=c+2|0;e=e+2|0;if((g|0)!=(e|0)){continue}break}}if(!i){break h}c=d+(c<<2)|0;d=F[c>>2];if((d|0)<=(b|0)){break h}F[c>>2]=d-1}c=F[a+72>>2];a=F[a+68>>2];if((c|0)==(a|0)){break a}d=c-a|0;c=d>>2;e=c>>>0<=1?1:c;g=e&1;c=0;if(d>>>0>=8){d=e&-2;e=0;while(1){i=c<<2;f=i+a|0;h=F[f>>2];if((h|0)>(b|0)){F[f>>2]=h-1}i=a+(i|4)|0;f=F[i>>2];if((f|0)>(b|0)){F[i>>2]=f-1}c=c+2|0;e=e+2|0;if((d|0)!=(e|0)){continue}break}}if(!g){break a}f=b;a=a+(c<<2)|0;b=F[a>>2];if((f|0)>=(b|0)){break a}F[a>>2]=b-1}}function ja(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;a:{if(!a){break a}d=a-8|0;b=F[a-4>>2];a=b&-8;f=d+a|0;b:{if(b&1){break b}if(!(b&3)){break a}b=F[d>>2];d=d-b|0;if(d>>>0>>0<=255){e=F[d+8>>2];b=b>>>3|0;c=F[d+12>>2];if((c|0)==(e|0)){i=11764,j=F[2941]&oi(b),F[i>>2]=j;break b}F[e+12>>2]=c;F[c+8>>2]=e;break b}h=F[d+24>>2];b=F[d+12>>2];c:{if((d|0)!=(b|0)){c=F[d+8>>2];F[c+12>>2]=b;F[b+8>>2]=c;break c}d:{e=d+20|0;c=F[e>>2];if(c){break d}e=d+16|0;c=F[e>>2];if(c){break d}b=0;break c}while(1){g=e;b=c;e=b+20|0;c=F[e>>2];if(c){continue}e=b+16|0;c=F[b+16>>2];if(c){continue}break}F[g>>2]=0}if(!h){break b}e=F[d+28>>2];c=(e<<2)+12068|0;e:{if(F[c>>2]==(d|0)){F[c>>2]=b;if(b){break e}i=11768,j=F[2942]&oi(e),F[i>>2]=j;break b}F[h+(F[h+16>>2]==(d|0)?16:20)>>2]=b;if(!b){break b}}F[b+24>>2]=h;c=F[d+16>>2];if(c){F[b+16>>2]=c;F[c+24>>2]=b}c=F[d+20>>2];if(!c){break b}F[b+20>>2]=c;F[c+24>>2]=b;break b}b=F[f+4>>2];if((b&3)!=3){break b}F[2943]=a;F[f+4>>2]=b&-2;F[d+4>>2]=a|1;F[a+d>>2]=a;return}if(d>>>0>=f>>>0){break a}b=F[f+4>>2];if(!(b&1)){break a}f:{if(!(b&2)){if(F[2947]==(f|0)){F[2947]=d;a=F[2944]+a|0;F[2944]=a;F[d+4>>2]=a|1;if(F[2946]!=(d|0)){break a}F[2943]=0;F[2946]=0;return}if(F[2946]==(f|0)){F[2946]=d;a=F[2943]+a|0;F[2943]=a;F[d+4>>2]=a|1;F[a+d>>2]=a;return}a=(b&-8)+a|0;g:{if(b>>>0<=255){e=F[f+8>>2];b=b>>>3|0;c=F[f+12>>2];if((c|0)==(e|0)){i=11764,j=F[2941]&oi(b),F[i>>2]=j;break g}F[e+12>>2]=c;F[c+8>>2]=e;break g}h=F[f+24>>2];b=F[f+12>>2];h:{if((f|0)!=(b|0)){c=F[f+8>>2];F[c+12>>2]=b;F[b+8>>2]=c;break h}i:{e=f+20|0;c=F[e>>2];if(c){break i}e=f+16|0;c=F[e>>2];if(c){break i}b=0;break h}while(1){g=e;b=c;e=b+20|0;c=F[e>>2];if(c){continue}e=b+16|0;c=F[b+16>>2];if(c){continue}break}F[g>>2]=0}if(!h){break g}e=F[f+28>>2];c=(e<<2)+12068|0;j:{if(F[c>>2]==(f|0)){F[c>>2]=b;if(b){break j}i=11768,j=F[2942]&oi(e),F[i>>2]=j;break g}F[h+(F[h+16>>2]==(f|0)?16:20)>>2]=b;if(!b){break g}}F[b+24>>2]=h;c=F[f+16>>2];if(c){F[b+16>>2]=c;F[c+24>>2]=b}c=F[f+20>>2];if(!c){break g}F[b+20>>2]=c;F[c+24>>2]=b}F[d+4>>2]=a|1;F[a+d>>2]=a;if(F[2946]!=(d|0)){break f}F[2943]=a;return}F[f+4>>2]=b&-2;F[d+4>>2]=a|1;F[a+d>>2]=a}if(a>>>0<=255){b=(a&-8)+11804|0;c=F[2941];a=1<<(a>>>3);k:{if(!(c&a)){F[2941]=a|c;a=b;break k}a=F[b+8>>2]}F[b+8>>2]=d;F[a+12>>2]=d;F[d+12>>2]=b;F[d+8>>2]=a;return}e=31;if(a>>>0<=16777215){b=O(a>>>8|0);e=((a>>>38-b&1)-(b<<1)|0)+62|0}F[d+28>>2]=e;F[d+16>>2]=0;F[d+20>>2]=0;g=(e<<2)+12068|0;l:{m:{c=F[2942];b=1<>2]=d;F[d+24>>2]=g;break n}e=a<<((e|0)!=31?25-(e>>>1|0)|0:0);b=F[g>>2];while(1){c=b;if((F[b+4>>2]&-8)==(a|0)){break m}b=e>>>29|0;e=e<<1;g=c+(b&4)|0;b=F[g+16>>2];if(b){continue}break}F[g+16>>2]=d;F[d+24>>2]=c}F[d+12>>2]=d;F[d+8>>2]=d;break l}a=F[c+8>>2];F[a+12>>2]=d;F[c+8>>2]=d;F[d+24>>2]=0;F[d+12>>2]=c;F[d+8>>2]=a}a=F[2949]-1|0;F[2949]=a?a:-1}}function di(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,w=0;F[a+8>>2]=e;n=a+32|0;h=F[n>>2];f=F[a+36>>2]-h>>2;a:{if(f>>>0>>0){qa(n,e-f|0);d=F[a+8>>2];break a}d=e;if(d>>>0>=f>>>0){break a}F[a+36>>2]=h+(e<<2);d=e}s=F[a+52>>2];p=F[a+48>>2];f=0;h=e>>>0>1073741823?-1:e<<2;m=ma(ka(h),0,h);b:{if((d|0)<=0){break b}g=F[a+32>>2];while(1){d=f<<2;h=F[d+m>>2];j=F[a+16>>2];c:{if((h|0)>(j|0)){F[d+g>>2]=j;break c}d=d+g|0;j=F[a+12>>2];if((j|0)>(h|0)){F[d>>2]=j;break c}F[d>>2]=h}d=F[a+8>>2];f=f+1|0;if((d|0)>(f|0)){continue}break}if((d|0)<=0){break b}f=0;while(1){h=f<<2;d=h+c|0;h=F[b+h>>2]+F[g+h>>2]|0;F[d>>2]=h;d:{if((h|0)>F[a+16>>2]){i=h-F[a+20>>2]|0}else{if((h|0)>=F[a+12>>2]){break d}i=h+F[a+20>>2]|0}F[d>>2]=i}d=F[a+8>>2];f=f+1|0;if((d|0)>(f|0)){continue}break}}f=F[a+56>>2];q=F[f>>2];f=F[f+4>>2]-q|0;if((f|0)>=5){o=f>>>2|0;t=o>>>0<=2?2:o;u=e&-2;w=e&1;h=1;while(1){e:{f:{if((h|0)!=(o|0)){r=L(e,h);f=F[(h<<2)+q>>2];if((f|0)==-1){break f}f=F[F[p+12>>2]+(f<<2)>>2];if((f|0)==-1){break f}j=F[s>>2];g=F[p>>2];k=F[j+(F[g+(f<<2)>>2]<<2)>>2];i=f+1|0;i=(i>>>0)%3|0?i:f-2|0;if((i|0)!=-1){i=F[g+(i<<2)>>2]}else{i=-1}g:{h:{if((f>>>0)%3|0){f=f-1|0;break h}f=f+2|0;l=-1;if((f|0)==-1){break g}}l=F[g+(f<<2)>>2]}if((h|0)<=(k|0)){break f}f=F[(i<<2)+j>>2];if((f|0)>=(h|0)){break f}g=F[j+(l<<2)>>2];if((g|0)>=(h|0)){break f}i:{if((e|0)<=0){break i}g=L(e,g);j=L(e,f);k=L(e,k);f=0;l=0;if((e|0)!=1){while(1){F[(f<<2)+m>>2]=(F[(f+g<<2)+c>>2]+F[(f+j<<2)+c>>2]|0)-F[(f+k<<2)+c>>2];i=f|1;F[(i<<2)+m>>2]=(F[(g+i<<2)+c>>2]+F[(j+i<<2)+c>>2]|0)-F[(i+k<<2)+c>>2];f=f+2|0;l=l+2|0;if((u|0)!=(l|0)){continue}break}}if(!w){break i}F[(f<<2)+m>>2]=(F[(f+g<<2)+c>>2]+F[(f+j<<2)+c>>2]|0)-F[(f+k<<2)+c>>2]}if((d|0)<=0){break e}j=F[n>>2];f=0;while(1){d=f<<2;g=F[d+m>>2];k=F[a+16>>2];j:{if((g|0)>(k|0)){F[d+j>>2]=k;break j}d=d+j|0;k=F[a+12>>2];if((k|0)>(g|0)){F[d>>2]=k;break j}F[d>>2]=g}d=F[a+8>>2];f=f+1|0;if((d|0)>(f|0)){continue}break}f=0;if((d|0)<=0){break e}d=r<<2;k=d+c|0;i=b+d|0;while(1){g=f<<2;d=g+k|0;g=F[g+i>>2]+F[g+j>>2]|0;F[d>>2]=g;k:{if((g|0)>F[a+16>>2]){l=g-F[a+20>>2]|0}else{if((g|0)>=F[a+12>>2]){break k}l=g+F[a+20>>2]|0}F[d>>2]=l}d=F[a+8>>2];f=f+1|0;if((d|0)>(f|0)){continue}break}break e}ta();v()}if((d|0)<=0){break e}k=(L(h-1|0,e)<<2)+c|0;j=F[n>>2];f=0;while(1){d=f<<2;g=F[d+k>>2];i=F[a+16>>2];l:{if((g|0)>(i|0)){F[d+j>>2]=i;break l}d=d+j|0;i=F[a+12>>2];if((i|0)>(g|0)){F[d>>2]=i;break l}F[d>>2]=g}d=F[a+8>>2];f=f+1|0;if((d|0)>(f|0)){continue}break}f=0;if((d|0)<=0){break e}d=r<<2;k=d+c|0;i=b+d|0;while(1){g=f<<2;d=g+k|0;g=F[g+i>>2]+F[g+j>>2]|0;F[d>>2]=g;m:{if((g|0)>F[a+16>>2]){l=g-F[a+20>>2]|0}else{if((g|0)>=F[a+12>>2]){break m}l=g+F[a+20>>2]|0}F[d>>2]=l}d=F[a+8>>2];f=f+1|0;if((d|0)>(f|0)){continue}break}}h=h+1|0;if((t|0)!=(h|0)){continue}break}}ja(m);return 1}function od(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;if((b|0)==-1){return 1}g=(b>>>0)/3|0;if(!(F[F[a+24>>2]+(g>>>3&268435452)>>2]>>>g&1)){e=F[a+48>>2];F[a+52>>2]=e;a:{if((e|0)!=F[a+56>>2]){F[e>>2]=b;F[a+52>>2]=e+4;break a}d=ka(4);F[d>>2]=b;c=d+4|0;F[a+56>>2]=c;F[a+52>>2]=c;F[a+48>>2]=d;if(!e){break a}ja(e)}c=b+1|0;i=(c>>>0)%3|0?c:b-2|0;c=F[F[a+4>>2]+28>>2];k=F[(i<<2)+c>>2];if((k|0)==-1){return 0}e=(b-L(g,3)|0?-1:2)+b|0;j=F[c+(e<<2)>>2];if((j|0)==-1){return 0}b=F[a+36>>2];g=b+(k>>>3&536870908)|0;d=F[g>>2];c=1<>2]=c|d;Ka(a+8|0,k,i);b=F[a+36>>2]}d=(j>>>3&536870908)+b|0;c=F[d>>2];b=1<>2]=b|c;Ka(a+8|0,j,e)}f=F[a+52>>2];if((f|0)==F[a+48>>2]){return 1}k=a+8|0;while(1){b:{c:{f=f-4|0;b=F[f>>2];if((b|0)==-1){break c}c=(b>>>0)/3|0;g=F[a+24>>2]+(c>>>3&268435452)|0;d=F[g>>2];c=1<>2]=c|d;h=F[a+4>>2];c=F[F[h+28>>2]+(b<<2)>>2];if((c|0)==-1){return 0}while(1){d=b;d:{e:{j=F[a+36>>2]+(c>>>3&536870908)|0;i=F[j>>2];e=1<>2]+(c<<2)>>2];g:{if((g|0)==-1){break g}b=g+1|0;b=(b>>>0)%3|0?b:g-2|0;if((b|0)==-1|F[F[h>>2]+(b>>>3&536870908)>>2]>>>b&1){break g}g=F[F[F[h+64>>2]+12>>2]+(b<<2)>>2];if((g|0)!=-1){break f}}F[j>>2]=e|i;Ka(k,c,d);h=F[a+4>>2];break e}F[j>>2]=e|i;Ka(k,c,d);h=F[a+4>>2];b=g+1|0;if((((b>>>0)%3|0?b:g-2|0)|0)==-1){break e}b=-1;h:{if((d|0)==-1){break h}c=d+1|0;c=(c>>>0)%3|0?c:d-2|0;if((c|0)==-1|F[F[h>>2]+(c>>>3&536870908)>>2]>>>c&1){break h}b=F[F[F[h+64>>2]+12>>2]+(c<<2)>>2]}c=(b>>>0)/3|0;d=1<>2];e=c>>>5|0;j=F[f+(e<<2)>>2];break d}i:{j:{if((d|0)==-1){break j}c=-1;b=d+1|0;b=(b>>>0)%3|0?b:d-2|0;if(!((b|0)==-1|F[F[h>>2]+(b>>>3&536870908)>>2]>>>b&1)){c=F[F[F[h+64>>2]+12>>2]+(b<<2)>>2]}k:{l:{if((d>>>0)%3|0){f=d-1|0;break l}f=d+2|0;b=-1;if((f|0)==-1){break k}}b=-1;if(F[F[h>>2]+(f>>>3&536870908)>>2]>>>f&1){break k}b=F[F[F[h+64>>2]+12>>2]+(f<<2)>>2]}g=(b|0)==-1;i=g?-1:(b>>>0)/3|0;if((c|0)!=-1){f=F[a+24>>2];d=(c>>>0)/3|0;e=d>>>5|0;j=F[f+(e<<2)>>2];d=1<>2];e=i>>>5|0;j=F[f+(e<<2)>>2];if(!(d&j)){break d}}f=F[a+52>>2]-4|0;F[a+52>>2]=f;break b}if(g){b=c;break d}if(F[(i>>>3&536870908)+f>>2]>>>i&1){b=c;break d}h=F[a+52>>2];F[h-4>>2]=b;if(F[a+56>>2]!=(h|0)){F[h>>2]=c;f=h+4|0;break c}m:{i=F[a+48>>2];e=h-i|0;g=e>>2;d=g+1|0;if(d>>>0<1073741824){b=e>>>1|0;e=e>>>0>=2147483644?1073741823:b>>>0>d>>>0?b:d;if(e){if(e>>>0>=1073741824){break m}d=ka(e<<2)}else{d=0}b=d+(g<<2)|0;F[b>>2]=c;f=b+4|0;if((h|0)!=(i|0)){while(1){b=b-4|0;h=h-4|0;F[b>>2]=F[h>>2];if((h|0)!=(i|0)){continue}break}}F[a+56>>2]=d+(e<<2);F[a+52>>2]=f;F[a+48>>2]=b;if(!i){break b}ja(i);f=F[a+52>>2];break b}na();v()}oa();v()}F[(e<<2)+f>>2]=d|j;c=F[F[h+28>>2]+(b<<2)>>2];if((c|0)!=-1){continue}break}return 0}F[a+52>>2]=f}if(F[a+48>>2]!=(f|0)){continue}break}}return 1}function he(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0,w=0;F[a+8>>2]=e;m=a+32|0;h=F[m>>2];f=F[a+36>>2]-h>>2;a:{if(f>>>0>>0){qa(m,e-f|0);d=F[a+8>>2];break a}d=e;if(d>>>0>=f>>>0){break a}F[a+36>>2]=h+(e<<2);d=e}s=F[a+52>>2];n=F[a+48>>2];f=0;h=e>>>0>1073741823?-1:e<<2;l=ma(ka(h),0,h);b:{if((d|0)<=0){break b}g=F[a+32>>2];while(1){d=f<<2;h=F[d+l>>2];i=F[a+16>>2];c:{if((h|0)>(i|0)){F[d+g>>2]=i;break c}d=d+g|0;i=F[a+12>>2];if((i|0)>(h|0)){F[d>>2]=i;break c}F[d>>2]=h}d=F[a+8>>2];f=f+1|0;if((d|0)>(f|0)){continue}break}if((d|0)<=0){break b}f=0;while(1){h=f<<2;d=h+c|0;h=F[b+h>>2]+F[g+h>>2]|0;F[d>>2]=h;d:{if((h|0)>F[a+16>>2]){h=h-F[a+20>>2]|0}else{if((h|0)>=F[a+12>>2]){break d}h=h+F[a+20>>2]|0}F[d>>2]=h}d=F[a+8>>2];f=f+1|0;if((d|0)>(f|0)){continue}break}}f=F[a+56>>2];q=F[f>>2];f=F[f+4>>2]-q|0;if((f|0)>=5){o=f>>>2|0;t=o>>>0<=2?2:o;u=e&-2;w=e&1;h=1;while(1){e:{f:{if((h|0)!=(o|0)){r=L(e,h);f=F[(h<<2)+q>>2];if((f|0)==-1|F[F[n>>2]+(f>>>3&536870908)>>2]>>>f&1){break f}f=F[F[F[n+64>>2]+12>>2]+(f<<2)>>2];if((f|0)==-1){break f}i=F[s>>2];g=F[n+28>>2];k=F[i+(F[g+(f<<2)>>2]<<2)>>2];if((k|0)>=(h|0)){break f}j=f+1|0;j=F[i+(F[g+(((j>>>0)%3|0?j:f-2|0)<<2)>>2]<<2)>>2];if((j|0)>=(h|0)){break f}f=F[i+(F[g+(f+((f>>>0)%3|0?-1:2)<<2)>>2]<<2)>>2];if((f|0)>=(h|0)){break f}g:{if((e|0)<=0){break g}g=L(e,f);i=L(e,j);k=L(e,k);f=0;p=0;if((e|0)!=1){while(1){F[(f<<2)+l>>2]=(F[(f+g<<2)+c>>2]+F[(f+i<<2)+c>>2]|0)-F[(f+k<<2)+c>>2];j=f|1;F[(j<<2)+l>>2]=(F[(g+j<<2)+c>>2]+F[(i+j<<2)+c>>2]|0)-F[(k+j<<2)+c>>2];f=f+2|0;p=p+2|0;if((u|0)!=(p|0)){continue}break}}if(!w){break g}F[(f<<2)+l>>2]=(F[(f+g<<2)+c>>2]+F[(f+i<<2)+c>>2]|0)-F[(f+k<<2)+c>>2]}if((d|0)<=0){break e}i=F[m>>2];f=0;while(1){d=f<<2;g=F[d+l>>2];k=F[a+16>>2];h:{if((g|0)>(k|0)){F[d+i>>2]=k;break h}d=d+i|0;k=F[a+12>>2];if((k|0)>(g|0)){F[d>>2]=k;break h}F[d>>2]=g}d=F[a+8>>2];f=f+1|0;if((d|0)>(f|0)){continue}break}f=0;if((d|0)<=0){break e}d=r<<2;k=d+c|0;j=b+d|0;while(1){g=f<<2;d=g+k|0;g=F[g+j>>2]+F[g+i>>2]|0;F[d>>2]=g;i:{if((g|0)>F[a+16>>2]){g=g-F[a+20>>2]|0}else{if((g|0)>=F[a+12>>2]){break i}g=g+F[a+20>>2]|0}F[d>>2]=g}d=F[a+8>>2];f=f+1|0;if((d|0)>(f|0)){continue}break}break e}ta();v()}if((d|0)<=0){break e}k=(L(h-1|0,e)<<2)+c|0;i=F[m>>2];f=0;while(1){d=f<<2;g=F[d+k>>2];j=F[a+16>>2];j:{if((g|0)>(j|0)){F[d+i>>2]=j;break j}d=d+i|0;j=F[a+12>>2];if((j|0)>(g|0)){F[d>>2]=j;break j}F[d>>2]=g}d=F[a+8>>2];f=f+1|0;if((d|0)>(f|0)){continue}break}f=0;if((d|0)<=0){break e}d=r<<2;k=d+c|0;j=b+d|0;while(1){g=f<<2;d=g+k|0;g=F[g+j>>2]+F[g+i>>2]|0;F[d>>2]=g;k:{if((g|0)>F[a+16>>2]){g=g-F[a+20>>2]|0}else{if((g|0)>=F[a+12>>2]){break k}g=g+F[a+20>>2]|0}F[d>>2]=g}d=F[a+8>>2];f=f+1|0;if((d|0)>(f|0)){continue}break}}h=h+1|0;if((t|0)!=(h|0)){continue}break}}ja(l);return 1}function Fb(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=M(0),k=0,l=0,m=M(0);i=F[c>>2];a:{b:{f=F[b+4>>2];if(!f){break b}g=ni(f);c:{if(g>>>0>=2){e=i;if(f>>>0<=e>>>0){e=(i>>>0)%(f>>>0)|0}c=F[F[b>>2]+(e<<2)>>2];if(!c){break b}if(g>>>0<=1){break c}while(1){c=F[c>>2];if(!c){break b}g=F[c+4>>2];if((g|0)!=(i|0)){if(f>>>0<=g>>>0){g=(g>>>0)%(f>>>0)|0}if((e|0)!=(g|0)){break b}}if(F[c+8>>2]!=(i|0)){continue}break}b=0;break a}e=f-1&i;c=F[F[b>>2]+(e<<2)>>2];if(!c){break b}}h=f-1|0;while(1){c=F[c>>2];if(!c){break b}g=F[c+4>>2];if((g|0)!=(i|0)&(g&h)!=(e|0)){break b}if(F[c+8>>2]!=(i|0)){continue}break}b=0;break a}c=ka(16);d=F[F[d>>2]>>2];F[c+12>>2]=0;F[c+8>>2]=d;F[c+4>>2]=i;F[c>>2]=0;m=M(F[b+12>>2]+1>>>0);j=J[b+16>>2];d:{if(m>M(j*M(f>>>0))?0:f){break d}e=2;d=(f-1&f)!=0|f>>>0<3|f<<1;j=M(S(M(m/j)));e:{if(j=M(0)){g=~~j>>>0;break e}g=0}d=d>>>0>g>>>0?d:g;f:{if((d|0)==1){break f}if(!(d&d-1)){e=d;break f}e=Mc(d);f=F[b+4>>2]}g:{if(e>>>0<=f>>>0){if(e>>>0>=f>>>0){break g}g=f>>>0<3;j=M(S(M(M(I[b+12>>2])/J[b+16>>2])));h:{if(j=M(0)){d=~~j>>>0;break h}d=0}i:{j:{if(g){break j}if(ni(f)>>>0>1){break j}d=d>>>0<2?d:1<<32-O(d-1|0);break i}d=Mc(d)}e=d>>>0>>0?e:d;if(f>>>0<=e>>>0){break g}}f=0;g=0;h=e;k:{l:{m:{n:{if(e){if(h>>>0>=1073741824){break n}d=ka(h<<2);e=F[b>>2];F[b>>2]=d;if(e){ja(e)}F[b+4>>2]=h;d=0;if(h>>>0>=4){e=h&-4;while(1){k=d<<2;F[k+F[b>>2]>>2]=0;F[F[b>>2]+(k|4)>>2]=0;F[F[b>>2]+(k|8)>>2]=0;F[F[b>>2]+(k|12)>>2]=0;d=d+4|0;g=g+4|0;if((e|0)!=(g|0)){continue}break}}e=h&3;if(e){while(1){F[F[b>>2]+(d<<2)>>2]=0;d=d+1|0;f=f+1|0;if((e|0)!=(f|0)){continue}break}}e=F[b+8>>2];if(!e){break k}d=b+8|0;f=F[e+4>>2];g=ni(h);if(g>>>0<2){break m}f=f>>>0>=h>>>0?(f>>>0)%(h>>>0)|0:f;F[F[b>>2]+(f<<2)>>2]=d;d=F[e>>2];if(!d){break k}if(g>>>0<=1){break l}while(1){g=F[d+4>>2];if(h>>>0<=g>>>0){g=(g>>>0)%(h>>>0)|0}o:{if((f|0)==(g|0)){e=d;break o}l=g<<2;k=l+F[b>>2]|0;if(!F[k>>2]){F[k>>2]=e;e=d;f=g;break o}F[e>>2]=F[d>>2];F[d>>2]=F[F[l+F[b>>2]>>2]>>2];F[F[l+F[b>>2]>>2]>>2]=d}d=F[e>>2];if(d){continue}break}break k}d=F[b>>2];F[b>>2]=0;if(d){ja(d)}F[b+4>>2]=0;break k}oa();v()}f=h-1&f;F[F[b>>2]+(f<<2)>>2]=d;d=F[e>>2];if(!d){break k}}k=h-1|0;while(1){g=k&F[d+4>>2];p:{if((g|0)==(f|0)){e=d;break p}l=g<<2;h=l+F[b>>2]|0;if(F[h>>2]){F[e>>2]=F[d>>2];F[d>>2]=F[F[l+F[b>>2]>>2]>>2];F[F[l+F[b>>2]>>2]>>2]=d;break p}F[h>>2]=e;e=d;f=g}d=F[e>>2];if(d){continue}break}}}f=F[b+4>>2];d=f-1|0;if(!(d&f)){e=d&i;break d}if(f>>>0>i>>>0){e=i;break d}e=(i>>>0)%(f>>>0)|0}e=F[b>>2]+(e<<2)|0;d=F[e>>2];q:{r:{if(!d){d=b+8|0;F[c>>2]=F[d>>2];F[b+8>>2]=c;F[e>>2]=d;d=F[c>>2];if(!d){break q}d=F[d+4>>2];e=f-1|0;s:{if(!(e&f)){d=d&e;break s}if(d>>>0>>0){break s}d=(d>>>0)%(f>>>0)|0}d=F[b>>2]+(d<<2)|0;break r}F[c>>2]=F[d>>2]}F[d>>2]=c}F[b+12>>2]=F[b+12>>2]+1;b=1}D[a+4|0]=b;F[a>>2]=c}function Vb(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;j=L(b,12)+a|0;F[j+12>>2]=F[j+8>>2];m=(c|0)==-1?-1:(c>>>0)/3|0;d=1;k=c;a:{b:{c:{while(1){d:{l=d;if(!d){if((k|0)==-1){break d}if((Wc(a,((k>>>0)%3|0?-1:2)+k|0)|0)==-1){break a}c=k+1|0;d=(c>>>0)%3|0?c:k-2|0;if((d|0)==-1){break a}c=d+1|0;c=(c>>>0)%3|0?c:d-2|0;if((c|0)==-1){break a}d=F[F[F[a+4>>2]+12>>2]+(c<<2)>>2];if((d|0)==-1){break a}c=d+1|0;c=(c>>>0)%3|0?c:d-2|0;if((c|0)==-1){break a}m=(c>>>0)/3|0}e:{d=F[a+56>>2]+(m>>>3&536870908)|0;h=F[d>>2];e=1<>2]=e|h;d=F[j+12>>2];f:{if((d|0)!=F[j+16>>2]){F[d>>2]=m;F[j+12>>2]=d+4;break f}n=F[j+8>>2];h=d-n|0;e=h>>2;i=e+1|0;if(i>>>0>=1073741824){break c}g=h>>>1|0;i=h>>>0>=2147483644?1073741823:i>>>0>>0?g:i;if(i){if(i>>>0>=1073741824){break b}g=ka(i<<2)}else{g=0}h=g+(e<<2)|0;F[h>>2]=m;e=h+4|0;if((d|0)!=(n|0)){while(1){h=h-4|0;d=d-4|0;F[h>>2]=F[d>>2];if((d|0)!=(n|0)){continue}break}}F[j+8>>2]=h;F[j+12>>2]=e;F[j+16>>2]=g+(i<<2);if(!n){break f}ja(n)}g=f+1|0;g:{h:{i:{if(!f){break i}if(g&1){if((c|0)==-1){c=-1;break g}d=c+1|0;c=(d>>>0)%3|0?d:c-2|0;break i}k=l?k:c;if((c|0)==-1){c=-1;break g}if((c>>>0)%3|0){d=c-1|0;break h}c=c+2|0}d=c;c=-1;if((d|0)==-1){break g}}c=F[F[F[a+4>>2]+12>>2]+(d<<2)>>2];h=-1;f=-1;e=d+1|0;e=(e>>>0)%3|0?e:d-2|0;if((e|0)>=0){f=(e>>>0)/3|0;f=F[(F[F[a>>2]+96>>2]+L(f,12)|0)+(e-L(f,3)<<2)>>2]}j:{if((c|0)==-1){break j}i=((c>>>0)%3|0?-1:2)+c|0;if((i|0)<0){break j}e=(i>>>0)/3|0;h=F[(F[F[a>>2]+96>>2]+L(e,12)|0)+(i-L(e,3)<<2)>>2]}if((f|0)!=(h|0)){c=-1;break g}k:{l:{f=((d>>>0)%3|0?-1:2)+d|0;if((f|0)>=0){d=(f>>>0)/3|0;if((c|0)!=-1){break l}c=-1;break g}d=-1;if((c|0)!=-1){break k}c=-1;break g}d=F[(F[F[a>>2]+96>>2]+L(d,12)|0)+(f-L(d,3)<<2)>>2]}f=c+1|0;e=(f>>>0)%3|0?f:c-2|0;if((e|0)>=0){f=(e>>>0)/3|0;f=F[(F[F[a>>2]+96>>2]+L(f,12)|0)+(e-L(f,3)<<2)>>2]}else{f=-1}if((f|0)!=(d|0)){c=-1;break g}f=g;m=(c>>>0)/3|0;d=F[a+56>>2]+(m>>>3&268435452)|0;h=F[d>>2];e=1<>2]-4|0;g=F[l>>2];d=F[a+56>>2]+(g>>>3&536870908)|0;c=F[d>>2];o=d,p=oi(g)&c,F[o>>2]=p;F[j+12>>2]=l;break a}d=0;if(l){continue}break a}break}k=-1;Wc(a,-1);break a}na();v()}oa();v()}F[((b<<2)+a|0)+44>>2]=k;b=F[j+12>>2];i=F[j+8>>2];m:{if((b|0)==(i|0)){break m}c=b-i|0;b=c>>2;b=b>>>0<=1?1:b;k=b&1;e=F[a+56>>2];d=0;if(c>>>0>=8){f=b&-2;c=0;while(1){l=d<<2;g=F[l+i>>2];b=e+(g>>>3&536870908)|0;a=F[b>>2];o=b,p=oi(g)&a,F[o>>2]=p;g=F[i+(l|4)>>2];b=e+(g>>>3&536870908)|0;a=F[b>>2];o=b,p=oi(g)&a,F[o>>2]=p;d=d+2|0;c=c+2|0;if((f|0)!=(c|0)){continue}break}}if(!k){break m}c=F[i+(d<<2)>>2];b=e+(c>>>3&536870908)|0;a=F[b>>2];o=b,p=oi(c)&a,F[o>>2]=p}}function pd(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;if((b|0)==-1){return 1}g=(b>>>0)/3|0;if(!(F[F[a+24>>2]+(g>>>3&268435452)>>2]>>>g&1)){f=F[a+48>>2];F[a+52>>2]=f;a:{if((f|0)!=F[a+56>>2]){F[f>>2]=b;F[a+52>>2]=f+4;break a}d=ka(4);F[d>>2]=b;c=d+4|0;F[a+56>>2]=c;F[a+52>>2]=c;F[a+48>>2]=d;if(!f){break a}ja(f)}e=-1;d=F[a+4>>2];c=b+1|0;i=(c>>>0)%3|0?c:b-2|0;if((i|0)!=-1){e=F[F[d>>2]+(i<<2)>>2]}b:{h=b-L(g,3)|0;if(h){c=b-1|0;break b}c=b+2|0;if((c|0)!=-1){break b}return 0}if((e|0)==-1){return 0}j=F[F[d>>2]+(c<<2)>>2];if((j|0)==-1){return 0}c=F[a+36>>2];f=c+(e>>>3&536870908)|0;g=F[f>>2];d=1<>2]=d|g;Ka(a+8|0,e,i);c=F[a+36>>2]}g=(j>>>3&536870908)+c|0;d=F[g>>2];c=1<>2]=c|d;Ka(a+8|0,j,(h?-1:2)+b|0)}c=F[a+52>>2];if((c|0)==F[a+48>>2]){return 1}j=a+8|0;while(1){c:{d:{c=c-4|0;b=F[c>>2];if((b|0)==-1){break d}d=(b>>>0)/3|0;f=F[a+24>>2]+(d>>>3&268435452)|0;g=F[f>>2];d=1<>2]=d|g;while(1){i=F[a+4>>2];e=F[F[i>>2]+(b<<2)>>2];if((e|0)==-1){return 0}e:{f:{h=F[a+36>>2]+(e>>>3&536870908)|0;f=F[h>>2];g=1<>2]+(e<<2)>>2];h:{if((d|0)==-1){break h}c=d+1|0;c=(c>>>0)%3|0?c:d-2|0;if((c|0)==-1){break h}d=F[F[i+12>>2]+(c<<2)>>2];if((d|0)!=-1){break g}}F[h>>2]=f|g;Ka(j,e,b);break f}F[h>>2]=f|g;Ka(j,e,b);c=d+1|0;if((((c>>>0)%3|0?c:d-2|0)|0)==-1){break f}c=b-2|0;d=b+1|0;b=-1;c=(d>>>0)%3|0?d:c;if((c|0)!=-1){b=F[F[F[a+4>>2]+12>>2]+(c<<2)>>2]}c=(b>>>0)/3|0;d=1<>2];f=c>>>5|0;i=F[e+(f<<2)>>2];break e}c=-1;g=F[a+4>>2];d=b+1|0;d=(d>>>0)%3|0?d:b-2|0;if((d|0)!=-1){c=F[F[g+12>>2]+(d<<2)>>2]}i:{j:{if((b>>>0)%3|0){e=b-1|0;break j}e=b+2|0;b=-1;if((e|0)==-1){break i}}b=F[F[g+12>>2]+(e<<2)>>2]}g=(b|0)==-1;h=g?-1:(b>>>0)/3|0;k:{if((c|0)!=-1){e=F[a+24>>2];d=(c>>>0)/3|0;f=d>>>5|0;i=F[e+(f<<2)>>2];d=1<>2];f=h>>>5|0;i=F[e+(f<<2)>>2];if(!(d&i)){break e}}c=F[a+52>>2]-4|0;F[a+52>>2]=c;break c}if(g){b=c;break e}if(F[(h>>>3&536870908)+e>>2]>>>h&1){b=c;break e}e=F[a+52>>2];F[e-4>>2]=b;if(F[a+56>>2]!=(e|0)){F[e>>2]=c;c=e+4|0;break d}l:{h=F[a+48>>2];f=e-h|0;g=f>>2;d=g+1|0;if(d>>>0<1073741824){b=f>>>1|0;f=f>>>0>=2147483644?1073741823:b>>>0>d>>>0?b:d;if(f){if(f>>>0>=1073741824){break l}d=ka(f<<2)}else{d=0}b=d+(g<<2)|0;F[b>>2]=c;c=b+4|0;if((e|0)!=(h|0)){while(1){b=b-4|0;e=e-4|0;F[b>>2]=F[e>>2];if((e|0)!=(h|0)){continue}break}}F[a+56>>2]=d+(f<<2);F[a+52>>2]=c;F[a+48>>2]=b;if(!h){break c}ja(h);c=F[a+52>>2];break c}na();v()}oa();v()}F[(f<<2)+e>>2]=d|i;if((b|0)!=-1){continue}break}return 0}F[a+52>>2]=c}if(F[a+48>>2]!=(c|0)){continue}break}}return 1}function ee(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;h=Z-32|0;Z=h;a:{b:{if(!Oa(1,h+28|0,b)){break b}d=F[h+28>>2];c=F[F[a+48>>2]+64>>2];if(d>>>0>F[c+4>>2]-F[c>>2]>>2>>>0){break b}c:{if(d){Na(a+60|0,d);c=h+8|0;F[c>>2]=0;F[c+4>>2]=0;D[c+5|0]=0;D[c+6|0]=0;D[c+7|0]=0;D[c+8|0]=0;D[c+9|0]=0;D[c+10|0]=0;D[c+11|0]=0;D[c+12|0]=0;if(!Aa(c,b)){break c}while(1){f=1<>2]+(e>>>3&536870908)|0;if(j){i=f|F[g>>2]}else{i=F[g>>2]&(f^-1)}F[g>>2]=i;e=e+1|0;if((d|0)!=(e|0)){continue}break}}if(!Oa(1,h+28|0,b)){break b}d=F[h+28>>2];c=F[F[a+48>>2]+64>>2];if(d>>>0>F[c+4>>2]-F[c>>2]>>2>>>0){break b}if(d){e=0;Na(a+72|0,d);c=h+8|0;F[c>>2]=0;F[c+4>>2]=0;D[c+5|0]=0;D[c+6|0]=0;D[c+7|0]=0;D[c+8|0]=0;D[c+9|0]=0;D[c+10|0]=0;D[c+11|0]=0;D[c+12|0]=0;if(!Aa(c,b)){break c}while(1){f=1<>2]+(e>>>3&536870908)|0;if(j){i=f|F[g>>2]}else{i=F[g>>2]&(f^-1)}F[g>>2]=i;e=e+1|0;if((d|0)!=(e|0)){continue}break}}if(!Oa(1,h+28|0,b)){break b}d=F[h+28>>2];c=F[F[a+48>>2]+64>>2];if(d>>>0>F[c+4>>2]-F[c>>2]>>2>>>0){break b}if(d){e=0;Na(a+84|0,d);c=h+8|0;F[c>>2]=0;F[c+4>>2]=0;D[c+5|0]=0;D[c+6|0]=0;D[c+7|0]=0;D[c+8|0]=0;D[c+9|0]=0;D[c+10|0]=0;D[c+11|0]=0;D[c+12|0]=0;if(!Aa(c,b)){break c}while(1){f=1<>2]+(e>>>3&536870908)|0;if(j){i=f|F[g>>2]}else{i=F[g>>2]&(f^-1)}F[g>>2]=i;e=e+1|0;if((d|0)!=(e|0)){continue}break}}if(!Oa(1,h+28|0,b)){break b}d=F[h+28>>2];c=F[F[a+48>>2]+64>>2];if(d>>>0>F[c+4>>2]-F[c>>2]>>2>>>0){break b}if(d){e=0;Na(a+96|0,d);c=h+8|0;F[c>>2]=0;F[c+4>>2]=0;D[c+5|0]=0;D[c+6|0]=0;D[c+7|0]=0;D[c+8|0]=0;D[c+9|0]=0;D[c+10|0]=0;D[c+11|0]=0;D[c+12|0]=0;if(!Aa(c,b)){break c}while(1){f=1<>2]+(e>>>3&536870908)|0;if(j){i=f|F[g>>2]}else{i=F[g>>2]&(f^-1)}F[g>>2]=i;e=e+1|0;if((d|0)!=(e|0)){continue}break}}e=0;c=F[b+8>>2];f=F[b+12>>2];d=c;c=F[b+20>>2];i=c;g=F[b+16>>2];j=g+4|0;c=j>>>0<4?c+1|0:c;if(d>>>0>>0&(c|0)>=(f|0)|(c|0)>(f|0)){break a}m=F[b>>2];k=m+g|0;l=G[k|0]|G[k+1|0]<<8|(G[k+2|0]<<16|G[k+3|0]<<24);F[b+16>>2]=j;F[b+20>>2]=c;k=d;d=f;c=i;f=g+8|0;c=f>>>0<8?c+1|0:c;if(f>>>0>k>>>0&(c|0)>=(d|0)|(c|0)>(d|0)){break a}d=j+m|0;d=G[d|0]|G[d+1|0]<<8|(G[d+2|0]<<16|G[d+3|0]<<24);F[b+16>>2]=f;F[b+20>>2]=c;if((d|0)<(l|0)){break a}F[a+16>>2]=d;F[a+12>>2]=l;c=(d>>31)-((l>>31)+(d>>>0>>0)|0)|0;b=d-l|0;if(!c&b>>>0>2147483646|c){break a}e=1;b=b+1|0;F[a+20>>2]=b;c=b>>>1|0;F[a+24>>2]=c;F[a+28>>2]=0-c;if(b&1){break a}F[a+24>>2]=c-1;break a}}e=0}Z=h+32|0;return e|0}function ai(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;h=Z-32|0;Z=h;a:{b:{if(!Oa(1,h+28|0,b)){break b}d=F[h+28>>2];c=F[a+48>>2];if(d>>>0>F[c+4>>2]-F[c>>2]>>2>>>0){break b}c:{if(d){Na(a+60|0,d);c=h+8|0;F[c>>2]=0;F[c+4>>2]=0;D[c+5|0]=0;D[c+6|0]=0;D[c+7|0]=0;D[c+8|0]=0;D[c+9|0]=0;D[c+10|0]=0;D[c+11|0]=0;D[c+12|0]=0;if(!Aa(c,b)){break c}while(1){f=1<>2]+(e>>>3&536870908)|0;if(j){i=f|F[g>>2]}else{i=F[g>>2]&(f^-1)}F[g>>2]=i;e=e+1|0;if((d|0)!=(e|0)){continue}break}}if(!Oa(1,h+28|0,b)){break b}d=F[h+28>>2];c=F[a+48>>2];if(d>>>0>F[c+4>>2]-F[c>>2]>>2>>>0){break b}if(d){e=0;Na(a+72|0,d);c=h+8|0;F[c>>2]=0;F[c+4>>2]=0;D[c+5|0]=0;D[c+6|0]=0;D[c+7|0]=0;D[c+8|0]=0;D[c+9|0]=0;D[c+10|0]=0;D[c+11|0]=0;D[c+12|0]=0;if(!Aa(c,b)){break c}while(1){f=1<>2]+(e>>>3&536870908)|0;if(j){i=f|F[g>>2]}else{i=F[g>>2]&(f^-1)}F[g>>2]=i;e=e+1|0;if((d|0)!=(e|0)){continue}break}}if(!Oa(1,h+28|0,b)){break b}d=F[h+28>>2];c=F[a+48>>2];if(d>>>0>F[c+4>>2]-F[c>>2]>>2>>>0){break b}if(d){e=0;Na(a+84|0,d);c=h+8|0;F[c>>2]=0;F[c+4>>2]=0;D[c+5|0]=0;D[c+6|0]=0;D[c+7|0]=0;D[c+8|0]=0;D[c+9|0]=0;D[c+10|0]=0;D[c+11|0]=0;D[c+12|0]=0;if(!Aa(c,b)){break c}while(1){f=1<>2]+(e>>>3&536870908)|0;if(j){i=f|F[g>>2]}else{i=F[g>>2]&(f^-1)}F[g>>2]=i;e=e+1|0;if((d|0)!=(e|0)){continue}break}}if(!Oa(1,h+28|0,b)){break b}d=F[h+28>>2];c=F[a+48>>2];if(d>>>0>F[c+4>>2]-F[c>>2]>>2>>>0){break b}if(d){e=0;Na(a+96|0,d);c=h+8|0;F[c>>2]=0;F[c+4>>2]=0;D[c+5|0]=0;D[c+6|0]=0;D[c+7|0]=0;D[c+8|0]=0;D[c+9|0]=0;D[c+10|0]=0;D[c+11|0]=0;D[c+12|0]=0;if(!Aa(c,b)){break c}while(1){f=1<>2]+(e>>>3&536870908)|0;if(j){i=f|F[g>>2]}else{i=F[g>>2]&(f^-1)}F[g>>2]=i;e=e+1|0;if((d|0)!=(e|0)){continue}break}}e=0;c=F[b+8>>2];f=F[b+12>>2];d=c;c=F[b+20>>2];i=c;g=F[b+16>>2];j=g+4|0;c=j>>>0<4?c+1|0:c;if(d>>>0>>0&(c|0)>=(f|0)|(c|0)>(f|0)){break a}m=F[b>>2];k=m+g|0;l=G[k|0]|G[k+1|0]<<8|(G[k+2|0]<<16|G[k+3|0]<<24);F[b+16>>2]=j;F[b+20>>2]=c;k=d;d=f;c=i;f=g+8|0;c=f>>>0<8?c+1|0:c;if(f>>>0>k>>>0&(c|0)>=(d|0)|(c|0)>(d|0)){break a}d=j+m|0;d=G[d|0]|G[d+1|0]<<8|(G[d+2|0]<<16|G[d+3|0]<<24);F[b+16>>2]=f;F[b+20>>2]=c;if((d|0)<(l|0)){break a}F[a+16>>2]=d;F[a+12>>2]=l;c=(d>>31)-((l>>31)+(d>>>0>>0)|0)|0;b=d-l|0;if(!c&b>>>0>2147483646|c){break a}e=1;b=b+1|0;F[a+20>>2]=b;c=b>>>1|0;F[a+24>>2]=c;F[a+28>>2]=0-c;if(b&1){break a}F[a+24>>2]=c-1;break a}}e=0}Z=h+32|0;return e|0}function uh(a){a=a|0;var b=0,c=0,d=0,e=0;c=F[a+32>>2];d=F[c+16>>2];e=F[c+12>>2];b=F[c+20>>2];if(I[c+8>>2]>d>>>0&(e|0)>=(b|0)|(b|0)<(e|0)){e=G[F[c>>2]+d|0];d=d+1|0;b=d?b:b+1|0;F[c+16>>2]=d;F[c+20>>2]=b;b=F[a+48>>2];F[a+48>>2]=0;if(b){$[F[F[b>>2]+4>>2]](b)}a:{b:{c:{d:{switch(e|0){case 0:b=ka(384);F[b>>2]=8284;ma(b+4|0,0,80);F[b+96>>2]=0;F[b+100>>2]=0;F[b+92>>2]=-1;F[b+84>>2]=-1;F[b+88>>2]=-1;F[b+104>>2]=0;F[b+108>>2]=0;F[b+112>>2]=0;F[b+116>>2]=0;F[b+120>>2]=0;F[b+124>>2]=0;F[b+128>>2]=0;F[b+132>>2]=0;F[b+136>>2]=0;F[b+140>>2]=0;F[b+144>>2]=0;F[b+148>>2]=0;F[b+156>>2]=0;F[b+160>>2]=0;F[b+152>>2]=1065353216;F[b+164>>2]=0;F[b+168>>2]=0;F[b+172>>2]=0;F[b+176>>2]=0;F[b+180>>2]=0;F[b+184>>2]=0;F[b+188>>2]=0;F[b+192>>2]=0;F[b+196>>2]=0;F[b+200>>2]=0;F[b+204>>2]=0;F[b+208>>2]=0;F[b+212>>2]=-1;F[b+216>>2]=0;F[b+220>>2]=0;F[b+224>>2]=0;Ja(b+232|0);Ja(b+272|0);c=b+312|0;F[c>>2]=0;F[c+4>>2]=0;D[c+5|0]=0;D[c+6|0]=0;D[c+7|0]=0;D[c+8|0]=0;D[c+9|0]=0;D[c+10|0]=0;D[c+11|0]=0;D[c+12|0]=0;Ja(b+328|0);F[b+376>>2]=0;F[b+368>>2]=0;F[b+372>>2]=0;break c;case 2:break d;default:break b}}b=ka(440);F[b>>2]=8336;ma(b+4|0,0,80);F[b+96>>2]=0;F[b+100>>2]=0;F[b+92>>2]=-1;F[b+84>>2]=-1;F[b+88>>2]=-1;F[b+104>>2]=0;F[b+108>>2]=0;F[b+112>>2]=0;F[b+116>>2]=0;F[b+120>>2]=0;F[b+124>>2]=0;F[b+128>>2]=0;F[b+132>>2]=0;F[b+136>>2]=0;F[b+140>>2]=0;F[b+144>>2]=0;F[b+148>>2]=0;F[b+156>>2]=0;F[b+160>>2]=0;F[b+152>>2]=1065353216;F[b+164>>2]=0;F[b+168>>2]=0;F[b+172>>2]=0;F[b+176>>2]=0;F[b+180>>2]=0;F[b+184>>2]=0;F[b+188>>2]=0;F[b+192>>2]=0;F[b+196>>2]=0;F[b+200>>2]=0;F[b+204>>2]=0;F[b+208>>2]=0;F[b+212>>2]=-1;F[b+216>>2]=0;F[b+220>>2]=0;F[b+224>>2]=0;Ja(b+232|0);Ja(b+272|0);c=b+312|0;F[c>>2]=0;F[c+4>>2]=0;D[c+5|0]=0;D[c+6|0]=0;D[c+7|0]=0;D[c+8|0]=0;D[c+9|0]=0;D[c+10|0]=0;D[c+11|0]=0;D[c+12|0]=0;Ja(b+328|0);F[b+392>>2]=0;F[b+396>>2]=0;F[b+384>>2]=0;F[b+388>>2]=0;F[b+376>>2]=0;F[b+380>>2]=0;F[b+368>>2]=0;F[b+372>>2]=0;F[b+416>>2]=0;F[b+420>>2]=0;F[b+408>>2]=2;F[b+412>>2]=7;F[b+400>>2]=-1;F[b+404>>2]=-1;F[b+424>>2]=0;F[b+428>>2]=0;F[b+432>>2]=0;F[b+436>>2]=0}c=F[a+48>>2];F[a+48>>2]=b;if(!c){break a}$[F[F[c>>2]+4>>2]](c)}b=F[a+48>>2];if(b){break a}return 0}a=$[F[F[b>>2]+8>>2]](b,a)|0}else{a=0}return a|0}function ei(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;g=Z-32|0;Z=g;F[a+68>>2]=f;d=F[a+56>>2];e=F[d>>2];d=F[d+4>>2];F[g+24>>2]=0;F[g+16>>2]=0;F[g+20>>2]=0;a:{d=d-e|0;if((d|0)>0){m=a+60|0;d=d>>>2|0;n=d>>>0<=1?1:d;o=a+112|0;while(1){e=F[a+56>>2];d=F[e>>2];if(F[e+4>>2]-d>>2>>>0<=j>>>0){break a}Mb(m,F[d+(j<<2)>>2],g+16|0);i=F[g+20>>2];d=i>>31;h=F[g+16>>2];e=h>>31;f=(d^i)-d+((e^h)-e)|0;k=F[g+24>>2];d=k>>31;e=(d^k)-d|0;d=0;l=e;e=e+f|0;d=l>>>0>e>>>0?1:d;b:{if(!(d|e)){F[g+16>>2]=F[a+108>>2];break b}f=F[a+108>>2];l=f>>31;h=li(ki(f,l,h,h>>31),_,e,d);F[g+16>>2]=h;d=li(ki(f,l,i,i>>31),_,e,d);F[g+20>>2]=d;e=d;d=d>>31;e=(e^d)-d|0;d=h>>31;d=e+((d^h)-d|0)|0;if((k|0)>=0){F[g+24>>2]=f-d;break b}F[g+24>>2]=d-f}d=wa(o);f=F[g+16>>2];c:{if(d){F[g+24>>2]=0-F[g+24>>2];e=0-F[g+20>>2]|0;F[g+20>>2]=e;f=0-f|0;F[g+16>>2]=f;break c}e=F[g+20>>2]}d:{if((f|0)>=0){f=F[a+108>>2];d=f+F[g+24>>2]|0;f=e+f|0;break d}e:{if((e|0)<0){d=F[g+24>>2];f=d>>31;f=(d^f)-f|0;break e}d=F[g+24>>2];f=d>>31;f=F[a+100>>2]+(f-(d^f)|0)|0}if((d|0)<0){d=e>>31;d=(d^e)-d|0;break d}d=e>>31;d=F[a+100>>2]+(d-(d^e)|0)|0}e=F[a+100>>2];f:{if(!(d|f)){d=e;f=d;break f}if(!((d|0)!=(e|0)|f)){f=d;break f}if(!((e|0)!=(f|0)|d)){d=f;break f}g:{if(f){break g}i=F[a+108>>2];if((i|0)>=(d|0)){break g}d=(i<<1)-d|0;f=0;break f}h:{if((e|0)!=(f|0)){break h}i=F[a+108>>2];if((i|0)<=(d|0)){break h}d=(i<<1)-d|0;break f}i:{if((d|0)!=(e|0)){break i}e=F[a+108>>2];if((e|0)<=(f|0)){break i}f=(e<<1)-f|0;break f}if(d){break f}d=0;e=F[a+108>>2];if((e|0)>=(f|0)){break f}f=(e<<1)-f|0}F[g+12>>2]=d;F[g+8>>2]=f;j:{if(F[a+8>>2]<=0){break j}i=F[a+32>>2];f=0;while(1){d=f<<2;e=F[d+(g+8|0)>>2];h=F[a+16>>2];k:{if((e|0)>(h|0)){F[d+i>>2]=h;break k}d=d+i|0;h=F[a+12>>2];if((h|0)>(e|0)){F[d>>2]=h;break k}F[d>>2]=e}f=f+1|0;e=F[a+8>>2];if((f|0)<(e|0)){continue}break}d=0;if((e|0)<=0){break j}e=j<<3;h=e+c|0;k=b+e|0;while(1){f=d<<2;e=f+h|0;f=F[f+k>>2]+F[f+i>>2]|0;F[e>>2]=f;l:{if((f|0)>F[a+16>>2]){f=f-F[a+20>>2]|0}else{if((f|0)>=F[a+12>>2]){break l}f=f+F[a+20>>2]|0}F[e>>2]=f}d=d+1|0;if((d|0)>2]){continue}break}}j=j+1|0;if((n|0)!=(j|0)){continue}break}}Z=g+32|0;return 1}ta();v()}function Vh(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;g=Z-32|0;Z=g;F[a+68>>2]=f;d=F[a+56>>2];e=F[d>>2];d=F[d+4>>2];F[g+24>>2]=0;F[g+16>>2]=0;F[g+20>>2]=0;a:{d=d-e|0;if((d|0)>0){m=a+60|0;d=d>>>2|0;n=d>>>0<=1?1:d;o=a+112|0;while(1){e=F[a+56>>2];d=F[e>>2];if(F[e+4>>2]-d>>2>>>0<=j>>>0){break a}Kb(m,F[d+(j<<2)>>2],g+16|0);i=F[g+20>>2];d=i>>31;h=F[g+16>>2];e=h>>31;f=(d^i)-d+((e^h)-e)|0;k=F[g+24>>2];d=k>>31;e=(d^k)-d|0;d=0;l=e;e=e+f|0;d=l>>>0>e>>>0?1:d;b:{if(!(d|e)){F[g+16>>2]=F[a+108>>2];break b}f=F[a+108>>2];l=f>>31;h=li(ki(f,l,h,h>>31),_,e,d);F[g+16>>2]=h;d=li(ki(f,l,i,i>>31),_,e,d);F[g+20>>2]=d;e=d;d=d>>31;e=(e^d)-d|0;d=h>>31;d=e+((d^h)-d|0)|0;if((k|0)>=0){F[g+24>>2]=f-d;break b}F[g+24>>2]=d-f}d=wa(o);f=F[g+16>>2];c:{if(d){F[g+24>>2]=0-F[g+24>>2];e=0-F[g+20>>2]|0;F[g+20>>2]=e;f=0-f|0;F[g+16>>2]=f;break c}e=F[g+20>>2]}d:{if((f|0)>=0){f=F[a+108>>2];d=f+F[g+24>>2]|0;f=e+f|0;break d}e:{if((e|0)<0){d=F[g+24>>2];f=d>>31;f=(d^f)-f|0;break e}d=F[g+24>>2];f=d>>31;f=F[a+100>>2]+(f-(d^f)|0)|0}if((d|0)<0){d=e>>31;d=(d^e)-d|0;break d}d=e>>31;d=F[a+100>>2]+(d-(d^e)|0)|0}e=F[a+100>>2];f:{if(!(d|f)){d=e;f=d;break f}if(!((d|0)!=(e|0)|f)){f=d;break f}if(!((e|0)!=(f|0)|d)){d=f;break f}g:{if(f){break g}i=F[a+108>>2];if((i|0)>=(d|0)){break g}d=(i<<1)-d|0;f=0;break f}h:{if((e|0)!=(f|0)){break h}i=F[a+108>>2];if((i|0)<=(d|0)){break h}d=(i<<1)-d|0;break f}i:{if((d|0)!=(e|0)){break i}e=F[a+108>>2];if((e|0)<=(f|0)){break i}f=(e<<1)-f|0;break f}if(d){break f}d=0;e=F[a+108>>2];if((e|0)>=(f|0)){break f}f=(e<<1)-f|0}F[g+12>>2]=d;F[g+8>>2]=f;j:{if(F[a+8>>2]<=0){break j}i=F[a+32>>2];f=0;while(1){d=f<<2;e=F[d+(g+8|0)>>2];h=F[a+16>>2];k:{if((e|0)>(h|0)){F[d+i>>2]=h;break k}d=d+i|0;h=F[a+12>>2];if((h|0)>(e|0)){F[d>>2]=h;break k}F[d>>2]=e}f=f+1|0;e=F[a+8>>2];if((f|0)<(e|0)){continue}break}d=0;if((e|0)<=0){break j}e=j<<3;h=e+c|0;k=b+e|0;while(1){f=d<<2;e=f+h|0;f=F[f+k>>2]+F[f+i>>2]|0;F[e>>2]=f;l:{if((f|0)>F[a+16>>2]){f=f-F[a+20>>2]|0}else{if((f|0)>=F[a+12>>2]){break l}f=f+F[a+20>>2]|0}F[e>>2]=f}d=d+1|0;if((d|0)>2]){continue}break}}j=j+1|0;if((n|0)!=(j|0)){continue}break}}Z=g+32|0;return 1}ta();v()}function $a(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;h=Z-32|0;Z=h;a:{b:{if(F[a+8>>2]<<5>>>0>=b>>>0){break b}if((b|0)<0){break a}b=(b-1>>>5|0)+1|0;c=ka(b<<2);F[h+24>>2]=b;F[h+20>>2]=0;F[h+16>>2]=c;b=F[a>>2];F[h+12>>2]=0;F[h+8>>2]=b;c=F[a+4>>2];F[h+4>>2]=c&31;F[h>>2]=b+(c>>>3&536870908);e=Z-32|0;Z=e;i=F[h+4>>2];g=F[h+12>>2];j=F[h>>2];d=F[h+8>>2];b=(i-g|0)+(j-d<<3)|0;f=F[h+20>>2];c=b+f|0;F[h+20>>2]=c;if(!((c-1^f-1)>>>0<32?f:0)){F[F[h+16>>2]+((c>>>0>=33?c-1>>>5|0:0)<<2)>>2]=0}c=F[h+16>>2]+(f>>>3&536870908)|0;f=f&31;c:{if((f|0)==(g|0)){if((b|0)<=0){break c}if(g){i=32-g|0;f=(b|0)<(i|0)?b:i;i=-1<>>i-f;F[c>>2]=F[c>>2]&(i^-1)|i&F[d>>2];d=d+4|0;c=(g+f>>>3&536870908)+c|0;b=b-f|0}g=(b|0)/32|0;if(b+31>>>0>=63){pa(c,d,g<<2)}b=b-(g<<5)|0;if((b|0)<=0){break c}f=c;c=g<<2;g=f+c|0;b=-1>>>32-b|0;F[g>>2]=F[g>>2]&(b^-1)|b&F[c+d>>2];break c}F[e+28>>2]=g;F[e+24>>2]=d;F[e+20>>2]=i;F[e+16>>2]=j;F[e+12>>2]=f;F[e+8>>2]=c;b=F[e+28>>2];c=F[e+24>>2];g=(F[e+20>>2]-b|0)+(F[e+16>>2]-c<<3)|0;d:{if((g|0)<=0){b=F[e+12>>2];d=F[e+8>>2];break d}e:{if(!b){b=F[e+12>>2];break e}d=F[e+12>>2];j=32-d|0;k=32-b|0;f=(g|0)<(k|0)?g:k;i=f>>>0>j>>>0?j:f;l=F[e+8>>2];m=F[l>>2]&(-1<>>j-i^-1);j=F[c>>2]&(-1<>>k-f);F[l>>2]=m|(b>>>0>>0?j<>>b-d|0);c=d+i|0;b=c&31;F[e+12>>2]=b;d=l+(c>>>3&536870908)|0;F[e+8>>2]=d;c=f-i|0;if((c|0)>0){F[d>>2]=F[d>>2]&(-1>>>32-c^-1)|j>>>i+F[e+28>>2];F[e+12>>2]=c;b=c}g=g-f|0;c=F[e+24>>2]+4|0;F[e+24>>2]=c}i=-1<=32){j=i^-1;while(1){d=F[e+8>>2];c=F[c>>2];F[d>>2]=j&F[d>>2]|c<>2]=d+4;F[d+4>>2]=i&F[d+4>>2]|c>>>f;c=F[e+24>>2]+4|0;F[e+24>>2]=c;d=g>>>0>63;g=g-32|0;if(d){continue}break}}d=F[e+8>>2];if((g|0)<=0){break d}j=f;f=(g|0)>(f|0)?f:g;j=F[d>>2]&(i&-1>>>j-f^-1);i=F[c>>2]&-1>>>32-g;F[d>>2]=j|i<>2]=c;d=(b>>>3&536870908)+d|0;F[e+8>>2]=d;b=g-f|0;if((b|0)<=0){b=c;break d}F[d>>2]=F[d>>2]&(-1>>>32-b^-1)|i>>>f;F[e+12>>2]=b}F[e+4>>2]=b;F[e>>2]=d}Z=e+32|0;b=F[a>>2];F[a>>2]=F[h+16>>2];F[h+16>>2]=b;c=F[a+4>>2];F[a+4>>2]=F[h+20>>2];F[h+20>>2]=c;c=F[a+8>>2];F[a+8>>2]=F[h+24>>2];F[h+24>>2]=c;if(!b){break b}ja(b)}Z=h+32|0;return}na();v()}function xc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;n=$[F[F[a>>2]+44>>2]](a)|0;a:{if((n|0)<=0){break a}i=F[b+4>>2]-F[b>>2]>>2;e=Z+-64|0;Z=e;f=kb(e);d=L(F[2541],n);cc(f,F[F[a+8>>2]+56>>2],n&255,5,0,d,d>>31);f=bc(ka(96),f);D[f+84|0]=1;F[f+72>>2]=F[f+68>>2];ac(f,i);F[f+60>>2]=F[F[a+8>>2]+60>>2];d=F[a+16>>2];F[a+16>>2]=f;if(d){xa(d)}Z=e- -64|0;h=F[a+16>>2];if(!F[h+80>>2]){break a}j=F[F[h>>2]>>2];if(!j){break a}m=F[c+12>>2];e=m;d=F[c+20>>2];g=F[c+8>>2];k=F[c+16>>2];if((e|0)<=(d|0)&g>>>0<=k>>>0|(d|0)>(e|0)){break a}l=L(i,n);i=j+F[h+48>>2]|0;h=F[c>>2];j=G[h+k|0];e=k+1|0;f=e?d:d+1|0;F[c+16>>2]=e;F[c+20>>2]=f;b:{c:{if(j){if(mc(l,n,c,i)){break c}break a}if((f|0)>=(m|0)&e>>>0>=g>>>0|(f|0)>(m|0)){break a}g=G[e+h|0];f=k+2|0;d=f>>>0<2?d+1|0:d;F[c+16>>2]=f;F[c+20>>2]=d;d=F[F[a+16>>2]+64>>2];d=F[d+4>>2]-F[d>>2]|0;if((g|0)==F[2541]){e=l<<2;if(e>>>0>d>>>0){break a}g=F[c+8>>2];k=F[c+12>>2];j=F[c+20>>2];d=F[c+16>>2];f=e+d|0;j=f>>>0>>0?j+1|0:j;if(f>>>0>g>>>0&(j|0)>=(k|0)|(j|0)>(k|0)){break a}la(i,d+F[c>>2]|0,e);f=F[c+20>>2];d=e+F[c+16>>2]|0;f=d>>>0>>0?f+1|0:f;F[c+16>>2]=d;F[c+20>>2]=f;break c}if(d>>>0>>0){break a}d=F[c+8>>2];f=F[c+16>>2];e=d-f|0;m=d>>>0>>0;d=F[c+20>>2];k=F[c+12>>2]-(m+d|0)|0;m=ki(g,0,l,0)>>>0>e>>>0;e=_;if(m&(e|0)>=(k|0)|(e|0)>(k|0)){break a}e=1;if(!l){break b}h=0;while(1){k=F[c+8>>2];j=F[c+12>>2];e=f+g|0;d=e>>>0>>0?d+1|0:d;if(e>>>0>k>>>0&(d|0)>=(j|0)|(d|0)>(j|0)){return 0}la(i+(h<<2)|0,F[c>>2]+f|0,g);d=F[c+20>>2];f=g+F[c+16>>2]|0;d=f>>>0>>0?d+1|0:d;F[c+16>>2]=f;F[c+20>>2]=d;h=h+1|0;if((l|0)!=(h|0)){continue}break}}e=1;if(!l){break b}d=F[a+20>>2];if(d){e=0;if($[F[F[d>>2]+32>>2]](d)|0){break b}}g=0;h=0;d:{if((l|0)<=0){break d}if((l|0)!=1){f=l&-2;while(1){e=g<<2;d=F[e+i>>2];F[e+i>>2]=0-(d&1)^d>>>1;d=e|4;e=F[d+i>>2];F[d+i>>2]=0-(e&1)^e>>>1;g=g+2|0;h=h+2|0;if((f|0)!=(h|0)){continue}break}}if(!(l&1)){break d}d=g<<2;f=F[d+i>>2];F[d+i>>2]=0-(f&1)^f>>>1}e=0}d=e;f=F[a+20>>2];e:{if(!f){break e}if(!($[F[F[f>>2]+40>>2]](f,c)|0)){break a}if(d){break e}a=F[a+20>>2];if(!($[F[F[a>>2]+44>>2]](a,i,i,l,n,F[b>>2])|0)){break a}}o=1}return o|0}function Lh(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;g=Z-48|0;Z=g;d=F[a+8>>2];if(d-2>>>0<=28){F[a+76>>2]=d;e=-1<>2]=d;F[a+80>>2]=e^-1;F[a+92>>2]=(d|0)/2;J[a+88>>2]=M(2)/M(d|0)}F[a+52>>2]=f;d=F[a+40>>2];e=F[d>>2];d=F[d+4>>2];F[g+16>>2]=0;F[g+8>>2]=0;F[g+12>>2]=0;a:{d=d-e|0;if((d|0)>0){m=a+8|0;n=a+44|0;d=d>>>2|0;o=d>>>0<=1?1:d;p=a+96|0;while(1){e=F[a+40>>2];d=F[e>>2];if(F[e+4>>2]-d>>2>>>0<=j>>>0){break a}Mb(n,F[d+(j<<2)>>2],g+8|0);h=F[g+12>>2];d=h>>31;i=F[g+8>>2];e=i>>31;f=(d^h)-d+((e^i)-e)|0;l=F[g+16>>2];d=l>>31;e=(d^l)-d|0;d=0;k=e;e=e+f|0;d=k>>>0>e>>>0?1:d;b:{if(!(d|e)){F[g+8>>2]=F[a+92>>2];break b}f=F[a+92>>2];k=f>>31;i=li(ki(f,k,i,i>>31),_,e,d);F[g+8>>2]=i;d=li(ki(f,k,h,h>>31),_,e,d);F[g+12>>2]=d;e=d>>31;e=(d^e)-e|0;d=i>>31;d=e+((d^i)-d|0)|0;if((l|0)>=0){F[g+16>>2]=f-d;break b}F[g+16>>2]=d-f}d=wa(p);f=F[g+8>>2];c:{if(d){F[g+16>>2]=0-F[g+16>>2];e=0-F[g+12>>2]|0;F[g+12>>2]=e;f=0-f|0;F[g+8>>2]=f;break c}e=F[g+12>>2]}d:{if((f|0)>=0){f=F[a+92>>2];d=f+F[g+16>>2]|0;f=e+f|0;break d}e:{if((e|0)<0){d=F[g+16>>2];f=d>>31;f=(d^f)-f|0;break e}d=F[g+16>>2];f=d>>31;f=F[a+84>>2]+(f-(d^f)|0)|0}if((d|0)<0){d=e>>31;d=(d^e)-d|0;break d}d=e>>31;d=F[a+84>>2]+(d-(d^e)|0)|0}e=F[a+84>>2];f:{if(!(d|f)){d=e;f=d;break f}if(!((d|0)!=(e|0)|f)){f=d;break f}if(!((e|0)!=(f|0)|d)){d=f;break f}g:{if(f){break g}h=F[a+92>>2];if((h|0)>=(d|0)){break g}d=(h<<1)-d|0;f=0;break f}h:{if((e|0)!=(f|0)){break h}h=F[a+92>>2];if((h|0)<=(d|0)){break h}d=(h<<1)-d|0;break f}i:{if((d|0)!=(e|0)){break i}e=F[a+92>>2];if((e|0)<=(f|0)){break i}f=(e<<1)-f|0;break f}if(d){break f}d=0;e=F[a+92>>2];if((e|0)>=(f|0)){break f}f=(e<<1)-f|0}e=j<<3;h=e+b|0;i=F[h>>2];h=F[h+4>>2];F[g+36>>2]=d;F[g+32>>2]=f;F[g+24>>2]=i;F[g+28>>2]=h;Jb(g+40|0,m,g+32|0,g+24|0);d=c+e|0;F[d>>2]=F[g+40>>2];F[d+4>>2]=F[g+44>>2];j=j+1|0;if((o|0)!=(j|0)){continue}break}}Z=g+48|0;return 1}ta();v()}function Hh(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;g=Z-48|0;Z=g;d=F[a+8>>2];if(d-2>>>0<=28){F[a+76>>2]=d;e=-1<>2]=d;F[a+80>>2]=e^-1;F[a+92>>2]=(d|0)/2;J[a+88>>2]=M(2)/M(d|0)}F[a+52>>2]=f;d=F[a+40>>2];e=F[d>>2];d=F[d+4>>2];F[g+16>>2]=0;F[g+8>>2]=0;F[g+12>>2]=0;a:{d=d-e|0;if((d|0)>0){m=a+8|0;n=a+44|0;d=d>>>2|0;o=d>>>0<=1?1:d;p=a+96|0;while(1){e=F[a+40>>2];d=F[e>>2];if(F[e+4>>2]-d>>2>>>0<=j>>>0){break a}Kb(n,F[d+(j<<2)>>2],g+8|0);h=F[g+12>>2];d=h>>31;i=F[g+8>>2];e=i>>31;f=(d^h)-d+((e^i)-e)|0;l=F[g+16>>2];d=l>>31;e=(d^l)-d|0;d=0;k=e;e=e+f|0;d=k>>>0>e>>>0?1:d;b:{if(!(d|e)){F[g+8>>2]=F[a+92>>2];break b}f=F[a+92>>2];k=f>>31;i=li(ki(f,k,i,i>>31),_,e,d);F[g+8>>2]=i;d=li(ki(f,k,h,h>>31),_,e,d);F[g+12>>2]=d;e=d>>31;e=(d^e)-e|0;d=i>>31;d=e+((d^i)-d|0)|0;if((l|0)>=0){F[g+16>>2]=f-d;break b}F[g+16>>2]=d-f}d=wa(p);f=F[g+8>>2];c:{if(d){F[g+16>>2]=0-F[g+16>>2];e=0-F[g+12>>2]|0;F[g+12>>2]=e;f=0-f|0;F[g+8>>2]=f;break c}e=F[g+12>>2]}d:{if((f|0)>=0){f=F[a+92>>2];d=f+F[g+16>>2]|0;f=e+f|0;break d}e:{if((e|0)<0){d=F[g+16>>2];f=d>>31;f=(d^f)-f|0;break e}d=F[g+16>>2];f=d>>31;f=F[a+84>>2]+(f-(d^f)|0)|0}if((d|0)<0){d=e>>31;d=(d^e)-d|0;break d}d=e>>31;d=F[a+84>>2]+(d-(d^e)|0)|0}e=F[a+84>>2];f:{if(!(d|f)){d=e;f=d;break f}if(!((d|0)!=(e|0)|f)){f=d;break f}if(!((e|0)!=(f|0)|d)){d=f;break f}g:{if(f){break g}h=F[a+92>>2];if((h|0)>=(d|0)){break g}d=(h<<1)-d|0;f=0;break f}h:{if((e|0)!=(f|0)){break h}h=F[a+92>>2];if((h|0)<=(d|0)){break h}d=(h<<1)-d|0;break f}i:{if((d|0)!=(e|0)){break i}e=F[a+92>>2];if((e|0)<=(f|0)){break i}f=(e<<1)-f|0;break f}if(d){break f}d=0;e=F[a+92>>2];if((e|0)>=(f|0)){break f}f=(e<<1)-f|0}e=j<<3;h=e+b|0;i=F[h>>2];h=F[h+4>>2];F[g+36>>2]=d;F[g+32>>2]=f;F[g+24>>2]=i;F[g+28>>2]=h;Jb(g+40|0,m,g+32|0,g+24|0);d=c+e|0;F[d>>2]=F[g+40>>2];F[d+4>>2]=F[g+44>>2];j=j+1|0;if((o|0)!=(j|0)){continue}break}}Z=g+48|0;return 1}ta();v()}function Nd(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;a:{if(!H[b+38>>1]){break a}if(!Ta(1,a+12|0,b)){break a}d=F[b+8>>2];e=F[b+16>>2];g=d-e|0;f=F[a+12>>2];d=F[b+12>>2]-(F[b+20>>2]+(d>>>0>>0)|0)|0;if(g>>>0>>6>>>0&(d|0)<=0|(d|0)<0){break a}d=F[a>>2];c=F[a+4>>2]-d>>2;b:{if(c>>>0>>0){qa(a,f-c|0);f=F[a+12>>2];break b}if(c>>>0<=f>>>0){break b}F[a+4>>2]=d+(f<<2)}if(!f){return 1}d=F[b+16>>2];c=F[b+20>>2];l=F[a>>2];j=F[b+8>>2];i=F[b+12>>2];g=0;while(1){if((c|0)>=(i|0)&d>>>0>=j>>>0|(c|0)>(i|0)){return 0}m=F[b>>2];k=G[m+d|0];d=d+1|0;c=d?c:c+1|0;F[b+16>>2]=d;F[b+20>>2]=c;e=k>>>2|0;h=0;c:{d:{e:{f:{n=k&3;switch(n|0){case 3:break f;case 0:break d;default:break e}}e=e+g|0;if(e>>>0>=f>>>0){return 0}ma(l+(g<<2)|0,0,(k&252)+4|0);g=e;break c}while(1){if((d|0)==(j|0)&(c|0)==(i|0)){break a}f=G[d+m|0];d=d+1|0;c=d?c:c+1|0;F[b+16>>2]=d;F[b+20>>2]=c;e=f<<(h<<3|6)|e;h=h+1|0;if((n|0)!=(h|0)){continue}break}}F[l+(g<<2)>>2]=e}f=F[a+12>>2];g=g+1|0;if(f>>>0>g>>>0){continue}break}b=a+16|0;j=F[a>>2];d=F[a+16>>2];c=F[a+20>>2]-d|0;g:{if(c>>>0<=16383){qa(b,4096-(c>>>2|0)|0);break g}if((c|0)==16384){break g}F[a+20>>2]=d+16384}c=a+28|0;g=F[c>>2];d=F[a+32>>2]-g>>3;h:{if(d>>>0>>0){_a(c,f-d|0);g=F[c>>2];break h}if(d>>>0>f>>>0){F[a+32>>2]=(f<<3)+g}if(!f){break a}}d=F[b>>2];b=0;a=0;while(1){c=j+(b<<2)|0;h=F[c>>2];e=a;i=(b<<3)+g|0;F[i+4>>2]=a;F[i>>2]=h;c=F[c>>2];a=c+a|0;if(a>>>0>4096){break a}i:{if(a>>>0<=e>>>0){break i}h=0;i=c&7;if(i){while(1){F[d+(e<<2)>>2]=b;e=e+1|0;h=h+1|0;if((i|0)!=(h|0)){continue}break}}if(c-1>>>0<=6){break i}while(1){c=d+(e<<2)|0;F[c>>2]=b;F[c+28>>2]=b;F[c+24>>2]=b;F[c+20>>2]=b;F[c+16>>2]=b;F[c+12>>2]=b;F[c+8>>2]=b;F[c+4>>2]=b;e=e+8|0;if((e|0)!=(a|0)){continue}break}}b=b+1|0;if((f|0)!=(b|0)){continue}break}o=(a|0)==4096}return o}function qf(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;f=Z-32|0;Z=f;e=f+8|0;c=Z-80|0;Z=c;a=F[b+36>>2];F[c+72>>2]=F[b+32>>2];F[c+76>>2]=a;d=F[b+28>>2];a=c- -64|0;F[a>>2]=F[b+24>>2];F[a+4>>2]=d;a=F[b+20>>2];F[c+56>>2]=F[b+16>>2];F[c+60>>2]=a;a=F[b+12>>2];F[c+48>>2]=F[b+8>>2];F[c+52>>2]=a;a=F[b+4>>2];F[c+40>>2]=F[b>>2];F[c+44>>2]=a;jc(c+8|0,c+40|0,c+24|0);a=F[c+8>>2];a:{if(a){F[e>>2]=a;a=e+4|0;if(D[c+23|0]>=0){b=c+8|4;e=F[b+4>>2];F[a>>2]=F[b>>2];F[a+4>>2]=e;F[a+8>>2]=F[b+8>>2];break a}ra(a,F[c+12>>2],F[c+16>>2]);if(D[c+23|0]>=0){break a}ja(F[c+12>>2]);break a}if(D[c+23|0]<0){ja(F[c+12>>2])}a=G[c+31|0];if(a>>>0>=2){b=ka(32);D[b+26|0]=0;a=G[1475]|G[1476]<<8;D[b+24|0]=a;D[b+25|0]=a>>>8;a=G[1471]|G[1472]<<8|(G[1473]<<16|G[1474]<<24);d=G[1467]|G[1468]<<8|(G[1469]<<16|G[1470]<<24);D[b+16|0]=d;D[b+17|0]=d>>>8;D[b+18|0]=d>>>16;D[b+19|0]=d>>>24;D[b+20|0]=a;D[b+21|0]=a>>>8;D[b+22|0]=a>>>16;D[b+23|0]=a>>>24;a=G[1463]|G[1464]<<8|(G[1465]<<16|G[1466]<<24);d=G[1459]|G[1460]<<8|(G[1461]<<16|G[1462]<<24);D[b+8|0]=d;D[b+9|0]=d>>>8;D[b+10|0]=d>>>16;D[b+11|0]=d>>>24;D[b+12|0]=a;D[b+13|0]=a>>>8;D[b+14|0]=a>>>16;D[b+15|0]=a>>>24;a=G[1455]|G[1456]<<8|(G[1457]<<16|G[1458]<<24);d=G[1451]|G[1452]<<8|(G[1453]<<16|G[1454]<<24);D[b|0]=d;D[b+1|0]=d>>>8;D[b+2|0]=d>>>16;D[b+3|0]=d>>>24;D[b+4|0]=a;D[b+5|0]=a>>>8;D[b+6|0]=a>>>16;D[b+7|0]=a>>>24;F[c+8>>2]=-1;a=c+8|4;ra(a,b,26);d=D[c+23|0];F[e>>2]=F[c+8>>2];e=e+4|0;if((d|0)>=0){d=F[a+4>>2];F[e>>2]=F[a>>2];F[e+4>>2]=d;F[e+8>>2]=F[a+8>>2];ja(b);break a}ra(e,F[c+12>>2],F[c+16>>2]);if(D[c+23|0]<0){ja(F[c+12>>2])}ja(b);break a}F[e>>2]=0;F[e+4>>2]=0;F[e+16>>2]=a;F[e+8>>2]=0;F[e+12>>2]=0}Z=c+80|0;a=F[f+24>>2];if(D[f+23|0]<0){ja(F[f+12>>2])}Z=f+32|0;return a|0}function Ph(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;e=Z-32|0;Z=e;a:{if((c|0)!=3){break a}c=F[a+4>>2];f=F[a+12>>2];F[e+24>>2]=-1;F[e+16>>2]=-1;F[e+20>>2]=1065353216;F[e+8>>2]=-1;F[e+12>>2]=-1;if((b|0)==-2){break a}i=F[F[F[c+4>>2]+8>>2]+(f<<2)>>2];if(($[F[F[c>>2]+8>>2]](c)|0)==1){h=F[F[F[c+4>>2]+8>>2]+(f<<2)>>2];b:{if(($[F[F[c>>2]+8>>2]](c)|0)!=1|b-1>>>0>5){break b}g=$[F[F[c>>2]+36>>2]](c)|0;a=$[F[F[c>>2]+44>>2]](c,f)|0;if(!g|!a){break b}f=$[F[F[c>>2]+40>>2]](c,f)|0;c:{if(f){if((b|0)!=6){break b}b=F[c+44>>2];d=ka(112);F[d+4>>2]=h;c=F[e+12>>2];F[d+8>>2]=F[e+8>>2];F[d+12>>2]=c;c=F[e+20>>2];F[d+16>>2]=F[e+16>>2];F[d+20>>2]=c;F[d+24>>2]=F[e+24>>2];F[d+40>>2]=a;c=a+12|0;F[d+36>>2]=c;F[d+32>>2]=f;F[d+28>>2]=b;F[d+68>>2]=a;F[d- -64>>2]=c;F[d+60>>2]=f;F[d+56>>2]=b;F[d+48>>2]=0;F[d+52>>2]=0;F[d>>2]=5928;F[d+88>>2]=1065353216;F[d+92>>2]=-1;F[d+80>>2]=-1;F[d+84>>2]=-1;F[d+72>>2]=1;F[d+76>>2]=-1;F[d+44>>2]=6492;a=d+96|0;break c}if((b|0)!=6){break b}b=F[c+44>>2];d=ka(112);F[d+4>>2]=h;c=F[e+12>>2];F[d+8>>2]=F[e+8>>2];F[d+12>>2]=c;c=F[e+20>>2];F[d+16>>2]=F[e+16>>2];F[d+20>>2]=c;F[d+24>>2]=F[e+24>>2];F[d+40>>2]=a;c=a+12|0;F[d+36>>2]=c;F[d+32>>2]=g;F[d+28>>2]=b;F[d+68>>2]=a;F[d- -64>>2]=c;F[d+60>>2]=g;F[d+56>>2]=b;F[d+48>>2]=0;F[d+52>>2]=0;F[d>>2]=6932;F[d+88>>2]=1065353216;F[d+92>>2]=-1;F[d+80>>2]=-1;F[d+84>>2]=-1;F[d+72>>2]=1;F[d+76>>2]=-1;F[d+44>>2]=7352;a=d+96|0}F[a>>2]=0;F[a+4>>2]=0;D[a+5|0]=0;D[a+6|0]=0;D[a+7|0]=0;D[a+8|0]=0;D[a+9|0]=0;D[a+10|0]=0;D[a+11|0]=0;D[a+12|0]=0}if(d){break a}}d=ka(28);F[d+4>>2]=i;a=F[e+12>>2];F[d+8>>2]=F[e+8>>2];F[d+12>>2]=a;a=F[e+20>>2];F[d+16>>2]=F[e+16>>2];F[d+20>>2]=a;F[d+24>>2]=F[e+24>>2];F[d>>2]=7764}Z=e+32|0;return d|0}function $c(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;f=Z-80|0;Z=f;a:{if(!Wb(1,f+76|0,b)){break a}k=F[f+76>>2];if(!k){break a}c=F[b+8>>2];e=F[b+16>>2];c=ki(c-e|0,F[b+12>>2]-(F[b+20>>2]+(c>>>0>>0)|0)|0,5,0);e=_;if(c>>>0>>0&(e|0)<=0|(e|0)<0){break a}c=F[a+4>>2];d=F[a+8>>2]-c>>2;b:{if(d>>>0>>0){qa(a+4|0,k-d|0);break b}if(d>>>0<=k>>>0){break b}F[a+8>>2]=c+(k<<2)}p=a+16|0;l=F[a+32>>2];while(1){g=F[b+12>>2];c=g;d=F[b+20>>2];h=F[b+8>>2];e=F[b+16>>2];if((c|0)<=(d|0)&h>>>0<=e>>>0|(c|0)<(d|0)){d=0;break a}m=F[b>>2];q=G[m+e|0];c=d;i=e+1|0;c=i?c:c+1|0;F[b+16>>2]=i;F[b+20>>2]=c;if(h>>>0<=i>>>0&(c|0)>=(g|0)|(c|0)>(g|0)){d=0;break a}i=G[i+m|0];c=d;j=e+2|0;c=j>>>0<2?c+1|0:c;F[b+16>>2]=j;F[b+20>>2]=c;if(h>>>0<=j>>>0&(c|0)>=(g|0)|(c|0)>(g|0)){d=0;break a}j=G[j+m|0];c=d;n=e+3|0;c=n>>>0<3?c+1|0:c;F[b+16>>2]=n;F[b+20>>2]=c;if(h>>>0<=n>>>0&(c|0)>=(g|0)|(c|0)>(g|0)){d=0;break a}h=G[m+n|0];c=d;d=e+4|0;c=d>>>0<4?c+1|0:c;F[b+16>>2]=d;F[b+20>>2]=c;if(q>>>0>4){d=0;break a}if((i-12&255)>>>0<245){d=0;break a}if(!j){d=0;break a}c=kb(f+8|0);g=(h|0)!=0;d=i-1|0;if(d>>>0<=10){d=F[(d<<2)+10148>>2]}else{d=-1}d=L(d,j);cc(c,q,j,i,g,d,d>>31);if(Wb(1,f+4|0,b)){e=F[f+4>>2];F[f+68>>2]=e;d=bc(ka(96),c);$[F[F[l>>2]+8>>2]](l,F[l+12>>2]-F[l+8>>2]>>2,d);d=(F[l+12>>2]-F[l+8>>2]>>2)-1|0;h=d<<2;F[F[h+F[l+8>>2]>>2]+60>>2]=e;F[F[a+4>>2]+(o<<2)>>2]=d;c=F[a+16>>2];e=F[a+20>>2]-c>>2;c:{if((e|0)>(d|0)){break c}F[f>>2]=-1;d=d+1|0;if(d>>>0>e>>>0){Fa(p,d-e|0,f);c=F[p>>2];break c}if(d>>>0>=e>>>0){break c}F[a+20>>2]=(d<<2)+c}F[c+h>>2]=o;d=1;o=o+1|0;if((o|0)!=(k|0)){continue}break a}break}d=0}Z=f+80|0;return d|0}function Oc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=Z-16|0;Z=k;F[k+8>>2]=c;h=F[a+12>>2];d=F[a+8>>2];g=h-d>>2;a:{if((g|0)>(b|0)){break a}e=b+1|0;if(e>>>0>g>>>0){l=e-g|0;f=F[a+16>>2];d=F[a+12>>2];if(l>>>0<=f-d>>2>>>0){if(l){e=d;d=l<<2;d=ma(e,0,d)+d|0}F[a+12>>2]=d;break a}b:{c:{d:{m=F[a+8>>2];g=d-m>>2;i=g+l|0;if(i>>>0<1073741824){e=f-m|0;f=e>>>1|0;e=e>>>0>=2147483644?1073741823:f>>>0>i>>>0?f:i;if(e){if(e>>>0>=1073741824){break d}j=ka(e<<2)}h=(g<<2)+j|0;f=l<<2;i=ma(h,0,f);g=f+i|0;e=(e<<2)+j|0;if((d|0)==(m|0)){break c}while(1){d=d-4|0;f=F[d>>2];F[d>>2]=0;h=h-4|0;F[h>>2]=f;if((d|0)!=(m|0)){continue}break}F[a+16>>2]=e;e=F[a+12>>2];F[a+12>>2]=g;d=F[a+8>>2];F[a+8>>2]=h;if((d|0)==(e|0)){break b}while(1){e=e-4|0;f=F[e>>2];F[e>>2]=0;if(f){xa(f)}if((d|0)!=(e|0)){continue}break}break b}na();v()}oa();v()}F[a+16>>2]=e;F[a+12>>2]=g;F[a+8>>2]=i}if(d){ja(d)}break a}if(e>>>0>=g>>>0){break a}d=d+(e<<2)|0;if((d|0)!=(h|0)){while(1){h=h-4|0;c=F[h>>2];F[h>>2]=0;if(c){xa(c)}if((d|0)!=(h|0)){continue}break}c=F[k+8>>2]}F[a+12>>2]=d}e:{f:{d=F[c+56>>2];g:{if((d|0)>4){break g}j=L(d,12)+a|0;d=F[j+24>>2];if((d|0)!=F[j+28>>2]){F[d>>2]=b;F[j+24>>2]=d+4;break g}i=F[j+20>>2];g=d-i|0;f=g>>2;e=f+1|0;if(e>>>0>=1073741824){break f}d=g>>>1|0;e=g>>>0>=2147483644?1073741823:d>>>0>e>>>0?d:e;if(e){if(e>>>0>=1073741824){break e}d=ka(e<<2)}else{d=0}f=d+(f<<2)|0;F[f>>2]=b;d=pa(d,i,g);F[j+20>>2]=d;F[j+24>>2]=f+4;F[j+28>>2]=d+(e<<2);if(!i){break g}ja(i)}F[c+60>>2]=b;a=F[a+8>>2];F[k+8>>2]=0;a=a+(b<<2)|0;b=F[a>>2];F[a>>2]=c;if(b){xa(b)}a=F[k+8>>2];F[k+8>>2]=0;if(a){xa(a)}Z=k+16|0;return}na();v()}oa();v()}function Pf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=c;d=a;a:{if(F[a+12>>2]==(b|0)){break a}a=b;b=F[d+4>>2];e=F[d>>2];if((b|0)!=(e|0)){while(1){c=b-12|0;if(D[b-1|0]<0){ja(F[c>>2])}b=c;if((e|0)!=(b|0)){continue}break}}F[d+12>>2]=a;F[d+4>>2]=e;c=F[a>>2];j=a+4|0;if((c|0)==(j|0)){break a}while(1){a=F[d+4>>2];b:{if((a|0)!=F[d+8>>2]){c:{if(D[c+27|0]>=0){b=F[c+20>>2];F[a>>2]=F[c+16>>2];F[a+4>>2]=b;F[a+8>>2]=F[c+24>>2];break c}ra(a,F[c+16>>2],F[c+20>>2])}F[d+4>>2]=a+12;break b}g=0;d:{e:{f:{a=F[d+4>>2];e=F[d>>2];f=(a-e|0)/12|0;b=f+1|0;if(b>>>0<357913942){h=(F[d+8>>2]-e|0)/12|0;k=h<<1;b=h>>>0>=178956970?357913941:b>>>0>>0?k:b;if(b){if(b>>>0>=357913942){break f}g=ka(L(b,12))}h=L(b,12);b=L(f,12)+g|0;g:{if(D[c+27|0]>=0){f=F[c+20>>2];F[b>>2]=F[c+16>>2];F[b+4>>2]=f;F[b+8>>2]=F[c+24>>2];break g}ra(b,F[c+16>>2],F[c+20>>2]);e=F[d>>2];a=F[d+4>>2]}g=g+h|0;f=b+12|0;if((a|0)==(e|0)){break e}while(1){a=a-12|0;h=F[a+4>>2];b=b-12|0;F[b>>2]=F[a>>2];F[b+4>>2]=h;F[b+8>>2]=F[a+8>>2];F[a>>2]=0;F[a+4>>2]=0;F[a+8>>2]=0;if((a|0)!=(e|0)){continue}break}F[d+8>>2]=g;a=F[d+4>>2];F[d+4>>2]=f;e=F[d>>2];F[d>>2]=b;if((a|0)==(e|0)){break d}while(1){b=a-12|0;if(D[a-1|0]<0){ja(F[b>>2])}a=b;if((e|0)!=(b|0)){continue}break}break d}na();v()}oa();v()}F[d+8>>2]=g;F[d+4>>2]=f;F[d>>2]=b}if(e){ja(e)}}b=F[c+4>>2];h:{if(b){while(1){a=b;b=F[b>>2];if(b){continue}break h}}while(1){a=F[c+8>>2];b=F[a>>2]!=(c|0);c=a;if(b){continue}break}}c=a;if((j|0)!=(a|0)){continue}break}}a=0;i:{if((i|0)<0){break i}b=F[d>>2];if((F[d+4>>2]-b|0)/12>>>0<=i>>>0){break i}a=b+L(i,12)|0;a=D[a+11|0]<0?F[a>>2]:a}return a|0}function Ad(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;i=Z-16|0;Z=i;F[i>>2]=b;f=-1;a:{if((b|0)==-1){F[i+4>>2]=-1;break a}f=b+1|0;F[i+4>>2]=(f>>>0)%3|0?f:b-2|0;if((b>>>0)%3|0){f=b-1|0;break a}f=b+2|0}F[i+8>>2]=f;n=(b>>>0)/3|0;b:{c:{d:{while(1){e:{f:{j=F[(l<<2)+i>>2];if((j|0)!=-1){f=F[F[F[a+8>>2]+12>>2]+(j<<2)>>2];if((f|0)!=-1){break f}}f=0;g=F[a+216>>2];if((g|0)==F[a+220>>2]){break e}while(1){g=L(f,144)+g|0;d=F[g+136>>2];c=F[g+140>>2];g:{if(d>>>0>>0){F[d>>2]=j;F[g+136>>2]=d+4;break g}e=d;d=F[g+132>>2];k=e-d|0;e=k>>2;h=e+1|0;if(h>>>0>=1073741824){break d}m=e<<2;c=c-d|0;e=c>>>1|0;h=c>>>0>=2147483644?1073741823:h>>>0>>0?e:h;if(h){if(h>>>0>=1073741824){break c}c=ka(h<<2)}else{c=0}e=m+c|0;F[e>>2]=j;c=pa(c,d,k);F[g+132>>2]=c;F[g+136>>2]=e+4;F[g+140>>2]=c+(h<<2);if(!d){break g}ja(d)}f=f+1|0;g=F[a+216>>2];if(f>>>0<(F[a+220>>2]-g|0)/144>>>0){continue}break}break e}if((b|0)==-1|(f>>>0)/3>>>0>>0){break e}f=0;if(F[a+220>>2]==F[a+216>>2]){break e}while(1){h:{if(!wa(F[a+368>>2]+(f<<4)|0)){break h}g=F[a+216>>2]+L(f,144)|0;d=F[g+136>>2];c=F[g+140>>2];if(d>>>0>>0){F[d>>2]=j;F[g+136>>2]=d+4;break h}e=d;d=F[g+132>>2];k=e-d|0;e=k>>2;h=e+1|0;if(h>>>0>=1073741824){break b}m=e<<2;c=c-d|0;e=c>>>1|0;h=c>>>0>=2147483644?1073741823:h>>>0>>0?e:h;if(h){if(h>>>0>=1073741824){break c}c=ka(h<<2)}else{c=0}e=m+c|0;F[e>>2]=j;c=pa(c,d,k);F[g+132>>2]=c;F[g+136>>2]=e+4;F[g+140>>2]=c+(h<<2);if(!d){break h}ja(d)}f=f+1|0;if(f>>>0<(F[a+220>>2]-F[a+216>>2]|0)/144>>>0){continue}break}}l=l+1|0;if((l|0)!=3){continue}break}Z=i+16|0;return 1}na();v()}oa();v()}na();v()}function Bd(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;h=Z-16|0;Z=h;m=-1;a:{b:{c:{if(!Da(1,h+12|0,b)){break c}j=F[h+12>>2];if(j){c=F[a+8>>2];if((F[c+4>>2]-F[c>>2]>>2>>>0)/3>>>0>>0){break c}while(1){if(!Da(1,h+8|0,b)){break c}c=F[h+8>>2];if(!Da(1,h+8|0,b)){break c}g=c+g|0;c=F[h+8>>2];if(g>>>0>>0){break c}e=g-c|0;c=F[a+40>>2];d:{if((c|0)!=F[a+44>>2]){F[c+4>>2]=g;F[c>>2]=e;F[a+40>>2]=c+12;j=F[h+12>>2];break d}d=c;c=F[a+36>>2];l=d-c|0;d=(l|0)/12|0;f=d+1|0;if(f>>>0>=357913942){break b}i=d<<1;f=d>>>0>=178956970?357913941:f>>>0>>0?i:f;if(f){if(f>>>0>=357913942){break a}i=ka(L(f,12))}else{i=0}d=i+L(d,12)|0;F[d+4>>2]=g;F[d>>2]=e;e=pa(d+L((l|0)/-12|0,12)|0,c,l);F[a+44>>2]=i+L(f,12);F[a+40>>2]=d+12;F[a+36>>2]=e;if(!c){break d}ja(c)}k=k+1|0;if(k>>>0>>0){continue}break}g=0;hc(b,0,0);if(j){while(1){c=G[b+36|0];d=H[F[a+4>>2]+36>>1];e:{f:{if(((d<<8|d>>>8)&65535)>>>0<=513){if(!c){break e}e=0;d=F[b+32>>2];k=d>>>3|0;f=F[b+24>>2];c=k+f|0;i=F[b+28>>2];g:{if(c>>>0>=i>>>0){c=d;break g}e=G[c|0];c=d+1|0;F[b+32>>2]=c;k=c>>>3|0;e=e>>>(d&7)&1}if(i>>>0>f+k>>>0){break f}break e}if(!c){break e}e=0;c=F[b+32>>2];d=F[b+24>>2]+(c>>>3|0)|0;if(d>>>0>=I[b+28>>2]){break e}e=G[d|0]>>>(c&7)&1}F[b+32>>2]=c+1}c=F[a+36>>2]+L(g,12)|0;D[c+8|0]=G[c+8|0]&254|e&1;g=g+1|0;if((j|0)!=(g|0)){continue}break}}D[b+36|0]=0;d=F[b+20>>2];a=0;e=F[b+32>>2]+7|0;a=e>>>0<7?1:a;e=a<<29|e>>>3;c=e+F[b+16>>2]|0;a=(a>>>3|0)+d|0;F[b+16>>2]=c;F[b+20>>2]=c>>>0>>0?a+1|0:a}m=F[b+16>>2]}Z=h+16|0;return m}na();v()}oa();v()}function xf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=Z-16|0;Z=m;l=F[b+80>>2];e=G[c+24|0];a=L(l,e);a:{b:{c:{d:{b=F[c+28>>2];if(!(!G[c+84|0]|(b|0)!=1&(b|0)!=2)){b=F[c+48>>2];c=F[F[c>>2]>>2];F[m+8>>2]=0;F[m>>2]=0;F[m+4>>2]=0;if(a){if((a|0)<0){break d}f=ka(a);h=la(f,b+c|0,a)+a|0}a=F[d>>2];if(a){F[d+4>>2]=a;ja(a)}F[d+8>>2]=h;F[d+4>>2]=h;F[d>>2]=f;b=1;break a}if(e){f=ka(e);ma(f,0,e)}e:{i=F[d+4>>2];b=F[d>>2];g=i-b|0;f:{if(g>>>0>>0){k=a-g|0;j=F[d+8>>2];if(k>>>0<=j-i>>>0){n=d,o=ma(i,0,k)+k|0,F[n+4>>2]=o;break f}if((a|0)<0){break e}i=j-b|0;j=i<<1;i=i>>>0>=1073741823?2147483647:a>>>0>>0?j:a;j=ka(i);ma(j+g|0,0,k);g=pa(j,b,g);F[d+8>>2]=g+i;F[d+4>>2]=a+g;F[d>>2]=g;if(!b){break f}ja(b);break f}if(a>>>0>=g>>>0){break f}F[d+4>>2]=a+b}if(!l){b=1;break c}if(!e){b=0;a=0;while(1){if(!Cb(c,G[c+84|0]?a:F[F[c+68>>2]+(a<<2)>>2],D[c+24|0],f)){break c}a=a+1|0;b=l>>>0<=a>>>0;if((a|0)!=(l|0)){continue}break}break c}i=e&252;g=e&3;b=0;j=e>>>0<4;e=0;while(1){if(!Cb(c,G[c+84|0]?e:F[F[c+68>>2]+(e<<2)>>2],D[c+24|0],f)){break c}b=0;a=0;k=0;if(!j){while(1){D[F[d>>2]+h|0]=G[a+f|0];D[(F[d>>2]+h|0)+1|0]=G[(a|1)+f|0];D[(F[d>>2]+h|0)+2|0]=G[(a|2)+f|0];D[(F[d>>2]+h|0)+3|0]=G[(a|3)+f|0];a=a+4|0;h=h+4|0;k=k+4|0;if((i|0)!=(k|0)){continue}break}}if(g){while(1){D[F[d>>2]+h|0]=G[a+f|0];a=a+1|0;h=h+1|0;b=b+1|0;if((g|0)!=(b|0)){continue}break}}e=e+1|0;b=l>>>0<=e>>>0;if((e|0)!=(l|0)){continue}break}break b}na();v()}na();v()}if(!f){break a}}ja(f)}Z=m+16|0;return b&1}function wf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;m=Z-16|0;Z=m;l=F[b+80>>2];e=G[c+24|0];a=L(l,e);a:{b:{c:{d:{b=F[c+28>>2];if(!(!G[c+84|0]|(b|0)!=1&(b|0)!=2)){b=F[c+48>>2];c=F[F[c>>2]>>2];F[m+8>>2]=0;F[m>>2]=0;F[m+4>>2]=0;if(a){if((a|0)<0){break d}f=ka(a);h=la(f,b+c|0,a)+a|0}a=F[d>>2];if(a){F[d+4>>2]=a;ja(a)}F[d+8>>2]=h;F[d+4>>2]=h;F[d>>2]=f;b=1;break a}if(e){f=ka(e);ma(f,0,e)}e:{i=F[d+4>>2];b=F[d>>2];g=i-b|0;f:{if(g>>>0>>0){k=a-g|0;j=F[d+8>>2];if(k>>>0<=j-i>>>0){n=d,o=ma(i,0,k)+k|0,F[n+4>>2]=o;break f}if((a|0)<0){break e}i=j-b|0;j=i<<1;i=i>>>0>=1073741823?2147483647:a>>>0>>0?j:a;j=ka(i);ma(j+g|0,0,k);g=pa(j,b,g);F[d+8>>2]=g+i;F[d+4>>2]=a+g;F[d>>2]=g;if(!b){break f}ja(b);break f}if(a>>>0>=g>>>0){break f}F[d+4>>2]=a+b}if(!l){b=1;break c}if(!e){b=0;a=0;while(1){if(!Bb(c,G[c+84|0]?a:F[F[c+68>>2]+(a<<2)>>2],D[c+24|0],f)){break c}a=a+1|0;b=l>>>0<=a>>>0;if((a|0)!=(l|0)){continue}break}break c}i=e&252;g=e&3;b=0;j=e>>>0<4;e=0;while(1){if(!Bb(c,G[c+84|0]?e:F[F[c+68>>2]+(e<<2)>>2],D[c+24|0],f)){break c}b=0;a=0;k=0;if(!j){while(1){D[F[d>>2]+h|0]=G[a+f|0];D[(F[d>>2]+h|0)+1|0]=G[(a|1)+f|0];D[(F[d>>2]+h|0)+2|0]=G[(a|2)+f|0];D[(F[d>>2]+h|0)+3|0]=G[(a|3)+f|0];a=a+4|0;h=h+4|0;k=k+4|0;if((i|0)!=(k|0)){continue}break}}if(g){while(1){D[F[d>>2]+h|0]=G[a+f|0];a=a+1|0;h=h+1|0;b=b+1|0;if((g|0)!=(b|0)){continue}break}}e=e+1|0;b=l>>>0<=e>>>0;if((e|0)!=(l|0)){continue}break}break b}na();v()}na();v()}if(!f){break a}}ja(f)}Z=m+16|0;return b&1}function Jb(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;k=F[b+16>>2];h=F[c+4>>2]-k|0;e=F[c>>2]-k|0;F[c>>2]=e;f=h;F[c+4>>2]=f;l=F[b+16>>2];f=f>>31;g=(h^f)-f|0;f=e>>31;m=l>>>0>=g+((f^e)-f|0)>>>0;a:{if(m){f=h;break a}b:{c:{if((e|0)>=0){g=1;j=1;if((h|0)>=0){break b}i=1;g=-1;j=-1;if(e){break c}break b}i=-1;g=-1;j=-1;if((h|0)<=0){break b}}g=(h|0)<=0?-1:1;j=i}n=L(j,l);f=(e<<1)-n|0;i=(L(g,j)|0)>=0;e=L(g,l);f=((i?0-f|0:f)+e|0)/2|0;F[c+4>>2]=f;e=(h<<1)-e|0;e=((i?0-e|0:e)+n|0)/2|0;F[c>>2]=e}d:{e:{f:{g:{h:{i:{j:{if(e){if((e|0)<0){break j}if((f|0)>=0){break i}break f}if(f){break h}j=1;g=0;f=0;i=0;break d}j=1;if((f|0)>0){break g}i=(f|0)>0?3:0;g=f;f=e;break d}g=0-f|0;f=0-e|0;i=2;break e}if((f|0)<=0){break f}}f=0-f|0;g=e;i=3;break e}g=0-e|0;i=1}F[c>>2]=f;F[c+4>>2]=g;j=0}e=F[d>>2]+f|0;h=F[b+16>>2];k:{if((e|0)>(h|0)){e=e-F[b+4>>2]|0;break k}if((0-h|0)<=(e|0)){break k}e=F[b+4>>2]+e|0}c=F[d+4>>2]+g|0;l:{if((h|0)<(c|0)){c=c-F[b+4>>2]|0;break l}if((0-h|0)<=(c|0)){break l}c=F[b+4>>2]+c|0}m:{if(j){b=c;break m}b=c;n:{o:{p:{d=4-i|0;switch((d>>>0<4?d:0-i|0)-1|0){case 2:break n;case 1:break o;case 0:break p;default:break m}}b=0-e|0;e=c;break m}b=0-c|0;e=0-e|0;break m}b=e;e=0-c|0}q:{if(m){c=b;break q}r:{s:{if((e|0)>=0){c=1;f=1;if((b|0)>=0){break r}d=1;c=-1;f=-1;if(e){break s}break r}d=-1;c=-1;f=-1;if((b|0)<=0){break r}}c=(b|0)<=0?-1:1;f=d}d=e<<1;e=L(f,h);d=d-e|0;f=(L(c,f)|0)>=0;g=f?0-d|0:d;d=L(c,h);c=(g+d|0)/2|0;b=(b<<1)-d|0;e=(e+(f?0-b|0:b)|0)/2|0}b=a;F[b>>2]=e+k;F[b+4>>2]=c+k}function Uh(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0;F[a+8>>2]=e;m=a+32|0;h=F[m>>2];g=F[a+36>>2]-h>>2;a:{if(g>>>0>>0){qa(m,e-g|0);f=F[a+8>>2];break a}f=e;if(f>>>0>=g>>>0){break a}F[a+36>>2]=h+(e<<2);f=e}g=e>>>0>1073741823?-1:e<<2;n=ma(ka(g),0,g);b:{if((f|0)<=0){break b}h=F[a+32>>2];while(1){f=i<<2;g=F[f+n>>2];j=F[a+16>>2];c:{if((g|0)>(j|0)){F[f+h>>2]=j;break c}f=f+h|0;j=F[a+12>>2];if((j|0)>(g|0)){F[f>>2]=j;break c}F[f>>2]=g}f=F[a+8>>2];i=i+1|0;if((f|0)>(i|0)){continue}break}if((f|0)<=0){break b}i=0;while(1){g=i<<2;f=g+c|0;g=F[b+g>>2]+F[g+h>>2]|0;F[f>>2]=g;d:{if((g|0)>F[a+16>>2]){g=g-F[a+20>>2]|0}else{if((g|0)>=F[a+12>>2]){break d}g=g+F[a+20>>2]|0}F[f>>2]=g}f=F[a+8>>2];i=i+1|0;if((f|0)>(i|0)){continue}break}}if(!((d|0)<=(e|0)|(f|0)<=0)){p=0-e<<2;g=e;while(1){e:{if((f|0)<=0){break e}l=g<<2;o=l+c|0;q=o+p|0;j=F[m>>2];i=0;while(1){f=i<<2;h=F[f+q>>2];k=F[a+16>>2];f:{if((h|0)>(k|0)){F[f+j>>2]=k;break f}f=f+j|0;k=F[a+12>>2];if((k|0)>(h|0)){F[f>>2]=k;break f}F[f>>2]=h}f=F[a+8>>2];i=i+1|0;if((f|0)>(i|0)){continue}break}i=0;if((f|0)<=0){break e}l=b+l|0;while(1){h=i<<2;f=h+o|0;h=F[h+l>>2]+F[h+j>>2]|0;F[f>>2]=h;g:{if((h|0)>F[a+16>>2]){h=h-F[a+20>>2]|0}else{if((h|0)>=F[a+12>>2]){break g}h=h+F[a+20>>2]|0}F[f>>2]=h}f=F[a+8>>2];i=i+1|0;if((f|0)>(i|0)){continue}break}}g=e+g|0;if((g|0)<(d|0)){continue}break}}ja(n);return 1}function yf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;j=F[b+80>>2];b=G[c+24|0];g=L(j,b);a:{if(!b){break a}h=b<<2;f=ka(h);a=f;k=b&7;if(k){while(1){F[a>>2]=-1073741824;a=a+4|0;e=e+1|0;if((k|0)!=(e|0)){continue}break}}if((b-1&1073741823)>>>0<7){break a}e=f+h|0;while(1){F[a+24>>2]=-1073741824;F[a+28>>2]=-1073741824;F[a+16>>2]=-1073741824;F[a+20>>2]=-1073741824;F[a+8>>2]=-1073741824;F[a+12>>2]=-1073741824;F[a>>2]=-1073741824;F[a+4>>2]=-1073741824;a=a+32|0;if((e|0)!=(a|0)){continue}break}}e=F[d>>2];a=F[d+4>>2]-e>>2;b:{if(a>>>0>>0){qa(d,g-a|0);break b}if(a>>>0<=g>>>0){break b}F[d+4>>2]=e+(g<<2)}c:{d:{e:{if(!j){i=1;break e}if(!b){a=0;while(1){if(!lb(c,G[c+84|0]?a:F[F[c+68>>2]+(a<<2)>>2],D[c+24|0],f)){break e}a=a+1|0;i=j>>>0<=a>>>0;if((a|0)!=(j|0)){continue}break}break e}n=b&252;k=b&3;o=b>>>0<4;e=0;b=0;while(1){if(!lb(c,G[c+84|0]?b:F[F[c+68>>2]+(b<<2)>>2],D[c+24|0],f)){break e}m=F[d>>2];i=0;a=0;l=0;if(!o){while(1){g=(e<<2)+m|0;h=a<<2;J[g>>2]=J[h+f>>2];J[g+4>>2]=J[(h|4)+f>>2];J[g+8>>2]=J[(h|8)+f>>2];J[g+12>>2]=J[(h|12)+f>>2];a=a+4|0;e=e+4|0;l=l+4|0;if((n|0)!=(l|0)){continue}break}}if(k){while(1){J[(e<<2)+m>>2]=J[(a<<2)+f>>2];a=a+1|0;e=e+1|0;i=i+1|0;if((k|0)!=(i|0)){continue}break}}b=b+1|0;i=j>>>0<=b>>>0;if((b|0)!=(j|0)){continue}break}break d}if(!f){break c}}ja(f)}return i|0}function $d(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;k=Z-16|0;Z=k;c=F[b+20>>2];d=F[b+16>>2];e=d+4|0;c=e>>>0<4?c+1|0:c;g=F[b+12>>2];a:{if(I[b+8>>2]>>0&(g|0)<=(c|0)|(c|0)>(g|0)){break a}d=d+F[b>>2]|0;h=G[d|0]|G[d+1|0]<<8|(G[d+2|0]<<16|G[d+3|0]<<24);F[b+16>>2]=e;F[b+20>>2]=c;if((h|0)<0){break a}Na(a+76|0,h);c=k;F[c>>2]=0;F[c+4>>2]=0;D[c+5|0]=0;D[c+6|0]=0;D[c+7|0]=0;D[c+8|0]=0;D[c+9|0]=0;D[c+10|0]=0;D[c+11|0]=0;D[c+12|0]=0;b:{if(!Aa(c,b)){break b}if(h){g=1;while(1){d=1<>2]+(i>>>3&536870908)|0;e=e^g;if(e&1){d=F[f>>2]&(d^-1)}else{d=d|F[f>>2]}g=e^1;F[f>>2]=d;i=i+1|0;if((h|0)!=(i|0)){continue}break}}i=0;c=F[b+8>>2];e=F[b+12>>2];f=e;e=F[b+20>>2];g=e;l=F[b+16>>2];d=l+4|0;e=d>>>0<4?e+1|0:e;h=d;if(d>>>0>c>>>0&(e|0)>=(f|0)|(e|0)>(f|0)){break b}m=F[b>>2];d=m+l|0;j=G[d|0]|G[d+1|0]<<8|(G[d+2|0]<<16|G[d+3|0]<<24);F[b+16>>2]=h;F[b+20>>2]=e;d=c;c=g;e=l+8|0;c=e>>>0<8?c+1|0:c;if(d>>>0>>0&(c|0)>=(f|0)|(c|0)>(f|0)){break b}d=h+m|0;d=G[d|0]|G[d+1|0]<<8|(G[d+2|0]<<16|G[d+3|0]<<24);F[b+16>>2]=e;F[b+20>>2]=c;if((d|0)<(j|0)){break b}F[a+16>>2]=d;F[a+12>>2]=j;c=(d>>31)-((j>>31)+(d>>>0>>0)|0)|0;b=d-j|0;if(!c&b>>>0>2147483646|c){break b}i=1;c=b+1|0;F[a+20>>2]=c;b=c>>>1|0;F[a+24>>2]=b;F[a+28>>2]=0-b;if(c&1){break b}F[a+24>>2]=b-1}}Z=k+16|0;return i|0}function tf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;a=0;k=Z-16|0;Z=k;j=F[b+80>>2];e=G[c+24|0];b=L(j,e);a:{b:{c:{d:{f=F[c+28>>2];if(!(!G[c+84|0]|(f|0)!=5&(f|0)!=6)){e=F[c+48>>2];c=F[F[c>>2]>>2];F[k+8>>2]=0;F[k>>2]=0;F[k+4>>2]=0;if(b){if((b|0)<0){break d}b=b<<2;a=ka(b);g=la(a,c+e|0,b)+b|0}b=F[d>>2];if(b){F[d+4>>2]=b;ja(b)}F[d+8>>2]=g;F[d+4>>2]=g;F[d>>2]=a;h=1;break a}if(e){f=e<<2;a=ka(f);ma(a,0,f)}i=F[d>>2];f=F[d+4>>2]-i>>2;e:{if(f>>>0>>0){qa(d,b-f|0);break e}if(b>>>0>=f>>>0){break e}F[d+4>>2]=i+(b<<2)}if(!j){h=1;break c}if(!e){b=0;while(1){if(!xb(c,G[c+84|0]?b:F[F[c+68>>2]+(b<<2)>>2],D[c+24|0],a)){break c}b=b+1|0;h=j>>>0<=b>>>0;if((b|0)!=(j|0)){continue}break}break c}o=e&252;m=e&3;p=e>>>0<4;e=0;while(1){if(!xb(c,G[c+84|0]?e:F[F[c+68>>2]+(e<<2)>>2],D[c+24|0],a)){break c}n=F[d>>2];l=0;b=0;h=0;if(!p){while(1){f=(g<<2)+n|0;i=b<<2;F[f>>2]=F[i+a>>2];F[f+4>>2]=F[(i|4)+a>>2];F[f+8>>2]=F[(i|8)+a>>2];F[f+12>>2]=F[(i|12)+a>>2];b=b+4|0;g=g+4|0;h=h+4|0;if((o|0)!=(h|0)){continue}break}}if(m){while(1){F[(g<<2)+n>>2]=F[(b<<2)+a>>2];b=b+1|0;g=g+1|0;l=l+1|0;if((l|0)!=(m|0)){continue}break}}e=e+1|0;h=j>>>0<=e>>>0;if((e|0)!=(j|0)){continue}break}break b}na();v()}if(!a){break a}}ja(a)}Z=k+16|0;return h|0}function cd(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;a=0;k=Z-16|0;Z=k;j=F[b+80>>2];e=G[c+24|0];b=L(j,e);a:{b:{c:{d:{f=F[c+28>>2];if(!(!G[c+84|0]|(f|0)!=5&(f|0)!=6)){e=F[c+48>>2];c=F[F[c>>2]>>2];F[k+8>>2]=0;F[k>>2]=0;F[k+4>>2]=0;if(b){if((b|0)<0){break d}b=b<<2;a=ka(b);g=la(a,c+e|0,b)+b|0}b=F[d>>2];if(b){F[d+4>>2]=b;ja(b)}F[d+8>>2]=g;F[d+4>>2]=g;F[d>>2]=a;h=1;break a}if(e){f=e<<2;a=ka(f);ma(a,0,f)}i=F[d>>2];f=F[d+4>>2]-i>>2;e:{if(f>>>0>>0){qa(d,b-f|0);break e}if(b>>>0>=f>>>0){break e}F[d+4>>2]=i+(b<<2)}if(!j){h=1;break c}if(!e){b=0;while(1){if(!yb(c,G[c+84|0]?b:F[F[c+68>>2]+(b<<2)>>2],D[c+24|0],a)){break c}b=b+1|0;h=j>>>0<=b>>>0;if((b|0)!=(j|0)){continue}break}break c}o=e&252;m=e&3;p=e>>>0<4;e=0;while(1){if(!yb(c,G[c+84|0]?e:F[F[c+68>>2]+(e<<2)>>2],D[c+24|0],a)){break c}n=F[d>>2];l=0;b=0;h=0;if(!p){while(1){f=(g<<2)+n|0;i=b<<2;F[f>>2]=F[i+a>>2];F[f+4>>2]=F[(i|4)+a>>2];F[f+8>>2]=F[(i|8)+a>>2];F[f+12>>2]=F[(i|12)+a>>2];b=b+4|0;g=g+4|0;h=h+4|0;if((o|0)!=(h|0)){continue}break}}if(m){while(1){F[(g<<2)+n>>2]=F[(b<<2)+a>>2];b=b+1|0;g=g+1|0;l=l+1|0;if((l|0)!=(m|0)){continue}break}}e=e+1|0;h=j>>>0<=e>>>0;if((e|0)!=(j|0)){continue}break}break b}na();v()}if(!a){break a}}ja(a)}Z=k+16|0;return h|0}function vf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;a=0;k=Z-16|0;Z=k;j=F[b+80>>2];e=G[c+24|0];b=L(j,e);a:{b:{c:{d:{f=F[c+28>>2];if(!(!G[c+84|0]|(f|0)!=3&(f|0)!=4)){e=F[c+48>>2];c=F[F[c>>2]>>2];F[k+8>>2]=0;F[k>>2]=0;F[k+4>>2]=0;if(b){if((b|0)<0){break d}b=b<<1;a=ka(b);g=la(a,c+e|0,b)+b|0}b=F[d>>2];if(b){F[d+4>>2]=b;ja(b)}F[d+8>>2]=g;F[d+4>>2]=g;F[d>>2]=a;h=1;break a}if(e){f=e<<1;a=ka(f);ma(a,0,f)}i=F[d>>2];f=F[d+4>>2]-i>>1;e:{if(f>>>0>>0){kd(d,b-f|0);break e}if(b>>>0>=f>>>0){break e}F[d+4>>2]=i+(b<<1)}if(!j){h=1;break c}if(!e){b=0;while(1){if(!Ab(c,G[c+84|0]?b:F[F[c+68>>2]+(b<<2)>>2],D[c+24|0],a)){break c}b=b+1|0;h=j>>>0<=b>>>0;if((b|0)!=(j|0)){continue}break}break c}o=e&252;m=e&3;p=e>>>0<4;e=0;while(1){if(!Ab(c,G[c+84|0]?e:F[F[c+68>>2]+(e<<2)>>2],D[c+24|0],a)){break c}n=F[d>>2];l=0;b=0;h=0;if(!p){while(1){f=(g<<1)+n|0;i=b<<1;E[f>>1]=H[i+a>>1];E[f+2>>1]=H[(i|2)+a>>1];E[f+4>>1]=H[(i|4)+a>>1];E[f+6>>1]=H[(i|6)+a>>1];b=b+4|0;g=g+4|0;h=h+4|0;if((o|0)!=(h|0)){continue}break}}if(m){while(1){E[(g<<1)+n>>1]=H[(b<<1)+a>>1];b=b+1|0;g=g+1|0;l=l+1|0;if((l|0)!=(m|0)){continue}break}}e=e+1|0;h=j>>>0<=e>>>0;if((e|0)!=(j|0)){continue}break}break b}na();v()}if(!a){break a}}ja(a)}Z=k+16|0;return h|0}function uf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0,p=0;a=0;k=Z-16|0;Z=k;j=F[b+80>>2];e=G[c+24|0];b=L(j,e);a:{b:{c:{d:{f=F[c+28>>2];if(!(!G[c+84|0]|(f|0)!=3&(f|0)!=4)){e=F[c+48>>2];c=F[F[c>>2]>>2];F[k+8>>2]=0;F[k>>2]=0;F[k+4>>2]=0;if(b){if((b|0)<0){break d}b=b<<1;a=ka(b);g=la(a,c+e|0,b)+b|0}b=F[d>>2];if(b){F[d+4>>2]=b;ja(b)}F[d+8>>2]=g;F[d+4>>2]=g;F[d>>2]=a;h=1;break a}if(e){f=e<<1;a=ka(f);ma(a,0,f)}i=F[d>>2];f=F[d+4>>2]-i>>1;e:{if(f>>>0>>0){kd(d,b-f|0);break e}if(b>>>0>=f>>>0){break e}F[d+4>>2]=i+(b<<1)}if(!j){h=1;break c}if(!e){b=0;while(1){if(!zb(c,G[c+84|0]?b:F[F[c+68>>2]+(b<<2)>>2],D[c+24|0],a)){break c}b=b+1|0;h=j>>>0<=b>>>0;if((b|0)!=(j|0)){continue}break}break c}o=e&252;m=e&3;p=e>>>0<4;e=0;while(1){if(!zb(c,G[c+84|0]?e:F[F[c+68>>2]+(e<<2)>>2],D[c+24|0],a)){break c}n=F[d>>2];l=0;b=0;h=0;if(!p){while(1){f=(g<<1)+n|0;i=b<<1;E[f>>1]=H[i+a>>1];E[f+2>>1]=H[(i|2)+a>>1];E[f+4>>1]=H[(i|4)+a>>1];E[f+6>>1]=H[(i|6)+a>>1];b=b+4|0;g=g+4|0;h=h+4|0;if((o|0)!=(h|0)){continue}break}}if(m){while(1){E[(g<<1)+n>>1]=H[(b<<1)+a>>1];b=b+1|0;g=g+1|0;l=l+1|0;if((l|0)!=(m|0)){continue}break}}e=e+1|0;h=j>>>0<=e>>>0;if((e|0)!=(j|0)){continue}break}break b}na();v()}if(!a){break a}}ja(a)}Z=k+16|0;return h|0}function kc(a,b){var c=0,d=0,e=0,f=0,g=0;f=-1;d=-1;a:{if((b|0)==-1){break a}d=b+1|0;f=(d>>>0)%3|0?d:b-2|0;d=b-1|0;if((b>>>0)%3|0){break a}d=b+2|0}b:{c:{d:{switch(F[a+168>>2]){case 0:case 1:e=F[a+148>>2];c=1;b=F[a+156>>2];g=b+(((f|0)==-1?-1:F[F[e>>2]+(f<<2)>>2])<<2)|0;F[g>>2]=F[g>>2]+1;b=(((d|0)==-1?-1:F[F[e>>2]+(d<<2)>>2])<<2)+b|0;break c;case 5:e=F[a+148>>2];c=-1;c=((b|0)!=-1?F[F[e>>2]+(b<<2)>>2]:c)<<2;b=F[a+156>>2];c=c+b|0;F[c>>2]=F[c>>2]+1;c=(((f|0)==-1?-1:F[F[e>>2]+(f<<2)>>2])<<2)+b|0;F[c>>2]=F[c>>2]+1;c=2;b=(((d|0)==-1?-1:F[F[e>>2]+(d<<2)>>2])<<2)+b|0;break c;case 3:e=F[a+148>>2];c=-1;c=((b|0)!=-1?F[F[e>>2]+(b<<2)>>2]:c)<<2;b=F[a+156>>2];c=c+b|0;F[c>>2]=F[c>>2]+1;c=(((f|0)==-1?-1:F[F[e>>2]+(f<<2)>>2])<<2)+b|0;F[c>>2]=F[c>>2]+2;c=1;b=(((d|0)==-1?-1:F[F[e>>2]+(d<<2)>>2])<<2)+b|0;break c;case 7:break d;default:break b}}e=F[a+148>>2];c=-1;c=((b|0)!=-1?F[F[e>>2]+(b<<2)>>2]:c)<<2;b=F[a+156>>2];c=c+b|0;F[c>>2]=F[c>>2]+2;c=(((f|0)==-1?-1:F[F[e>>2]+(f<<2)>>2])<<2)+b|0;F[c>>2]=F[c>>2]+2;c=2;b=(((d|0)==-1?-1:F[F[e>>2]+(d<<2)>>2])<<2)+b|0}F[b>>2]=F[b>>2]+c}c=a;b=F[F[a+156>>2]+(((f|0)==-1?-1:F[F[F[a+148>>2]>>2]+(f<<2)>>2])<<2)>>2];d=F[a+180>>2];a=F[a+176>>2];F[c+172>>2]=(a|0)<=(b|0)?((b|0)<(d|0)?b:d)-a|0:0}function Dg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;a:{b=F[a+32>>2];f=F[b+8>>2];h=F[b+12>>2];g=F[b+20>>2];c=F[b+16>>2];e=0;b:{if((h|0)<=(g|0)&c>>>0>=f>>>0|(g|0)>(h|0)){break b}f=G[F[b>>2]+c|0];e=b;b=g;c=c+1|0;b=c?b:b+1|0;F[e+16>>2]=c;F[e+20>>2]=b;c:{if(!f){break c}while(1){if($[F[F[a>>2]+16>>2]](a,d)|0){d=d+1|0;if((f|0)!=(d|0)){continue}break c}break}return 0}d=F[a+8>>2];b=F[a+12>>2];if((d|0)!=(b|0)){while(1){c=F[d>>2];if(!($[F[F[c>>2]+8>>2]](c,a,F[a+4>>2])|0)){break a}d=d+4|0;if((b|0)!=(d|0)){continue}break}}d:{if(!f){break d}d=0;while(1){b=F[F[a+8>>2]+(d<<2)>>2];if(!($[F[F[b>>2]+12>>2]](b,F[a+32>>2])|0)){break a}d=d+1|0;if((f|0)!=(d|0)){continue}break}if(!f){break d}i=a+20|0;b=0;while(1){d=0;j=b<<2;c=F[j+F[a+8>>2]>>2];k=$[F[F[c>>2]+24>>2]](c)|0;if((k|0)>0){while(1){c=F[F[a+8>>2]+j>>2];c=$[F[F[c>>2]+20>>2]](c,d)|0;e=F[a+20>>2];g=F[a+24>>2]-e>>2;e:{if(c>>>0>>0){break e}h=c+1|0;if(h>>>0>g>>>0){qa(i,h-g|0);e=F[i>>2];break e}if(g>>>0<=h>>>0){break e}F[a+24>>2]=(h<<2)+e}F[(c<<2)+e>>2]=b;d=d+1|0;if((k|0)!=(d|0)){continue}break}}b=b+1|0;if((f|0)!=(b|0)){continue}break}}e=0;if(!($[F[F[a>>2]+28>>2]](a)|0)){break b}e=$[F[F[a>>2]+32>>2]](a)|0}return e|0}return 0}function Ye(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;Oc(a,b,c);c=F[a+84>>2];d=F[a+88>>2]-c>>2;a:{if((d|0)>(b|0)){break a}b=b+1|0;if(b>>>0>d>>>0){b:{d=b-d|0;e=F[a+92>>2];c=F[a+88>>2];if(d>>>0<=e-c>>2>>>0){c:{if(!d){break c}b=c;e=d&7;if(e){while(1){F[b>>2]=1;b=b+4|0;f=f+1|0;if((e|0)!=(f|0)){continue}break}}c=(d<<2)+c|0;if((d-1&1073741823)>>>0<7){break c}while(1){F[b+24>>2]=1;F[b+28>>2]=1;F[b+16>>2]=1;F[b+20>>2]=1;F[b+8>>2]=1;F[b+12>>2]=1;F[b>>2]=1;F[b+4>>2]=1;b=b+32|0;if((c|0)!=(b|0)){continue}break}}F[a+88>>2]=c;break b}d:{b=c;c=F[a+84>>2];i=b-c|0;g=i>>2;b=g+d|0;if(b>>>0<1073741824){e=e-c|0;h=e>>>1|0;e=e>>>0>=2147483644?1073741823:b>>>0>>0?h:b;if(e){if(e>>>0>=1073741824){break d}j=ka(e<<2)}g=(g<<2)+j|0;b=g;h=d&7;if(h){while(1){F[b>>2]=1;b=b+4|0;f=f+1|0;if((h|0)!=(f|0)){continue}break}}f=g+(d<<2)|0;if((d-1&1073741823)>>>0>=7){while(1){F[b+24>>2]=1;F[b+28>>2]=1;F[b+16>>2]=1;F[b+20>>2]=1;F[b+8>>2]=1;F[b+12>>2]=1;F[b>>2]=1;F[b+4>>2]=1;b=b+32|0;if((f|0)!=(b|0)){continue}break}}b=pa(j,c,i);F[a+88>>2]=f;F[a+84>>2]=b;F[a+92>>2]=b+(e<<2);if(c){ja(c)}break b}na();v()}oa();v()}return}if(b>>>0>=d>>>0){break a}F[a+88>>2]=c+(b<<2)}}function ab(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=F[a+8>>2];e=F[a+4>>2];if(d-e>>2>>>0>=b>>>0){a:{if(!b){break a}d=e;g=b&7;if(g){while(1){F[d>>2]=F[c>>2];d=d+4|0;f=f+1|0;if((g|0)!=(f|0)){continue}break}}e=(b<<2)+e|0;if((b-1&1073741823)>>>0<7){break a}while(1){F[d>>2]=F[c>>2];F[d+4>>2]=F[c>>2];F[d+8>>2]=F[c>>2];F[d+12>>2]=F[c>>2];F[d+16>>2]=F[c>>2];F[d+20>>2]=F[c>>2];F[d+24>>2]=F[c>>2];F[d+28>>2]=F[c>>2];d=d+32|0;if((e|0)!=(d|0)){continue}break}}F[a+4>>2]=e;return}b:{i=F[a>>2];f=e-i>>2;h=f+b|0;if(h>>>0<1073741824){j=d-i|0;d=j>>>1|0;h=j>>>0>=2147483644?1073741823:d>>>0>h>>>0?d:h;if(h){if(h>>>0>=1073741824){break b}k=ka(h<<2)}f=(f<<2)+k|0;d=f;j=b&7;if(j){while(1){F[d>>2]=F[c>>2];d=d+4|0;g=g+1|0;if((j|0)!=(g|0)){continue}break}}g=(b<<2)+f|0;if((b-1&1073741823)>>>0>=7){while(1){F[d>>2]=F[c>>2];F[d+4>>2]=F[c>>2];F[d+8>>2]=F[c>>2];F[d+12>>2]=F[c>>2];F[d+16>>2]=F[c>>2];F[d+20>>2]=F[c>>2];F[d+24>>2]=F[c>>2];F[d+28>>2]=F[c>>2];d=d+32|0;if((g|0)!=(d|0)){continue}break}}if((e|0)!=(i|0)){while(1){f=f-4|0;e=e-4|0;F[f>>2]=F[e>>2];if((e|0)!=(i|0)){continue}break}}F[a+8>>2]=(h<<2)+k;F[a+4>>2]=g;F[a>>2]=f;if(i){ja(i)}return}na();v()}oa();v()}function Xb(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=F[a+8>>2];e=F[a>>2];if(d-e>>2>>>0>=b>>>0){f=F[a+4>>2];h=f-e>>2;i=b>>>0>h>>>0?h:b;a:{if(!i){break a}d=e;g=i;j=g&7;if(j){while(1){F[d>>2]=F[c>>2];g=g-1|0;d=d+4|0;k=k+1|0;if((k|0)!=(j|0)){continue}break}}if(i>>>0<8){break a}while(1){F[d>>2]=F[c>>2];F[d+4>>2]=F[c>>2];F[d+8>>2]=F[c>>2];F[d+12>>2]=F[c>>2];F[d+16>>2]=F[c>>2];F[d+20>>2]=F[c>>2];F[d+24>>2]=F[c>>2];F[d+28>>2]=F[c>>2];d=d+32|0;g=g-8|0;if(g){continue}break}}if(b>>>0>h>>>0){b=(b-h<<2)+f|0;while(1){F[f>>2]=F[c>>2];f=f+4|0;if((b|0)!=(f|0)){continue}break}F[a+4>>2]=b;return}F[a+4>>2]=e+(b<<2);return}if(e){F[a+4>>2]=e;ja(e);F[a+8>>2]=0;F[a>>2]=0;F[a+4>>2]=0;d=0}b:{if(b>>>0>=1073741824){break b}e=d>>>1|0;d=d>>>0>=2147483644?1073741823:b>>>0>>0?e:b;if(d>>>0>=1073741824){break b}d=d<<2;e=ka(d);F[a>>2]=e;F[a+8>>2]=d+e;c=F[c>>2];d=e;g=b&7;if(g){while(1){F[d>>2]=c;d=d+4|0;f=f+1|0;if((g|0)!=(f|0)){continue}break}}e=e+(b<<2)|0;if((b-1&1073741823)>>>0>=7){while(1){F[d+28>>2]=c;F[d+24>>2]=c;F[d+20>>2]=c;F[d+16>>2]=c;F[d+12>>2]=c;F[d+8>>2]=c;F[d+4>>2]=c;F[d>>2]=c;d=d+32|0;if((e|0)!=(d|0)){continue}break}}F[a+4>>2]=e;return}na();v()}function Ka(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;f=(c>>>0)/3|0;j=F[(F[F[a+8>>2]+96>>2]+L(f,12)|0)+(c-L(f,3)<<2)>>2];a:{h=F[F[a+12>>2]+4>>2];e=F[h+4>>2];if((e|0)!=F[h+8>>2]){F[e>>2]=j;F[h+4>>2]=e+4;break a}b:{i=F[h>>2];f=e-i|0;g=f>>2;d=g+1|0;if(d>>>0<1073741824){k=g<<2;g=f>>>1|0;g=f>>>0>=2147483644?1073741823:d>>>0>>0?g:d;if(g){if(g>>>0>=1073741824){break b}f=ka(g<<2)}else{f=0}d=k+f|0;F[d>>2]=j;j=d+4|0;if((e|0)!=(i|0)){while(1){d=d-4|0;e=e-4|0;F[d>>2]=F[e>>2];if((e|0)!=(i|0)){continue}break}}F[h+8>>2]=f+(g<<2);F[h+4>>2]=j;F[h>>2]=d;if(i){ja(i)}break a}na();v()}oa();v()}c:{d:{h=F[a+4>>2];e=F[h+4>>2];e:{if((e|0)!=F[h+8>>2]){F[e>>2]=c;F[h+4>>2]=e+4;break e}i=F[h>>2];f=e-i|0;j=f>>2;d=j+1|0;if(d>>>0>=1073741824){break d}g=f>>>1|0;g=f>>>0>=2147483644?1073741823:d>>>0>>0?g:d;if(g){if(g>>>0>=1073741824){break c}f=ka(g<<2)}else{f=0}d=f+(j<<2)|0;F[d>>2]=c;c=d+4|0;if((e|0)!=(i|0)){while(1){d=d-4|0;e=e-4|0;F[d>>2]=F[e>>2];if((e|0)!=(i|0)){continue}break}}F[h+8>>2]=f+(g<<2);F[h+4>>2]=c;F[h>>2]=d;if(!i){break e}ja(i)}a=F[a+4>>2];F[F[a+12>>2]+(b<<2)>>2]=F[a+24>>2];F[a+24>>2]=F[a+24>>2]+1;return}na();v()}oa();v()}function pb(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0;h=d-c|0;if((h|0)<=0){return}a:{e=F[a+8>>2];i=F[a+4>>2];if((e-i|0)>=(h|0)){j=i-b|0;if((j|0)>=(h|0)){f=i;g=d;break a}f=i;g=c+j|0;if((g|0)!=(d|0)){e=g;while(1){D[f|0]=G[e|0];f=f+1|0;e=e+1|0;if((e|0)!=(d|0)){continue}break}}F[a+4>>2]=f;if((j|0)>0){break a}return}k=F[a>>2];g=(i-k|0)+h|0;if((g|0)>=0){j=b-k|0;f=e-k|0;e=f<<1;f=f>>>0>=1073741823?2147483647:e>>>0>g>>>0?e:g;if(f){e=ka(f)}else{e=0}g=j+e|0;if((c|0)!=(d|0)){g=la(g,c,h)+h|0}d=pa(e,k,j);c=i-b|0;b=pa(g,b,c);F[a+8>>2]=e+f;F[a+4>>2]=b+c;F[a>>2]=d;if(k){ja(k)}return}na();v()}e=f;d=e-h|0;if(i>>>0>d>>>0){while(1){D[e|0]=G[d|0];e=e+1|0;d=d+1|0;if(i>>>0>d>>>0){continue}break}}F[a+4>>2]=e;a=b+h|0;if((a|0)!=(f|0)){a=f-a|0;pa(f-a|0,b,a)}if((c|0)==(g|0)){return}f=(c^-1)+g|0;a=g-c&7;b:{if(!a){e=b;break b}d=0;e=b;while(1){D[e|0]=G[c|0];e=e+1|0;c=c+1|0;d=d+1|0;if((a|0)!=(d|0)){continue}break}}if(f>>>0<7){return}while(1){D[e|0]=G[c|0];D[e+1|0]=G[c+1|0];D[e+2|0]=G[c+2|0];D[e+3|0]=G[c+3|0];D[e+4|0]=G[c+4|0];D[e+5|0]=G[c+5|0];D[e+6|0]=G[c+6|0];D[e+7|0]=G[c+7|0];e=e+8|0;c=c+8|0;if((g|0)!=(c|0)){continue}break}}function la(a,b,c){var d=0,e=0,f=0;if(c>>>0>=512){Y(a|0,b|0,c|0);return a}e=a+c|0;a:{if(!((a^b)&3)){b:{if(!(a&3)){c=a;break b}if(!c){c=a;break b}c=a;while(1){D[c|0]=G[b|0];b=b+1|0;c=c+1|0;if(!(c&3)){break b}if(c>>>0>>0){continue}break}}d=e&-4;c:{if(d>>>0<64){break c}f=d+-64|0;if(f>>>0>>0){break c}while(1){F[c>>2]=F[b>>2];F[c+4>>2]=F[b+4>>2];F[c+8>>2]=F[b+8>>2];F[c+12>>2]=F[b+12>>2];F[c+16>>2]=F[b+16>>2];F[c+20>>2]=F[b+20>>2];F[c+24>>2]=F[b+24>>2];F[c+28>>2]=F[b+28>>2];F[c+32>>2]=F[b+32>>2];F[c+36>>2]=F[b+36>>2];F[c+40>>2]=F[b+40>>2];F[c+44>>2]=F[b+44>>2];F[c+48>>2]=F[b+48>>2];F[c+52>>2]=F[b+52>>2];F[c+56>>2]=F[b+56>>2];F[c+60>>2]=F[b+60>>2];b=b- -64|0;c=c- -64|0;if(f>>>0>=c>>>0){continue}break}}if(c>>>0>=d>>>0){break a}while(1){F[c>>2]=F[b>>2];b=b+4|0;c=c+4|0;if(d>>>0>c>>>0){continue}break}break a}if(e>>>0<4){c=a;break a}d=e-4|0;if(d>>>0>>0){c=a;break a}c=a;while(1){D[c|0]=G[b|0];D[c+1|0]=G[b+1|0];D[c+2|0]=G[b+2|0];D[c+3|0]=G[b+3|0];b=b+4|0;c=c+4|0;if(d>>>0>=c>>>0){continue}break}}if(c>>>0>>0){while(1){D[c|0]=G[b|0];b=b+1|0;c=c+1|0;if((e|0)!=(c|0)){continue}break}}return a}function sd(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;F[a>>2]=8336;d=a+232|0;b=F[d+196>>2];if(b){F[d+200>>2]=b;ja(b)}c=F[d+184>>2];if(c){b=c;e=F[d+188>>2];if((b|0)!=(e|0)){while(1){b=e-12|0;f=F[b>>2];if(f){F[e-8>>2]=f;ja(f)}e=b;if((b|0)!=(c|0)){continue}break}b=F[d+184>>2]}F[d+188>>2]=c;ja(b)}b=F[d+156>>2];if(b){F[d+160>>2]=b;ja(b)}c=F[d+136>>2];F[d+136>>2]=0;if(c){e=c-4|0;b=F[e>>2];if(b){b=c+(b<<4)|0;while(1){b=b-16|0;if((c|0)!=(b|0)){continue}break}}ja(e)}td(a+216|0);b=F[a+196>>2];if(b){F[a+200>>2]=b;ja(b)}b=F[a+184>>2];if(b){F[a+188>>2]=b;ja(b)}b=F[a+172>>2];if(b){F[a+176>>2]=b;ja(b)}b=F[a+160>>2];if(b){F[a+164>>2]=b;ja(b)}b=F[a+144>>2];if(b){while(1){c=F[b>>2];ja(b);b=c;if(b){continue}break}}b=F[a+136>>2];F[a+136>>2]=0;if(b){ja(b)}b=F[a+120>>2];if(b){ja(b)}b=F[a+108>>2];if(b){ja(b)}b=F[a+96>>2];if(b){ja(b)}b=F[a+72>>2];if(b){F[a+76>>2]=b;ja(b)}b=F[a+60>>2];if(b){ja(b)}b=F[a+48>>2];if(b){F[a+52>>2]=b;ja(b)}b=F[a+36>>2];if(b){F[a+40>>2]=b;ja(b)}b=F[a+24>>2];if(b){F[a+28>>2]=b;ja(b)}b=F[a+12>>2];if(b){F[a+16>>2]=b;ja(b)}b=F[a+8>>2];F[a+8>>2]=0;if(b){Za(b)}return a|0}function Fa(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;d=F[a+8>>2];e=F[a+4>>2];if(d-e>>2>>>0>=b>>>0){a:{if(!b){break a}d=e;f=b&7;if(f){while(1){F[d>>2]=F[c>>2];d=d+4|0;h=h+1|0;if((f|0)!=(h|0)){continue}break}}e=(b<<2)+e|0;if((b-1&1073741823)>>>0<7){break a}while(1){F[d>>2]=F[c>>2];F[d+4>>2]=F[c>>2];F[d+8>>2]=F[c>>2];F[d+12>>2]=F[c>>2];F[d+16>>2]=F[c>>2];F[d+20>>2]=F[c>>2];F[d+24>>2]=F[c>>2];F[d+28>>2]=F[c>>2];d=d+32|0;if((e|0)!=(d|0)){continue}break}}F[a+4>>2]=e;return}b:{i=F[a>>2];j=e-i|0;f=j>>2;g=f+b|0;if(g>>>0<1073741824){d=d-i|0;e=d>>>1|0;g=d>>>0>=2147483644?1073741823:e>>>0>g>>>0?e:g;if(g){if(g>>>0>=1073741824){break b}k=ka(g<<2)}f=(f<<2)+k|0;d=f;e=b&7;if(e){while(1){F[d>>2]=F[c>>2];d=d+4|0;h=h+1|0;if((e|0)!=(h|0)){continue}break}}e=f+(b<<2)|0;if((b-1&1073741823)>>>0>=7){while(1){F[d>>2]=F[c>>2];F[d+4>>2]=F[c>>2];F[d+8>>2]=F[c>>2];F[d+12>>2]=F[c>>2];F[d+16>>2]=F[c>>2];F[d+20>>2]=F[c>>2];F[d+24>>2]=F[c>>2];F[d+28>>2]=F[c>>2];d=d+32|0;if((e|0)!=(d|0)){continue}break}}b=pa(k,i,j);F[a+4>>2]=e;F[a>>2]=b;F[a+8>>2]=b+(g<<2);if(i){ja(i)}return}na();v()}oa();v()}function Sb(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;if(G[a+11|0]>>>7|0){d=F[a+4>>2]}else{d=G[a+11|0]&127}if(d>>>0>>0){h=Z-16|0;Z=h;b=b-d|0;if(b){g=G[a+11|0]>>>7|0?(F[a+8>>2]&2147483647)-1|0:10;if(G[a+11|0]>>>7|0){d=F[a+4>>2]}else{d=G[a+11|0]&127}i=d+b|0;if(g-d>>>0>>0){a:{e=Z-16|0;Z=e;c=i-g|0;if(c>>>0<=2147483631-g>>>0){if(G[a+11|0]>>>7|0){f=F[a>>2]}else{f=a}if(g>>>0<1073741799){F[e+12>>2]=g<<1;F[e>>2]=c+g;c=Z-16|0;Z=c;Z=c+16|0;c=e+12|0;c=F[(I[e>>2]>2]?c:e)>>2];if(c>>>0>=11){j=c+16&-16;c=j-1|0;c=(c|0)==11?j:c}else{c=10}c=c+1|0}else{c=2147483631}sb(e,c);c=F[e>>2];if(d){db(c,f,d)}if((g|0)!=10){ja(f)}F[a>>2]=c;F[a+8>>2]=F[a+8>>2]&-2147483648|F[e+4>>2]&2147483647;F[a+8>>2]=F[a+8>>2]|-2147483648;Z=e+16|0;break a}za();v()}}f=d;if(G[a+11|0]>>>7|0){d=F[a>>2]}else{d=a}f=f+d|0;e=Z-16|0;Z=e;D[e+15|0]=0;while(1){if(b){D[f|0]=G[e+15|0];b=b-1|0;f=f+1|0;continue}break}Z=e+16|0;Ic(a,i);D[h+15|0]=0;D[d+i|0]=G[h+15|0]}Z=h+16|0;return}if(G[a+11|0]>>>7|0){d=F[a>>2]}else{d=a}f=Z-16|0;Z=f;Ic(a,b);D[f+15|0]=0;D[b+d|0]=G[f+15|0];Z=f+16|0}function Zc(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;g=Z-16|0;Z=g;a:{b:{if(b){F[a+88>>2]=0;F[a+92>>2]=0;d=F[a+84>>2];F[a+84>>2]=0;if(d){ja(d)}F[a+76>>2]=0;F[a+80>>2]=0;d=F[a+72>>2];F[a+72>>2]=0;if(d){ja(d)}d=F[b>>2];c=F[b+4>>2];D[g+15|0]=0;Ea(a,c-d>>2,g+15|0);d=F[b+28>>2];c=F[b+24>>2];D[g+14|0]=0;Ea(a+12|0,d-c>>2,g+14|0);Xb(a+28|0,F[b+4>>2]-F[b>>2]>>2,10284);c=F[b+28>>2]-F[b+24>>2]|0;f=c>>2;e=F[a+52>>2];c:{if(f>>>0<=F[a+60>>2]-e>>2>>>0){break c}if((c|0)<0){break b}d=F[a+56>>2];c=ka(c);f=c+(f<<2)|0;h=c+(d-e&-4)|0;c=h;if((d|0)!=(e|0)){while(1){c=c-4|0;d=d-4|0;F[c>>2]=F[d>>2];if((d|0)!=(e|0)){continue}break}}F[a+60>>2]=f;F[a+56>>2]=h;F[a+52>>2]=c;if(!e){break c}ja(e)}c=F[b+28>>2]-F[b+24>>2]|0;f=c>>2;e=F[a+40>>2];d:{if(f>>>0<=F[a+48>>2]-e>>2>>>0){break d}if((c|0)<0){break a}d=F[a+44>>2];c=ka(c);f=c+(f<<2)|0;h=c+(d-e&-4)|0;c=h;if((d|0)!=(e|0)){while(1){c=c-4|0;d=d-4|0;F[c>>2]=F[d>>2];if((d|0)!=(e|0)){continue}break}}F[a+48>>2]=f;F[a+44>>2]=h;F[a+40>>2]=c;if(!e){break d}ja(e)}D[a+24|0]=1;F[a+64>>2]=b}Z=g+16|0;return}na();v()}na();v()}function nb(a,b){var c=0,d=0,e=0;c=(a|0)==(b|0);D[b+12|0]=c;a:{if(c){break a}while(1){d=F[b+8>>2];if(G[d+12|0]){break a}b:{c=F[d+8>>2];e=F[c>>2];if((e|0)==(d|0)){e=F[c+4>>2];if(!(!e|G[e+12|0])){break b}c:{if(F[d>>2]==(b|0)){b=d;break c}b=F[d+4>>2];a=F[b>>2];F[d+4>>2]=a;if(a){F[a+8>>2]=d;c=F[d+8>>2]}F[b+8>>2]=c;a=F[d+8>>2];F[((F[a>>2]!=(d|0))<<2)+a>>2]=b;F[b>>2]=d;F[d+8>>2]=b;c=F[b+8>>2];d=F[c>>2]}D[b+12|0]=1;D[c+12|0]=0;a=F[d+4>>2];F[c>>2]=a;if(a){F[a+8>>2]=c}F[d+8>>2]=F[c+8>>2];a=F[c+8>>2];F[((F[a>>2]!=(c|0))<<2)+a>>2]=d;F[d+4>>2]=c;F[c+8>>2]=d;return}if(!(G[e+12|0]|!e)){break b}d:{if(F[d>>2]!=(b|0)){b=d;break d}a=F[b+4>>2];F[d>>2]=a;if(a){F[a+8>>2]=d;c=F[d+8>>2]}F[b+8>>2]=c;a=F[d+8>>2];F[((F[a>>2]!=(d|0))<<2)+a>>2]=b;F[b+4>>2]=d;F[d+8>>2]=b;c=F[b+8>>2]}D[b+12|0]=1;D[c+12|0]=0;a=F[c+4>>2];b=F[a>>2];F[c+4>>2]=b;if(b){F[b+8>>2]=c}F[a+8>>2]=F[c+8>>2];b=F[c+8>>2];F[((F[b>>2]!=(c|0))<<2)+b>>2]=a;F[a>>2]=c;F[c+8>>2]=a;break a}D[d+12|0]=1;D[c+12|0]=(a|0)==(c|0);D[e+12|0]=1;b=c;if((c|0)!=(a|0)){continue}break}}}function mi(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;a:{b:{c:{d:{e:{f:{g:{h:{i:{j:{k:{if(b){if(!c){break k}if(!d){break j}e=O(d)-O(b)|0;if(e>>>0<=31){break i}break c}if((d|0)==1|d>>>0>1){break c}_=0;a=(a>>>0)/(c>>>0)|0;break a}if(!a){break h}if(!d|d-1&d){break g}a=b>>>ji(d)|0;_=0;break a}if(!(c-1&c)){break f}h=(O(c)+33|0)-O(b)|0;g=0-h|0;break d}h=e+1|0;g=63-e|0;break d}_=0;a=(b>>>0)/(d>>>0)|0;break a}e=O(d)-O(b)|0;if(e>>>0<31){break e}break c}if((c|0)==1){break b}d=ji(c);c=d&31;if((d&63)>>>0>=32){a=b>>>c|0}else{e=b>>>c|0;a=((1<>>c}_=e;break a}h=e+1|0;g=63-e|0}e=h&63;f=e&31;if(e>>>0>=32){e=0;i=b>>>f|0}else{e=b>>>f|0;i=((1<>>f}g=g&63;f=g&31;if(g>>>0>=32){b=a<>>32-f|b<>>31;e=i<<1|b>>>31;f=m-(j+(e>>>0>g>>>0)|0)>>31;k=c&f;i=e-k|0;e=j-((d&f)+(e>>>0>>0)|0)|0;b=b<<1|a>>>31;a=l|a<<1;l=f&1;h=h-1|0;if(h){continue}break}}_=b<<1|a>>>31;a=l|a<<1;break a}a=0;b=0}_=b}return a}function yh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;c=F[b+88>>2];if(!(!c|F[c>>2]!=1)){e=F[c+8>>2];F[a+4>>2]=G[e|0]|G[e+1|0]<<8|(G[e+2|0]<<16|G[e+3|0]<<24);f=a+8|0;d=G[b+24|0];h=F[a+8>>2];g=F[a+12>>2]-h>>2;a:{if(d>>>0>g>>>0){qa(f,d-g|0);d=G[b+24|0];e=F[c+8>>2];break a}if(d>>>0>=g>>>0){break a}F[a+12>>2]=h+(d<<2)}b:{if(!d){b=4;break b}h=d&3;f=F[f>>2];c:{if(d-1>>>0<3){b=4;d=0;break c}k=d&252;d=0;b=4;while(1){g=d<<2;c=b+e|0;F[g+f>>2]=G[c|0]|G[c+1|0]<<8|(G[c+2|0]<<16|G[c+3|0]<<24);F[f+(g|4)>>2]=G[c+4|0]|G[c+5|0]<<8|(G[c+6|0]<<16|G[c+7|0]<<24);F[f+(g|8)>>2]=G[c+8|0]|G[c+9|0]<<8|(G[c+10|0]<<16|G[c+11|0]<<24);F[f+(g|12)>>2]=G[c+12|0]|G[c+13|0]<<8|(G[c+14|0]<<16|G[c+15|0]<<24);d=d+4|0;b=b+16|0;i=i+4|0;if((k|0)!=(i|0)){continue}break}}if(!h){break b}while(1){c=b+e|0;F[f+(d<<2)>>2]=G[c|0]|G[c+1|0]<<8|(G[c+2|0]<<16|G[c+3|0]<<24);d=d+1|0;b=b+4|0;j=j+1|0;if((h|0)!=(j|0)){continue}break}}d=a;a=b+e|0;F[d+20>>2]=G[a|0]|G[a+1|0]<<8|(G[a+2|0]<<16|G[a+3|0]<<24);d=1}return d|0}function Yg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0,h=0;g=Z-16|0;Z=g;e=F[a+4>>2];d=F[e>>2];a:{b=F[a+12>>2];c=F[b+28>>2]-F[b+24>>2]|0;f=c>>2;b:{if(f>>>0<=F[e+8>>2]-d>>2>>>0){break b}if((c|0)<0){break a}b=F[e+4>>2];c=ka(c);f=c+(f<<2)|0;h=c+(b-d&-4)|0;c=h;if((b|0)!=(d|0)){while(1){c=c-4|0;b=b-4|0;F[c>>2]=F[b>>2];if((b|0)!=(d|0)){continue}break}}F[e+8>>2]=f;F[e+4>>2]=h;F[e>>2]=c;if(!d){break b}ja(d)}b=F[a+12>>2];c=F[b+28>>2];b=F[b+24>>2];F[g+12>>2]=0;b=c-b>>2;d=a+96|0;e=F[d>>2];c=F[a+100>>2]-e>>2;c:{if(b>>>0>c>>>0){Fa(d,b-c|0,g+12|0);break c}if(b>>>0>=c>>>0){break c}F[a+100>>2]=e+(b<<2)}e=a+8|0;b=F[a+116>>2];d:{if(b){d=F[b>>2];if((d|0)==F[b+4>>2]){c=1;break d}b=0;while(1){c=rd(e,F[(b<<2)+d>>2]);if(!c){break d}f=F[a+116>>2];d=F[f>>2];b=b+1|0;if(b>>>0>2]-d>>2>>>0){continue}break}break d}c=1;a=F[a+12>>2];a=F[a+4>>2]-F[a>>2]|0;if(a>>>0<12){break d}a=(a>>2>>>0)/3|0;b=0;while(1){c=rd(e,L(b,3));if(!c){break d}b=b+1|0;if((a|0)!=(b|0)){continue}break}}Z=g+16|0;return c|0}na();v()}function md(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0;a:{b:{c:{if(!b){if((d|0)<0){break a}f=F[a+4>>2];b=F[a>>2];d=f-b|0;if(c>>>0>d>>>0){g=c-d|0;e=F[a+8>>2];if(g>>>0<=e-f>>>0){i=a,j=ma(f,0,g)+g|0,F[i+4>>2]=j;break c}if((c|0)<0){break b}f=e-b|0;e=f<<1;f=f>>>0>=1073741823?2147483647:c>>>0>>0?e:c;e=ka(f);ma(e+d|0,0,g);d=pa(e,b,d);F[a+8>>2]=d+f;F[a+4>>2]=c+d;F[a>>2]=d;if(!b){break c}ja(b);break c}if(c>>>0>=d>>>0){break c}F[a+4>>2]=b+c;break c}if((d|0)<0){break a}e=F[a+4>>2];f=F[a>>2];g=e-f|0;d:{if((d|0)<=0&c>>>0<=g>>>0|(d|0)<0){break d}if(c>>>0>g>>>0){d=c-g|0;h=F[a+8>>2];if(d>>>0<=h-e>>>0){i=a,j=ma(e,0,d)+d|0,F[i+4>>2]=j;break d}if((c|0)<0){break b}e=h-f|0;h=e<<1;e=e>>>0>=1073741823?2147483647:c>>>0>>0?h:c;h=ka(e);ma(h+g|0,0,d);d=pa(h,f,g);F[a+8>>2]=d+e;F[a+4>>2]=c+d;F[a>>2]=d;if(!f){break d}ja(f);break d}if(c>>>0>=g>>>0){break d}F[a+4>>2]=c+f}if(!c){break c}pa(F[a>>2],b,c)}b=F[a+28>>2];c=F[a+24>>2]+1|0;b=c?b:b+1|0;F[a+24>>2]=c;F[a+28>>2]=b;g=1;break a}na();v()}return g}function Lg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;k=F[a+12>>2];c=F[a+68>>2];d=F[c+80>>2];D[b+84|0]=0;n=b+68|0;i=F[b+68>>2];e=F[b+72>>2]-i>>2;a:{if(e>>>0>>0){ab(n,d-e|0,9124);c=F[a+68>>2];d=F[c+80>>2];break a}if(d>>>0>=e>>>0){break a}F[b+72>>2]=i+(d<<2)}b=F[c+100>>2];e=F[c+96>>2];i=(b-e|0)/12|0;m=1;b:{if((b|0)==(e|0)){break b}k=F[k+28>>2];f=F[k>>2];if((f|0)==-1){return 0}o=i>>>0<=1?1:i;c=e;b=0;m=0;while(1){g=F[c>>2];if(g>>>0>=d>>>0){break b}j=F[F[a+72>>2]+12>>2];h=F[j+(f<<2)>>2];if(h>>>0>=d>>>0){break b}f=F[n>>2];F[f+(g<<2)>>2]=h;g=k+(l<<2)|0;h=F[g+4>>2];if((h|0)==-1){break b}l=F[c+4>>2];if(l>>>0>=d>>>0){break b}h=F[(h<<2)+j>>2];if(h>>>0>=d>>>0){break b}F[f+(l<<2)>>2]=h;g=F[g+8>>2];if((g|0)==-1){break b}c=F[c+8>>2];if(c>>>0>=d>>>0){break b}j=F[(g<<2)+j>>2];if(j>>>0>=d>>>0){break b}F[f+(c<<2)>>2]=j;b=b+1|0;m=i>>>0<=b>>>0;if((b|0)==(o|0)){break b}c=e+L(b,12)|0;l=L(b,3);f=F[k+(l<<2)>>2];if((f|0)!=-1){continue}break}}return m|0}function ag(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;h=F[d+80>>2];e=Z-48|0;Z=e;a=F[a+4>>2];m=a-2|0;a:{if(m>>>0>28){break a}j=F[F[d>>2]>>2]+F[d+48>>2]|0;F[e+16>>2]=a;a=-1<>2]=a^-1;a=-2-a|0;F[e+24>>2]=a;F[e+32>>2]=(a|0)/2;J[e+28>>2]=M(2)/M(a|0);f=F[c>>2];if((f|0)!=F[c+4>>2]){a=0;d=0;while(1){g=F[(d<<2)+f>>2];h=e+36|0;k=F[F[b>>2]>>2];l=F[b+48>>2];f=F[b+40>>2];i=F[b+44>>2];if(!G[b+84|0]){g=F[F[b+68>>2]+(g<<2)>>2]}g=ki(f,i,g,0);i=g;g=g+l|0;la(h,g+k|0,f);Kc(e+16|0,h,e+12|0,e+8|0);f=a<<2;F[f+j>>2]=F[e+12>>2];F[(f|4)+j>>2]=F[e+8>>2];a=a+2|0;d=d+1|0;f=F[c>>2];if(d>>>0>2]-f>>2>>>0){continue}break}break a}if(!h){break a}d=0;a=0;while(1){k=e+36|0;l=F[F[b>>2]>>2];i=F[b+48>>2];c=F[b+40>>2];f=ki(c,F[b+44>>2],G[b+84|0]?a:F[F[b+68>>2]+(a<<2)>>2],0);g=f;f=f+i|0;la(k,f+l|0,c);Kc(e+16|0,k,e+12|0,e+8|0);c=d<<2;F[c+j>>2]=F[e+12>>2];F[(c|4)+j>>2]=F[e+8>>2];d=d+2|0;a=a+1|0;if((h|0)!=(a|0)){continue}break}}Z=e+48|0;return m>>>0<29|0}function Zg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;c=F[a+12>>2];d=F[a+108>>2];e=F[d+80>>2];D[b+84|0]=0;m=b+68|0;h=F[b+68>>2];f=F[b+72>>2]-h>>2;a:{if(f>>>0>>0){ab(m,e-f|0,9124);d=F[a+108>>2];e=F[d+80>>2];break a}if(e>>>0>=f>>>0){break a}F[b+72>>2]=h+(e<<2)}b=F[d+100>>2];f=F[d+96>>2];h=(b-f|0)/12|0;k=1;b:{if((b|0)==(f|0)){break b}n=h>>>0<=1?1:h;o=F[c>>2];c=0;d=f;b=0;k=0;while(1){c=(c<<2)+o|0;i=F[c>>2];if((i|0)==-1){break b}g=F[d>>2];if(g>>>0>=e>>>0){break b}l=F[F[a+112>>2]+12>>2];j=F[l+(i<<2)>>2];if(j>>>0>=e>>>0){break b}i=F[m>>2];F[i+(g<<2)>>2]=j;g=F[c+4>>2];if((g|0)==-1){break b}j=F[d+4>>2];if(j>>>0>=e>>>0){break b}g=F[(g<<2)+l>>2];if(g>>>0>=e>>>0){break b}F[i+(j<<2)>>2]=g;c=F[c+8>>2];if((c|0)==-1){break b}d=F[d+8>>2];if(d>>>0>=e>>>0){break b}c=F[(c<<2)+l>>2];if(c>>>0>=e>>>0){break b}F[i+(d<<2)>>2]=c;b=b+1|0;k=h>>>0<=b>>>0;if((b|0)==(n|0)){break b}c=L(b,3);d=f+L(b,12)|0;if((b|0)!=1431655765){continue}break}}return k|0}function xd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=M(0),j=0,k=0,l=0,m=0,n=0,o=0,p=0,q=0,r=0,s=0,t=0,u=0;k=Z-16|0;Z=k;if(F[c+28>>2]==9){d=F[a+4>>2];h=G[c+24|0];e=h<<2;f=ka(e);l=k+8|0;F[l>>2]=1065353216;i=J[a+20>>2];d=-1<0){J[l>>2]=i/M(d|0)}o=(d|0)>0;a:{if(!o){break a}j=F[c+80>>2];if(!j){break a}if(h){p=F[F[b>>2]>>2]+F[b+48>>2]|0;t=h&254;u=h&1;b=0;while(1){m=F[a+8>>2];i=J[l>>2];d=0;n=0;if((h|0)!=1){while(1){g=d<<2;q=(b<<2)+p|0;J[g+f>>2]=M(i*M(F[q>>2]))+J[g+m>>2];g=g|4;J[g+f>>2]=M(i*M(F[q+4>>2]))+J[g+m>>2];d=d+2|0;b=b+2|0;n=n+2|0;if((t|0)!=(n|0)){continue}break}}if(u){d=d<<2;J[d+f>>2]=M(i*M(F[(b<<2)+p>>2]))+J[d+m>>2];b=b+1|0}la(F[F[c+64>>2]>>2]+r|0,f,e);r=e+r|0;s=s+1|0;if((s|0)!=(j|0)){continue}break}break a}b=0;if((j|0)!=1){a=j&-2;d=0;while(1){la(F[F[c+64>>2]>>2]+b|0,f,e);b=b+e|0;la(b+F[F[c+64>>2]>>2]|0,f,e);b=b+e|0;d=d+2|0;if((a|0)!=(d|0)){continue}break}}if(!(j&1)){break a}la(F[F[c+64>>2]>>2]+b|0,f,e)}ja(f)}Z=k+16|0;return o|0}function Rg(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0,o=0;c=F[a+12>>2];d=F[a+68>>2];e=F[d+80>>2];D[b+84|0]=0;m=b+68|0;h=F[b+68>>2];f=F[b+72>>2]-h>>2;a:{if(f>>>0>>0){ab(m,e-f|0,9124);d=F[a+68>>2];e=F[d+80>>2];break a}if(e>>>0>=f>>>0){break a}F[b+72>>2]=h+(e<<2)}b=F[d+100>>2];f=F[d+96>>2];h=(b-f|0)/12|0;k=1;b:{if((b|0)==(f|0)){break b}n=h>>>0<=1?1:h;o=F[c>>2];c=0;d=f;b=0;k=0;while(1){c=(c<<2)+o|0;i=F[c>>2];if((i|0)==-1){break b}g=F[d>>2];if(g>>>0>=e>>>0){break b}l=F[F[a+72>>2]+12>>2];j=F[l+(i<<2)>>2];if(j>>>0>=e>>>0){break b}i=F[m>>2];F[i+(g<<2)>>2]=j;g=F[c+4>>2];if((g|0)==-1){break b}j=F[d+4>>2];if(j>>>0>=e>>>0){break b}g=F[(g<<2)+l>>2];if(g>>>0>=e>>>0){break b}F[i+(j<<2)>>2]=g;c=F[c+8>>2];if((c|0)==-1){break b}d=F[d+8>>2];if(d>>>0>=e>>>0){break b}c=F[(c<<2)+l>>2];if(c>>>0>=e>>>0){break b}F[i+(d<<2)>>2]=c;b=b+1|0;k=h>>>0<=b>>>0;if((b|0)==(n|0)){break b}c=L(b,3);d=f+L(b,12)|0;if((b|0)!=1431655765){continue}break}}return k|0}function Na(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;d=Z-16|0;Z=d;a:{f=F[a+4>>2];b:{if(f>>>0>>0){e=b-f|0;c=F[a+8>>2];g=c<<5;c:{if(!(e>>>0>g>>>0|f>>>0>g-e>>>0)){F[a+4>>2]=b;h=f&31;b=F[a>>2]+(f>>>3&536870908)|0;break c}F[d+8>>2]=0;F[d>>2]=0;F[d+4>>2]=0;if((b|0)<0){break a}if(g>>>0<=1073741822){c=c<<6;b=b+31&-32;b=b>>>0>>0?c:b}else{b=2147483647}$a(d,b);f=F[a+4>>2];F[d+4>>2]=f+e;i=F[a>>2];b=F[d>>2];d:{if((f|0)<=0){break d}c=f>>>5|0;if(f>>>0>=32){pa(b,i,c<<2)}g=c<<2;b=g+b|0;h=f&31;if(h){c=-1>>>32-h|0;F[b>>2]=F[b>>2]&(c^-1)|F[i+g>>2]&c}i=F[a>>2]}F[a>>2]=F[d>>2];F[d>>2]=i;c=F[a+4>>2];F[a+4>>2]=F[d+4>>2];F[d+4>>2]=c;c=F[a+8>>2];F[a+8>>2]=F[d+8>>2];F[d+8>>2]=c;if(!i){break c}ja(i)}if(!e){break b}if(h){c=32-h|0;a=c>>>0>>0?c:e;F[b>>2]=F[b>>2]&(-1<>>c-a^-1);e=e-a|0;b=b+4|0}a=e>>>5|0;if(e>>>0>=32){ma(b,0,a<<2)}if((e&-32)==(e|0)){break b}a=(a<<2)+b|0;F[a>>2]=F[a>>2]&(-1>>>32-(e&31)^-1);break b}F[a+4>>2]=b}Z=d+16|0;return}na();v()}function Aa(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0;i=Z-16|0;Z=i;f=F[b+20>>2];h=F[b+12>>2];c=F[b+16>>2];a:{if((f|0)>=(h|0)&c>>>0>=I[b+8>>2]|(f|0)>(h|0)){break a}D[a+12|0]=G[c+F[b>>2]|0];c=F[b+20>>2];f=F[b+16>>2]+1|0;c=f?c:c+1|0;F[b+16>>2]=f;F[b+20>>2]=c;if(!Qd(1,i+12|0,b)){break a}h=F[b+8>>2];f=F[b+16>>2];g=h-f|0;c=F[i+12>>2];d=f>>>0>h>>>0;h=F[b+20>>2];e=F[b+12>>2]-(d+h|0)|0;if(g>>>0>>0&(e|0)<=0|(e|0)<0|(c|0)<=0){break a}g=f+F[b>>2]|0;F[a>>2]=g;b:{c:{e=c-1|0;j=e+g|0;d=G[j|0];d:{if(d>>>0<=63){F[a+4>>2]=e;d=G[j|0]&63;break d}e:{switch((d>>>6|0)-1|0){case 1:break c;case 0:break e;default:break a}}if(c>>>0<2){break a}e=c-2|0;F[a+4>>2]=e;g=g+e|0;d=G[g+1|0]<<8&16128|G[g|0]}F[a+8>>2]=d+4096;break b}if(c>>>0<3){break a}e=c-3|0;F[a+4>>2]=e;d=a;a=g+e|0;a=G[a+1|0]<<8|G[a+2|0]<<16&4128768|G[a|0];F[d+8>>2]=a+4096;if(a>>>0>1044479){break a}}a=h;d=c;c=c+f|0;a=d>>>0>c>>>0?a+1|0:a;F[b+16>>2]=c;F[b+20>>2]=a;k=1}Z=i+16|0;return k}function qd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;e=F[a+12>>2];i=F[a+8>>2];d=e-i>>2;b=G[b+24|0];a:{if(d>>>0>>0){qa(a+8|0,b-d|0);i=F[a+8>>2];e=F[a+12>>2];break a}if(b>>>0>=d>>>0){break a}e=(b<<2)+i|0;F[a+12>>2]=e}b=0;f=F[c+8>>2];h=F[c+12>>2];j=F[c+20>>2];e=e-i|0;d=F[c+16>>2];g=e+d|0;j=e>>>0>g>>>0?j+1|0:j;b:{if(f>>>0>>0&(h|0)<=(j|0)|(h|0)<(j|0)){break b}la(i,d+F[c>>2]|0,e);d=F[c+20>>2];g=e;e=e+F[c+16>>2]|0;d=g>>>0>e>>>0?d+1|0:d;F[c+16>>2]=e;F[c+20>>2]=d;f=F[c+8>>2];h=F[c+12>>2];g=e+4|0;d=g>>>0<4?d+1|0:d;if(f>>>0>>0&(d|0)>=(h|0)|(d|0)>(h|0)){break b}d=e+F[c>>2]|0;F[a+20>>2]=G[d|0]|G[d+1|0]<<8|(G[d+2|0]<<16|G[d+3|0]<<24);d=F[c+20>>2];g=d;f=d;e=F[c+16>>2];d=e+4|0;f=d>>>0<4?f+1|0:f;F[c+16>>2]=d;F[c+20>>2]=f;h=F[c+12>>2];if((f|0)>=(h|0)&d>>>0>=I[c+8>>2]|(f|0)>(h|0)){break b}f=G[d+F[c>>2]|0];d=g;e=e+5|0;d=e>>>0<5?d+1|0:d;F[c+16>>2]=e;F[c+20>>2]=d;if(f-1>>>0>29){break b}F[a+4>>2]=f;b=1}return b|0}function Kc(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;j=+J[b>>2];k=+J[b+4>>2];l=+J[b+8>>2];g=N(j)+N(k)+N(l);a:{if(!(g>1e-6)){j=1;k=0;e=0;break a}g=1/g;k=g*k;j=g*j;e=g*l<0}h=F[a+16>>2];l=+(h|0);g=R(j*l+.5);b:{if(N(g)<2147483648){m=~~g;break b}m=-2147483648}f=m>>31;i=(f^m)-f|0;g=R(k*l+.5);c:{if(N(g)<2147483648){f=~~g;break c}f=-2147483648}b=f>>31;b=h-(i+((f^b)-b|0)|0)|0;i=(b|0)>0?b:0;e=e?0-i|0:i;f=f+(b>>31&((f|0)>0?b:0-b|0))|0;d:{if((m|0)>=0){b=e+h|0;a=F[a+8>>2];e=h+f|0;break d}b=f>>31;b=(b^f)-b|0;a=F[a+8>>2];b=(e|0)<0?b:a-b|0;e=(f|0)<0?i:a-i|0}e:{if(!(b|e)){b=a;break e}if(!((a|0)!=(b|0)|e)){b=a;break e}if(!((a|0)!=(e|0)|b)){b=a;break e}if(!((b|0)<=(h|0)|e)){b=(h<<1)-b|0;a=0;break e}if(!((a|0)!=(e|0)|(b|0)>=(h|0))){b=(h<<1)-b|0;break e}if(!((a|0)!=(b|0)|(e|0)>=(h|0))){b=a;a=(h<<1)-e|0;break e}if(b){a=e;break e}b=0;if((e|0)<=(h|0)){a=e;break e}a=(h<<1)-e|0}F[c>>2]=a;F[d>>2]=b}function ye(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0;a:{if(!$c(a,b)){break a}h=a+36|0;g=$[F[F[a>>2]+24>>2]](a)|0;e=F[a+40>>2];d=F[a+36>>2];c=e-d>>2;b:{if(g>>>0>c>>>0){Pb(h,g-c|0);break b}if(c>>>0<=g>>>0){break b}d=d+(g<<2)|0;if((d|0)!=(e|0)){while(1){e=e-4|0;c=F[e>>2];F[e>>2]=0;if(c){$[F[F[c>>2]+4>>2]](c)}if((d|0)!=(e|0)){continue}break}}F[a+40>>2]=d}c=1;if((g|0)<=0){break a}e=0;while(1){c:{c=F[b+20>>2];f=F[b+12>>2];d=F[b+16>>2];if((c|0)>=(f|0)&d>>>0>=I[b+8>>2]|(c|0)>(f|0)){break c}f=G[F[b>>2]+d|0];d=d+1|0;c=d?c:c+1|0;F[b+16>>2]=d;F[b+20>>2]=c;d=$[F[F[a>>2]+48>>2]](a,f)|0;f=e<<2;i=f+F[a+36>>2]|0;c=F[i>>2];F[i>>2]=d;if(c){$[F[F[c>>2]+4>>2]](c)}c=F[F[h>>2]+f>>2];if(!c){break c}if(!(k=c,l=$[F[F[a>>2]+28>>2]](a)|0,m=$[F[F[a>>2]+20>>2]](a,e)|0,j=F[F[c>>2]+8>>2],$[j](k|0,l|0,m|0)|0)){break c}c=1;e=e+1|0;if((g|0)!=(e|0)){continue}break a}break}c=0}return c|0}function Xc(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;g=F[a>>2];c=g+(b>>>3&536870908)|0;F[c>>2]=F[c>>2]|1<>2];e=(b|0)==-1;d=-1;a:{if(e){break a}c=b+1|0;c=(c>>>0)%3|0?c:b-2|0;d=-1;if((c|0)==-1){break a}d=F[F[f>>2]+(c<<2)>>2]}c=F[a+12>>2];h=(d>>>3&536870908)+c|0;F[h>>2]=F[h>>2]|1<>>0)%3|0){e=b-1|0;break e}e=b+2|0;d=-1;if((e|0)==-1){break d}}d=F[F[f>>2]+(e<<2)>>2]}e=(d>>>3&536870908)+c|0;F[e>>2]=F[e>>2]|1<>2]+(b<<2)>>2];if((b|0)==-1){break b}D[a+24|0]=0;a=(b>>>3&536870908)+g|0;F[a>>2]=F[a>>2]|1<>>0)%3|0?a:b-2|0;if((a|0)!=-1){d=F[F[f>>2]+(a<<2)>>2]}a=c+(d>>>3&536870908)|0;F[a>>2]=F[a>>2]|1<>>0)%3|0){b=b-1|0;break g}b=b+2|0;a=-1;if((b|0)==-1){break f}}a=F[F[f>>2]+(b<<2)>>2]}b=1<>>3&536870908)|0;c=F[a>>2];break c}a=c+536870908|0;b=F[c+536870908>>2];c=-2147483648}F[a>>2]=b|c}}function zc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=M(0),f=M(0),g=M(0),h=M(0),i=M(0),j=0,k=M(0),l=M(0),m=M(0),n=M(0),o=0;a:{if(F[c+28>>2]!=9|G[c+24|0]!=3){break a}a=F[a+4>>2];if(a-2>>>0>28){break a}o=1;j=F[c+80>>2];if(!j){break a}k=M(M(2)/M((1<>2]>>2]+F[c+48>>2]|0;a=F[F[b>>2]>>2]+F[b+48>>2]|0;b=0;while(1){g=M(0);l=M(0);m=M(0);e=M(M(M(F[a>>2])*k)+M(-1));f=M(M(M(F[a+4>>2])*k)+M(-1));i=M(M(M(1)-M(N(e)))-M(N(f)));h=M(Q(M(-i),M(0)));n=M(-h);f=M(f+(f>>8;D[c+10|0]=d>>>16;D[c+11|0]=d>>>24;d=(w(l),y(2));D[c+4|0]=d;D[c+5|0]=d>>>8;D[c+6|0]=d>>>16;D[c+7|0]=d>>>24;d=(w(g),y(2));D[c|0]=d;D[c+1|0]=d>>>8;D[c+2|0]=d>>>16;D[c+3|0]=d>>>24;c=c+12|0;b=b+1|0;if((j|0)!=(b|0)){continue}break}}return o|0}function Md(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;g=Z-16|0;Z=g;a:{if(!Sa(1,g+8|0,b)){break a}d=F[b+8>>2];e=F[b+16>>2];f=d-e|0;h=F[g+12>>2];c=d>>>0>>0;d=F[b+20>>2];i=F[b+12>>2]-(c+d|0)|0;c=F[g+8>>2];if((h|0)==(i|0)&c>>>0>f>>>0|h>>>0>i>>>0){break a}d=d+h|0;f=c+e|0;d=f>>>0>>0?d+1|0:d;F[b+16>>2]=f;F[b+20>>2]=d;if((c|0)<=0){break a}b=F[b>>2]+e|0;F[a+40>>2]=b;e=c-1|0;d=b+e|0;f=G[d|0];b:{if(f>>>0<=63){F[a+44>>2]=e;b=G[d|0]&63;break b}c:{switch((f>>>6|0)-1|0){case 0:if(c>>>0<2){break a}c=c-2|0;F[a+44>>2]=c;b=b+c|0;b=G[b+1|0]<<8&16128|G[b|0];break b;case 1:if(c>>>0<3){break a}c=c-3|0;F[a+44>>2]=c;b=b+c|0;b=G[b+1|0]<<8|G[b+2|0]<<16&4128768|G[b|0];break b;default:break c}}c=c-4|0;F[a+44>>2]=c;b=b+c|0;b=(G[b|0]|G[b+1|0]<<8|(G[b+2|0]<<16|G[b+3|0]<<24))&1073741823}F[a+48>>2]=b+16384;j=b>>>0<4177920}Z=g+16|0;return j}function Tf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;a:{a=Z-32|0;Z=a;e=ya(c);if(e>>>0<2147483632){b:{c:{if(e>>>0>=11){g=(e|15)+1|0;f=ka(g);F[a+24>>2]=g|-2147483648;F[a+16>>2]=f;F[a+20>>2]=e;g=e+f|0;break c}D[a+27|0]=e;f=a+16|0;g=e+f|0;if(!e){break b}}la(f,c,e)}D[g|0]=0;F[a+8>>2]=0;F[a>>2]=0;F[a+4>>2]=0;d:{c=Ya(b,a+16|0);if((c|0)==(b+4|0)){break d}b=F[c+28>>2];e=F[c+32>>2];if((b|0)==(e|0)){break d}b=e-b|0;if(b&3){break d}e=b>>>2|0;f=F[a+4>>2];b=F[a>>2];g=f-b>>2;e:{if(e>>>0>g>>>0){qa(a,e-g|0);b=F[a>>2];f=F[a+4>>2];break e}if(e>>>0>=g>>>0){break e}f=(e<<2)+b|0;F[a+4>>2]=f}if((b|0)!=(f|0)){e=b;b=F[c+28>>2];la(e,b,F[c+32>>2]-b|0);break d}ta();v()}b=F[d>>2];if(b){F[d+4>>2]=b;ja(b)}F[d>>2]=F[a>>2];F[d+4>>2]=F[a+4>>2];F[d+8>>2]=F[a+8>>2];if(D[a+27|0]<0){ja(F[a+16>>2])}Z=a+32|0;break a}za();v()}}function ud(a){a=a|0;var b=0,c=0,d=0,e=0;F[a>>2]=8284;d=F[a+368>>2];F[a+368>>2]=0;if(d){e=d-4|0;b=F[e>>2];if(b){c=(b<<4)+d|0;while(1){c=c-16|0;if((d|0)!=(c|0)){continue}break}}ja(e)}td(a+216|0);b=F[a+196>>2];if(b){F[a+200>>2]=b;ja(b)}b=F[a+184>>2];if(b){F[a+188>>2]=b;ja(b)}b=F[a+172>>2];if(b){F[a+176>>2]=b;ja(b)}b=F[a+160>>2];if(b){F[a+164>>2]=b;ja(b)}c=F[a+144>>2];if(c){while(1){b=F[c>>2];ja(c);c=b;if(b){continue}break}}b=F[a+136>>2];F[a+136>>2]=0;if(b){ja(b)}b=F[a+120>>2];if(b){ja(b)}b=F[a+108>>2];if(b){ja(b)}b=F[a+96>>2];if(b){ja(b)}b=F[a+72>>2];if(b){F[a+76>>2]=b;ja(b)}b=F[a+60>>2];if(b){ja(b)}b=F[a+48>>2];if(b){F[a+52>>2]=b;ja(b)}b=F[a+36>>2];if(b){F[a+40>>2]=b;ja(b)}b=F[a+24>>2];if(b){F[a+28>>2]=b;ja(b)}b=F[a+12>>2];if(b){F[a+16>>2]=b;ja(b)}b=F[a+8>>2];F[a+8>>2]=0;if(b){Za(b)}return a|0}function Vf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=Z-16|0;Z=d;a:{e=ya(c);if(e>>>0<2147483632){b:{c:{if(e>>>0>=11){f=(e|15)+1|0;a=ka(f);F[d+8>>2]=f|-2147483648;F[d>>2]=a;F[d+4>>2]=e;f=a+e|0;break c}D[d+11|0]=e;f=d+e|0;a=d;if(!e){break b}}la(a,c,e)}D[f|0]=0;c=G[d+11|0];e=c<<24>>24;b=F[b+4>>2];a=0;d:{if(!b){break d}a=c;c=(e|0)<0;a=c?F[d+4>>2]:a;f=c?F[d>>2]:d;while(1){c=G[b+27|0];g=c<<24>>24<0;c=g?F[b+20>>2]:c;i=c>>>0>>0;e:{f:{g:{h:{i:{j:{h=i?c:a;if(h){g=g?F[b+16>>2]:b+16|0;j=sa(f,g,h);if(j){break j}if(a>>>0>=c>>>0){break i}break e}if(a>>>0>=c>>>0){break h}break e}if((j|0)<0){break e}}c=sa(g,f,h);if(c){break g}}if(i){break f}a=1;break d}if((c|0)<0){break f}a=1;break d}b=b+4|0}b=F[b>>2];if(b){continue}break}a=0}if((e|0)<0){ja(F[d>>2])}Z=d+16|0;break a}za();v()}return a|0}function lc(a,b){var c=0,d=0;c=F[b+8>>2];F[a+4>>2]=F[b+4>>2];F[a+8>>2]=c;F[a+20>>2]=F[b+20>>2];c=F[b+16>>2];F[a+12>>2]=F[b+12>>2];F[a+16>>2]=c;a:{b:{if((a|0)!=(b|0)){c=F[b+28>>2];if(c){d=F[a+24>>2];if(F[a+32>>2]<<5>>>0>>0){if(d){ja(d);F[a+32>>2]=0;F[a+24>>2]=0;F[a+28>>2]=0;c=F[b+28>>2]}if((c|0)<0){break b}c=(c-1>>>5|0)+1|0;d=ka(c<<2);F[a+32>>2]=c;F[a+28>>2]=0;F[a+24>>2]=d;c=F[b+28>>2]}pa(d,F[b+24>>2],(c-1>>>3&536870908)+4|0);c=F[b+28>>2]}else{c=0}F[a+28>>2]=c;c=F[b+40>>2];if(c){d=F[a+36>>2];if(F[a+44>>2]<<5>>>0>>0){if(d){ja(d);F[a+44>>2]=0;F[a+36>>2]=0;F[a+40>>2]=0;c=F[b+40>>2]}if((c|0)<0){break a}c=(c-1>>>5|0)+1|0;d=ka(c<<2);F[a+44>>2]=c;F[a+40>>2]=0;F[a+36>>2]=d;c=F[b+40>>2]}pa(d,F[b+36>>2],(c-1>>>3&536870908)+4|0);b=F[b+40>>2]}else{b=0}F[a+40>>2]=b}return}na();v()}na();v()}function nc(a){var b=0,c=0,d=0;b=F[a+8>>2];d=F[a>>2];a:{if(G[a+12|0]){b:{c:{d:{e:{if((b|0)==-1){break e}c=b+1|0;b=(c>>>0)%3|0?c:b-2|0;if((b|0)==-1){break e}b=F[F[d+12>>2]+(b<<2)>>2];if((b|0)!=-1){break d}}F[a+8>>2]=-1;break c}c=b+1|0;b=(c>>>0)%3|0?c:b-2|0;F[a+8>>2]=b;if((b|0)!=-1){break b}}c=F[a+4>>2];b=-1;f:{if((c|0)==-1){break f}g:{if((c>>>0)%3|0){c=c-1|0;break g}c=c+2|0;b=-1;if((c|0)==-1){break f}}c=F[F[d+12>>2]+(c<<2)>>2];b=-1;if((c|0)==-1){break f}b=c-1|0;if((c>>>0)%3|0){break f}b=c+2|0}D[a+12|0]=0;F[a+8>>2]=b;return}if((b|0)!=F[a+4>>2]){break a}F[a+8>>2]=-1;return}c=-1;h:{if((b|0)==-1){break h}i:{if((b>>>0)%3|0){b=b-1|0;break i}b=b+2|0;c=-1;if((b|0)==-1){break h}}b=F[F[d+12>>2]+(b<<2)>>2];c=-1;if((b|0)==-1){break h}c=b-1|0;if((b>>>0)%3|0){break h}c=b+2|0}F[a+8>>2]=c}}function Od(a){var b=0,c=0,d=0;b=ka(32);D[b+26|0]=0;c=G[1475]|G[1476]<<8;D[b+24|0]=c;D[b+25|0]=c>>>8;c=G[1471]|G[1472]<<8|(G[1473]<<16|G[1474]<<24);d=G[1467]|G[1468]<<8|(G[1469]<<16|G[1470]<<24);D[b+16|0]=d;D[b+17|0]=d>>>8;D[b+18|0]=d>>>16;D[b+19|0]=d>>>24;D[b+20|0]=c;D[b+21|0]=c>>>8;D[b+22|0]=c>>>16;D[b+23|0]=c>>>24;c=G[1463]|G[1464]<<8|(G[1465]<<16|G[1466]<<24);d=G[1459]|G[1460]<<8|(G[1461]<<16|G[1462]<<24);D[b+8|0]=d;D[b+9|0]=d>>>8;D[b+10|0]=d>>>16;D[b+11|0]=d>>>24;D[b+12|0]=c;D[b+13|0]=c>>>8;D[b+14|0]=c>>>16;D[b+15|0]=c>>>24;c=G[1455]|G[1456]<<8|(G[1457]<<16|G[1458]<<24);d=G[1451]|G[1452]<<8|(G[1453]<<16|G[1454]<<24);D[b|0]=d;D[b+1|0]=d>>>8;D[b+2|0]=d>>>16;D[b+3|0]=d>>>24;D[b+4|0]=c;D[b+5|0]=c>>>8;D[b+6|0]=c>>>16;D[b+7|0]=c>>>24;F[a>>2]=-1;ra(a+4|0,b,26);ja(b)}function Kg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;e=F[a+4>>2];d=F[e>>2];a:{b=F[a+12>>2];c=F[b+56>>2]-F[b+52>>2]|0;f=c>>2;b:{if(f>>>0<=F[e+8>>2]-d>>2>>>0){break b}if((c|0)<0){break a}b=F[e+4>>2];c=ka(c);f=c+(f<<2)|0;g=c+(b-d&-4)|0;c=g;if((b|0)!=(d|0)){while(1){c=c-4|0;b=b-4|0;F[c>>2]=F[b>>2];if((b|0)!=(d|0)){continue}break}}F[e+8>>2]=f;F[e+4>>2]=g;F[e>>2]=c;if(!d){break b}ja(d)}e=a+8|0;b=F[a+76>>2];c:{if(b){d=F[b>>2];if((d|0)==F[b+4>>2]){return 1}b=0;while(1){c=od(e,F[(b<<2)+d>>2]);if(!c){break c}f=F[a+76>>2];d=F[f>>2];b=b+1|0;if(b>>>0>2]-d>>2>>>0){continue}break}break c}c=1;a=F[F[a+12>>2]+64>>2];a=F[a+4>>2]-F[a>>2]|0;if(a>>>0<12){break c}a=(a>>2>>>0)/3|0;b=0;while(1){c=od(e,L(b,3));if(!c){break c}b=b+1|0;if((a|0)!=(b|0)){continue}break}}return c|0}na();v()}function Qg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0,g=0;e=F[a+4>>2];d=F[e>>2];a:{b=F[a+12>>2];c=F[b+28>>2]-F[b+24>>2]|0;f=c>>2;b:{if(f>>>0<=F[e+8>>2]-d>>2>>>0){break b}if((c|0)<0){break a}b=F[e+4>>2];c=ka(c);f=c+(f<<2)|0;g=c+(b-d&-4)|0;c=g;if((b|0)!=(d|0)){while(1){c=c-4|0;b=b-4|0;F[c>>2]=F[b>>2];if((b|0)!=(d|0)){continue}break}}F[e+8>>2]=f;F[e+4>>2]=g;F[e>>2]=c;if(!d){break b}ja(d)}e=a+8|0;b=F[a+76>>2];c:{if(b){d=F[b>>2];if((d|0)==F[b+4>>2]){return 1}b=0;while(1){c=pd(e,F[(b<<2)+d>>2]);if(!c){break c}f=F[a+76>>2];d=F[f>>2];b=b+1|0;if(b>>>0>2]-d>>2>>>0){continue}break}break c}c=1;a=F[a+12>>2];a=F[a+4>>2]-F[a>>2]|0;if(a>>>0<12){break c}a=(a>>2>>>0)/3|0;b=0;while(1){c=pd(e,L(b,3));if(!c){break c}b=b+1|0;if((a|0)!=(b|0)){continue}break}}return c|0}na();v()}function pa(a,b,c){var d=0,e=0;a:{if((a|0)==(b|0)){break a}e=a+c|0;if(b-e>>>0<=0-(c<<1)>>>0){return la(a,b,c)}d=(a^b)&3;b:{c:{if(a>>>0>>0){if(d){d=a;break b}if(!(a&3)){d=a;break c}d=a;while(1){if(!c){break a}D[d|0]=G[b|0];b=b+1|0;c=c-1|0;d=d+1|0;if(d&3){continue}break}break c}d:{if(d){break d}if(e&3){while(1){if(!c){break a}c=c-1|0;d=c+a|0;D[d|0]=G[b+c|0];if(d&3){continue}break}}if(c>>>0<=3){break d}while(1){c=c-4|0;F[c+a>>2]=F[b+c>>2];if(c>>>0>3){continue}break}}if(!c){break a}while(1){c=c-1|0;D[c+a|0]=G[b+c|0];if(c){continue}break}break a}if(c>>>0<=3){break b}while(1){F[d>>2]=F[b>>2];b=b+4|0;d=d+4|0;c=c-4|0;if(c>>>0>3){continue}break}}if(!c){break a}while(1){D[d|0]=G[b|0];d=d+1|0;b=b+1|0;c=c-1|0;if(c){continue}break}}return a}function Pb(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;d=F[a+8>>2];c=F[a+4>>2];if(d-c>>2>>>0>=b>>>0){if(b){b=b<<2;c=ma(c,0,b)+b|0}F[a+4>>2]=c;return}a:{b:{c:{g=F[a>>2];f=c-g>>2;e=f+b|0;if(e>>>0<1073741824){d=d-g|0;h=d>>>1|0;e=d>>>0>=2147483644?1073741823:e>>>0>>0?h:e;if(e){if(e>>>0>=1073741824){break c}i=ka(e<<2)}d=(f<<2)+i|0;f=b<<2;b=ma(d,0,f);f=b+f|0;e=(e<<2)+i|0;if((c|0)==(g|0)){break b}while(1){c=c-4|0;b=F[c>>2];F[c>>2]=0;d=d-4|0;F[d>>2]=b;if((c|0)!=(g|0)){continue}break}F[a+8>>2]=e;b=F[a+4>>2];F[a+4>>2]=f;c=F[a>>2];F[a>>2]=d;if((b|0)==(c|0)){break a}while(1){b=b-4|0;a=F[b>>2];F[b>>2]=0;if(a){$[F[F[a>>2]+4>>2]](a)}if((b|0)!=(c|0)){continue}break}break a}na();v()}oa();v()}F[a+8>>2]=e;F[a+4>>2]=f;F[a>>2]=b}if(c){ja(c)}}function Yd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;e=F[b+8>>2];d=F[b+12>>2];g=d;d=F[b+20>>2];k=d;h=F[b+16>>2];c=h+4|0;d=c>>>0<4?d+1|0:d;i=c;a:{if(c>>>0>e>>>0&(d|0)>=(g|0)|(d|0)>(g|0)){break a}j=F[b>>2];c=j+h|0;f=G[c|0]|G[c+1|0]<<8|(G[c+2|0]<<16|G[c+3|0]<<24);F[b+16>>2]=i;F[b+20>>2]=d;c=e;e=k;d=h+8|0;e=d>>>0<8?e+1|0:e;if(c>>>0>>0&(e|0)>=(g|0)|(e|0)>(g|0)){break a}c=i+j|0;c=G[c|0]|G[c+1|0]<<8|(G[c+2|0]<<16|G[c+3|0]<<24);F[b+16>>2]=d;F[b+20>>2]=e;if((c|0)<(f|0)){break a}F[a+16>>2]=c;F[a+12>>2]=f;d=(c>>31)-((f>>31)+(c>>>0>>0)|0)|0;e=c-f|0;if(!d&e>>>0>2147483646|d){break a}d=e+1|0;F[a+20>>2]=d;e=d>>>1|0;F[a+24>>2]=e;F[a+28>>2]=0-e;if(!(d&1)){F[a+24>>2]=e-1}l=Aa(a+112|0,b)}return l|0}function Wc(a,b){var c=0,d=0,e=0,f=0;d=-1;e=-1;f=-1;a:{b:{if((b|0)==-1){break b}e=F[F[F[a+4>>2]+12>>2]+(b<<2)>>2];c=b+1|0;c=(c>>>0)%3|0?c:b-2|0;if((c|0)>=0){f=(c>>>0)/3|0;f=F[(F[F[a>>2]+96>>2]+L(f,12)|0)+(c-L(f,3)<<2)>>2]}c:{if((e|0)==-1){break c}c=((e>>>0)%3|0?-1:2)+e|0;if((c|0)<0){break c}d=(c>>>0)/3|0;d=F[(F[F[a>>2]+96>>2]+L(d,12)|0)+(c-L(d,3)<<2)>>2]}c=-1;if((d|0)!=(f|0)){break a}f=-1;d:{b=((b>>>0)%3|0?-1:2)+b|0;if((b|0)>=0){d=(b>>>0)/3|0;d=F[(F[F[a>>2]+96>>2]+L(d,12)|0)+(b-L(d,3)<<2)>>2];if((e|0)==-1){break b}break d}d=-1;if((e|0)!=-1){break d}break b}b=e+1|0;b=(b>>>0)%3|0?b:e-2|0;if((b|0)<0){break b}c=F[F[a>>2]+96>>2];a=(b>>>0)/3|0;f=F[(c+L(a,12)|0)+(b-L(a,3)<<2)>>2]}c=(d|0)!=(f|0)?-1:e}return c}function Fc(a,b){var c=0,d=0,e=0;c=Z+-64|0;Z=c;d=F[a>>2];e=F[d-4>>2];d=F[d-8>>2];F[c+32>>2]=0;F[c+36>>2]=0;F[c+40>>2]=0;F[c+44>>2]=0;F[c+48>>2]=0;F[c+52>>2]=0;D[c+55|0]=0;D[c+56|0]=0;D[c+57|0]=0;D[c+58|0]=0;D[c+59|0]=0;D[c+60|0]=0;D[c+61|0]=0;D[c+62|0]=0;F[c+24>>2]=0;F[c+28>>2]=0;F[c+20>>2]=0;F[c+16>>2]=11020;F[c+12>>2]=a;F[c+8>>2]=b;a=a+d|0;d=0;a:{if(La(e,b,0)){F[c+56>>2]=1;$[F[F[e>>2]+20>>2]](e,c+8|0,a,a,1,0);d=F[c+32>>2]==1?a:0;break a}$[F[F[e>>2]+24>>2]](e,c+8|0,a,1,0);b:{switch(F[c+44>>2]){case 0:d=F[c+48>>2]==1?F[c+36>>2]==1?F[c+40>>2]==1?F[c+28>>2]:0:0:0;break a;case 1:break b;default:break a}}if(F[c+32>>2]!=1){if(F[c+48>>2]|F[c+36>>2]!=1|F[c+40>>2]!=1){break a}}d=F[c+24>>2]}Z=c- -64|0;return d}function ma(a,b,c){var d=0,e=0,f=0,g=0;a:{if(!c){break a}D[a|0]=b;d=a+c|0;D[d-1|0]=b;if(c>>>0<3){break a}D[a+2|0]=b;D[a+1|0]=b;D[d-3|0]=b;D[d-2|0]=b;if(c>>>0<7){break a}D[a+3|0]=b;D[d-4|0]=b;if(c>>>0<9){break a}d=0-a&3;e=d+a|0;b=L(b&255,16843009);F[e>>2]=b;d=c-d&-4;c=d+e|0;F[c-4>>2]=b;if(d>>>0<9){break a}F[e+8>>2]=b;F[e+4>>2]=b;F[c-8>>2]=b;F[c-12>>2]=b;if(d>>>0<25){break a}F[e+24>>2]=b;F[e+20>>2]=b;F[e+16>>2]=b;F[e+12>>2]=b;F[c-16>>2]=b;F[c-20>>2]=b;F[c-24>>2]=b;F[c-28>>2]=b;g=e&4|24;c=d-g|0;if(c>>>0<32){break a}d=ki(b,0,1,1);f=_;b=e+g|0;while(1){F[b+24>>2]=d;F[b+28>>2]=f;F[b+16>>2]=d;F[b+20>>2]=f;F[b+8>>2]=d;F[b+12>>2]=f;F[b>>2]=d;F[b+4>>2]=f;b=b+32|0;c=c-32|0;if(c>>>0>31){continue}break}}return a}function ie(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;d=F[b+8>>2];e=F[b+12>>2];g=e;e=F[b+20>>2];k=e;h=F[b+16>>2];c=h+4|0;e=c>>>0<4?e+1|0:e;i=c;a:{if(c>>>0>d>>>0&(e|0)>=(g|0)|(e|0)>(g|0)){break a}j=F[b>>2];c=j+h|0;f=G[c|0]|G[c+1|0]<<8|(G[c+2|0]<<16|G[c+3|0]<<24);F[b+16>>2]=i;F[b+20>>2]=e;c=d;d=k;e=h+8|0;d=e>>>0<8?d+1|0:d;if(c>>>0>>0&(d|0)>=(g|0)|(d|0)>(g|0)){break a}c=i+j|0;c=G[c|0]|G[c+1|0]<<8|(G[c+2|0]<<16|G[c+3|0]<<24);F[b+16>>2]=e;F[b+20>>2]=d;if((c|0)<(f|0)){break a}F[a+16>>2]=c;F[a+12>>2]=f;d=(c>>31)-((f>>31)+(c>>>0>>0)|0)|0;b=c-f|0;if(!d&b>>>0>2147483646|d){break a}l=1;d=b+1|0;F[a+20>>2]=d;b=d>>>1|0;F[a+24>>2]=b;F[a+28>>2]=0-b;if(d&1){break a}F[a+24>>2]=b-1}return l|0}function Uc(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;d=Z-16|0;Z=d;f=F[a+24>>2];k=F[a+28>>2];a:{if((f|0)!=(k|0)){while(1){F[d+8>>2]=0;F[d>>2]=0;F[d+4>>2]=0;a=Sc(F[f>>2],b,d);g=G[d+11|0];h=g<<24>>24;i=3;b:{c:{d:{if(!a){break d}i=0;a=G[c+11|0];e=a<<24>>24;j=(h|0)<0?F[d+4>>2]:g;if((j|0)!=(((e|0)<0?F[c+4>>2]:a)|0)){break d}a=(e|0)<0?F[c>>2]:c;e=(h|0)<0;e:{if(!e){e=d;if(!h){break e}while(1){if(G[e|0]!=G[a|0]){break d}a=a+1|0;e=e+1|0;g=g-1|0;if(g){continue}break}break e}if(!j){break e}if(sa(e?F[d>>2]:d,a,j)){break c}}l=F[f>>2];i=1}if((h|0)>=0){break b}}ja(F[d>>2])}f:{switch(i|0){case 0:case 3:break f;default:break a}}f=f+4|0;if((k|0)!=(f|0)){continue}break}}l=0}Z=d+16|0;return l}function gb(a,b,c){var d=0,e=0,f=0,g=0,h=0,i=0;f=c-b|0;h=f>>2;d=F[a+8>>2];e=F[a>>2];if(h>>>0<=d-e>>2>>>0){d=F[a+4>>2];g=d-e|0;f=g+b|0;i=g>>2;g=i>>>0>>0?f:c;if((g|0)!=(b|0)){while(1){F[e>>2]=F[b>>2];e=e+4|0;b=b+4|0;if((g|0)!=(b|0)){continue}break}}if(h>>>0>i>>>0){if((c|0)!=(g|0)){while(1){F[d>>2]=F[f>>2];d=d+4|0;f=f+4|0;if((f|0)!=(c|0)){continue}break}}F[a+4>>2]=d;return}F[a+4>>2]=e;return}if(e){F[a+4>>2]=e;ja(e);F[a+8>>2]=0;F[a>>2]=0;F[a+4>>2]=0;d=0}a:{if((f|0)<0){break a}e=d>>>1|0;d=d>>>0>=2147483644?1073741823:e>>>0>h>>>0?e:h;if(d>>>0>=1073741824){break a}e=d<<2;d=ka(e);F[a>>2]=d;F[a+8>>2]=d+e;if((b|0)!=(c|0)){c=b;b=(f-4&-4)+4|0;d=la(d,c,b)+b|0}F[a+4>>2]=d;return}na();v()}function Ea(a,b,c){var d=0,e=0,f=0;e=Z-16|0;Z=e;F[a+4>>2]=0;a:{b:{if(!b){break b}f=F[a+8>>2];d=f<<5;c:{if(d>>>0>=b>>>0){F[a+4>>2]=b;break c}F[e+8>>2]=0;F[e>>2]=0;F[e+4>>2]=0;if((b|0)<0){break a}if(d>>>0<=1073741822){f=f<<6;d=b+31&-32;d=d>>>0>>0?f:d}else{d=2147483647}$a(e,d);f=F[a>>2];F[a>>2]=F[e>>2];F[e>>2]=f;d=F[a+4>>2];F[a+4>>2]=b;F[e+4>>2]=d;d=F[a+8>>2];F[a+8>>2]=F[e+8>>2];F[e+8>>2]=d;if(!f){break c}ja(f)}d=b>>>5|0;a=F[a>>2];if(G[c|0]){if(b>>>0>=32){ma(a,255,d<<2)}if((b&-32)==(b|0)){break b}a=a+(d<<2)|0;F[a>>2]=F[a>>2]|-1>>>32-(b&31);break b}if(b>>>0>=32){ma(a,0,d<<2)}if((b&-32)==(b|0)){break b}a=a+(d<<2)|0;F[a>>2]=F[a>>2]&(-1>>>32-(b&31)^-1)}Z=e+16|0;return}na();v()}function If(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=Z-32|0;Z=e;a:{b:{f=ya(c);if(f>>>0<2147483632){c:{d:{if(f>>>0>=11){a=(f|15)+1|0;g=ka(a);F[e+24>>2]=a|-2147483648;F[e+16>>2]=g;F[e+20>>2]=f;a=f+g|0;break d}D[e+27|0]=f;g=e+16|0;a=f+g|0;if(!f){break c}}la(g,c,f)}D[a|0]=0;c=ya(d);if(c>>>0>=2147483632){break b}e:{f:{if(c>>>0>=11){f=(c|15)+1|0;a=ka(f);F[e+8>>2]=f|-2147483648;F[e>>2]=a;F[e+4>>2]=c;g=a+c|0;break f}D[e+11|0]=c;g=c+e|0;a=e;if(!c){break e}}la(a,d,c)}D[g|0]=0;c=F[b+4>>2];a=-1;g:{if(!c){break g}c=Uc(c,e+16|0,e);a=-1;if(!c){break g}a=Pc(b,F[c+24>>2])}if(D[e+11|0]<0){ja(F[e>>2])}if(D[e+27|0]<0){ja(F[e+16>>2])}Z=e+32|0;break a}za();v()}za();v()}return a|0}function se(a,b){a=a|0;b=b|0;a=0;a:{switch(b|0){case 0:a=ka(20);F[a+12>>2]=-1;F[a+16>>2]=0;F[a+4>>2]=0;F[a+8>>2]=0;F[a>>2]=1920;return a|0;case 1:a=ka(24);F[a+12>>2]=-1;F[a+16>>2]=0;F[a+4>>2]=0;F[a+8>>2]=0;F[a>>2]=1920;F[a+20>>2]=0;F[a>>2]=2136;return a|0;case 2:a=ka(48);F[a+12>>2]=-1;F[a+16>>2]=0;F[a+4>>2]=0;F[a+8>>2]=0;F[a>>2]=1920;F[a+20>>2]=0;F[a>>2]=2136;F[a+24>>2]=1624;F[a>>2]=7948;F[a+32>>2]=0;F[a+36>>2]=0;F[a+28>>2]=-1;F[a+40>>2]=0;F[a+44>>2]=0;return a|0;case 3:a=ka(32);F[a+12>>2]=-1;F[a+16>>2]=0;F[a+4>>2]=0;F[a+8>>2]=0;F[a>>2]=1920;F[a+20>>2]=0;F[a>>2]=2136;F[a+24>>2]=1032;F[a>>2]=5812;F[a+28>>2]=-1;break;default:break a}}return a|0}function Be(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;f=F[b>>2];b=F[b+4>>2];d=F[F[a+8>>2]+40>>2];j=d;m=ka((d|0)<0?-1:d);i=b-f|0;e=1;a:{if((i|0)<4){break a}b=0;g=F[c+16>>2];k=d;f=g+d|0;d=0+F[c+20>>2]|0;d=f>>>0>>0?d+1|0:d;h=F[c+12>>2];e=0;if(I[c+8>>2]>>0&(d|0)>=(h|0)|(d|0)>(h|0)){break a}e=i>>2;i=(e|0)<=1?1:e;while(1){b:{g=la(m,F[c>>2]+g|0,j);F[c+16>>2]=f;F[c+20>>2]=d;la(F[F[F[a+8>>2]+64>>2]>>2]+b|0,g,j);l=l+1|0;if((i|0)==(l|0)){break b}b=b+j|0;d=n+F[c+20>>2]|0;g=F[c+16>>2];f=k+g|0;d=f>>>0>>0?d+1|0:d;h=F[c+12>>2];if((d|0)<=(h|0)&I[c+8>>2]>=f>>>0|(d|0)<(h|0)){continue}}break}e=(e|0)<=(l|0)}ja(m);return e|0}function mh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;F[b>>2]=1;f=b+8|0;c=F[b+8>>2];d=F[b+12>>2]-c|0;if(d>>>0<=4294967291){Db(f,d+4|0);c=F[f>>2]}c=c+d|0;d=F[a+4>>2];D[c|0]=d;D[c+1|0]=d>>>8;D[c+2|0]=d>>>16;D[c+3|0]=d>>>24;c=F[a+8>>2];if((c|0)!=F[a+12>>2]){d=0;while(1){g=(d<<2)+c|0;c=F[b+8>>2];e=F[b+12>>2]-c|0;if(e>>>0<=4294967291){Db(f,e+4|0);c=F[f>>2]}c=c+e|0;e=F[g>>2];D[c|0]=e;D[c+1|0]=e>>>8;D[c+2|0]=e>>>16;D[c+3|0]=e>>>24;d=d+1|0;c=F[a+8>>2];if(d>>>0>2]-c>>2>>>0){continue}break}}c=F[b+12>>2];b=F[b+8>>2];c=c-b|0;if(c>>>0<=4294967291){Db(f,c+4|0);b=F[f>>2]}b=b+c|0;a=F[a+20>>2];D[b|0]=a;D[b+1|0]=a>>>8;D[b+2|0]=a>>>16;D[b+3|0]=a>>>24}function mb(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;c=F[a+4>>2];if((c|0)!=F[a+8>>2]){e=F[b+4>>2];F[c>>2]=F[b>>2];F[c+4>>2]=e;F[c+8>>2]=F[b+8>>2];F[a+4>>2]=c+12;return}a:{g=F[a>>2];d=(c-g|0)/12|0;e=d+1|0;if(e>>>0<357913942){f=d<<1;f=d>>>0>=178956970?357913941:e>>>0>>0?f:e;if(f){if(f>>>0>=357913942){break a}e=ka(L(f,12))}else{e=0}d=e+L(d,12)|0;h=F[b+4>>2];F[d>>2]=F[b>>2];F[d+4>>2]=h;F[d+8>>2]=F[b+8>>2];b=d+12|0;if((c|0)!=(g|0)){while(1){c=c-12|0;h=F[c+4>>2];d=d-12|0;F[d>>2]=F[c>>2];F[d+4>>2]=h;F[d+8>>2]=F[c+8>>2];if((c|0)!=(g|0)){continue}break}c=F[a>>2]}F[a+8>>2]=e+L(f,12);F[a+4>>2]=b;F[a>>2]=d;if(c){ja(c)}return}na();v()}oa();v()}function ne(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0,j=0,k=0,l=0;h=F[c+12>>2];f=h;e=F[c+20>>2];i=F[c+8>>2];g=F[c+16>>2];a:{if((f|0)<=(e|0)&i>>>0<=g>>>0|(e|0)>(f|0)){break a}j=F[c>>2];k=D[j+g|0];d=e;f=g+1|0;d=f?d:d+1|0;F[c+16>>2]=f;F[c+20>>2]=d;b:{if((k|0)==-2){break b}if((d|0)>=(h|0)&f>>>0>=i>>>0|(d|0)>(h|0)){break a}d=D[f+j|0];g=g+2|0;e=g>>>0<2?e+1|0:e;F[c+16>>2]=g;F[c+20>>2]=e;if((d-4&255)>>>0<251){break a}e=$[F[F[a>>2]+40>>2]](a,k,d)|0;d=F[a+20>>2];F[a+20>>2]=e;if(!d){break b}$[F[F[d>>2]+4>>2]](d)}d=F[a+20>>2];if(d){if(!($[F[F[a>>2]+28>>2]](a,d)|0)){break a}}l=$[F[F[a>>2]+36>>2]](a,b,c)|0}return l|0}function Bf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0;a:{if(I[b+80>>2]>65535){break a}a=F[b+100>>2];b=F[b+96>>2];e=(a-b|0)/12|0;f=L(e,6);g=(f|0)==(c|0);if((a|0)==(b|0)|(c|0)!=(f|0)){break a}g=1;c=e>>>0<=1?1:e;i=c&1;a=0;if(e>>>0>=2){j=c&-2;c=0;while(1){f=L(a,6);h=f+d|0;e=b+L(a,12)|0;E[h>>1]=F[e>>2];E[(f|2)+d>>1]=F[e+4>>2];E[h+4>>1]=F[e+8>>2];f=a|1;e=L(f,6)+d|0;f=b+L(f,12)|0;E[e>>1]=F[f>>2];E[e+2>>1]=F[f+4>>2];E[e+4>>1]=F[f+8>>2];a=a+2|0;c=c+2|0;if((j|0)!=(c|0)){continue}break}}if(!i){break a}c=L(a,6)+d|0;a=b+L(a,12)|0;E[c>>1]=F[a>>2];E[c+2>>1]=F[a+4>>2];E[c+4>>1]=F[a+8>>2]}return g|0}function Gh(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;var g=0,h=0,i=0,j=0,k=0,l=0,m=0,n=0;f=Z-32|0;Z=f;h=e>>>0>1073741823?-1:e<<2;h=ma(ka(h),0,h);g=F[b>>2];i=F[b+4>>2];k=F[h+4>>2];F[f+16>>2]=F[h>>2];F[f+20>>2]=k;F[f+8>>2]=g;F[f+12>>2]=i;i=a+8|0;Jb(f+24|0,i,f+16|0,f+8|0);F[c>>2]=F[f+24>>2];F[c+4>>2]=F[f+28>>2];if((d|0)>(e|0)){k=0-e<<2;a=e;while(1){g=a<<2;j=g+b|0;m=F[j>>2];j=F[j+4>>2];g=c+g|0;l=g+k|0;n=F[l+4>>2];F[f+16>>2]=F[l>>2];F[f+20>>2]=n;F[f+8>>2]=m;F[f+12>>2]=j;Jb(f+24|0,i,f+16|0,f+8|0);F[g>>2]=F[f+24>>2];F[g+4>>2]=F[f+28>>2];a=a+e|0;if((d|0)>(a|0)){continue}break}}ja(h);Z=f+32|0;return 1}function Sf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;a=Z-32|0;Z=a;F[a+24>>2]=0;F[a+28>>2]=0;a:{d=ya(c);if(d>>>0<2147483632){b:{c:{if(d>>>0>=11){e=(d|15)+1|0;f=ka(e);F[a+16>>2]=e|-2147483648;F[a+8>>2]=f;F[a+12>>2]=d;e=d+f|0;break c}D[a+19|0]=d;f=a+8|0;e=f+d|0;if(!d){break b}}la(f,c,d)}D[e|0]=0;c=b+4|0;b=Ya(b,a+8|0);d:{if((c|0)==(b|0)){break d}c=F[b+32>>2];b=F[b+28>>2];if((c-b|0)!=8){break d}c=G[b+4|0]|G[b+5|0]<<8|(G[b+6|0]<<16|G[b+7|0]<<24);F[a+24>>2]=G[b|0]|G[b+1|0]<<8|(G[b+2|0]<<16|G[b+3|0]<<24);F[a+28>>2]=c}g=K[a+24>>3];if(D[a+19|0]<0){ja(F[a+8>>2])}Z=a+32|0;break a}za();v()}return+g}function Gc(a,b,c,d,e,f,g){var h=0,i=0,j=0;h=Z-16|0;Z=h;if((b^-1)+2147483631>>>0>=c>>>0){if(G[a+11|0]>>>7|0){i=F[a>>2]}else{i=a}if(b>>>0<1073741799){F[h+12>>2]=b<<1;F[h>>2]=b+c;c=Z-16|0;Z=c;Z=c+16|0;c=h+12|0;c=F[(I[h>>2]>2]?c:h)>>2];if(c>>>0>=11){j=c+16&-16;c=j-1|0;c=(c|0)==11?j:c}else{c=10}c=c+1|0}else{c=2147483631}sb(h,c);c=F[h>>2];if(f){db(c,g,f)}g=d-e|0;if((d|0)!=(e|0)){db(c+f|0,e+i|0,g)}if((b|0)!=10){ja(i)}F[a>>2]=c;F[a+8>>2]=F[a+8>>2]&-2147483648|F[h+4>>2]&2147483647;F[a+8>>2]=F[a+8>>2]|-2147483648;b=a;a=f+g|0;F[b+4>>2]=a;D[h+12|0]=0;D[a+c|0]=G[h+12|0];Z=h+16|0;return}za();v()}function _c(a,b,c){var d=0,e=0,f=0,g=0;a:{f=b>>>0<1431655766&(b|c)>=0;b:{if(!f){break b}b=L(b,3);Xb(a,b,10224);Xb(a+12|0,b,10228);d=F[a+24>>2];c:{if(F[a+32>>2]-d>>2>>>0>=c>>>0){break c}if(c>>>0>=1073741824){break a}b=F[a+28>>2];e=c<<2;c=ka(e);e=c+e|0;g=c+(b-d&-4)|0;c=g;if((b|0)!=(d|0)){while(1){c=c-4|0;b=b-4|0;F[c>>2]=F[b>>2];if((b|0)!=(d|0)){continue}break}}F[a+32>>2]=e;F[a+28>>2]=g;F[a+24>>2]=c;if(!d){break c}ja(d)}F[a+80>>2]=0;F[a+84>>2]=0;b=F[a+76>>2];F[a+76>>2]=0;if(b){ja(b)}F[a+68>>2]=0;F[a+72>>2]=0;b=a- -64|0;a=F[b>>2];F[b>>2]=0;if(!a){break b}ja(a)}return f}na();v()}function yd(a){var b=0,c=0,d=0,e=0,f=0;f=1;c=F[a+140>>2];a:{if((c|0)<=0){break a}b=c<<4;d=ka(c>>>0>268435455?-1:b|4);F[d>>2]=c;d=d+4|0;c=d+b|0;b=d;while(1){F[b>>2]=0;F[b+4>>2]=0;D[b+5|0]=0;D[b+6|0]=0;D[b+7|0]=0;D[b+8|0]=0;D[b+9|0]=0;D[b+10|0]=0;D[b+11|0]=0;D[b+12|0]=0;b=b+16|0;if((c|0)!=(b|0)){continue}break}e=F[a+136>>2];F[a+136>>2]=d;if(e){c=e-4|0;d=F[c>>2];if(d){b=(d<<4)+e|0;while(1){b=b-16|0;if((e|0)!=(b|0)){continue}break}}ja(c)}b=0;if(F[a+140>>2]<=0){break a}while(1){f=Aa(F[a+136>>2]+(b<<4)|0,a);if(!f){break a}b=b+1|0;if((b|0)>2]){continue}break}}return f} +function Sd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;d=F[b+8>>2];c=F[b+12>>2];g=c;c=F[b+20>>2];i=c;h=F[b+16>>2];f=h+4|0;c=f>>>0<4?c+1|0:c;a:{if(d>>>0>>0&(c|0)>=(g|0)|(c|0)>(g|0)){break a}e=h+F[b>>2]|0;e=G[e|0]|G[e+1|0]<<8|(G[e+2|0]<<16|G[e+3|0]<<24);F[b+16>>2]=f;F[b+20>>2]=c;f=d;d=i;c=h+8|0;d=c>>>0<8?d+1|0:d;if(c>>>0>f>>>0&(d|0)>=(g|0)|(d|0)>(g|0)){break a}F[b+16>>2]=c;F[b+20>>2]=d;if(!(e&1)){break a}d=O(e)^31;if(d-1>>>0>28){break a}F[a+8>>2]=d+1;d=-2<>2]=c;F[a+12>>2]=d^-1;F[a+24>>2]=c>>1;J[a+20>>2]=M(2)/M(c|0);j=Aa(a+96|0,b)}return j|0}function bc(a,b){var c=0;c=F[b+4>>2];F[a>>2]=F[b>>2];F[a+4>>2]=c;c=F[b+60>>2];F[a+56>>2]=F[b+56>>2];F[a+60>>2]=c;c=F[b+52>>2];F[a+48>>2]=F[b+48>>2];F[a+52>>2]=c;c=F[b+44>>2];F[a+40>>2]=F[b+40>>2];F[a+44>>2]=c;c=F[b+36>>2];F[a+32>>2]=F[b+32>>2];F[a+36>>2]=c;c=F[b+28>>2];F[a+24>>2]=F[b+24>>2];F[a+28>>2]=c;c=F[b+20>>2];F[a+16>>2]=F[b+16>>2];F[a+20>>2]=c;c=F[b+12>>2];F[a+8>>2]=F[b+8>>2];F[a+12>>2]=c;F[a+88>>2]=0;F[a+64>>2]=0;F[a+68>>2]=0;F[a+72>>2]=0;F[a+76>>2]=0;D[a+77|0]=0;D[a+78|0]=0;D[a+79|0]=0;D[a+80|0]=0;D[a+81|0]=0;D[a+82|0]=0;D[a+83|0]=0;D[a+84|0]=0;return a}function ac(a,b){var c=0,d=0,e=0,f=0,g=0;a:{if(F[a+64>>2]){break a}c=ka(32);F[c+16>>2]=0;F[c+20>>2]=0;F[c+8>>2]=0;F[c>>2]=0;F[c+4>>2]=0;F[c+24>>2]=0;F[c+28>>2]=0;d=F[a+64>>2];F[a+64>>2]=c;if(!d){break a}c=F[d>>2];if(c){F[d+4>>2]=c;ja(c)}ja(d)}d=F[a+64>>2];c=F[a+28>>2]-1|0;if(c>>>0<=10){c=F[(c<<2)+10148>>2]}else{c=-1}c=L(c,G[a+24|0]);f=c>>31;g=md(d,0,ki(c,f,b,0),_);if(g){d=F[a+64>>2];F[a>>2]=d;e=F[d+20>>2];F[a+8>>2]=F[d+16>>2];F[a+12>>2]=e;e=F[d+24>>2];d=F[d+28>>2];F[a+48>>2]=0;F[a+52>>2]=0;F[a+40>>2]=c;F[a+44>>2]=f;F[a+16>>2]=e;F[a+20>>2]=d;F[a+80>>2]=b}return g}function Af(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0,h=0,i=0,j=0,k=0;a=F[b+100>>2];b=F[b+96>>2];h=a-b|0;a:{if((h|0)!=(c|0)|(a|0)==(b|0)){break a}g=(c|0)/12|0;e=g>>>0<=1?1:g;j=e&1;a=0;if(g>>>0>=2){k=e&-2;g=0;while(1){e=L(a,12);i=e+d|0;f=b+e|0;F[i>>2]=F[f>>2];F[(e|4)+d>>2]=F[f+4>>2];F[i+8>>2]=F[f+8>>2];f=L(a|1,12);e=f+d|0;f=b+f|0;F[e>>2]=F[f>>2];F[e+4>>2]=F[f+4>>2];F[e+8>>2]=F[f+8>>2];a=a+2|0;g=g+2|0;if((k|0)!=(g|0)){continue}break}}if(!j){break a}e=d;d=L(a,12);a=e+d|0;b=b+d|0;F[a>>2]=F[b>>2];F[a+4>>2]=F[b+4>>2];F[a+8>>2]=F[b+8>>2]}return(c|0)==(h|0)|0}function Kh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0,i=0,j=0;c=F[b+8>>2];d=F[b+12>>2];g=d;d=F[b+20>>2];i=d;h=F[b+16>>2];f=h+4|0;d=f>>>0<4?d+1|0:d;a:{if(c>>>0>>0&(d|0)>=(g|0)|(d|0)>(g|0)){break a}e=h+F[b>>2]|0;e=G[e|0]|G[e+1|0]<<8|(G[e+2|0]<<16|G[e+3|0]<<24);F[b+16>>2]=f;F[b+20>>2]=d;f=c;c=i;d=h+8|0;c=d>>>0<8?c+1|0:c;if(d>>>0>f>>>0&(c|0)>=(g|0)|(c|0)>(g|0)){break a}F[b+16>>2]=d;F[b+20>>2]=c;if(!(e&1)){break a}b=O(e)^31;if(b-1>>>0>28){break a}j=1;F[a+8>>2]=b+1;b=-2<>2]=c;F[a+12>>2]=b^-1;F[a+24>>2]=c>>1;J[a+20>>2]=M(2)/M(c|0)}return j|0}function Ya(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;f=a+4|0;a=F[a+4>>2];a:{b:{if(!a){break b}d=G[b+11|0];c=d<<24>>24<0;g=c?F[b>>2]:b;d=c?F[b+4>>2]:d;b=f;while(1){e=G[a+27|0];c=e<<24>>24<0;e=c?F[a+20>>2]:e;h=e>>>0>d>>>0;i=h?d:e;c:{if(i){c=sa(c?F[a+16>>2]:a+16|0,g,i);if(c){break c}}c=d>>>0>e>>>0?-1:h}c=(c|0)<0;b=c?b:a;a=F[(c?a+4|0:a)>>2];if(a){continue}break}if((b|0)==(f|0)){break b}c=G[b+27|0];a=c<<24>>24<0;d:{c=a?F[b+20>>2]:c;e=c>>>0>>0?c:d;if(e){a=sa(g,a?F[b+16>>2]:b+16|0,e);if(a){break d}}if(c>>>0>d>>>0){break b}break a}if((a|0)>=0){break a}}b=f}return b}function Oe(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;if(La(a,F[b+8>>2],e)){if(!(F[b+28>>2]==1|F[b+4>>2]!=(c|0))){F[b+28>>2]=d}return}a:{if(La(a,F[b>>2],e)){if(!(F[b+16>>2]!=(c|0)&F[b+20>>2]!=(c|0))){if((d|0)!=1){break a}F[b+32>>2]=1;return}F[b+32>>2]=d;b:{if(F[b+44>>2]==4){break b}E[b+52>>1]=0;a=F[a+8>>2];$[F[F[a>>2]+20>>2]](a,b,c,c,1,e);if(G[b+53|0]){F[b+44>>2]=3;if(!G[b+52|0]){break b}break a}F[b+44>>2]=4}F[b+20>>2]=c;F[b+40>>2]=F[b+40>>2]+1;if(F[b+36>>2]!=1|F[b+24>>2]!=2){break a}D[b+54|0]=1;return}a=F[a+8>>2];$[F[F[a>>2]+24>>2]](a,b,c,d,e)}}function Ig(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;f=ka(64);c=ka(12);F[c+8>>2]=F[F[a+4>>2]+80>>2];F[c>>2]=9968;F[c+4>>2]=0;f=yc(f,c);a:{b:{if((b|0)<0){c=f;break b}h=a+8|0;c=F[a+12>>2];e=F[a+8>>2];g=c-e>>2;c:{if((g|0)>(b|0)){break c}d=b+1|0;if(b>>>0>=g>>>0){Pb(h,d-g|0);break c}if(d>>>0>=g>>>0){break c}e=e+(d<<2)|0;if((e|0)!=(c|0)){while(1){c=c-4|0;d=F[c>>2];F[c>>2]=0;if(d){$[F[F[d>>2]+4>>2]](d)}if((c|0)!=(e|0)){continue}break}}F[a+12>>2]=e}a=F[h>>2]+(b<<2)|0;c=F[a>>2];F[a>>2]=f;if(!c){break a}}$[F[F[c>>2]+4>>2]](c)}return(b^-1)>>>31|0}function we(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;c=F[a+60>>2];a:{if(!c){break a}F[c+4>>2]=a+48;if(!($[F[F[c>>2]+12>>2]](c)|0)){break a}b:{c=$[F[F[a>>2]+24>>2]](a)|0;if((c|0)<=0){break b}while(1){c:{f=F[($[F[F[a>>2]+28>>2]](a)|0)+4>>2];g=$[F[F[a>>2]+20>>2]](a,d)|0;e=F[a+60>>2];if(!($[F[F[e>>2]+8>>2]](e,F[F[f+8>>2]+(g<<2)>>2])|0)){break c}d=d+1|0;if((c|0)!=(d|0)){continue}break b}break}return 0}d=0;if(!($[F[F[a>>2]+36>>2]](a,b)|0)){break a}if(!($[F[F[a>>2]+40>>2]](a,b)|0)){break a}d=$[F[F[a>>2]+44>>2]](a)|0}return d|0}function Id(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=F[a+216>>2];if((c|0)!=F[a+220>>2]){while(1){a:{c=F[L(e,144)+c>>2];if((c|0)<0){break a}d=F[a+4>>2];f=F[d+8>>2];if((c|0)>=F[d+12>>2]-f>>2){break a}d=0;c=F[(c<<2)+f>>2];if(($[F[F[c>>2]+24>>2]](c)|0)<=0){break a}while(1){if(($[F[F[c>>2]+20>>2]](c,d)|0)!=(b|0)){d=d+1|0;if(($[F[F[c>>2]+24>>2]](c)|0)>(d|0)){continue}break a}break}a=F[a+216>>2]+L(e,144)|0;return(G[a+100|0]?a+4|0:0)|0}e=e+1|0;c=F[a+216>>2];if(e>>>0<(F[a+220>>2]-c|0)/144>>>0){continue}break}}return 0}function nd(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;c=F[a+8>>2];d=F[a+4>>2];if(c-d>>2>>>0>=b>>>0){if(b){b=b<<2;d=ma(d,0,b)+b|0}F[a+4>>2]=d;return}a:{f=F[a>>2];g=d-f>>2;e=g+b|0;if(e>>>0<1073741824){c=c-f|0;h=c>>>1|0;e=c>>>0>=2147483644?1073741823:e>>>0>>0?h:e;if(e){if(e>>>0>=1073741824){break a}i=ka(e<<2)}c=(g<<2)+i|0;b=b<<2;b=ma(c,0,b)+b|0;if((d|0)!=(f|0)){while(1){c=c-4|0;d=d-4|0;F[c>>2]=F[d>>2];if((d|0)!=(f|0)){continue}break}}F[a+8>>2]=(e<<2)+i;F[a+4>>2]=b;F[a>>2]=c;if(f){ja(f)}return}na();v()}oa();v()}function bb(a){var b=0,c=0,d=0,e=0,f=0;d=F[a+8>>2];a:{if(G[d+84|0]){break a}b=F[a+16>>2];if(!b|!G[b+84|0]){break a}c=F[d+72>>2];e=F[d+68>>2];D[b+84|0]=0;c=c-e>>2;f=F[b+68>>2];e=F[b+72>>2]-f>>2;b:{if(c>>>0>e>>>0){ab(b+68|0,c-e|0,2004);d=F[a+8>>2];break b}if(c>>>0>=e>>>0){break b}F[b+72>>2]=f+(c<<2)}if(G[d+84|0]){break a}c=F[d+68>>2];if((c|0)==F[d+72>>2]){break a}e=F[F[a+16>>2]+68>>2];b=0;while(1){f=b<<2;F[f+e>>2]=F[c+f>>2];b=b+1|0;c=F[d+68>>2];if(b>>>0>2]-c>>2>>>0){continue}break}}return F[a+16>>2]}function Lf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;e=Z+-64|0;Z=e;f=Ja(e+8|0);F[f+16>>2]=0;F[f+20>>2]=0;F[f>>2]=b;F[f+8>>2]=c;F[f+12>>2]=0;b=e+48|0;Pd(b,a,f,d);F[a+24>>2]=F[e+48>>2];f=a+24|0;a:{if((f|0)==(b|0)){break a}b=a+28|0;c=e+48|4;g=G[e+63|0];d=g<<24>>24;if(D[a+39|0]>=0){if((d|0)>=0){a=F[c+4>>2];F[b>>2]=F[c>>2];F[b+4>>2]=a;F[b+8>>2]=F[c+8>>2];break a}qb(b,F[e+52>>2],F[e+56>>2]);break a}a=(d|0)<0;rb(b,a?F[e+52>>2]:c,a?F[e+56>>2]:g)}if(D[e+63|0]<0){ja(F[e+52>>2])}Z=e- -64|0;return f|0}function Jf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;a=Z-32|0;Z=a;a:{d=ya(c);if(d>>>0<2147483632){b:{c:{if(d>>>0>=11){e=(d|15)+1|0;f=ka(e);F[a+24>>2]=e|-2147483648;F[a+16>>2]=f;F[a+20>>2]=d;e=d+f|0;break c}D[a+27|0]=d;f=a+16|0;e=f+d|0;if(!d){break b}}la(f,c,d)}D[e|0]=0;D[a+4|0]=0;F[a>>2]=1701667182;D[a+11|0]=4;d=F[b+4>>2];c=-1;d:{if(!d){break d}d=Uc(d,a,a+16|0);c=-1;if(!d){break d}c=Pc(b,F[d+24>>2])}b=c;if(D[a+11|0]<0){ja(F[a>>2])}if(D[a+27|0]<0){ja(F[a+16>>2])}Z=a+32|0;break a}za();v()}return b|0}function Hd(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;c=F[a+216>>2];if((c|0)!=F[a+220>>2]){while(1){a:{c=F[L(e,144)+c>>2];if((c|0)<0){break a}d=F[a+4>>2];f=F[d+8>>2];if((c|0)>=F[d+12>>2]-f>>2){break a}d=0;c=F[(c<<2)+f>>2];if(($[F[F[c>>2]+24>>2]](c)|0)<=0){break a}while(1){if(($[F[F[c>>2]+20>>2]](c,d)|0)!=(b|0)){d=d+1|0;if(($[F[F[c>>2]+24>>2]](c)|0)>(d|0)){continue}break a}break}return(F[a+216>>2]+L(e,144)|0)+104|0}e=e+1|0;c=F[a+216>>2];if(e>>>0<(F[a+220>>2]-c|0)/144>>>0){continue}break}}return a+184|0}function Uf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0;d=Z-16|0;Z=d;F[d+12>>2]=0;a:{e=ya(c);if(e>>>0<2147483632){b:{c:{if(e>>>0>=11){f=(e|15)+1|0;a=ka(f);F[d+8>>2]=f|-2147483648;F[d>>2]=a;F[d+4>>2]=e;f=a+e|0;break c}D[d+11|0]=e;f=d+e|0;a=d;if(!e){break b}}la(a,c,e)}D[f|0]=0;a=Ya(b,d);d:{if((a|0)==(b+4|0)){break d}b=F[a+32>>2];a=F[a+28>>2];if((b-a|0)!=4){break d}F[d+12>>2]=G[a|0]|G[a+1|0]<<8|(G[a+2|0]<<16|G[a+3|0]<<24)}a=F[d+12>>2];if(D[d+11|0]<0){ja(F[d>>2])}Z=d+16|0;break a}za();v()}return a|0}function Mf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;d=Z+-64|0;Z=d;e=Ja(d+8|0);F[e+16>>2]=0;F[e+20>>2]=0;F[e>>2]=b;F[e+8>>2]=c;F[e+12>>2]=0;b=d+48|0;Od(b);F[a+24>>2]=F[d+48>>2];f=a+24|0;a:{if((b|0)==(f|0)){break a}b=a+28|0;c=d+48|4;g=G[d+63|0];e=g<<24>>24;if(D[a+39|0]>=0){if((e|0)>=0){a=F[c+4>>2];F[b>>2]=F[c>>2];F[b+4>>2]=a;F[b+8>>2]=F[c+8>>2];break a}qb(b,F[d+52>>2],F[d+56>>2]);break a}a=(e|0)<0;rb(b,a?F[d+52>>2]:c,a?F[d+56>>2]:g)}if(D[d+63|0]<0){ja(F[d+52>>2])}Z=d- -64|0;return f|0}function Ce(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0,h=0;e=1;a:{if(($[F[F[b>>2]+20>>2]](b)|0)<=0){break a}while(1){e=0;d=Qc(F[F[a+4>>2]+4>>2],$[F[F[b>>2]+24>>2]](b,f)|0);if((d|0)==-1){break a}g=F[a+4>>2];c=0;b:{if((d|0)<0){break b}h=F[g+4>>2];if((d|0)>=F[h+12>>2]-F[h+8>>2]>>2){break b}c=F[F[g+8>>2]+(F[F[g+20>>2]+(d<<2)>>2]<<2)>>2];c=$[F[F[c>>2]+32>>2]](c,d)|0}if(!c){break a}if(!($[F[F[b>>2]+28>>2]](b,c)|0)){break a}e=1;f=f+1|0;if(($[F[F[b>>2]+20>>2]](b)|0)>(f|0)){continue}break}}return e|0}function Db(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;a:{c=F[a+4>>2];e=F[a>>2];d=c-e|0;b:{if(d>>>0>>0){g=b-d|0;f=F[a+8>>2];if(g>>>0<=f-c>>>0){h=a,i=ma(c,0,g)+g|0,F[h+4>>2]=i;break b}if((b|0)<0){break a}c=f-e|0;f=c<<1;c=c>>>0>=1073741823?2147483647:b>>>0>>0?f:b;f=ka(c);ma(f+d|0,0,g);d=pa(f,e,d);F[a+8>>2]=d+c;F[a+4>>2]=b+d;F[a>>2]=d;if(!e){break b}ja(e);break b}if(b>>>0>=d>>>0){break b}F[a+4>>2]=b+e}b=F[a+28>>2];c=b;d=b+1|0;b=F[a+24>>2]+1|0;e=b?c:d;F[a+24>>2]=b;F[a+28>>2]=e;return}na();v()}function Ma(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;e=F[a+4>>2];if((e|0)!=F[a+8>>2]){F[e>>2]=F[b>>2];F[a+4>>2]=e+4;return}a:{g=F[a>>2];f=e-g|0;c=f>>2;d=c+1|0;if(d>>>0<1073741824){h=c<<2;c=f>>>1|0;c=f>>>0>=2147483644?1073741823:c>>>0>d>>>0?c:d;if(c){if(c>>>0>=1073741824){break a}f=ka(c<<2)}else{f=0}d=h+f|0;F[d>>2]=F[b>>2];b=d+4|0;if((e|0)!=(g|0)){while(1){d=d-4|0;e=e-4|0;F[d>>2]=F[e>>2];if((e|0)!=(g|0)){continue}break}}F[a+8>>2]=f+(c<<2);F[a+4>>2]=b;F[a>>2]=d;if(g){ja(g)}return}na();v()}oa();v()}function va(a){F[a>>2]=-1;F[a+4>>2]=0;F[a+8>>2]=0;F[a+32>>2]=0;F[a+36>>2]=0;D[a+28|0]=1;F[a+20>>2]=0;F[a+24>>2]=0;F[a+12>>2]=0;F[a+16>>2]=0;F[a+40>>2]=0;F[a+44>>2]=0;F[a+48>>2]=0;F[a+52>>2]=0;F[a+56>>2]=0;F[a+60>>2]=0;F[a+64>>2]=0;F[a+68>>2]=0;F[a+76>>2]=0;F[a+80>>2]=0;F[a+84>>2]=0;F[a+88>>2]=0;F[a+92>>2]=0;F[a+96>>2]=0;F[a+72>>2]=a+4;F[a+104>>2]=0;F[a+108>>2]=0;D[a+100|0]=1;F[a+112>>2]=0;F[a+116>>2]=0;F[a+120>>2]=0;F[a+124>>2]=0;F[a+128>>2]=0;F[a+132>>2]=0;F[a+136>>2]=0;F[a+140>>2]=0}function Hb(a,b){var c=0,d=0,e=0,f=0;d=F[a+12>>2];c=F[a+16>>2]-d>>2;a:{if(c>>>0>>0){qa(a+12|0,b-c|0);break a}if(b>>>0>=c>>>0){break a}F[a+16>>2]=d+(b<<2)}b:{c=F[a>>2];c:{if(F[a+8>>2]-c>>2>>>0>=b>>>0){break c}if(b>>>0>=1073741824){break b}d=F[a+4>>2];e=b<<2;b=ka(e);e=b+e|0;f=b+(d-c&-4)|0;b=f;if((c|0)!=(d|0)){while(1){b=b-4|0;d=d-4|0;F[b>>2]=F[d>>2];if((c|0)!=(d|0)){continue}break}}F[a+8>>2]=e;F[a+4>>2]=f;F[a>>2]=b;if(!c){break c}ja(c)}return}na();v()}function tb(a){a=a|0;var b=0,c=0,d=0;F[a>>2]=10300;b=F[a+68>>2];if(b){F[a+72>>2]=b;ja(b)}b=F[a+56>>2];if(b){F[a+60>>2]=b;ja(b)}b=F[a+44>>2];if(b){F[a+48>>2]=b;ja(b)}b=F[a+32>>2];if(b){F[a+36>>2]=b;ja(b)}b=F[a+20>>2];if(b){F[a+24>>2]=b;ja(b)}b=F[a+8>>2];if(b){d=b;c=F[a+12>>2];if((b|0)!=(c|0)){while(1){c=c-4|0;d=F[c>>2];F[c>>2]=0;if(d){xa(d)}if((b|0)!=(c|0)){continue}break}d=F[a+8>>2]}F[a+12>>2]=b;ja(d)}b=F[a+4>>2];F[a+4>>2]=0;if(b){ic(b)}return a|0}function qa(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;e=F[a+8>>2];c=F[a+4>>2];if(e-c>>2>>>0>=b>>>0){if(b){b=b<<2;c=ma(c,0,b)+b|0}F[a+4>>2]=c;return}a:{f=c;c=F[a>>2];g=f-c|0;h=g>>2;d=h+b|0;if(d>>>0<1073741824){e=e-c|0;f=e>>>1|0;d=e>>>0>=2147483644?1073741823:d>>>0>>0?f:d;if(d){if(d>>>0>=1073741824){break a}i=ka(d<<2)}b=b<<2;e=ma((h<<2)+i|0,0,b);f=d<<2;d=pa(i,c,g);F[a+8>>2]=f+d;F[a+4>>2]=b+e;F[a>>2]=d;if(c){ja(c)}return}na();v()}oa();v()}function gc(a,b){var c=0,d=0,e=0,f=0;c=a+4|0;a=Ya(a,b);a:{if((c|0)==(a|0)){break a}b=a+28|0;b=D[a+39|0]<0?F[b>>2]:b;while(1){a=b;b=a+1|0;c=D[a|0];if((c|0)==32|c-9>>>0<5){continue}break}b:{c:{d:{c=D[a|0];switch(c-43|0){case 0:break c;case 2:break d;default:break b}}e=1}c=D[b|0];a=b}if(c-48>>>0<10){while(1){d=(L(d,10)-D[a|0]|0)+48|0;b=D[a+1|0];a=a+1|0;if(b-48>>>0<10){continue}break}}a=e?d:0-d|0;if((a|0)==-1){break a}f=(a|0)!=0}return f}function Qa(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;a=F[a>>2];c=F[a+4>>2];e=F[a+8>>2];if(c>>>0>>0){F[c>>2]=F[b>>2];F[a+4>>2]=c+4;return}a:{d=c;c=F[a>>2];g=d-c|0;d=g>>2;f=d+1|0;if(f>>>0<1073741824){h=d<<2;e=e-c|0;d=e>>>1|0;f=e>>>0>=2147483644?1073741823:f>>>0>>0?d:f;if(f){if(f>>>0>=1073741824){break a}e=ka(f<<2)}else{e=0}d=h+e|0;F[d>>2]=F[b>>2];b=pa(e,c,g);F[a+8>>2]=b+(f<<2);F[a+4>>2]=d+4;F[a>>2]=b;if(c){ja(c)}return}na();v()}oa();v()}function db(a,b,c){var d=0,e=0,f=0,g=0,h=0;f=Z-16|0;Z=f;d=Z-32|0;Z=d;e=Z-16|0;Z=e;F[e+12>>2]=b;F[e+8>>2]=b+c;F[d+24>>2]=F[e+12>>2];F[d+28>>2]=F[e+8>>2];Z=e+16|0;c=Z-16|0;Z=c;h=F[d+28>>2];e=F[d+24>>2];g=h-e|0;if((e|0)!=(h|0)){pa(a,e,g)}F[c+12>>2]=e+g;F[c+8>>2]=a+g;F[d+16>>2]=F[c+12>>2];F[d+20>>2]=F[c+8>>2];Z=c+16|0;F[d+12>>2]=(F[d+16>>2]-b|0)+b;F[d+8>>2]=(F[d+20>>2]-a|0)+a;F[f+8>>2]=F[d+12>>2];F[f+12>>2]=F[d+8>>2];Z=d+32|0;Z=f+16|0}function _a(a,b){var c=0,d=0,e=0,f=0,g=0,h=0,i=0;e=F[a+8>>2];c=F[a+4>>2];if(e-c>>3>>>0>=b>>>0){if(b){b=b<<3;c=ma(c,0,b)+b|0}F[a+4>>2]=c;return}a:{f=c;c=F[a>>2];g=f-c|0;h=g>>3;d=h+b|0;if(d>>>0<536870912){e=e-c|0;f=e>>>2|0;d=e>>>0>=2147483640?536870911:d>>>0>>0?f:d;if(d){if(d>>>0>=536870912){break a}i=ka(d<<3)}b=b<<3;e=ma((h<<3)+i|0,0,b);f=d<<3;d=pa(i,c,g);F[a+8>>2]=f+d;F[a+4>>2]=b+e;F[a>>2]=d;if(c){ja(c)}return}na();v()}oa();v()}function re(a){a=a|0;var b=0,c=0,d=0;F[a>>2]=2016;b=F[a+60>>2];F[a+60>>2]=0;if(b){$[F[F[b>>2]+4>>2]](b)}b=F[a+48>>2];if(b){F[a+52>>2]=b;ja(b)}d=F[a+36>>2];if(d){c=F[a+40>>2];b=d;if((c|0)!=(b|0)){while(1){c=c-4|0;b=F[c>>2];F[c>>2]=0;if(b){$[F[F[b>>2]+4>>2]](b)}if((c|0)!=(d|0)){continue}break}b=F[a+36>>2]}F[a+40>>2]=d;ja(b)}F[a>>2]=1776;b=F[a+16>>2];if(b){F[a+20>>2]=b;ja(b)}b=F[a+4>>2];if(b){F[a+8>>2]=b;ja(b)}return a|0}function qe(a){a=a|0;var b=0,c=0,d=0;F[a>>2]=2016;b=F[a+60>>2];F[a+60>>2]=0;if(b){$[F[F[b>>2]+4>>2]](b)}b=F[a+48>>2];if(b){F[a+52>>2]=b;ja(b)}d=F[a+36>>2];if(d){c=F[a+40>>2];b=d;if((c|0)!=(b|0)){while(1){c=c-4|0;b=F[c>>2];F[c>>2]=0;if(b){$[F[F[b>>2]+4>>2]](b)}if((c|0)!=(d|0)){continue}break}b=F[a+36>>2]}F[a+40>>2]=d;ja(b)}F[a>>2]=1776;b=F[a+16>>2];if(b){F[a+20>>2]=b;ja(b)}b=F[a+4>>2];if(b){F[a+8>>2]=b;ja(b)}ja(a)}function Eg(a){a=a|0;var b=0,c=0,d=0,e=0,f=0;a:{b=F[a+8>>2];b:{if((b|0)<0){break b}c=F[a+4>>2];e=F[c>>2];d=F[c+4>>2]-e>>2;c:{if(d>>>0>>0){nd(c,b-d|0);f=F[a+8>>2];break c}f=b;if(b>>>0>=d>>>0){break c}F[c+4>>2]=e+(b<<2);f=b}d=f;if((d|0)<=0){break b}a=F[a+4>>2];c=F[a>>2];e=F[a+4>>2]-c>>2;a=0;while(1){if((a|0)==(e|0)){break a}F[c+(a<<2)>>2]=a;a=a+1|0;if((d|0)!=(a|0)){continue}break}}return(b^-1)>>>31|0}ta();v()}function fh(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0;d=Z-16|0;Z=d;e=F[a+4>>2];a:{if((e|0)==-1){break a}c=F[b+20>>2];if(!!F[b+16>>2]&(c|0)>=0|(c|0)>0){break a}pb(b,F[b+4>>2],F[a+8>>2],F[a+12>>2]);c=F[b+20>>2];if(!!F[b+16>>2]&(c|0)>=0|(c|0)>0){break a}pb(b,F[b+4>>2],a+20|0,a+24|0);c=F[b+20>>2];f=F[b+16>>2];D[d+15|0]=F[a+4>>2];if(!!f&(c|0)>=0|(c|0)>0){break a}pb(b,F[b+4>>2],d+15|0,d+16|0)}Z=d+16|0;return(e|0)!=-1|0}function kd(a,b){var c=0,d=0,e=0,f=0,g=0,h=0;e=F[a+8>>2];c=F[a+4>>2];if(e-c>>1>>>0>=b>>>0){if(b){b=b<<1;c=ma(c,0,b)+b|0}F[a+4>>2]=c;return}a:{f=c;c=F[a>>2];g=f-c|0;f=g>>1;d=f+b|0;if((d|0)>=0){e=e-c|0;d=e>>>0>=2147483646?2147483647:d>>>0>>0?e:d;if(d){if((d|0)<0){break a}h=ka(d<<1)}b=b<<1;e=ma((f<<1)+h|0,0,b);f=d<<1;d=pa(h,c,g);F[a+8>>2]=f+d;F[a+4>>2]=b+e;F[a>>2]=d;if(c){ja(c)}return}na();v()}oa();v()}function of(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=Z-16|0;Z=d;Pd(d,a,b,c);F[a+24>>2]=F[d>>2];e=a+24|0;a:{if((e|0)==(d|0)){break a}b=a+28|0;c=d|4;f=G[d+15|0];g=f<<24>>24;if(D[a+39|0]>=0){if((g|0)>=0){a=F[c+4>>2];F[b>>2]=F[c>>2];F[b+4>>2]=a;F[b+8>>2]=F[c+8>>2];break a}qb(b,F[d+4>>2],F[d+8>>2]);break a}a=(g|0)<0;rb(b,a?F[d+4>>2]:c,a?F[d+8>>2]:f)}if(D[d+15|0]<0){ja(F[d+4>>2])}Z=d+16|0;return e|0}function ra(a,b,c){var d=0,e=0,f=0,g=0;e=Z-16|0;Z=e;a:{b:{if(c>>>0<11){d=a;D[a+11|0]=G[a+11|0]&128|c;D[a+11|0]=G[a+11|0]&127;break b}if(c>>>0>2147483631){break a}g=e+8|0;if(c>>>0>=11){f=c+16&-16;d=f-1|0;d=(d|0)==11?f:d}else{d=10}sb(g,d+1|0);d=F[e+8>>2];F[a>>2]=d;F[a+8>>2]=F[a+8>>2]&-2147483648|F[e+12>>2]&2147483647;F[a+8>>2]=F[a+8>>2]|-2147483648;F[a+4>>2]=c}db(d,b,c+1|0);Z=e+16|0;return}za();v()}function pf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;b=Z-16|0;Z=b;Od(b);F[a+24>>2]=F[b>>2];e=a+24|0;a:{if((e|0)==(b|0)){break a}c=a+28|0;d=b|4;f=G[b+15|0];g=f<<24>>24;if(D[a+39|0]>=0){if((g|0)>=0){a=F[d+4>>2];F[c>>2]=F[d>>2];F[c+4>>2]=a;F[c+8>>2]=F[d+8>>2];break a}qb(c,F[b+4>>2],F[b+8>>2]);break a}a=(g|0)<0;rb(c,a?F[b+4>>2]:d,a?F[b+8>>2]:f)}if(D[b+15|0]<0){ja(F[b+4>>2])}Z=b+16|0;return e|0}function Rf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0;d=Z-16|0;Z=d;a:{e=ya(c);if(e>>>0<2147483632){b:{c:{if(e>>>0>=11){g=(e|15)+1|0;f=ka(g);F[d+8>>2]=g|-2147483648;F[d>>2]=f;F[d+4>>2]=e;g=e+f|0;break c}D[d+11|0]=e;g=d+e|0;f=d;if(!e){break b}}la(f,c,e)}D[g|0]=0;f=a+16|0;c=Sc(b,d,f);b=F[a+16>>2];a=D[a+27|0];if(D[d+11|0]<0){ja(F[d>>2])}Z=d+16|0;a=c?(a|0)<0?b:f:0;break a}za();v()}return a|0}function Yb(a,b){var c=0,d=0,e=0;c=F[a+4>>2];d=c+b|0;F[a+4>>2]=d;if(!((d-1^c-1)>>>0<32?c:0)){F[F[a>>2]+((d>>>0>=33?d-1>>>5|0:0)<<2)>>2]=0}a:{if(!b){break a}a=F[a>>2]+(c>>>3&536870908)|0;c=c&31;if(c){d=32-c|0;e=b>>>0>d>>>0?d:b;F[a>>2]=F[a>>2]&(-1<>>d-e^-1);b=b-e|0;a=a+4|0}c=b>>>5|0;if(b>>>0>=32){ma(a,0,c<<2)}if((b&-32)==(b|0)){break a}a=(c<<2)+a|0;F[a>>2]=F[a>>2]&(-1>>>32-(b&31)^-1)}}function ld(a,b,c){var d=0,e=0,f=0,g=0;a:{if(a>>>0>10){break a}d=F[c+20>>2];f=F[c+12>>2];e=F[c+16>>2];if((d|0)>=(f|0)&e>>>0>=I[c+8>>2]|(d|0)>(f|0)){break a}f=D[e+F[c>>2]|0];e=e+1|0;d=e?d:d+1|0;F[c+16>>2]=e;F[c+20>>2]=d;d=f;b:{if((d|0)<0){if(!ld(a+1|0,b,c)){break a}a=F[b>>2];d=d&127|a<<7;a=F[b+4>>2]<<7|a>>>25;break b}d=d&255;a=0}F[b>>2]=d;F[b+4>>2]=a;g=1}return g}function Sa(a,b,c){var d=0,e=0,f=0,g=0;a:{if(a>>>0>10){break a}d=F[c+20>>2];f=F[c+12>>2];e=F[c+16>>2];if((d|0)>=(f|0)&e>>>0>=I[c+8>>2]|(d|0)>(f|0)){break a}f=D[e+F[c>>2]|0];e=e+1|0;d=e?d:d+1|0;F[c+16>>2]=e;F[c+20>>2]=d;d=f;b:{if((d|0)<0){if(!Sa(a+1|0,b,c)){break a}a=F[b>>2];d=d&127|a<<7;a=F[b+4>>2]<<7|a>>>25;break b}d=d&255;a=0}F[b>>2]=d;F[b+4>>2]=a;g=1}return g}function Ne(a,b,c,d,e){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;if(La(a,F[b+8>>2],e)){if(!(F[b+28>>2]==1|F[b+4>>2]!=(c|0))){F[b+28>>2]=d}return}a:{if(!La(a,F[b>>2],e)){break a}if(!(F[b+16>>2]!=(c|0)&F[b+20>>2]!=(c|0))){if((d|0)!=1){break a}F[b+32>>2]=1;return}F[b+20>>2]=c;F[b+32>>2]=d;F[b+40>>2]=F[b+40>>2]+1;if(!(F[b+36>>2]!=1|F[b+24>>2]!=2)){D[b+54|0]=1}F[b+44>>2]=4}}function jg(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;e=Z+-64|0;Z=e;d=$[F[F[a>>2]+44>>2]](a,b)|0;a=$[F[F[a>>2]+40>>2]](a,b)|0;f=kb(e);g=F[b+56>>2];h=d&255;i=a;a=a-1|0;if(a>>>0<=10){a=F[(a<<2)+10148>>2]}else{a=-1}d=L(a,d);cc(f,g,h,i,0,d,d>>31);a=bc(ka(96),f);ac(a,c);D[a+84|0]=1;F[a+72>>2]=F[a+68>>2];F[a+60>>2]=F[b+60>>2];Z=e- -64|0;return a|0}function rh(a){a=a|0;var b=0,c=0,d=0;F[a>>2]=8176;b=F[a+48>>2];F[a+48>>2]=0;if(b){$[F[F[b>>2]+4>>2]](b)}F[a>>2]=10032;b=F[a+20>>2];if(b){F[a+24>>2]=b;ja(b)}d=F[a+8>>2];if(d){c=F[a+12>>2];b=d;if((c|0)!=(b|0)){while(1){c=c-4|0;b=F[c>>2];F[c>>2]=0;if(b){$[F[F[b>>2]+4>>2]](b)}if((c|0)!=(d|0)){continue}break}b=F[a+8>>2]}F[a+12>>2]=d;ja(b)}return a|0}function Dc(a,b,c,d){D[a+53|0]=1;a:{if(F[a+4>>2]!=(c|0)){break a}D[a+52|0]=1;c=F[a+16>>2];b:{if(!c){F[a+36>>2]=1;F[a+24>>2]=d;F[a+16>>2]=b;if((d|0)!=1){break a}if(F[a+48>>2]==1){break b}break a}if((b|0)==(c|0)){c=F[a+24>>2];if((c|0)==2){F[a+24>>2]=d;c=d}if(F[a+48>>2]!=1){break a}if((c|0)==1){break b}break a}F[a+36>>2]=F[a+36>>2]+1}D[a+54|0]=1}}function qh(a){a=a|0;var b=0,c=0,d=0;F[a>>2]=8176;b=F[a+48>>2];F[a+48>>2]=0;if(b){$[F[F[b>>2]+4>>2]](b)}F[a>>2]=10032;b=F[a+20>>2];if(b){F[a+24>>2]=b;ja(b)}d=F[a+8>>2];if(d){c=F[a+12>>2];b=d;if((c|0)!=(b|0)){while(1){c=c-4|0;b=F[c>>2];F[c>>2]=0;if(b){$[F[F[b>>2]+4>>2]](b)}if((c|0)!=(d|0)){continue}break}b=F[a+8>>2]}F[a+12>>2]=d;ja(b)}ja(a)}function Se(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;e=Z+-64|0;Z=e;d=1;a:{if(La(a,b,0)){break a}d=0;if(!b){break a}b=Fc(b,11068);d=0;if(!b){break a}d=e+8|0;ma(d|4,0,52);F[e+56>>2]=1;F[e+20>>2]=-1;F[e+16>>2]=a;F[e+8>>2]=b;$[F[F[b>>2]+28>>2]](b,d,F[c>>2],1);a=F[e+32>>2];if((a|0)==1){F[c>>2]=F[e+24>>2]}d=(a|0)==1}Z=e- -64|0;return d|0}function Fd(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=Z-16|0;Z=d;F[a+4>>2]=b;b=F[b+64>>2];e=F[b>>2];b=F[b+4>>2];D[d+15|0]=0;Ea(a+24|0,(b-e>>2>>>0)/3|0,d+15|0);b=F[a+4>>2];e=F[b+56>>2];b=F[b+52>>2];D[d+14|0]=0;Ea(a+36|0,e-b>>2,d+14|0);b=F[c+12>>2];F[a+16>>2]=F[c+8>>2];F[a+20>>2]=b;b=F[c+4>>2];F[a+8>>2]=F[c>>2];F[a+12>>2]=b;Z=d+16|0}function zf(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;var e=0,f=0,g=0;a=Z-16|0;Z=a;f=D[b+24|0];e=F[2555];F[a+8>>2]=F[2554];F[a+12>>2]=e;e=F[2553];F[a>>2]=F[2552];F[a+4>>2]=e;e=lb(b,c,f,a);if(e){b=0;if(f){c=(f&255)<<2;b=ka(c);g=la(b,a,c)+c|0}c=F[d>>2];if(c){F[d+4>>2]=c;ja(c)}F[d+8>>2]=g;F[d+4>>2]=g;F[d>>2]=b}Z=a+16|0;return e|0}function wd(a,b){var c=0,d=0;a:{c=F[a+4>>2];d=F[a+8>>2];if((c|0)==d<<5){if((c+1|0)<0){break a}if(c>>>0<=1073741822){d=d<<6;c=(c&-32)+32|0;c=c>>>0>>0?d:c}else{c=2147483647}$a(a,c);c=F[a+4>>2]}F[a+4>>2]=c+1;d=1<>2]+(c>>>3&536870908)|0;if(G[b|0]){F[a>>2]=d|F[a>>2];return}F[a>>2]=F[a>>2]&(d^-1);return}na();v()}function Zb(a){var b=0;F[a>>2]=0;F[a+4>>2]=0;F[a+56>>2]=0;F[a+48>>2]=0;F[a+52>>2]=0;F[a+40>>2]=0;F[a+44>>2]=0;F[a+32>>2]=0;F[a+36>>2]=0;F[a+24>>2]=0;F[a+28>>2]=0;F[a+16>>2]=0;F[a+20>>2]=0;F[a+8>>2]=0;F[a+12>>2]=0;b=a- -64|0;F[b>>2]=0;F[b+4>>2]=0;F[a+72>>2]=0;F[a+76>>2]=0;F[a+80>>2]=0;F[a+84>>2]=0;F[a+60>>2]=a;return a}function ve(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;f=$[F[F[a>>2]+24>>2]](a)|0;c=1;a:{if((f|0)<=0){break a}d=F[F[a+36>>2]>>2];g=a+48|0;c=0;if(!($[F[F[d>>2]+16>>2]](d,g,b)|0)){break a}while(1){e=e+1|0;if((f|0)!=(e|0)){d=F[F[a+36>>2]+(e<<2)>>2];if($[F[F[d>>2]+16>>2]](d,g,b)|0){continue}}break}c=(e|0)>=(f|0)}return c|0}function ue(a,b){a=a|0;b=b|0;var c=0,d=0,e=0,f=0,g=0;f=$[F[F[a>>2]+24>>2]](a)|0;c=1;a:{if((f|0)<=0){break a}d=F[F[a+36>>2]>>2];g=a+48|0;c=0;if(!($[F[F[d>>2]+20>>2]](d,g,b)|0)){break a}while(1){e=e+1|0;if((f|0)!=(e|0)){d=F[F[a+36>>2]+(e<<2)>>2];if($[F[F[d>>2]+20>>2]](d,g,b)|0){continue}}break}c=(e|0)>=(f|0)}return c|0}function bh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=Z-16|0;Z=d;F[a+4>>2]=b;e=F[b>>2];b=F[b+4>>2];D[d+15|0]=0;Ea(a+24|0,(b-e>>2>>>0)/3|0,d+15|0);b=F[a+4>>2];e=F[b+28>>2];b=F[b+24>>2];D[d+14|0]=0;Ea(a+36|0,e-b>>2,d+14|0);b=F[c+12>>2];F[a+16>>2]=F[c+8>>2];F[a+20>>2]=b;b=F[c+4>>2];F[a+8>>2]=F[c>>2];F[a+12>>2]=b;Z=d+16|0}function hb(a,b,c){var d=0,e=0,f=0,g=0;a:{if(a>>>0>5){break a}d=F[c+20>>2];e=F[c+12>>2];f=F[c+16>>2];if((d|0)>=(e|0)&f>>>0>=I[c+8>>2]|(d|0)>(e|0)){break a}e=G[F[c>>2]+f|0];f=f+1|0;d=f?d:d+1|0;F[c+16>>2]=f;F[c+20>>2]=d;d=e<<24>>24;if((d|0)<0){if(!hb(a+1|0,b,c)){break a}e=d&127|F[b>>2]<<7}F[b>>2]=e;g=1}return g}function fb(a,b,c){var d=0,e=0,f=0,g=0;a:{if(a>>>0>5){break a}d=F[c+20>>2];e=F[c+12>>2];f=F[c+16>>2];if((d|0)>=(e|0)&f>>>0>=I[c+8>>2]|(d|0)>(e|0)){break a}e=G[F[c>>2]+f|0];f=f+1|0;d=f?d:d+1|0;F[c+16>>2]=f;F[c+20>>2]=d;d=e<<24>>24;if((d|0)<0){if(!fb(a+1|0,b,c)){break a}e=d&127|F[b>>2]<<7}F[b>>2]=e;g=1}return g}function Wb(a,b,c){var d=0,e=0,f=0,g=0;a:{if(a>>>0>5){break a}d=F[c+20>>2];e=F[c+12>>2];f=F[c+16>>2];if((d|0)>=(e|0)&f>>>0>=I[c+8>>2]|(d|0)>(e|0)){break a}e=G[F[c>>2]+f|0];f=f+1|0;d=f?d:d+1|0;F[c+16>>2]=f;F[c+20>>2]=d;d=e<<24>>24;if((d|0)<0){if(!Wb(a+1|0,b,c)){break a}e=d&127|F[b>>2]<<7}F[b>>2]=e;g=1}return g}function Ta(a,b,c){var d=0,e=0,f=0,g=0;a:{if(a>>>0>5){break a}d=F[c+20>>2];e=F[c+12>>2];f=F[c+16>>2];if((d|0)>=(e|0)&f>>>0>=I[c+8>>2]|(d|0)>(e|0)){break a}e=G[F[c>>2]+f|0];f=f+1|0;d=f?d:d+1|0;F[c+16>>2]=f;F[c+20>>2]=d;d=e<<24>>24;if((d|0)<0){if(!Ta(a+1|0,b,c)){break a}e=d&127|F[b>>2]<<7}F[b>>2]=e;g=1}return g}function Qd(a,b,c){var d=0,e=0,f=0,g=0;a:{if(a>>>0>5){break a}d=F[c+20>>2];e=F[c+12>>2];f=F[c+16>>2];if((d|0)>=(e|0)&f>>>0>=I[c+8>>2]|(d|0)>(e|0)){break a}e=G[F[c>>2]+f|0];f=f+1|0;d=f?d:d+1|0;F[c+16>>2]=f;F[c+20>>2]=d;d=e<<24>>24;if((d|0)<0){if(!Qd(a+1|0,b,c)){break a}e=d&127|F[b>>2]<<7}F[b>>2]=e;g=1}return g}function Oa(a,b,c){var d=0,e=0,f=0,g=0;a:{if(a>>>0>5){break a}d=F[c+20>>2];e=F[c+12>>2];f=F[c+16>>2];if((d|0)>=(e|0)&f>>>0>=I[c+8>>2]|(d|0)>(e|0)){break a}e=G[F[c>>2]+f|0];f=f+1|0;d=f?d:d+1|0;F[c+16>>2]=f;F[c+20>>2]=d;d=e<<24>>24;if((d|0)<0){if(!Oa(a+1|0,b,c)){break a}e=d&127|F[b>>2]<<7}F[b>>2]=e;g=1}return g}function Da(a,b,c){var d=0,e=0,f=0,g=0;a:{if(a>>>0>5){break a}d=F[c+20>>2];e=F[c+12>>2];f=F[c+16>>2];if((d|0)>=(e|0)&f>>>0>=I[c+8>>2]|(d|0)>(e|0)){break a}e=G[F[c>>2]+f|0];f=f+1|0;d=f?d:d+1|0;F[c+16>>2]=f;F[c+20>>2]=d;d=e<<24>>24;if((d|0)<0){if(!Da(a+1|0,b,c)){break a}e=d&127|F[b>>2]<<7}F[b>>2]=e;g=1}return g}function sa(a,b,c){var d=0,e=0;a:{b:{if(c>>>0>=4){if((a|b)&3){break b}while(1){if(F[a>>2]!=F[b>>2]){break b}b=b+4|0;a=a+4|0;c=c-4|0;if(c>>>0>3){continue}break}}if(!c){break a}}while(1){d=G[a|0];e=G[b|0];if((d|0)==(e|0)){b=b+1|0;a=a+1|0;c=c-1|0;if(c){continue}break a}break}return d-e|0}return 0}function td(a){var b=0,c=0,d=0,e=0;d=F[a>>2];if(d){e=d;c=F[a+4>>2];if((d|0)!=(c|0)){while(1){e=c-144|0;b=F[e+132>>2];if(b){F[c-8>>2]=b;ja(b)}b=F[c-28>>2];if(b){F[c-24>>2]=b;ja(b)}b=F[c-40>>2];if(b){F[c-36>>2]=b;ja(b)}Gb(c-140|0);c=e;if((d|0)!=(c|0)){continue}break}e=F[a>>2]}F[a+4>>2]=d;ja(e)}}function Ef(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=F[b+4>>2];a:{if(!d){break a}b=F[F[F[b+8>>2]+(c<<2)>>2]+60>>2];if((b|0)<0){break a}a=F[d+24>>2];c=F[d+28>>2];if((a|0)==(c|0)){break a}b:{while(1){e=F[a>>2];if((b|0)==F[e+24>>2]){break b}a=a+4|0;if((c|0)!=(a|0)){continue}break}e=0}}return e|0}function ic(a){var b=0,c=0,d=0;if(a){d=F[a+24>>2];if(d){b=d;c=F[a+28>>2];if((b|0)!=(c|0)){while(1){c=c-4|0;b=F[c>>2];F[c>>2]=0;if(b){Ca(b+12|0,F[b+16>>2]);Ba(b,F[b+4>>2]);ja(b)}if((c|0)!=(d|0)){continue}break}b=F[a+24>>2]}F[a+28>>2]=d;ja(b)}Ca(a+12|0,F[a+16>>2]);Ba(a,F[a+4>>2]);ja(a)}}function $g(a){a=a|0;var b=0;F[a+8>>2]=9136;F[a>>2]=8924;b=F[a+96>>2];if(b){F[a+100>>2]=b;ja(b)}b=F[a+80>>2];if(b){F[a+84>>2]=b;ja(b)}b=F[a+68>>2];if(b){F[a+72>>2]=b;ja(b)}b=F[a+56>>2];if(b){F[a+60>>2]=b;ja(b)}F[a+8>>2]=9372;b=F[a+44>>2];if(b){ja(b)}b=F[a+32>>2];if(b){ja(b)}return a|0}function _g(a){a=a|0;var b=0;F[a+8>>2]=9136;F[a>>2]=8924;b=F[a+96>>2];if(b){F[a+100>>2]=b;ja(b)}b=F[a+80>>2];if(b){F[a+84>>2]=b;ja(b)}b=F[a+68>>2];if(b){F[a+72>>2]=b;ja(b)}b=F[a+56>>2];if(b){F[a+60>>2]=b;ja(b)}F[a+8>>2]=9372;b=F[a+44>>2];if(b){ja(b)}b=F[a+32>>2];if(b){ja(b)}ja(a)}function wh(a){a=a|0;var b=0,c=0,d=0;F[a>>2]=10032;b=F[a+20>>2];if(b){F[a+24>>2]=b;ja(b)}d=F[a+8>>2];if(d){c=F[a+12>>2];b=d;if((c|0)!=(b|0)){while(1){c=c-4|0;b=F[c>>2];F[c>>2]=0;if(b){$[F[F[b>>2]+4>>2]](b)}if((c|0)!=(d|0)){continue}break}b=F[a+8>>2]}F[a+12>>2]=d;ja(b)}return a|0}function uc(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0,f=0,g=0,h=0,i=0;h=F[c+8>>2];e=F[c+16>>2];g=F[c+12>>2];f=g;d=F[c+20>>2];if(h>>>0>e>>>0&(f|0)>=(d|0)|(d|0)<(f|0)){b=G[F[c>>2]+e|0];i=e+1|0;f=i?d:d+1|0;F[c+16>>2]=i;F[c+20>>2]=f;F[a+4>>2]=b}return e>>>0>>0&(d|0)<=(g|0)|(d|0)<(g|0)}function La(a,b,c){var d=0;if(!c){return F[a+4>>2]==F[b+4>>2]}if((a|0)==(b|0)){return 1}d=F[a+4>>2];a=G[d|0];c=F[b+4>>2];b=G[c|0];a:{if(!a|(b|0)!=(a|0)){break a}while(1){b=G[c+1|0];a=G[d+1|0];if(!a){break a}c=c+1|0;d=d+1|0;if((a|0)==(b|0)){continue}break}}return(a|0)==(b|0)}function Gg(a){a=a|0;var b=0,c=0,d=0;F[a>>2]=10032;b=F[a+20>>2];if(b){F[a+24>>2]=b;ja(b)}d=F[a+8>>2];if(d){c=F[a+12>>2];b=d;if((c|0)!=(b|0)){while(1){c=c-4|0;b=F[c>>2];F[c>>2]=0;if(b){$[F[F[b>>2]+4>>2]](b)}if((c|0)!=(d|0)){continue}break}b=F[a+8>>2]}F[a+12>>2]=d;ja(b)}ja(a)}function Gf(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=F[b+12>>2];b=F[b+8>>2];a=0;a:{if((d|0)==(b|0)){break a}a=d-b>>2;d=a>>>0<=1?1:a;a=0;b:{while(1){e=F[b+(a<<2)>>2];if(F[e+60>>2]==(c|0)){break b}a=a+1|0;if((d|0)!=(a|0)){continue}break}a=0;break a}a=(a|0)!=-1?e:0}return a|0}function ah(a){a=a|0;var b=0;F[a>>2]=9136;b=F[a+88>>2];if(b){F[a+92>>2]=b;ja(b)}b=F[a+72>>2];if(b){F[a+76>>2]=b;ja(b)}b=F[a+60>>2];if(b){F[a- -64>>2]=b;ja(b)}b=F[a+48>>2];if(b){F[a+52>>2]=b;ja(b)}F[a>>2]=9372;b=F[a+36>>2];if(b){ja(b)}b=F[a+24>>2];if(b){ja(b)}return a|0}function Tc(a,b){var c=0,d=0,e=0;F[a+8>>2]=0;F[a>>2]=0;F[a+4>>2]=0;a:{c=F[b+4>>2];d=F[b>>2];b:{if((c|0)==(d|0)){a=c;break b}c=c-d|0;if((c|0)<0){break a}d=c;e=ka(c);c=ma(e,0,c);d=d+c|0;F[a+8>>2]=d;F[a+4>>2]=d;F[a>>2]=c;c=F[b>>2];a=F[b+4>>2]}la(e,c,a-c|0);return}na();v()}function Dd(a){var b=0,c=0,d=0,e=0;c=F[a+4>>2];d=F[a>>2];if((c|0)!=(d|0)){while(1){e=c-144|0;b=F[e+132>>2];if(b){F[c-8>>2]=b;ja(b)}b=F[c-28>>2];if(b){F[c-24>>2]=b;ja(b)}b=F[c-40>>2];if(b){F[c-36>>2]=b;ja(b)}Gb(c-140|0);c=e;if((d|0)!=(c|0)){continue}break}}F[a+4>>2]=d}function Xg(a){a=a|0;var b=0;F[a>>2]=9136;b=F[a+88>>2];if(b){F[a+92>>2]=b;ja(b)}b=F[a+72>>2];if(b){F[a+76>>2]=b;ja(b)}b=F[a+60>>2];if(b){F[a- -64>>2]=b;ja(b)}b=F[a+48>>2];if(b){F[a+52>>2]=b;ja(b)}F[a>>2]=9372;b=F[a+36>>2];if(b){ja(b)}b=F[a+24>>2];if(b){ja(b)}ja(a)}function Za(a){var b=0;if(a){b=F[a+76>>2];if(b){F[a+80>>2]=b;ja(b)}b=F[a- -64>>2];if(b){F[a+68>>2]=b;ja(b)}b=F[a+48>>2];if(b){F[a+52>>2]=b;ja(b)}b=F[a+24>>2];if(b){F[a+28>>2]=b;ja(b)}b=F[a+12>>2];if(b){F[a+16>>2]=b;ja(b)}b=F[a>>2];if(b){F[a+4>>2]=b;ja(b)}ja(a)}}function Gb(a){var b=0;b=F[a+84>>2];if(b){F[a+88>>2]=b;ja(b)}b=F[a+72>>2];if(b){F[a+76>>2]=b;ja(b)}b=F[a+52>>2];if(b){F[a+56>>2]=b;ja(b)}b=F[a+40>>2];if(b){F[a+44>>2]=b;ja(b)}b=F[a+28>>2];if(b){F[a+32>>2]=b;ja(b)}b=F[a+12>>2];if(b){ja(b)}a=F[a>>2];if(a){ja(a)}}function Lc(a,b,c){var d=0,e=0,f=0,g=0;f=Z-16|0;Z=f;d=Z-16|0;Z=d;b=b-a>>2;while(1){if(b){F[d+12>>2]=a;e=b>>>1|0;F[d+12>>2]=F[d+12>>2]+(e<<2);g=(e^-1)+b|0;b=e;e=I[F[d+12>>2]>>2]>2];b=e?g:b;a=e?F[d+12>>2]+4|0:a;continue}break}Z=d+16|0;Z=f+16|0;return a}function id(a,b){var c=0,d=0;d=ka(40);F[d>>2]=-1;c=d+8|0;F[c+16>>2]=0;F[c+20>>2]=0;F[c+8>>2]=0;F[c>>2]=0;F[c+4>>2]=0;F[c+24>>2]=0;F[c+28>>2]=0;$[F[F[a>>2]+16>>2]](a,d);a=F[b+88>>2];F[b+88>>2]=d;if(a){b=F[a+8>>2];if(b){F[a+12>>2]=b;ja(b)}ja(a)}return 1}function ya(a){var b=0,c=0,d=0;b=a;a:{if(b&3){while(1){if(!G[b|0]){break a}b=b+1|0;if(b&3){continue}break}}while(1){c=b;b=b+4|0;d=F[c>>2];if(!((d^-1)&d-16843009&-2139062144)){continue}break}while(1){b=c;c=b+1|0;if(G[b|0]){continue}break}}return b-a|0}function wa(a){var b=0,c=0,d=0,e=0,f=0;d=G[a+12|0];c=F[a+8>>2];a:{if(c>>>0>4095){break a}b=F[a+4>>2];if((b|0)<=0){break a}b=b-1|0;F[a+4>>2]=b;c=G[b+F[a>>2]|0]|c<<8}d=0-d&255;b=L(d,c>>>8|0);e=c&255;f=e>>>0>>0;F[a+8>>2]=f?b+e|0:c-(b+d|0)|0;return f}function yc(a,b){F[a+4>>2]=0;F[a+8>>2]=0;F[a>>2]=1776;F[a+12>>2]=0;F[a+16>>2]=0;F[a+20>>2]=0;F[a+24>>2]=0;F[a+28>>2]=0;F[a+32>>2]=0;F[a+36>>2]=0;F[a+40>>2]=0;F[a>>2]=2016;F[a+60>>2]=b;F[a+44>>2]=0;F[a+48>>2]=0;F[a+52>>2]=0;F[a+56>>2]=0;return a}function Eb(a,b){var c=0,d=0,e=0;c=ya(b);if(c>>>0<2147483632){a:{b:{if(c>>>0>=11){d=(c|15)+1|0;e=ka(d);F[a+8>>2]=d|-2147483648;F[a>>2]=e;F[a+4>>2]=c;d=c+e|0;break b}D[a+11|0]=c;d=a+c|0;e=a;if(!c){break a}}pa(e,b,c)}D[d|0]=0;return a}za();v()}function Of(a){a=a|0;var b=0,c=0,d=0;if(a){if(D[a+27|0]<0){ja(F[a+16>>2])}b=F[a>>2];if(b){c=b;d=F[a+4>>2];if((b|0)!=(d|0)){while(1){c=d-12|0;if(D[d-1|0]<0){ja(F[c>>2])}d=c;if((d|0)!=(b|0)){continue}break}c=F[a>>2]}F[a+4>>2]=b;ja(c)}ja(a)}}function xa(a){a=a|0;var b=0,c=0;if(a){b=F[a+88>>2];F[a+88>>2]=0;if(b){c=F[b+8>>2];if(c){F[b+12>>2]=c;ja(c)}ja(b)}b=F[a+68>>2];if(b){F[a+72>>2]=b;ja(b)}b=F[a+64>>2];F[a+64>>2]=0;if(b){c=F[b>>2];if(c){F[b+4>>2]=c;ja(c)}ja(b)}ja(a)}}function Ib(a,b){var c=0,d=0,e=0;a:{c=F[a>>2];b:{if(F[a+8>>2]-c>>2>>>0>=b>>>0){break b}if(b>>>0>=1073741824){break a}d=F[a+4>>2]-c|0;e=b<<2;b=pa(ka(e),c,d);F[a+8>>2]=b+e;F[a+4>>2]=b+d;F[a>>2]=b;if(!c){break b}ja(c)}return}na();v()}function Df(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;b=F[b+96>>2];a=ka(12);b=b+L(c,12)|0;c=F[b+4>>2];F[a>>2]=F[b>>2];F[a+4>>2]=c;F[a+8>>2]=F[b+8>>2];b=F[d>>2];if(b){F[d+4>>2]=b;ja(b)}F[d>>2]=a;a=a+12|0;F[d+8>>2]=a;F[d+4>>2]=a;return 1}function Ah(a){a=a|0;var b=0;F[a+24>>2]=1624;F[a>>2]=7948;b=F[a+32>>2];if(b){F[a+36>>2]=b;ja(b)}F[a>>2]=2136;b=F[a+20>>2];F[a+20>>2]=0;if(b){$[F[F[b>>2]+4>>2]](b)}F[a>>2]=1920;b=F[a+16>>2];F[a+16>>2]=0;if(b){xa(b)}return a|0}function li(a,b,c,d){var e=0,f=0,g=0,h=0;f=b^d;g=f>>31;e=b>>31;a=a^e;h=a-e|0;e=(b^e)-((a>>>0>>0)+e|0)|0;a=d>>31;b=c^a;f=f>>31;a=mi(h,e,b-a|0,(a^d)-((a>>>0>b>>>0)+a|0)|0)^f;b=a-f|0;_=(g^_)-((a>>>0>>0)+g|0)|0;return b}function zh(a){a=a|0;var b=0;F[a+24>>2]=1624;F[a>>2]=7948;b=F[a+32>>2];if(b){F[a+36>>2]=b;ja(b)}F[a>>2]=2136;b=F[a+20>>2];F[a+20>>2]=0;if(b){$[F[F[b>>2]+4>>2]](b)}F[a>>2]=1920;b=F[a+16>>2];F[a+16>>2]=0;if(b){xa(b)}ja(a)}function rb(a,b,c){var d=0,e=0,f=0;e=Z-16|0;Z=e;d=F[a+8>>2]&2147483647;a:{if(d>>>0>c>>>0){d=F[a>>2];F[a+4>>2]=c;db(d,b,c);D[e+15|0]=0;D[c+d|0]=G[e+15|0];break a}f=a;a=F[a+4>>2];Gc(f,d-1|0,(c-d|0)+1|0,a,a,c,b)}Z=e+16|0}function xe(a,b){a=a|0;b=b|0;var c=0,d=0;c=Z-16|0;Z=c;a=F[a+4>>2];a:{if((a|0)==-1){break a}D[c+15|0]=a;d=F[b+20>>2];if(!!F[b+16>>2]&(d|0)>=0|(d|0)>0){break a}pb(b,F[b+4>>2],c+15|0,c+16|0)}Z=c+16|0;return(a|0)!=-1|0}function ki(a,b,c,d){var e=0,f=0,g=0,h=0,i=0,j=0;e=c>>>16|0;f=a>>>16|0;j=L(e,f);g=c&65535;h=a&65535;i=L(g,h);f=(i>>>16|0)+L(f,g)|0;e=(f&65535)+L(e,h)|0;_=(L(b,c)+j|0)+L(a,d)+(f>>>16)+(e>>>16)|0;return i&65535|e<<16}function qb(a,b,c){var d=0,e=0;d=Z-16|0;Z=d;a:{if(c>>>0<=10){D[a+11|0]=G[a+11|0]&128|c;D[a+11|0]=G[a+11|0]&127;db(a,b,c);D[d+15|0]=0;D[a+c|0]=G[d+15|0];break a}e=a;a=G[a+11|0]&127;Gc(e,10,c-10|0,a,a,c,b)}Z=d+16|0}function Ec(a,b,c){var d=0;d=F[a+16>>2];if(!d){F[a+36>>2]=1;F[a+24>>2]=c;F[a+16>>2]=b;return}a:{if((b|0)==(d|0)){if(F[a+24>>2]!=2){break a}F[a+24>>2]=c;return}D[a+54|0]=1;F[a+24>>2]=2;F[a+36>>2]=F[a+36>>2]+1}}function vg(){var a=0;a=kb(ka(96));F[a+64>>2]=0;F[a+68>>2]=0;F[a+88>>2]=0;F[a+72>>2]=0;F[a+76>>2]=0;D[a+77|0]=0;D[a+78|0]=0;D[a+79|0]=0;D[a+80|0]=0;D[a+81|0]=0;D[a+82|0]=0;D[a+83|0]=0;D[a+84|0]=0;return a|0}function jh(a,b){a=a|0;b=b|0;var c=0,d=0;F[b>>2]=2;c=F[b+8>>2];d=F[b+12>>2]-c|0;if(d>>>0<=4294967291){Db(b+8|0,d+4|0);c=F[b+8>>2]}b=c+d|0;a=F[a+4>>2];D[b|0]=a;D[b+1|0]=a>>>8;D[b+2|0]=a>>>16;D[b+3|0]=a>>>24}function ge(a){a=a|0;var b=0;F[a>>2]=3016;b=F[a+96>>2];if(b){ja(b)}b=F[a+84>>2];if(b){ja(b)}b=F[a+72>>2];if(b){ja(b)}b=F[a+60>>2];if(b){ja(b)}F[a>>2]=2960;b=F[a+32>>2];if(b){F[a+36>>2]=b;ja(b)}return a|0}function ci(a){a=a|0;var b=0;F[a>>2]=4580;b=F[a+96>>2];if(b){ja(b)}b=F[a+84>>2];if(b){ja(b)}b=F[a+72>>2];if(b){ja(b)}b=F[a+60>>2];if(b){ja(b)}F[a>>2]=2960;b=F[a+32>>2];if(b){F[a+36>>2]=b;ja(b)}return a|0}function Cg(a){a=a|0;var b=0,c=0,d=0;b=F[a+8>>2];d=F[a+12>>2];if((b|0)==(d|0)){return 1}while(1){c=F[b>>2];c=$[F[F[c>>2]+16>>2]](c,F[a+32>>2])|0;if(c){b=b+4|0;if((d|0)!=(b|0)){continue}}break}return c|0}function Pc(a,b){var c=0,d=0;c=F[a+8>>2];a=F[a+12>>2];if((c|0)!=(a|0)){a=a-c>>2;d=a>>>0<=1?1:a;a=0;while(1){if(F[F[(a<<2)+c>>2]+60>>2]==(b|0)){return a}a=a+1|0;if((d|0)!=(a|0)){continue}break}}return-1}function fe(a){a=a|0;var b=0;F[a>>2]=3016;b=F[a+96>>2];if(b){ja(b)}b=F[a+84>>2];if(b){ja(b)}b=F[a+72>>2];if(b){ja(b)}b=F[a+60>>2];if(b){ja(b)}F[a>>2]=2960;b=F[a+32>>2];if(b){F[a+36>>2]=b;ja(b)}ja(a)}function bi(a){a=a|0;var b=0;F[a>>2]=4580;b=F[a+96>>2];if(b){ja(b)}b=F[a+84>>2];if(b){ja(b)}b=F[a+72>>2];if(b){ja(b)}b=F[a+60>>2];if(b){ja(b)}F[a>>2]=2960;b=F[a+32>>2];if(b){F[a+36>>2]=b;ja(b)}ja(a)}function Sc(a,b,c){var d=0,e=0;d=a+4|0;a=Ya(a,b);a:{if((d|0)==(a|0)){break a}b=F[a+32>>2];d=F[a+28>>2];if((b|0)==(d|0)){break a}Sb(c,b-d|0);c=Tb(c);b=F[a+28>>2];la(c,b,F[a+32>>2]-b|0);e=1}return e}function Kd(a){F[a+40>>2]=0;F[a+4>>2]=0;F[a+8>>2]=0;F[a>>2]=10032;F[a+12>>2]=0;F[a+16>>2]=0;F[a+20>>2]=0;F[a+24>>2]=0;F[a+28>>2]=0;F[a+32>>2]=0;E[a+36>>1]=0;F[a+44>>2]=0;F[a>>2]=8080;return a}function kb(a){F[a+8>>2]=0;F[a+12>>2]=0;F[a>>2]=0;F[a+40>>2]=0;F[a+44>>2]=0;F[a+28>>2]=9;D[a+24|0]=1;F[a+56>>2]=-1;F[a+60>>2]=0;F[a+16>>2]=0;F[a+20>>2]=0;F[a+48>>2]=0;F[a+52>>2]=0;return a}function pe(a,b){a=a|0;b=b|0;var c=0,d=0;d=F[a+16>>2];c=0;a:{if(F[a+20>>2]-d>>2<=(b|0)){break a}b=F[(b<<2)+d>>2];c=0;if((b|0)<0){break a}c=bb(F[F[a+36>>2]+(b<<2)>>2])}return c|0}function Nf(){var a=0,b=0;a=ka(40);F[a+4>>2]=0;F[a+8>>2]=0;F[a+24>>2]=0;F[a+28>>2]=0;b=a+16|0;F[b>>2]=0;F[b+4>>2]=0;F[a>>2]=a+4;F[a+12>>2]=b;F[a+32>>2]=0;F[a+36>>2]=0;return a|0}function Xe(a,b){a=a|0;b=b|0;var c=0,d=0;Nc(a,b);a:{if((b|0)<0){break a}d=F[a+88>>2];c=F[a+84>>2];if(d-c>>2<=(b|0)){break a}c=(b<<2)+c|0;b=c+4|0;pa(c,b,d-b|0);F[a+88>>2]=d-4}}function eb(a){var b=0,c=0;b=F[2909];c=a+7&-8;a=b+c|0;a:{if(a>>>0<=b>>>0?c:0){break a}if(a>>>0>aa()<<16>>>0){if(!(X(a|0)|0)){break a}}F[2909]=a;return b}F[2940]=48;return-1}function Th(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;F[a+4>>2]=b;b=F[F[F[b+4>>2]+8>>2]+(c<<2)>>2];F[a+12>>2]=c;F[a+8>>2]=b;a=F[a+8>>2];if(G[a+24|0]==3){d=F[a+28>>2]==9}return d|0}function Tg(a){a=a|0;var b=0;F[a+8>>2]=9556;F[a>>2]=9392;b=F[a+56>>2];if(b){F[a+60>>2]=b;ja(b)}F[a+8>>2]=9372;b=F[a+44>>2];if(b){ja(b)}b=F[a+32>>2];if(b){ja(b)}return a|0}function Ng(a){a=a|0;var b=0;F[a+8>>2]=8624;F[a>>2]=9684;b=F[a+56>>2];if(b){F[a+60>>2]=b;ja(b)}F[a+8>>2]=8876;b=F[a+44>>2];if(b){ja(b)}b=F[a+32>>2];if(b){ja(b)}return a|0}function Ee(a,b,c){a=a|0;b=b|0;c=c|0;var d=0,e=0;d=F[a+8>>2];a:{if(!G[d+24|0]){break a}if(!ac(d,F[b+4>>2]-F[b>>2]>>2)){break a}e=$[F[F[a>>2]+32>>2]](a,b,c)|0}return e|0}function Fh(a,b,c){a=a|0;b=b|0;c=c|0;var d=0;F[a+4>>2]=b;d=F[F[F[b+4>>2]+8>>2]+(c<<2)>>2];F[a+12>>2]=c;F[a+8>>2]=d;return F[F[F[F[b+4>>2]+8>>2]+(c<<2)>>2]+28>>2]==9|0}function Ca(a,b){if(b){Ca(a,F[b>>2]);Ca(a,F[b+4>>2]);a=F[b+28>>2];F[b+28>>2]=0;if(a){Ca(a+12|0,F[a+16>>2]);Ba(a,F[a+4>>2]);ja(a)}if(D[b+27|0]<0){ja(F[b+16>>2])}ja(b)}}function Sg(a){a=a|0;var b=0;F[a+8>>2]=9556;F[a>>2]=9392;b=F[a+56>>2];if(b){F[a+60>>2]=b;ja(b)}F[a+8>>2]=9372;b=F[a+44>>2];if(b){ja(b)}b=F[a+32>>2];if(b){ja(b)}ja(a)}function Mg(a){a=a|0;var b=0;F[a+8>>2]=8624;F[a>>2]=9684;b=F[a+56>>2];if(b){F[a+60>>2]=b;ja(b)}F[a+8>>2]=8876;b=F[a+44>>2];if(b){ja(b)}b=F[a+32>>2];if(b){ja(b)}ja(a)}function Hc(a,b){var c=0,d=0,e=0,f=0;F[a>>2]=11356;F[a>>2]=11468;c=ya(b);d=ka(c+13|0);F[d+8>>2]=0;F[d+4>>2]=c;F[d>>2]=c;e=a,f=la(d+12|0,b,c+1|0),F[e+4>>2]=f;return a}function hc(a,b,c){a:{if(b){b=0;if(!ld(1,c,a)){break a}}D[a+36|0]=1;F[a+32>>2]=0;b=F[a+16>>2];c=b+F[a>>2]|0;F[a+24>>2]=c;F[a+28>>2]=c+(F[a+8>>2]-b|0);b=1}return b}function Ue(a,b){a=a|0;b=b|0;var c=0;a:{if(!($[F[F[a>>2]+36>>2]](a,b)|0)){break a}if(!($[F[F[a>>2]+40>>2]](a,b)|0)){break a}c=$[F[F[a>>2]+44>>2]](a)|0}return c|0}function _d(a){a=a|0;var b=0;a:{if(!F[a- -64>>2]|!F[a+68>>2]|(!F[a+44>>2]|!F[a+48>>2])){break a}if(!F[a+52>>2]|!F[a+56>>2]){break a}b=F[a+92>>2]!=-1}return b|0}function ii(a,b){a=a|0;b=b|0;var c=0;b=F[b+88>>2];if(!(!b|F[b>>2]!=2)){c=a;a=F[b+8>>2];F[c+4>>2]=G[a|0]|G[a+1|0]<<8|(G[a+2|0]<<16|G[a+3|0]<<24);c=1}return c|0}function wc(a){a=a|0;var b=0;F[a>>2]=2136;b=F[a+20>>2];F[a+20>>2]=0;if(b){$[F[F[b>>2]+4>>2]](b)}F[a>>2]=1920;b=F[a+16>>2];F[a+16>>2]=0;if(b){xa(b)}return a|0}function Ud(a){a=a|0;var b=0;a:{if(!F[a+48>>2]|!F[a+52>>2]|(!F[a+28>>2]|!F[a+32>>2])){break a}if(!F[a+36>>2]|!F[a+40>>2]){break a}b=F[a+76>>2]!=-1}return b|0}function Ug(a){a=a|0;var b=0;F[a>>2]=9556;b=F[a+48>>2];if(b){F[a+52>>2]=b;ja(b)}F[a>>2]=9372;b=F[a+36>>2];if(b){ja(b)}b=F[a+24>>2];if(b){ja(b)}return a|0}function Ed(a){a=a|0;var b=0;F[a>>2]=8624;b=F[a+48>>2];if(b){F[a+52>>2]=b;ja(b)}F[a>>2]=8876;b=F[a+36>>2];if(b){ja(b)}b=F[a+24>>2];if(b){ja(b)}return a|0}function vc(a){a=a|0;var b=0;F[a>>2]=2136;b=F[a+20>>2];F[a+20>>2]=0;if(b){$[F[F[b>>2]+4>>2]](b)}F[a>>2]=1920;b=F[a+16>>2];F[a+16>>2]=0;if(b){xa(b)}ja(a)}function yg(){var a=0,b=0;b=ka(40);F[b>>2]=-1;a=b+8|0;F[a+16>>2]=0;F[a+20>>2]=0;F[a+8>>2]=0;F[a>>2]=0;F[a+4>>2]=0;F[a+24>>2]=0;F[a+28>>2]=0;return b|0}function eh(a){a=a|0;var b=0;F[a>>2]=8624;b=F[a+48>>2];if(b){F[a+52>>2]=b;ja(b)}F[a>>2]=8876;b=F[a+36>>2];if(b){ja(b)}b=F[a+24>>2];if(b){ja(b)}ja(a)}function Og(a){a=a|0;var b=0;F[a>>2]=9556;b=F[a+48>>2];if(b){F[a+52>>2]=b;ja(b)}F[a>>2]=9372;b=F[a+36>>2];if(b){ja(b)}b=F[a+24>>2];if(b){ja(b)}ja(a)}function Ja(a){F[a+8>>2]=0;F[a+12>>2]=0;F[a>>2]=0;F[a+16>>2]=0;F[a+20>>2]=0;F[a+32>>2]=0;F[a+24>>2]=0;F[a+28>>2]=0;E[a+38>>1]=0;D[a+36|0]=0;return a}function Me(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;if(La(a,F[b+8>>2],f)){Dc(b,c,d,e);return}a=F[a+8>>2];$[F[F[a>>2]+20>>2]](a,b,c,d,e,f)}function Eh(a,b,c){a=a|0;b=b|0;c=c|0;a:{if(G[F[a+4>>2]+36|0]>=2){b=0;if(!($[F[F[a>>2]+52>>2]](a)|0)){break a}}b=id(a+24|0,F[a+16>>2])}return b|0}function hg(){var a=0;a=Rc(ka(108));F[a+84>>2]=0;F[a+88>>2]=0;F[a>>2]=10240;F[a+92>>2]=0;F[a+96>>2]=0;F[a+100>>2]=0;F[a+104>>2]=0;return a|0}function Qc(a,b){var c=0;c=-1;a:{if((b|0)==-1|(b|0)>4){break a}b=L(b,12)+a|0;a=F[b+20>>2];if((F[b+24>>2]-a|0)<=0){break a}c=F[a>>2]}return c}function cc(a,b,c,d,e,f,g){F[a>>2]=0;F[a+56>>2]=b;F[a+48>>2]=0;F[a+52>>2]=0;F[a+40>>2]=f;F[a+44>>2]=g;D[a+32|0]=e;F[a+28>>2]=d;D[a+24|0]=c}function Sh(a,b,c){a=a|0;b=b|0;c=c|0;a:{if(G[F[a+4>>2]+36|0]>=2){b=0;if(!uc(a+24|0,bb(a),c)){break a}}b=id(a+24|0,F[a+16>>2])}return b|0}function _e(a){a=a|0;var b=0;F[a>>2]=10240;b=F[a+96>>2];if(b){F[a+100>>2]=b;ja(b)}b=F[a+84>>2];if(b){F[a+88>>2]=b;ja(b)}return tb(a)|0}function Tb(a){var b=0;if(G[a+11|0]>>>7|0){b=F[a+4>>2]}else{b=G[a+11|0]&127}if(!b){sc(1222);v()}if(G[a+11|0]>>>7|0){a=F[a>>2]}return a}function Ze(a){a=a|0;var b=0;F[a>>2]=10240;b=F[a+96>>2];if(b){F[a+100>>2]=b;ja(b)}b=F[a+84>>2];if(b){F[a+88>>2]=b;ja(b)}ja(tb(a))}function ce(a){a=a|0;var b=0;F[a>>2]=3264;b=F[a+76>>2];if(b){ja(b)}F[a>>2]=2960;b=F[a+32>>2];if(b){F[a+36>>2]=b;ja(b)}return a|0}function _h(a){a=a|0;var b=0;F[a>>2]=4816;b=F[a+76>>2];if(b){ja(b)}F[a>>2]=2960;b=F[a+32>>2];if(b){F[a+36>>2]=b;ja(b)}return a|0}function Ba(a,b){if(b){Ba(a,F[b>>2]);Ba(a,F[b+4>>2]);a=F[b+28>>2];if(a){F[b+32>>2]=a;ja(a)}if(D[b+27|0]<0){ja(F[b+16>>2])}ja(b)}}function Wf(){var a=0;a=ka(28);F[a>>2]=0;F[a+4>>2]=0;F[a+24>>2]=0;F[a+16>>2]=0;F[a+20>>2]=0;F[a+8>>2]=0;F[a+12>>2]=0;return a|0}function We(a){a=a|0;var b=0;F[a>>2]=1776;b=F[a+16>>2];if(b){F[a+20>>2]=b;ja(b)}b=F[a+4>>2];if(b){F[a+8>>2]=b;ja(b)}return a|0}function fg(){var a=0,b=0;a=ka(24);F[a+4>>2]=0;F[a+8>>2]=0;b=a+16|0;F[b>>2]=0;F[b+4>>2]=0;F[a>>2]=a+4;F[a+12>>2]=b;return a|0}function Pe(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(La(a,F[b+8>>2],0)){Ec(b,c,d);return}a=F[a+8>>2];$[F[F[a>>2]+28>>2]](a,b,c,d)}function be(a){a=a|0;var b=0;F[a>>2]=3264;b=F[a+76>>2];if(b){ja(b)}F[a>>2]=2960;b=F[a+32>>2];if(b){F[a+36>>2]=b;ja(b)}ja(a)}function Zh(a){a=a|0;var b=0;F[a>>2]=4816;b=F[a+76>>2];if(b){ja(b)}F[a>>2]=2960;b=F[a+32>>2];if(b){F[a+36>>2]=b;ja(b)}ja(a)}function ka(a){var b=0;a=a?a:1;a:{while(1){b=Ub(a);if(b){break a}b=F[3065];if(b){$[b|0]();continue}break}V();v()}return b}function ib(a,b){if(b){ib(a,F[b>>2]);ib(a,F[b+4>>2]);if(D[b+39|0]<0){ja(F[b+28>>2])}if(D[b+27|0]<0){ja(F[b+16>>2])}ja(b)}}function Cc(a){a=a|0;var b=0,c=0;F[a>>2]=11468;b=F[a+4>>2]-12|0;c=F[b+8>>2]-1|0;F[b+8>>2]=c;if((c|0)<0){ja(b)}return a|0}function ng(){var a=0;a=ka(24);F[a+8>>2]=0;F[a+12>>2]=0;F[a+4>>2]=-1;F[a>>2]=1624;F[a+16>>2]=0;F[a+20>>2]=0;return a|0}function Ac(a,b,c){a=a|0;b=b|0;c=c|0;F[a+4>>2]=b;b=F[F[F[b+4>>2]+8>>2]+(c<<2)>>2];F[a+12>>2]=c;F[a+8>>2]=b;return 1}function pc(a){a=a|0;var b=0;if(!(!F[a+60>>2]|!F[a+44>>2]|(!F[a+48>>2]|!F[a+52>>2]))){b=F[a+56>>2]!=0}return b|0}function Ic(a,b){if(G[a+11|0]>>>7|0){F[a+4>>2]=b;return}D[a+11|0]=G[a+11|0]&128|b;D[a+11|0]=G[a+11|0]&127}function gi(a){a=a|0;var b=0;F[a>>2]=3500;F[a>>2]=2960;b=F[a+32>>2];if(b){F[a+36>>2]=b;ja(b)}return a|0}function Xh(a){a=a|0;var b=0;F[a>>2]=5040;F[a>>2]=2960;b=F[a+32>>2];if(b){F[a+36>>2]=b;ja(b)}return a|0}function nf(a){a=a|0;if(a){if(D[a+39|0]<0){ja(F[a+28>>2])}$b(a+12|0,F[a+16>>2]);ib(a,F[a+4>>2]);ja(a)}}function dh(a){a=a|0;var b=0;F[a>>2]=8876;b=F[a+36>>2];if(b){ja(b)}b=F[a+24>>2];if(b){ja(b)}return a|0}function Wg(a){a=a|0;var b=0;F[a>>2]=9372;b=F[a+36>>2];if(b){ja(b)}b=F[a+24>>2];if(b){ja(b)}return a|0}function ob(a){a=a|0;var b=0;if(!(!F[a+52>>2]|(!F[a+44>>2]|!F[a+48>>2]))){b=F[a+56>>2]!=0}return b|0}function oc(a,b){a=a|0;b=b|0;var c=0;if(!(F[b+56>>2]|!b|G[b+24|0]!=3)){F[a+60>>2]=b;c=1}return c|0}function fi(a){a=a|0;var b=0;F[a>>2]=3500;F[a>>2]=2960;b=F[a+32>>2];if(b){F[a+36>>2]=b;ja(b)}ja(a)}function Wh(a){a=a|0;var b=0;F[a>>2]=5040;F[a>>2]=2960;b=F[a+32>>2];if(b){F[a+36>>2]=b;ja(b)}ja(a)}function zg(a,b,c){a=a|0;b=b|0;c=c|0;F[a+16>>2]=0;F[a+20>>2]=0;F[a>>2]=b;F[a+8>>2]=c;F[a+12>>2]=0}function ch(a){a=a|0;var b=0;F[a>>2]=8876;b=F[a+36>>2];if(b){ja(b)}b=F[a+24>>2];if(b){ja(b)}ja(a)}function Zd(a,b){a=a|0;b=b|0;var c=0;if(!(F[b+56>>2]|G[b+24|0]!=3)){F[a- -64>>2]=b;c=1}return c|0}function Vg(a){a=a|0;var b=0;F[a>>2]=9372;b=F[a+36>>2];if(b){ja(b)}b=F[a+24>>2];if(b){ja(b)}ja(a)}function Td(a,b){a=a|0;b=b|0;var c=0;if(!(F[b+56>>2]|G[b+24|0]!=3)){F[a+48>>2]=b;c=1}return c|0}function Le(a,b,c,d,e,f){a=a|0;b=b|0;c=c|0;d=d|0;e=e|0;f=f|0;if(La(a,F[b+8>>2],f)){Dc(b,c,d,e)}}function oa(){var a=0;a=Rb(4);F[a>>2]=11356;F[a>>2]=11316;F[a>>2]=11336;W(a|0,11448,14);v()}function je(a){a=a|0;var b=0;F[a>>2]=2960;b=F[a+32>>2];if(b){F[a+36>>2]=b;ja(b)}return a|0}function Ae(a){a=a|0;var b=0;F[a>>2]=1920;b=F[a+16>>2];F[a+16>>2]=0;if(b){xa(b)}return a|0}function Pg(a){a=a|0;var b=0;F[a>>2]=1624;b=F[a+8>>2];if(b){F[a+12>>2]=b;ja(b)}return a|0}function Ch(a){a=a|0;var b=0;b=bb(a);return qd(a+24|0,b?b:F[a+8>>2],F[F[a+4>>2]+32>>2])|0}function ze(a){a=a|0;var b=0;F[a>>2]=1920;b=F[a+16>>2];F[a+16>>2]=0;if(b){xa(b)}ja(a)}function Ob(a){a=a|0;var b=0;F[a>>2]=2960;b=F[a+32>>2];if(b){F[a+36>>2]=b;ja(b)}ja(a)}function Hg(a){a=a|0;var b=0;F[a>>2]=1624;b=F[a+8>>2];if(b){F[a+12>>2]=b;ja(b)}ja(a)}function oe(a,b){a=a|0;b=b|0;return $[F[F[a>>2]+48>>2]](a,F[b+4>>2]-F[b>>2]>>2)|0}function $b(a,b){if(b){$b(a,F[b>>2]);$b(a,F[b+4>>2]);ib(b+20|0,F[b+24>>2]);ja(b)}}function xg(a){a=a|0;var b=0;if(a){b=F[a+8>>2];if(b){F[a+12>>2]=b;ja(b)}ja(a)}}function xh(a){a=a|0;if(!F[a+44>>2]){return 0}return $[F[F[a>>2]+48>>2]](a)|0}function ni(a){var b=0;while(1){if(a){a=a-1&a;b=b+1|0;continue}break}return b}function Qe(a,b,c,d){a=a|0;b=b|0;c=c|0;d=d|0;if(La(a,F[b+8>>2],0)){Ec(b,c,d)}}function vh(a,b){a=a|0;b=b|0;a=F[a+48>>2];return $[F[F[a>>2]+20>>2]](a,b)|0}function oi(a){var b=0;b=a&31;a=0-a&31;return(-1>>>b&-2)<>>a} +function oh(a,b){a=a|0;b=b|0;a=F[a+48>>2];return $[F[F[a>>2]+12>>2]](a,b)|0}function nh(a,b){a=a|0;b=b|0;a=F[a+48>>2];return $[F[F[a>>2]+16>>2]](a,b)|0}function Xa(){var a=0;a=ka(12);F[a>>2]=0;F[a+4>>2]=0;F[a+8>>2]=0;return a|0}function Wa(a){a=a|0;var b=0;if(a){b=F[a>>2];if(b){F[a+4>>2]=b;ja(b)}ja(a)}}function mf(a,b,c){a=a|0;b=b|0;c=c|0;F[a+32>>2]=c;F[a+28>>2]=b;return 1}function eg(a){a=a|0;if(a){Ca(a+12|0,F[a+16>>2]);Ba(a,F[a+4>>2]);ja(a)}}function Lb(a,b){a=a|0;b=b|0;if(b>>>0<=1){F[a+28>>2]=b}return b>>>0<2|0}function Fg(a,b){a=a|0;b=b|0;D[b+84|0]=1;F[b+72>>2]=F[b+68>>2];return 1}function kg(){var a=0;a=ka(8);F[a+4>>2]=-1;F[a>>2]=1032;return a|0}function Hf(a,b,c){a=a|0;b=b|0;c=c|0;return F[F[b+8>>2]+(c<<2)>>2]}function th(a){a=a|0;a=F[a+48>>2];return $[F[F[a>>2]+24>>2]](a)|0}function sh(a){a=a|0;a=F[a+48>>2];return $[F[F[a>>2]+28>>2]](a)|0}function ph(a){a=a|0;a=F[a+48>>2];return $[F[F[a>>2]+36>>2]](a)|0}function Rh(a,b){a=a|0;b=b|0;return zc(a+24|0,bb(a),F[a+8>>2])|0}function Bh(a,b){a=a|0;b=b|0;return xd(a+24|0,bb(a),F[a+8>>2])|0}function bg(a){a=a|0;if(a){if(D[a+15|0]<0){ja(F[a+4>>2])}ja(a)}}function Ke(a){a=a|0;if(!a){return 0}return(Fc(a,11164)|0)!=0|0}function Fe(a,b){a=a|0;b=b|0;F[a+12>>2]=-1;F[a+8>>2]=b;return 1}function hd(a,b){a=a|0;b=b|0;return $[F[F[a>>2]+12>>2]](a,b)|0}function Dh(a,b){a=a|0;b=b|0;return $[F[F[a>>2]+56>>2]](a,b)|0}function sc(a){a=Hc(Rb(8),a);F[a>>2]=11568;W(a|0,11600,1);v()}function mg(a,b){a=a|0;b=b|0;return M(J[F[a+8>>2]+(b<<2)>>2])}function Rd(a){a=Hc(Rb(8),a);F[a>>2]=11516;W(a|0,11548,1);v()}function $f(a,b){a=a|0;b=b|0;return M(J[F[a>>2]+(b<<2)>>2])}function gg(a){a=a|0;return(F[a+100>>2]-F[a+96>>2]|0)/12|0}function cg(a){a=a|0;return(D[a+15|0]<0?F[a+4>>2]:a+4|0)|0}function Re(a,b){a=a|0;b=b|0;return F[F[a+4>>2]+(b<<2)>>2]}function dd(a,b){a=a|0;b=b|0;return F[F[a>>2]+(b<<2)>>2]}function Yf(a,b){a=a|0;b=b|0;return E[F[a>>2]+(b<<1)>>1]}function Xf(a,b){a=a|0;b=b|0;return H[F[a>>2]+(b<<1)>>1]}function Vd(a,b,c){a=a|0;b=b|0;c=c|0;return xc(a,b,c)|0}function sb(a,b){var c=0;c=ka(b);F[a+4>>2]=b;F[a>>2]=c}function Kf(a,b,c){a=a|0;b=b|0;c=c|0;return Qc(b,c)|0}function Rc(a){F[a>>2]=10300;ma(a+4|0,0,80);return a}function ji(a){if(a){return 31-O(a-1^a)|0}return 32}function gd(a){a=a|0;return F[a+12>>2]-F[a+8>>2]>>2}function _f(a,b){a=a|0;b=b|0;return D[F[a>>2]+b|0]}function Zf(a,b){a=a|0;b=b|0;return G[F[a>>2]+b|0]}function Ie(a){a=a|0;return F[a+8>>2]-F[a+4>>2]>>2}function wb(a){a=a|0;if(a){$[F[F[a>>2]+4>>2]](a)}}function Jd(a,b){a=a|0;b=b|0;F[a+4>>2]=b;return 1}function ed(a){a=a|0;return F[a+4>>2]-F[a>>2]>>1}function dc(a){a=a|0;return F[a+4>>2]-F[a>>2]>>2}function fd(a){a=a|0;return F[a+4>>2]-F[a>>2]|0}function ke(a){a=a|0;return G[F[a+8>>2]+24|0]}function Qf(a,b){a=a|0;b=b|0;return F[b+8>>2]}function Ff(a,b){a=a|0;b=b|0;return F[b+4>>2]}function De(a,b,c){a=a|0;b=b|0;c=c|0;return 1}function Bg(a,b){a=a|0;b=b|0;return G[b+24|0]}function Oh(a){a=a|0;F[a>>2]=5928;return a|0}function Jh(a){a=a|0;F[a>>2]=6932;return a|0}function lg(a){a=a|0;return M(J[a+20>>2])}function Nh(a){a=a|0;F[a>>2]=5928;ja(a)}function Ih(a){a=a|0;F[a>>2]=6932;ja(a)}function ug(a){a=a|0;return F[a+88>>2]}function tg(a){a=a|0;return F[a+56>>2]}function qg(a){a=a|0;return F[a+40>>2]}function pg(a){a=a|0;return F[a+48>>2]}function og(a){a=a|0;return F[a+60>>2]}function ec(a){a=a|0;return F[a+80>>2]}function cb(a){a=a|0;return F[a+28>>2]}function vd(a){a=a|0;return F[a+8>>2]}function tc(a,b){a=a|0;b=b|0;return-1}function sg(a){a=a|0;return D[a+24|0]}function rg(a){a=a|0;return G[a+32|0]}function dg(a){a=a|0;return!F[a>>2]|0}function Wd(a,b){a=a|0;b=b|0;return 6}function Va(a){a=a|0;return F[a+4>>2]}function Rb(a){return Ub(a+80|0)+80|0}function Qh(a,b){a=a|0;b=b|0;return 2}function Ia(a,b){a=a|0;b=b|0;return 0}function Bc(a,b){a=a|0;b=b|0;return 1}function jd(a){a=a|0;return F[a>>2]}function wg(){return kb(ka(64))|0}function ig(){return Rc(ka(84))|0}function fc(a){a=a|0;if(a){ja(a)}}function Ag(){return Ja(ka(40))|0}function Qb(a){a=a|0;Cc(a);ja(a)}function Je(a){a=a|0;return 1161}function He(a){a=a|0;return 1235}function Ge(a){a=a|0;return 1201}function Pa(a){a=a|0;return a|0}function hh(a){a=a|0;ja(ud(a))}function gh(a){a=a|0;ja(sd(a))}function Ve(a){a=a|0;ja(tb(a))}function ua(a){a=a|0;return 1}function rc(a){a=a|0;return 4}function qc(a){a=a|0;return 5}function Xd(a){a=a|0;return 2}function Ua(a){a=a|0;return 0}function Nb(a){a=a|0;return 6}function Mh(a){a=a|0;return 3}function za(){Rd(1222);v()}function ta(){sc(1154);v()}function na(){Rd(1154);v()}function Ha(a){a=a|0;ja(a)}function Ra(a){a=a|0;v()}function ff(){return 10}function ef(){return 11}function df(){return 12}function vb(){return-1}function ub(){return 1}function lf(){return 5}function kf(){return 6}function jf(){return 7}function jb(){return 0}function hf(){return 8}function gf(){return 9}function cf(){return-2}function bf(){return-3}function bd(){return 3}function af(){return-4}function ad(){return 4}function _b(){return 2}function $e(){return-5}function Te(){V();v()}function Jc(a){a=a|0}function ae(){} +// EMSCRIPTEN_END_FUNCS +e=G;p(q);var $=c([null,Cc,Pa,Ha,Xd,ii,jh,ag,zc,xe,uc,jg,Wd,Qh,Pa,Pg,Hg,ua,yh,mh,kh,xd,fh,qd,Wd,Bg,We,Ra,mf,$c,Ue,Re,Ie,cb,Ia,Te,Bc,ua,Ae,ze,Ac,Fe,Ee,De,Bc,Ce,Be,re,qe,ye,we,pe,ve,ue,te,se,wc,vc,Ac,oe,ne,xc,me,ke,le,je,Ob,ua,Va,ob,Ua,tc,Ia,Ua,ua,ie,he,Ra,Ra,ge,fe,rc,ob,ee,de,ce,be,qc,pc,ua,Ia,oc,$d,hi,gi,fi,Nb,_d,ua,Ia,Zd,Yd,ei,Pa,Ha,Lb,cb,Mb,Ra,Ob,ua,ob,di,Ra,ci,bi,rc,ob,ai,$h,_h,Zh,qc,pc,ua,Ia,oc,$d,Yh,Xh,Wh,Nb,_d,ua,Ia,Zd,Yd,Vh,Pa,Ha,Lb,cb,Kb,Ra,Ob,Ua,ua,Uh,wc,vc,Th,Sh,Vd,Ph,Xd,Rh,Oh,Nh,Nb,Va,Ud,ua,Ia,Td,ua,Mh,Sd,Lh,Pa,Ha,Lb,cb,Mb,Jh,Ih,Nb,Ud,ua,Ia,Td,Sd,Hh,Pa,Ha,Lb,cb,Kb,Pa,Ha,Ua,ua,Ua,tc,Ia,Kh,Gh,Ah,zh,Fh,Eh,Vd,Dh,Ch,Bh,wh,Ra,ua,ua,xh,Dg,Cg,ua,Ua,Ia,Ia,rh,qh,uh,vh,sh,ph,oh,nh,th,ud,hh,Jd,Id,Hd,Gd,lh,ua,Va,vd,sd,gh,Jd,Id,Hd,Gd,ih,ua,Va,vd,Ed,eh,Fd,dh,ch,$g,_g,Zg,Yg,ah,Xg,bh,Wg,Vg,Tg,Sg,Rg,Qg,Ug,Og,Ng,Mg,Lg,Kg,Gg,Ig,Jg,Pa,Ha,Fg,Eg,Ra,Ua,ua,_e,Ze,Ye,Xe,tb,Ve,Oc,Nc,Pa,Ha,Jc,Jc,Se,Le,Ne,Qe,Ha,Me,Oe,Pe,Ha,He,Ha,Ge,Ha,Je,Qb,Va,Qb,Qb]);function aa(){return C.byteLength/65536|0}function fa(ga){ga=ga|0;var ba=aa()|0;var ca=ba+ga|0;if(ba=endIdx))++endPtr;if(endPtr-idx>16&&heapOrArray.buffer&&UTF8Decoder){return UTF8Decoder.decode(heapOrArray.subarray(idx,endPtr))}var str="";while(idx>10,56320|ch&1023)}}return str}function UTF8ToString(ptr,maxBytesToRead){return ptr?UTF8ArrayToString(HEAPU8,ptr,maxBytesToRead):""}function stringToUTF8Array(str,heap,outIdx,maxBytesToWrite){if(!(maxBytesToWrite>0))return 0;var startIdx=outIdx;var endIdx=outIdx+maxBytesToWrite-1;for(var i=0;i=55296&&u<=57343){var u1=str.charCodeAt(++i);u=65536+((u&1023)<<10)|u1&1023}if(u<=127){if(outIdx>=endIdx)break;heap[outIdx++]=u}else if(u<=2047){if(outIdx+1>=endIdx)break;heap[outIdx++]=192|u>>6;heap[outIdx++]=128|u&63}else if(u<=65535){if(outIdx+2>=endIdx)break;heap[outIdx++]=224|u>>12;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}else{if(outIdx+3>=endIdx)break;heap[outIdx++]=240|u>>18;heap[outIdx++]=128|u>>12&63;heap[outIdx++]=128|u>>6&63;heap[outIdx++]=128|u&63}}heap[outIdx]=0;return outIdx-startIdx}function lengthBytesUTF8(str){var len=0;for(var i=0;i=55296&&c<=57343){len+=4;++i}else{len+=3}}return len}var HEAP8,HEAPU8,HEAP16,HEAPU16,HEAP32,HEAPU32,HEAPF32,HEAPF64;function updateMemoryViews(){var b=wasmMemory.buffer;Module["HEAP8"]=HEAP8=new Int8Array(b);Module["HEAP16"]=HEAP16=new Int16Array(b);Module["HEAP32"]=HEAP32=new Int32Array(b);Module["HEAPU8"]=HEAPU8=new Uint8Array(b);Module["HEAPU16"]=HEAPU16=new Uint16Array(b);Module["HEAPU32"]=HEAPU32=new Uint32Array(b);Module["HEAPF32"]=HEAPF32=new Float32Array(b);Module["HEAPF64"]=HEAPF64=new Float64Array(b)}var INITIAL_MEMORY=Module["INITIAL_MEMORY"]||16777216;assert(INITIAL_MEMORY>=65536,"INITIAL_MEMORY should be larger than STACK_SIZE, was "+INITIAL_MEMORY+"! (STACK_SIZE="+65536+")");if(Module["wasmMemory"]){wasmMemory=Module["wasmMemory"]}else{wasmMemory=new WebAssembly.Memory({"initial":INITIAL_MEMORY/65536,"maximum":2147483648/65536})}updateMemoryViews();INITIAL_MEMORY=wasmMemory.buffer.byteLength;var wasmTable;var __ATPRERUN__=[];var __ATINIT__=[];var __ATPOSTRUN__=[];var runtimeInitialized=false;function keepRuntimeAlive(){return noExitRuntime}function preRun(){if(Module["preRun"]){if(typeof Module["preRun"]=="function")Module["preRun"]=[Module["preRun"]];while(Module["preRun"].length){addOnPreRun(Module["preRun"].shift())}}callRuntimeCallbacks(__ATPRERUN__)}function initRuntime(){runtimeInitialized=true;callRuntimeCallbacks(__ATINIT__)}function postRun(){if(Module["postRun"]){if(typeof Module["postRun"]=="function")Module["postRun"]=[Module["postRun"]];while(Module["postRun"].length){addOnPostRun(Module["postRun"].shift())}}callRuntimeCallbacks(__ATPOSTRUN__)}function addOnPreRun(cb){__ATPRERUN__.unshift(cb)}function addOnInit(cb){__ATINIT__.unshift(cb)}function addOnPostRun(cb){__ATPOSTRUN__.unshift(cb)}var runDependencies=0;var runDependencyWatcher=null;var dependenciesFulfilled=null;function addRunDependency(id){runDependencies++;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}}function removeRunDependency(id){runDependencies--;if(Module["monitorRunDependencies"]){Module["monitorRunDependencies"](runDependencies)}if(runDependencies==0){if(runDependencyWatcher!==null){clearInterval(runDependencyWatcher);runDependencyWatcher=null}if(dependenciesFulfilled){var callback=dependenciesFulfilled;dependenciesFulfilled=null;callback()}}}function abort(what){if(Module["onAbort"]){Module["onAbort"](what)}what="Aborted("+what+")";err(what);ABORT=true;EXITSTATUS=1;what+=". Build with -sASSERTIONS for more info.";var e=new WebAssembly.RuntimeError(what);readyPromiseReject(e);throw e}var dataURIPrefix="data:application/octet-stream;base64,";function isDataURI(filename){return filename.startsWith(dataURIPrefix)}function isFileURI(filename){return filename.startsWith("file://")}var wasmBinaryFile;wasmBinaryFile="draco_decoder_gltf.wasm";if(!isDataURI(wasmBinaryFile)){wasmBinaryFile=locateFile(wasmBinaryFile)}function getBinary(file){try{if(file==wasmBinaryFile&&wasmBinary){return new Uint8Array(wasmBinary)}var binary=tryParseAsDataURI(file);if(binary){return binary}if(readBinary){return readBinary(file)}throw"both async and sync fetching of the wasm failed"}catch(err){abort(err)}}function getBinaryPromise(){if(!wasmBinary&&(ENVIRONMENT_IS_WEB||ENVIRONMENT_IS_WORKER)){if(typeof fetch=="function"&&!isFileURI(wasmBinaryFile)){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){if(!response["ok"]){throw"failed to load wasm binary file at '"+wasmBinaryFile+"'"}return response["arrayBuffer"]()}).catch(function(){return getBinary(wasmBinaryFile)})}else{if(readAsync){return new Promise(function(resolve,reject){readAsync(wasmBinaryFile,function(response){resolve(new Uint8Array(response))},reject)})}}}return Promise.resolve().then(function(){return getBinary(wasmBinaryFile)})}function createWasm(){var info={"a":wasmImports};function receiveInstance(instance,module){var exports=instance.exports;Module["asm"]=exports;wasmTable=Module["asm"]["g"];addOnInit(Module["asm"]["f"]);removeRunDependency("wasm-instantiate")}addRunDependency("wasm-instantiate");function receiveInstantiationResult(result){receiveInstance(result["instance"])}function instantiateArrayBuffer(receiver){return getBinaryPromise().then(function(binary){return WebAssembly.instantiate(binary,info)}).then(function(instance){return instance}).then(receiver,function(reason){err("failed to asynchronously prepare wasm: "+reason);abort(reason)})}function instantiateAsync(){if(!wasmBinary&&typeof WebAssembly.instantiateStreaming=="function"&&!isDataURI(wasmBinaryFile)&&!isFileURI(wasmBinaryFile)&&!ENVIRONMENT_IS_NODE&&typeof fetch=="function"){return fetch(wasmBinaryFile,{credentials:"same-origin"}).then(function(response){var result=WebAssembly.instantiateStreaming(response,info);return result.then(receiveInstantiationResult,function(reason){err("wasm streaming compile failed: "+reason);err("falling back to ArrayBuffer instantiation");return instantiateArrayBuffer(receiveInstantiationResult)})})}else{return instantiateArrayBuffer(receiveInstantiationResult)}}if(Module["instantiateWasm"]){try{var exports=Module["instantiateWasm"](info,receiveInstance);return exports}catch(e){err("Module.instantiateWasm callback failed with error: "+e);readyPromiseReject(e)}}instantiateAsync().catch(readyPromiseReject);return{}}function ExitStatus(status){this.name="ExitStatus";this.message="Program terminated with exit("+status+")";this.status=status}function callRuntimeCallbacks(callbacks){while(callbacks.length>0){callbacks.shift()(Module)}}function intArrayToString(array){var ret=[];for(var i=0;i255){chr&=255}ret.push(String.fromCharCode(chr))}return ret.join("")}function ExceptionInfo(excPtr){this.excPtr=excPtr;this.ptr=excPtr-24;this.set_type=function(type){HEAPU32[this.ptr+4>>2]=type};this.get_type=function(){return HEAPU32[this.ptr+4>>2]};this.set_destructor=function(destructor){HEAPU32[this.ptr+8>>2]=destructor};this.get_destructor=function(){return HEAPU32[this.ptr+8>>2]};this.set_refcount=function(refcount){HEAP32[this.ptr>>2]=refcount};this.set_caught=function(caught){caught=caught?1:0;HEAP8[this.ptr+12>>0]=caught};this.get_caught=function(){return HEAP8[this.ptr+12>>0]!=0};this.set_rethrown=function(rethrown){rethrown=rethrown?1:0;HEAP8[this.ptr+13>>0]=rethrown};this.get_rethrown=function(){return HEAP8[this.ptr+13>>0]!=0};this.init=function(type,destructor){this.set_adjusted_ptr(0);this.set_type(type);this.set_destructor(destructor);this.set_refcount(0);this.set_caught(false);this.set_rethrown(false)};this.add_ref=function(){var value=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=value+1};this.release_ref=function(){var prev=HEAP32[this.ptr>>2];HEAP32[this.ptr>>2]=prev-1;return prev===1};this.set_adjusted_ptr=function(adjustedPtr){HEAPU32[this.ptr+16>>2]=adjustedPtr};this.get_adjusted_ptr=function(){return HEAPU32[this.ptr+16>>2]};this.get_exception_ptr=function(){var isPointer=___cxa_is_pointer_type(this.get_type());if(isPointer){return HEAPU32[this.excPtr>>2]}var adjusted=this.get_adjusted_ptr();if(adjusted!==0)return adjusted;return this.excPtr}}var exceptionLast=0;var uncaughtExceptionCount=0;function ___cxa_throw(ptr,type,destructor){var info=new ExceptionInfo(ptr);info.init(type,destructor);exceptionLast=ptr;uncaughtExceptionCount++;throw ptr}function _abort(){abort("")}function _emscripten_memcpy_big(dest,src,num){HEAPU8.copyWithin(dest,src,src+num)}function getHeapMax(){return 2147483648}function emscripten_realloc_buffer(size){var b=wasmMemory.buffer;try{wasmMemory.grow(size-b.byteLength+65535>>>16);updateMemoryViews();return 1}catch(e){}}function _emscripten_resize_heap(requestedSize){var oldSize=HEAPU8.length;requestedSize=requestedSize>>>0;var maxHeapSize=getHeapMax();if(requestedSize>maxHeapSize){return false}let alignUp=(x,multiple)=>x+(multiple-x%multiple)%multiple;for(var cutDown=1;cutDown<=4;cutDown*=2){var overGrownHeapSize=oldSize*(1+.2/cutDown);overGrownHeapSize=Math.min(overGrownHeapSize,requestedSize+100663296);var newSize=Math.min(maxHeapSize,alignUp(Math.max(requestedSize,overGrownHeapSize),65536));var replacement=emscripten_realloc_buffer(newSize);if(replacement){return true}}return false}function intArrayFromString(stringy,dontAddNull,length){var len=length>0?length:lengthBytesUTF8(stringy)+1;var u8array=new Array(len);var numBytesWritten=stringToUTF8Array(stringy,u8array,0,u8array.length);if(dontAddNull)u8array.length=numBytesWritten;return u8array}var decodeBase64=typeof atob=="function"?atob:function(input){var keyStr="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";var output="";var chr1,chr2,chr3;var enc1,enc2,enc3,enc4;var i=0;input=input.replace(/[^A-Za-z0-9\+\/\=]/g,"");do{enc1=keyStr.indexOf(input.charAt(i++));enc2=keyStr.indexOf(input.charAt(i++));enc3=keyStr.indexOf(input.charAt(i++));enc4=keyStr.indexOf(input.charAt(i++));chr1=enc1<<2|enc2>>4;chr2=(enc2&15)<<4|enc3>>2;chr3=(enc3&3)<<6|enc4;output=output+String.fromCharCode(chr1);if(enc3!==64){output=output+String.fromCharCode(chr2)}if(enc4!==64){output=output+String.fromCharCode(chr3)}}while(i0){return}preRun();if(runDependencies>0){return}function doRun(){if(calledRun)return;calledRun=true;Module["calledRun"]=true;if(ABORT)return;initRuntime();readyPromiseResolve(Module);if(Module["onRuntimeInitialized"])Module["onRuntimeInitialized"]();postRun()}if(Module["setStatus"]){Module["setStatus"]("Running...");setTimeout(function(){setTimeout(function(){Module["setStatus"]("")},1);doRun()},1)}else{doRun()}}if(Module["preInit"]){if(typeof Module["preInit"]=="function")Module["preInit"]=[Module["preInit"]];while(Module["preInit"].length>0){Module["preInit"].pop()()}}run();function WrapperObject(){}WrapperObject.prototype=Object.create(WrapperObject.prototype);WrapperObject.prototype.constructor=WrapperObject;WrapperObject.prototype.__class__=WrapperObject;WrapperObject.__cache__={};Module["WrapperObject"]=WrapperObject;function getCache(__class__){return(__class__||WrapperObject).__cache__}Module["getCache"]=getCache;function wrapPointer(ptr,__class__){var cache=getCache(__class__);var ret=cache[ptr];if(ret)return ret;ret=Object.create((__class__||WrapperObject).prototype);ret.ptr=ptr;return cache[ptr]=ret}Module["wrapPointer"]=wrapPointer;function castObject(obj,__class__){return wrapPointer(obj.ptr,__class__)}Module["castObject"]=castObject;Module["NULL"]=wrapPointer(0);function destroy(obj){if(!obj["__destroy__"])throw"Error: Cannot destroy object. (Did you create it yourself?)";obj["__destroy__"]();delete getCache(obj.__class__)[obj.ptr]}Module["destroy"]=destroy;function compare(obj1,obj2){return obj1.ptr===obj2.ptr}Module["compare"]=compare;function getPointer(obj){return obj.ptr}Module["getPointer"]=getPointer;function getClass(obj){return obj.__class__}Module["getClass"]=getClass;var ensureCache={buffer:0,size:0,pos:0,temps:[],needed:0,prepare:function(){if(ensureCache.needed){for(var i=0;i=ensureCache.size){assert(len>0);ensureCache.needed+=len;ret=Module["_malloc"](len);ensureCache.temps.push(ret)}else{ret=ensureCache.buffer+ensureCache.pos;ensureCache.pos+=len}return ret},copy:function(array,view,offset){offset>>>=0;var bytes=view.BYTES_PER_ELEMENT;switch(bytes){case 2:offset>>>=1;break;case 4:offset>>>=2;break;case 8:offset>>>=3;break}for(var i=0;i>>0,$jscomp.propertyToPolyfillSymbol[l]=$jscomp.IS_SYMBOL_NATIVE? +$jscomp.global.Symbol(l):$jscomp.POLYFILL_PREFIX+k+"$"+l),$jscomp.defineProperty(p,$jscomp.propertyToPolyfillSymbol[l],{configurable:!0,writable:!0,value:n})))}; +$jscomp.polyfill("Promise",function(h){function n(){this.batch_=null}function k(f){return f instanceof l?f:new l(function(q,u){q(f)})}if(h&&(!($jscomp.FORCE_POLYFILL_PROMISE||$jscomp.FORCE_POLYFILL_PROMISE_WHEN_NO_UNHANDLED_REJECTION&&"undefined"===typeof $jscomp.global.PromiseRejectionEvent)||!$jscomp.global.Promise||-1===$jscomp.global.Promise.toString().indexOf("[native code]")))return h;n.prototype.asyncExecute=function(f){if(null==this.batch_){this.batch_=[];var q=this;this.asyncExecuteFunction(function(){q.executeBatch_()})}this.batch_.push(f)}; +var p=$jscomp.global.setTimeout;n.prototype.asyncExecuteFunction=function(f){p(f,0)};n.prototype.executeBatch_=function(){for(;this.batch_&&this.batch_.length;){var f=this.batch_;this.batch_=[];for(var q=0;q=y}},"es6","es3"); +$jscomp.polyfill("Array.prototype.copyWithin",function(h){function n(k){k=Number(k);return Infinity===k||-Infinity===k?k:k|0}return h?h:function(k,p,l){var y=this.length;k=n(k);p=n(p);l=void 0===l?y:n(l);k=0>k?Math.max(y+k,0):Math.min(k,y);p=0>p?Math.max(y+p,0):Math.min(p,y);l=0>l?Math.max(y+l,0):Math.min(l,y);if(kp;)--l in this?this[--k]=this[l]:delete this[--k];return this}},"es6","es3"); +$jscomp.typedArrayCopyWithin=function(h){return h?h:Array.prototype.copyWithin};$jscomp.polyfill("Int8Array.prototype.copyWithin",$jscomp.typedArrayCopyWithin,"es6","es5");$jscomp.polyfill("Uint8Array.prototype.copyWithin",$jscomp.typedArrayCopyWithin,"es6","es5");$jscomp.polyfill("Uint8ClampedArray.prototype.copyWithin",$jscomp.typedArrayCopyWithin,"es6","es5");$jscomp.polyfill("Int16Array.prototype.copyWithin",$jscomp.typedArrayCopyWithin,"es6","es5"); +$jscomp.polyfill("Uint16Array.prototype.copyWithin",$jscomp.typedArrayCopyWithin,"es6","es5");$jscomp.polyfill("Int32Array.prototype.copyWithin",$jscomp.typedArrayCopyWithin,"es6","es5");$jscomp.polyfill("Uint32Array.prototype.copyWithin",$jscomp.typedArrayCopyWithin,"es6","es5");$jscomp.polyfill("Float32Array.prototype.copyWithin",$jscomp.typedArrayCopyWithin,"es6","es5");$jscomp.polyfill("Float64Array.prototype.copyWithin",$jscomp.typedArrayCopyWithin,"es6","es5"); +var DracoDecoderModule=function(){var h="undefined"!==typeof document&&document.currentScript?document.currentScript.src:void 0;"undefined"!==typeof __filename&&(h=h||__filename);return function(n){function k(e){return a.locateFile?a.locateFile(e,U):U+e}function p(e,b){if(e){var c=ia;var d=e+b;for(b=e;c[b]&&!(b>=d);)++b;if(16g?d+=String.fromCharCode(g):(g-=65536,d+=String.fromCharCode(55296|g>>10,56320|g&1023))}}else d+=String.fromCharCode(g)}c=d}}else c="";return c}function l(){var e=ja.buffer;a.HEAP8=W=new Int8Array(e);a.HEAP16=new Int16Array(e);a.HEAP32=ca=new Int32Array(e);a.HEAPU8=ia=new Uint8Array(e);a.HEAPU16=new Uint16Array(e);a.HEAPU32=Y=new Uint32Array(e);a.HEAPF32=new Float32Array(e);a.HEAPF64=new Float64Array(e)}function y(e){if(a.onAbort)a.onAbort(e); +e="Aborted("+e+")";da(e);sa=!0;e=new WebAssembly.RuntimeError(e+". Build with -sASSERTIONS for more info.");ka(e);throw e;}function f(e){try{if(e==P&&ea)return new Uint8Array(ea);if(ma)return ma(e);throw"both async and sync fetching of the wasm failed";}catch(b){y(b)}}function q(){if(!ea&&(ta||fa)){if("function"==typeof fetch&&!P.startsWith("file://"))return fetch(P,{credentials:"same-origin"}).then(function(e){if(!e.ok)throw"failed to load wasm binary file at '"+P+"'";return e.arrayBuffer()}).catch(function(){return f(P)}); +if(na)return new Promise(function(e,b){na(P,function(c){e(new Uint8Array(c))},b)})}return Promise.resolve().then(function(){return f(P)})}function u(e){for(;0>2]=b};this.get_type=function(){return Y[this.ptr+4>>2]};this.set_destructor=function(b){Y[this.ptr+8>>2]=b};this.get_destructor=function(){return Y[this.ptr+8>>2]};this.set_refcount=function(b){ca[this.ptr>>2]=b};this.set_caught=function(b){W[this.ptr+ +12>>0]=b?1:0};this.get_caught=function(){return 0!=W[this.ptr+12>>0]};this.set_rethrown=function(b){W[this.ptr+13>>0]=b?1:0};this.get_rethrown=function(){return 0!=W[this.ptr+13>>0]};this.init=function(b,c){this.set_adjusted_ptr(0);this.set_type(b);this.set_destructor(c);this.set_refcount(0);this.set_caught(!1);this.set_rethrown(!1)};this.add_ref=function(){ca[this.ptr>>2]+=1};this.release_ref=function(){var b=ca[this.ptr>>2];ca[this.ptr>>2]=b-1;return 1===b};this.set_adjusted_ptr=function(b){Y[this.ptr+ +16>>2]=b};this.get_adjusted_ptr=function(){return Y[this.ptr+16>>2]};this.get_exception_ptr=function(){if(ua(this.get_type()))return Y[this.excPtr>>2];var b=this.get_adjusted_ptr();return 0!==b?b:this.excPtr}}function F(){function e(){if(!la&&(la=!0,a.calledRun=!0,!sa)){va=!0;u(oa);wa(a);if(a.onRuntimeInitialized)a.onRuntimeInitialized();if(a.postRun)for("function"==typeof a.postRun&&(a.postRun=[a.postRun]);a.postRun.length;)xa.unshift(a.postRun.shift());u(xa)}}if(!(0=d?b++:2047>=d?b+=2:55296<=d&&57343>= +d?(b+=4,++c):b+=3}b=Array(b+1);c=0;d=b.length;if(0=t){var aa=e.charCodeAt(++g);t=65536+((t&1023)<<10)|aa&1023}if(127>=t){if(c>=d)break;b[c++]=t}else{if(2047>=t){if(c+1>=d)break;b[c++]=192|t>>6}else{if(65535>=t){if(c+2>=d)break;b[c++]=224|t>>12}else{if(c+3>=d)break;b[c++]=240|t>>18;b[c++]=128|t>>12&63}b[c++]=128|t>>6&63}b[c++]=128|t&63}}b[c]=0}e=r.alloc(b,W);r.copy(b,W,e);return e}return e}function Z(e){if("object"=== +typeof e){var b=r.alloc(e,W);r.copy(e,W,b);return b}return e}function X(){throw"cannot construct a VoidPtr, no constructor in IDL";}function S(){this.ptr=za();w(S)[this.ptr]=this}function Q(){this.ptr=Aa();w(Q)[this.ptr]=this}function V(){this.ptr=Ba();w(V)[this.ptr]=this}function x(){this.ptr=Ca();w(x)[this.ptr]=this}function D(){this.ptr=Da();w(D)[this.ptr]=this}function G(){this.ptr=Ea();w(G)[this.ptr]=this}function H(){this.ptr=Fa();w(H)[this.ptr]=this}function E(){this.ptr=Ga();w(E)[this.ptr]= +this}function T(){this.ptr=Ha();w(T)[this.ptr]=this}function C(){throw"cannot construct a Status, no constructor in IDL";}function I(){this.ptr=Ia();w(I)[this.ptr]=this}function J(){this.ptr=Ja();w(J)[this.ptr]=this}function K(){this.ptr=Ka();w(K)[this.ptr]=this}function L(){this.ptr=La();w(L)[this.ptr]=this}function M(){this.ptr=Ma();w(M)[this.ptr]=this}function N(){this.ptr=Na();w(N)[this.ptr]=this}function O(){this.ptr=Oa();w(O)[this.ptr]=this}function z(){this.ptr=Pa();w(z)[this.ptr]=this}function m(){this.ptr= +Qa();w(m)[this.ptr]=this}n=void 0===n?{}:n;var a="undefined"!=typeof n?n:{},wa,ka;a.ready=new Promise(function(e,b){wa=e;ka=b});var Ra=!1,Sa=!1;a.onRuntimeInitialized=function(){Ra=!0;if(Sa&&"function"===typeof a.onModuleLoaded)a.onModuleLoaded(a)};a.onModuleParsed=function(){Sa=!0;if(Ra&&"function"===typeof a.onModuleLoaded)a.onModuleLoaded(a)};a.isVersionSupported=function(e){if("string"!==typeof e)return!1;e=e.split(".");return 2>e.length||3=e[1]?!0:0!=e[0]||10< +e[1]?!1:!0};var Ta=Object.assign({},a),ta="object"==typeof window,fa="function"==typeof importScripts,Ua="object"==typeof process&&"object"==typeof process.versions&&"string"==typeof process.versions.node,U="";if(Ua){var Va=require("fs"),pa=require("path");U=fa?pa.dirname(U)+"/":__dirname+"/";var Wa=function(e,b){e=e.startsWith("file://")?new URL(e):pa.normalize(e);return Va.readFileSync(e,b?void 0:"utf8")};var ma=function(e){e=Wa(e,!0);e.buffer||(e=new Uint8Array(e));return e};var na=function(e, +b,c){e=e.startsWith("file://")?new URL(e):pa.normalize(e);Va.readFile(e,function(d,g){d?c(d):b(g.buffer)})};1>>=0;if(2147483648=c;c*=2){var d=b*(1+.2/c);d=Math.min(d,e+100663296);var g=Math;d=Math.max(e,d);g=g.min.call(g,2147483648,d+(65536-d%65536)%65536);a:{d=ja.buffer;try{ja.grow(g-d.byteLength+65535>>>16);l();var t=1;break a}catch(aa){}t=void 0}if(t)return!0}return!1}};(function(){function e(g,t){a.asm=g.exports;ja=a.asm.e;l();oa.unshift(a.asm.f);ba--;a.monitorRunDependencies&&a.monitorRunDependencies(ba);0==ba&&(null!==qa&&(clearInterval(qa),qa=null),ha&&(g=ha,ha=null,g()))}function b(g){e(g.instance)} +function c(g){return q().then(function(t){return WebAssembly.instantiate(t,d)}).then(function(t){return t}).then(g,function(t){da("failed to asynchronously prepare wasm: "+t);y(t)})}var d={a:qd};ba++;a.monitorRunDependencies&&a.monitorRunDependencies(ba);if(a.instantiateWasm)try{return a.instantiateWasm(d,e)}catch(g){da("Module.instantiateWasm callback failed with error: "+g),ka(g)}(function(){return ea||"function"!=typeof WebAssembly.instantiateStreaming||P.startsWith("data:application/octet-stream;base64,")|| +P.startsWith("file://")||Ua||"function"!=typeof fetch?c(b):fetch(P,{credentials:"same-origin"}).then(function(g){return WebAssembly.instantiateStreaming(g,d).then(b,function(t){da("wasm streaming compile failed: "+t);da("falling back to ArrayBuffer instantiation");return c(b)})})})().catch(ka);return{}})();var Xa=a._emscripten_bind_VoidPtr___destroy___0=function(){return(Xa=a._emscripten_bind_VoidPtr___destroy___0=a.asm.h).apply(null,arguments)},za=a._emscripten_bind_DecoderBuffer_DecoderBuffer_0= +function(){return(za=a._emscripten_bind_DecoderBuffer_DecoderBuffer_0=a.asm.i).apply(null,arguments)},Ya=a._emscripten_bind_DecoderBuffer_Init_2=function(){return(Ya=a._emscripten_bind_DecoderBuffer_Init_2=a.asm.j).apply(null,arguments)},Za=a._emscripten_bind_DecoderBuffer___destroy___0=function(){return(Za=a._emscripten_bind_DecoderBuffer___destroy___0=a.asm.k).apply(null,arguments)},Aa=a._emscripten_bind_AttributeTransformData_AttributeTransformData_0=function(){return(Aa=a._emscripten_bind_AttributeTransformData_AttributeTransformData_0= +a.asm.l).apply(null,arguments)},$a=a._emscripten_bind_AttributeTransformData_transform_type_0=function(){return($a=a._emscripten_bind_AttributeTransformData_transform_type_0=a.asm.m).apply(null,arguments)},ab=a._emscripten_bind_AttributeTransformData___destroy___0=function(){return(ab=a._emscripten_bind_AttributeTransformData___destroy___0=a.asm.n).apply(null,arguments)},Ba=a._emscripten_bind_GeometryAttribute_GeometryAttribute_0=function(){return(Ba=a._emscripten_bind_GeometryAttribute_GeometryAttribute_0= +a.asm.o).apply(null,arguments)},bb=a._emscripten_bind_GeometryAttribute___destroy___0=function(){return(bb=a._emscripten_bind_GeometryAttribute___destroy___0=a.asm.p).apply(null,arguments)},Ca=a._emscripten_bind_PointAttribute_PointAttribute_0=function(){return(Ca=a._emscripten_bind_PointAttribute_PointAttribute_0=a.asm.q).apply(null,arguments)},cb=a._emscripten_bind_PointAttribute_size_0=function(){return(cb=a._emscripten_bind_PointAttribute_size_0=a.asm.r).apply(null,arguments)},db=a._emscripten_bind_PointAttribute_GetAttributeTransformData_0= +function(){return(db=a._emscripten_bind_PointAttribute_GetAttributeTransformData_0=a.asm.s).apply(null,arguments)},eb=a._emscripten_bind_PointAttribute_attribute_type_0=function(){return(eb=a._emscripten_bind_PointAttribute_attribute_type_0=a.asm.t).apply(null,arguments)},fb=a._emscripten_bind_PointAttribute_data_type_0=function(){return(fb=a._emscripten_bind_PointAttribute_data_type_0=a.asm.u).apply(null,arguments)},gb=a._emscripten_bind_PointAttribute_num_components_0=function(){return(gb=a._emscripten_bind_PointAttribute_num_components_0= +a.asm.v).apply(null,arguments)},hb=a._emscripten_bind_PointAttribute_normalized_0=function(){return(hb=a._emscripten_bind_PointAttribute_normalized_0=a.asm.w).apply(null,arguments)},ib=a._emscripten_bind_PointAttribute_byte_stride_0=function(){return(ib=a._emscripten_bind_PointAttribute_byte_stride_0=a.asm.x).apply(null,arguments)},jb=a._emscripten_bind_PointAttribute_byte_offset_0=function(){return(jb=a._emscripten_bind_PointAttribute_byte_offset_0=a.asm.y).apply(null,arguments)},kb=a._emscripten_bind_PointAttribute_unique_id_0= +function(){return(kb=a._emscripten_bind_PointAttribute_unique_id_0=a.asm.z).apply(null,arguments)},lb=a._emscripten_bind_PointAttribute___destroy___0=function(){return(lb=a._emscripten_bind_PointAttribute___destroy___0=a.asm.A).apply(null,arguments)},Da=a._emscripten_bind_AttributeQuantizationTransform_AttributeQuantizationTransform_0=function(){return(Da=a._emscripten_bind_AttributeQuantizationTransform_AttributeQuantizationTransform_0=a.asm.B).apply(null,arguments)},mb=a._emscripten_bind_AttributeQuantizationTransform_InitFromAttribute_1= +function(){return(mb=a._emscripten_bind_AttributeQuantizationTransform_InitFromAttribute_1=a.asm.C).apply(null,arguments)},nb=a._emscripten_bind_AttributeQuantizationTransform_quantization_bits_0=function(){return(nb=a._emscripten_bind_AttributeQuantizationTransform_quantization_bits_0=a.asm.D).apply(null,arguments)},ob=a._emscripten_bind_AttributeQuantizationTransform_min_value_1=function(){return(ob=a._emscripten_bind_AttributeQuantizationTransform_min_value_1=a.asm.E).apply(null,arguments)},pb= +a._emscripten_bind_AttributeQuantizationTransform_range_0=function(){return(pb=a._emscripten_bind_AttributeQuantizationTransform_range_0=a.asm.F).apply(null,arguments)},qb=a._emscripten_bind_AttributeQuantizationTransform___destroy___0=function(){return(qb=a._emscripten_bind_AttributeQuantizationTransform___destroy___0=a.asm.G).apply(null,arguments)},Ea=a._emscripten_bind_AttributeOctahedronTransform_AttributeOctahedronTransform_0=function(){return(Ea=a._emscripten_bind_AttributeOctahedronTransform_AttributeOctahedronTransform_0= +a.asm.H).apply(null,arguments)},rb=a._emscripten_bind_AttributeOctahedronTransform_InitFromAttribute_1=function(){return(rb=a._emscripten_bind_AttributeOctahedronTransform_InitFromAttribute_1=a.asm.I).apply(null,arguments)},sb=a._emscripten_bind_AttributeOctahedronTransform_quantization_bits_0=function(){return(sb=a._emscripten_bind_AttributeOctahedronTransform_quantization_bits_0=a.asm.J).apply(null,arguments)},tb=a._emscripten_bind_AttributeOctahedronTransform___destroy___0=function(){return(tb= +a._emscripten_bind_AttributeOctahedronTransform___destroy___0=a.asm.K).apply(null,arguments)},Fa=a._emscripten_bind_PointCloud_PointCloud_0=function(){return(Fa=a._emscripten_bind_PointCloud_PointCloud_0=a.asm.L).apply(null,arguments)},ub=a._emscripten_bind_PointCloud_num_attributes_0=function(){return(ub=a._emscripten_bind_PointCloud_num_attributes_0=a.asm.M).apply(null,arguments)},vb=a._emscripten_bind_PointCloud_num_points_0=function(){return(vb=a._emscripten_bind_PointCloud_num_points_0=a.asm.N).apply(null, +arguments)},wb=a._emscripten_bind_PointCloud___destroy___0=function(){return(wb=a._emscripten_bind_PointCloud___destroy___0=a.asm.O).apply(null,arguments)},Ga=a._emscripten_bind_Mesh_Mesh_0=function(){return(Ga=a._emscripten_bind_Mesh_Mesh_0=a.asm.P).apply(null,arguments)},xb=a._emscripten_bind_Mesh_num_faces_0=function(){return(xb=a._emscripten_bind_Mesh_num_faces_0=a.asm.Q).apply(null,arguments)},yb=a._emscripten_bind_Mesh_num_attributes_0=function(){return(yb=a._emscripten_bind_Mesh_num_attributes_0= +a.asm.R).apply(null,arguments)},zb=a._emscripten_bind_Mesh_num_points_0=function(){return(zb=a._emscripten_bind_Mesh_num_points_0=a.asm.S).apply(null,arguments)},Ab=a._emscripten_bind_Mesh___destroy___0=function(){return(Ab=a._emscripten_bind_Mesh___destroy___0=a.asm.T).apply(null,arguments)},Ha=a._emscripten_bind_Metadata_Metadata_0=function(){return(Ha=a._emscripten_bind_Metadata_Metadata_0=a.asm.U).apply(null,arguments)},Bb=a._emscripten_bind_Metadata___destroy___0=function(){return(Bb=a._emscripten_bind_Metadata___destroy___0= +a.asm.V).apply(null,arguments)},Cb=a._emscripten_bind_Status_code_0=function(){return(Cb=a._emscripten_bind_Status_code_0=a.asm.W).apply(null,arguments)},Db=a._emscripten_bind_Status_ok_0=function(){return(Db=a._emscripten_bind_Status_ok_0=a.asm.X).apply(null,arguments)},Eb=a._emscripten_bind_Status_error_msg_0=function(){return(Eb=a._emscripten_bind_Status_error_msg_0=a.asm.Y).apply(null,arguments)},Fb=a._emscripten_bind_Status___destroy___0=function(){return(Fb=a._emscripten_bind_Status___destroy___0= +a.asm.Z).apply(null,arguments)},Ia=a._emscripten_bind_DracoFloat32Array_DracoFloat32Array_0=function(){return(Ia=a._emscripten_bind_DracoFloat32Array_DracoFloat32Array_0=a.asm._).apply(null,arguments)},Gb=a._emscripten_bind_DracoFloat32Array_GetValue_1=function(){return(Gb=a._emscripten_bind_DracoFloat32Array_GetValue_1=a.asm.$).apply(null,arguments)},Hb=a._emscripten_bind_DracoFloat32Array_size_0=function(){return(Hb=a._emscripten_bind_DracoFloat32Array_size_0=a.asm.aa).apply(null,arguments)},Ib= +a._emscripten_bind_DracoFloat32Array___destroy___0=function(){return(Ib=a._emscripten_bind_DracoFloat32Array___destroy___0=a.asm.ba).apply(null,arguments)},Ja=a._emscripten_bind_DracoInt8Array_DracoInt8Array_0=function(){return(Ja=a._emscripten_bind_DracoInt8Array_DracoInt8Array_0=a.asm.ca).apply(null,arguments)},Jb=a._emscripten_bind_DracoInt8Array_GetValue_1=function(){return(Jb=a._emscripten_bind_DracoInt8Array_GetValue_1=a.asm.da).apply(null,arguments)},Kb=a._emscripten_bind_DracoInt8Array_size_0= +function(){return(Kb=a._emscripten_bind_DracoInt8Array_size_0=a.asm.ea).apply(null,arguments)},Lb=a._emscripten_bind_DracoInt8Array___destroy___0=function(){return(Lb=a._emscripten_bind_DracoInt8Array___destroy___0=a.asm.fa).apply(null,arguments)},Ka=a._emscripten_bind_DracoUInt8Array_DracoUInt8Array_0=function(){return(Ka=a._emscripten_bind_DracoUInt8Array_DracoUInt8Array_0=a.asm.ga).apply(null,arguments)},Mb=a._emscripten_bind_DracoUInt8Array_GetValue_1=function(){return(Mb=a._emscripten_bind_DracoUInt8Array_GetValue_1= +a.asm.ha).apply(null,arguments)},Nb=a._emscripten_bind_DracoUInt8Array_size_0=function(){return(Nb=a._emscripten_bind_DracoUInt8Array_size_0=a.asm.ia).apply(null,arguments)},Ob=a._emscripten_bind_DracoUInt8Array___destroy___0=function(){return(Ob=a._emscripten_bind_DracoUInt8Array___destroy___0=a.asm.ja).apply(null,arguments)},La=a._emscripten_bind_DracoInt16Array_DracoInt16Array_0=function(){return(La=a._emscripten_bind_DracoInt16Array_DracoInt16Array_0=a.asm.ka).apply(null,arguments)},Pb=a._emscripten_bind_DracoInt16Array_GetValue_1= +function(){return(Pb=a._emscripten_bind_DracoInt16Array_GetValue_1=a.asm.la).apply(null,arguments)},Qb=a._emscripten_bind_DracoInt16Array_size_0=function(){return(Qb=a._emscripten_bind_DracoInt16Array_size_0=a.asm.ma).apply(null,arguments)},Rb=a._emscripten_bind_DracoInt16Array___destroy___0=function(){return(Rb=a._emscripten_bind_DracoInt16Array___destroy___0=a.asm.na).apply(null,arguments)},Ma=a._emscripten_bind_DracoUInt16Array_DracoUInt16Array_0=function(){return(Ma=a._emscripten_bind_DracoUInt16Array_DracoUInt16Array_0= +a.asm.oa).apply(null,arguments)},Sb=a._emscripten_bind_DracoUInt16Array_GetValue_1=function(){return(Sb=a._emscripten_bind_DracoUInt16Array_GetValue_1=a.asm.pa).apply(null,arguments)},Tb=a._emscripten_bind_DracoUInt16Array_size_0=function(){return(Tb=a._emscripten_bind_DracoUInt16Array_size_0=a.asm.qa).apply(null,arguments)},Ub=a._emscripten_bind_DracoUInt16Array___destroy___0=function(){return(Ub=a._emscripten_bind_DracoUInt16Array___destroy___0=a.asm.ra).apply(null,arguments)},Na=a._emscripten_bind_DracoInt32Array_DracoInt32Array_0= +function(){return(Na=a._emscripten_bind_DracoInt32Array_DracoInt32Array_0=a.asm.sa).apply(null,arguments)},Vb=a._emscripten_bind_DracoInt32Array_GetValue_1=function(){return(Vb=a._emscripten_bind_DracoInt32Array_GetValue_1=a.asm.ta).apply(null,arguments)},Wb=a._emscripten_bind_DracoInt32Array_size_0=function(){return(Wb=a._emscripten_bind_DracoInt32Array_size_0=a.asm.ua).apply(null,arguments)},Xb=a._emscripten_bind_DracoInt32Array___destroy___0=function(){return(Xb=a._emscripten_bind_DracoInt32Array___destroy___0= +a.asm.va).apply(null,arguments)},Oa=a._emscripten_bind_DracoUInt32Array_DracoUInt32Array_0=function(){return(Oa=a._emscripten_bind_DracoUInt32Array_DracoUInt32Array_0=a.asm.wa).apply(null,arguments)},Yb=a._emscripten_bind_DracoUInt32Array_GetValue_1=function(){return(Yb=a._emscripten_bind_DracoUInt32Array_GetValue_1=a.asm.xa).apply(null,arguments)},Zb=a._emscripten_bind_DracoUInt32Array_size_0=function(){return(Zb=a._emscripten_bind_DracoUInt32Array_size_0=a.asm.ya).apply(null,arguments)},$b=a._emscripten_bind_DracoUInt32Array___destroy___0= +function(){return($b=a._emscripten_bind_DracoUInt32Array___destroy___0=a.asm.za).apply(null,arguments)},Pa=a._emscripten_bind_MetadataQuerier_MetadataQuerier_0=function(){return(Pa=a._emscripten_bind_MetadataQuerier_MetadataQuerier_0=a.asm.Aa).apply(null,arguments)},ac=a._emscripten_bind_MetadataQuerier_HasEntry_2=function(){return(ac=a._emscripten_bind_MetadataQuerier_HasEntry_2=a.asm.Ba).apply(null,arguments)},bc=a._emscripten_bind_MetadataQuerier_GetIntEntry_2=function(){return(bc=a._emscripten_bind_MetadataQuerier_GetIntEntry_2= +a.asm.Ca).apply(null,arguments)},cc=a._emscripten_bind_MetadataQuerier_GetIntEntryArray_3=function(){return(cc=a._emscripten_bind_MetadataQuerier_GetIntEntryArray_3=a.asm.Da).apply(null,arguments)},dc=a._emscripten_bind_MetadataQuerier_GetDoubleEntry_2=function(){return(dc=a._emscripten_bind_MetadataQuerier_GetDoubleEntry_2=a.asm.Ea).apply(null,arguments)},ec=a._emscripten_bind_MetadataQuerier_GetStringEntry_2=function(){return(ec=a._emscripten_bind_MetadataQuerier_GetStringEntry_2=a.asm.Fa).apply(null, +arguments)},fc=a._emscripten_bind_MetadataQuerier_NumEntries_1=function(){return(fc=a._emscripten_bind_MetadataQuerier_NumEntries_1=a.asm.Ga).apply(null,arguments)},gc=a._emscripten_bind_MetadataQuerier_GetEntryName_2=function(){return(gc=a._emscripten_bind_MetadataQuerier_GetEntryName_2=a.asm.Ha).apply(null,arguments)},hc=a._emscripten_bind_MetadataQuerier___destroy___0=function(){return(hc=a._emscripten_bind_MetadataQuerier___destroy___0=a.asm.Ia).apply(null,arguments)},Qa=a._emscripten_bind_Decoder_Decoder_0= +function(){return(Qa=a._emscripten_bind_Decoder_Decoder_0=a.asm.Ja).apply(null,arguments)},ic=a._emscripten_bind_Decoder_DecodeArrayToPointCloud_3=function(){return(ic=a._emscripten_bind_Decoder_DecodeArrayToPointCloud_3=a.asm.Ka).apply(null,arguments)},jc=a._emscripten_bind_Decoder_DecodeArrayToMesh_3=function(){return(jc=a._emscripten_bind_Decoder_DecodeArrayToMesh_3=a.asm.La).apply(null,arguments)},kc=a._emscripten_bind_Decoder_GetAttributeId_2=function(){return(kc=a._emscripten_bind_Decoder_GetAttributeId_2= +a.asm.Ma).apply(null,arguments)},lc=a._emscripten_bind_Decoder_GetAttributeIdByName_2=function(){return(lc=a._emscripten_bind_Decoder_GetAttributeIdByName_2=a.asm.Na).apply(null,arguments)},mc=a._emscripten_bind_Decoder_GetAttributeIdByMetadataEntry_3=function(){return(mc=a._emscripten_bind_Decoder_GetAttributeIdByMetadataEntry_3=a.asm.Oa).apply(null,arguments)},nc=a._emscripten_bind_Decoder_GetAttribute_2=function(){return(nc=a._emscripten_bind_Decoder_GetAttribute_2=a.asm.Pa).apply(null,arguments)}, +oc=a._emscripten_bind_Decoder_GetAttributeByUniqueId_2=function(){return(oc=a._emscripten_bind_Decoder_GetAttributeByUniqueId_2=a.asm.Qa).apply(null,arguments)},pc=a._emscripten_bind_Decoder_GetMetadata_1=function(){return(pc=a._emscripten_bind_Decoder_GetMetadata_1=a.asm.Ra).apply(null,arguments)},qc=a._emscripten_bind_Decoder_GetAttributeMetadata_2=function(){return(qc=a._emscripten_bind_Decoder_GetAttributeMetadata_2=a.asm.Sa).apply(null,arguments)},rc=a._emscripten_bind_Decoder_GetFaceFromMesh_3= +function(){return(rc=a._emscripten_bind_Decoder_GetFaceFromMesh_3=a.asm.Ta).apply(null,arguments)},sc=a._emscripten_bind_Decoder_GetTriangleStripsFromMesh_2=function(){return(sc=a._emscripten_bind_Decoder_GetTriangleStripsFromMesh_2=a.asm.Ua).apply(null,arguments)},tc=a._emscripten_bind_Decoder_GetTrianglesUInt16Array_3=function(){return(tc=a._emscripten_bind_Decoder_GetTrianglesUInt16Array_3=a.asm.Va).apply(null,arguments)},uc=a._emscripten_bind_Decoder_GetTrianglesUInt32Array_3=function(){return(uc= +a._emscripten_bind_Decoder_GetTrianglesUInt32Array_3=a.asm.Wa).apply(null,arguments)},vc=a._emscripten_bind_Decoder_GetAttributeFloat_3=function(){return(vc=a._emscripten_bind_Decoder_GetAttributeFloat_3=a.asm.Xa).apply(null,arguments)},wc=a._emscripten_bind_Decoder_GetAttributeFloatForAllPoints_3=function(){return(wc=a._emscripten_bind_Decoder_GetAttributeFloatForAllPoints_3=a.asm.Ya).apply(null,arguments)},xc=a._emscripten_bind_Decoder_GetAttributeIntForAllPoints_3=function(){return(xc=a._emscripten_bind_Decoder_GetAttributeIntForAllPoints_3= +a.asm.Za).apply(null,arguments)},yc=a._emscripten_bind_Decoder_GetAttributeInt8ForAllPoints_3=function(){return(yc=a._emscripten_bind_Decoder_GetAttributeInt8ForAllPoints_3=a.asm._a).apply(null,arguments)},zc=a._emscripten_bind_Decoder_GetAttributeUInt8ForAllPoints_3=function(){return(zc=a._emscripten_bind_Decoder_GetAttributeUInt8ForAllPoints_3=a.asm.$a).apply(null,arguments)},Ac=a._emscripten_bind_Decoder_GetAttributeInt16ForAllPoints_3=function(){return(Ac=a._emscripten_bind_Decoder_GetAttributeInt16ForAllPoints_3= +a.asm.ab).apply(null,arguments)},Bc=a._emscripten_bind_Decoder_GetAttributeUInt16ForAllPoints_3=function(){return(Bc=a._emscripten_bind_Decoder_GetAttributeUInt16ForAllPoints_3=a.asm.bb).apply(null,arguments)},Cc=a._emscripten_bind_Decoder_GetAttributeInt32ForAllPoints_3=function(){return(Cc=a._emscripten_bind_Decoder_GetAttributeInt32ForAllPoints_3=a.asm.cb).apply(null,arguments)},Dc=a._emscripten_bind_Decoder_GetAttributeUInt32ForAllPoints_3=function(){return(Dc=a._emscripten_bind_Decoder_GetAttributeUInt32ForAllPoints_3= +a.asm.db).apply(null,arguments)},Ec=a._emscripten_bind_Decoder_GetAttributeDataArrayForAllPoints_5=function(){return(Ec=a._emscripten_bind_Decoder_GetAttributeDataArrayForAllPoints_5=a.asm.eb).apply(null,arguments)},Fc=a._emscripten_bind_Decoder_SkipAttributeTransform_1=function(){return(Fc=a._emscripten_bind_Decoder_SkipAttributeTransform_1=a.asm.fb).apply(null,arguments)},Gc=a._emscripten_bind_Decoder_GetEncodedGeometryType_Deprecated_1=function(){return(Gc=a._emscripten_bind_Decoder_GetEncodedGeometryType_Deprecated_1= +a.asm.gb).apply(null,arguments)},Hc=a._emscripten_bind_Decoder_DecodeBufferToPointCloud_2=function(){return(Hc=a._emscripten_bind_Decoder_DecodeBufferToPointCloud_2=a.asm.hb).apply(null,arguments)},Ic=a._emscripten_bind_Decoder_DecodeBufferToMesh_2=function(){return(Ic=a._emscripten_bind_Decoder_DecodeBufferToMesh_2=a.asm.ib).apply(null,arguments)},Jc=a._emscripten_bind_Decoder___destroy___0=function(){return(Jc=a._emscripten_bind_Decoder___destroy___0=a.asm.jb).apply(null,arguments)},Kc=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_INVALID_TRANSFORM= +function(){return(Kc=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_INVALID_TRANSFORM=a.asm.kb).apply(null,arguments)},Lc=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_NO_TRANSFORM=function(){return(Lc=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_NO_TRANSFORM=a.asm.lb).apply(null,arguments)},Mc=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_QUANTIZATION_TRANSFORM=function(){return(Mc=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_QUANTIZATION_TRANSFORM= +a.asm.mb).apply(null,arguments)},Nc=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_OCTAHEDRON_TRANSFORM=function(){return(Nc=a._emscripten_enum_draco_AttributeTransformType_ATTRIBUTE_OCTAHEDRON_TRANSFORM=a.asm.nb).apply(null,arguments)},Oc=a._emscripten_enum_draco_GeometryAttribute_Type_INVALID=function(){return(Oc=a._emscripten_enum_draco_GeometryAttribute_Type_INVALID=a.asm.ob).apply(null,arguments)},Pc=a._emscripten_enum_draco_GeometryAttribute_Type_POSITION=function(){return(Pc=a._emscripten_enum_draco_GeometryAttribute_Type_POSITION= +a.asm.pb).apply(null,arguments)},Qc=a._emscripten_enum_draco_GeometryAttribute_Type_NORMAL=function(){return(Qc=a._emscripten_enum_draco_GeometryAttribute_Type_NORMAL=a.asm.qb).apply(null,arguments)},Rc=a._emscripten_enum_draco_GeometryAttribute_Type_COLOR=function(){return(Rc=a._emscripten_enum_draco_GeometryAttribute_Type_COLOR=a.asm.rb).apply(null,arguments)},Sc=a._emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD=function(){return(Sc=a._emscripten_enum_draco_GeometryAttribute_Type_TEX_COORD= +a.asm.sb).apply(null,arguments)},Tc=a._emscripten_enum_draco_GeometryAttribute_Type_GENERIC=function(){return(Tc=a._emscripten_enum_draco_GeometryAttribute_Type_GENERIC=a.asm.tb).apply(null,arguments)},Uc=a._emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE=function(){return(Uc=a._emscripten_enum_draco_EncodedGeometryType_INVALID_GEOMETRY_TYPE=a.asm.ub).apply(null,arguments)},Vc=a._emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD=function(){return(Vc=a._emscripten_enum_draco_EncodedGeometryType_POINT_CLOUD= +a.asm.vb).apply(null,arguments)},Wc=a._emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH=function(){return(Wc=a._emscripten_enum_draco_EncodedGeometryType_TRIANGULAR_MESH=a.asm.wb).apply(null,arguments)},Xc=a._emscripten_enum_draco_DataType_DT_INVALID=function(){return(Xc=a._emscripten_enum_draco_DataType_DT_INVALID=a.asm.xb).apply(null,arguments)},Yc=a._emscripten_enum_draco_DataType_DT_INT8=function(){return(Yc=a._emscripten_enum_draco_DataType_DT_INT8=a.asm.yb).apply(null,arguments)},Zc= +a._emscripten_enum_draco_DataType_DT_UINT8=function(){return(Zc=a._emscripten_enum_draco_DataType_DT_UINT8=a.asm.zb).apply(null,arguments)},$c=a._emscripten_enum_draco_DataType_DT_INT16=function(){return($c=a._emscripten_enum_draco_DataType_DT_INT16=a.asm.Ab).apply(null,arguments)},ad=a._emscripten_enum_draco_DataType_DT_UINT16=function(){return(ad=a._emscripten_enum_draco_DataType_DT_UINT16=a.asm.Bb).apply(null,arguments)},bd=a._emscripten_enum_draco_DataType_DT_INT32=function(){return(bd=a._emscripten_enum_draco_DataType_DT_INT32= +a.asm.Cb).apply(null,arguments)},cd=a._emscripten_enum_draco_DataType_DT_UINT32=function(){return(cd=a._emscripten_enum_draco_DataType_DT_UINT32=a.asm.Db).apply(null,arguments)},dd=a._emscripten_enum_draco_DataType_DT_INT64=function(){return(dd=a._emscripten_enum_draco_DataType_DT_INT64=a.asm.Eb).apply(null,arguments)},ed=a._emscripten_enum_draco_DataType_DT_UINT64=function(){return(ed=a._emscripten_enum_draco_DataType_DT_UINT64=a.asm.Fb).apply(null,arguments)},fd=a._emscripten_enum_draco_DataType_DT_FLOAT32= +function(){return(fd=a._emscripten_enum_draco_DataType_DT_FLOAT32=a.asm.Gb).apply(null,arguments)},gd=a._emscripten_enum_draco_DataType_DT_FLOAT64=function(){return(gd=a._emscripten_enum_draco_DataType_DT_FLOAT64=a.asm.Hb).apply(null,arguments)},hd=a._emscripten_enum_draco_DataType_DT_BOOL=function(){return(hd=a._emscripten_enum_draco_DataType_DT_BOOL=a.asm.Ib).apply(null,arguments)},id=a._emscripten_enum_draco_DataType_DT_TYPES_COUNT=function(){return(id=a._emscripten_enum_draco_DataType_DT_TYPES_COUNT= +a.asm.Jb).apply(null,arguments)},jd=a._emscripten_enum_draco_StatusCode_OK=function(){return(jd=a._emscripten_enum_draco_StatusCode_OK=a.asm.Kb).apply(null,arguments)},kd=a._emscripten_enum_draco_StatusCode_DRACO_ERROR=function(){return(kd=a._emscripten_enum_draco_StatusCode_DRACO_ERROR=a.asm.Lb).apply(null,arguments)},ld=a._emscripten_enum_draco_StatusCode_IO_ERROR=function(){return(ld=a._emscripten_enum_draco_StatusCode_IO_ERROR=a.asm.Mb).apply(null,arguments)},md=a._emscripten_enum_draco_StatusCode_INVALID_PARAMETER= +function(){return(md=a._emscripten_enum_draco_StatusCode_INVALID_PARAMETER=a.asm.Nb).apply(null,arguments)},nd=a._emscripten_enum_draco_StatusCode_UNSUPPORTED_VERSION=function(){return(nd=a._emscripten_enum_draco_StatusCode_UNSUPPORTED_VERSION=a.asm.Ob).apply(null,arguments)},od=a._emscripten_enum_draco_StatusCode_UNKNOWN_VERSION=function(){return(od=a._emscripten_enum_draco_StatusCode_UNKNOWN_VERSION=a.asm.Pb).apply(null,arguments)};a._malloc=function(){return(a._malloc=a.asm.Qb).apply(null,arguments)}; +a._free=function(){return(a._free=a.asm.Rb).apply(null,arguments)};var ua=function(){return(ua=a.asm.Sb).apply(null,arguments)};a.___start_em_js=11660;a.___stop_em_js=11758;var la;ha=function b(){la||F();la||(ha=b)};if(a.preInit)for("function"==typeof a.preInit&&(a.preInit=[a.preInit]);0=r.size?(0>>=0;switch(c.BYTES_PER_ELEMENT){case 2:d>>>=1;break;case 4:d>>>=2;break;case 8:d>>>=3}for(var g=0;gb.byteLength)return a.INVALID_GEOMETRY_TYPE;switch(b[7]){case 0:return a.POINT_CLOUD;case 1:return a.TRIANGULAR_MESH;default:return a.INVALID_GEOMETRY_TYPE}};return n.ready}}();"object"===typeof exports&&"object"===typeof module?module.exports=DracoDecoderModule:"function"===typeof define&&define.amd?define([],function(){return DracoDecoderModule}):"object"===typeof exports&&(exports.DracoDecoderModule=DracoDecoderModule); diff --git a/build/empowerment.html b/build/empowerment.html new file mode 100644 index 0000000..1e64dbc --- /dev/null +++ b/build/empowerment.html @@ -0,0 +1,2734 @@ +Doormile Wings — Women Entrepreneurship Initiative
    \ No newline at end of file diff --git a/build/empowerment.txt b/build/empowerment.txt new file mode 100644 index 0000000..d866020 --- /dev/null +++ b/build/empowerment.txt @@ -0,0 +1,2125 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +1b:I[68027,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +c:Tf99, + .eh-outer { + box-sizing: border-box; + padding: 20px; + } + + .eh-section { + position: relative; + border-radius: 25px; + overflow: hidden; + box-sizing: border-box; + height: 800px; + display: flex; + align-items: center; + justify-content: center; + background: #07080c; + } + + .eh-bg { + position: absolute; + inset: 0; + background-image: url("/images/women-hero-slider-2.png"); + background-size: cover; + background-position: 30% 72%; + z-index: 0; + } + + .eh-scrim { + position: absolute; + inset: 0; + background: + linear-gradient(180deg, rgba(7, 8, 12, 0.72) 0%, rgba(7, 8, 12, 0.5) 40%, rgba(7, 8, 12, 0.86) 100%); + z-index: 1; + } + + .eh-inner { + position: relative; + z-index: 2; + width: 100%; + max-width: 1000px; + margin: 0 auto; + padding: 0 15px; + display: flex; + flex-direction: column; + align-items: center; + text-align: center; + box-sizing: border-box; + } + + .eh-eyebrow { + font-size: 13px; + font-weight: 800; + letter-spacing: 2.6px; + text-transform: uppercase; + color: #ff5470; + margin-bottom: 20px; + } + + .eh-title { + width: 100%; + font-size: clamp(30px, 5.5vw, 80px) !important; + font-weight: 800 !important; + letter-spacing: -0.03em !important; + line-height: 1.08 !important; + text-transform: uppercase !important; + color: #ffffff !important; + margin: 0; + word-wrap: break-word; + overflow-wrap: break-word; + } + + .eh-title .eh-soft { + color: rgba(255, 255, 255, 0.72); + } + + .eh-desc { + width: 100%; + max-width: 680px; + margin: 23px auto 0; + font-size: clamp(16px, 1.35vw, 23px); + line-height: 1.65; + color: rgba(255, 255, 255, 0.78); + } + + .eh-btns { + display: flex; + align-items: center; + justify-content: center; + gap: 14px; + flex-wrap: wrap; + margin-top: 32px; + } + + .eh-btn-primary, + .eh-btn-outline { + display: inline-flex; + align-items: center; + gap: 10px; + padding: 15px 28px; + border-radius: 100px; + font-weight: 800; + font-size: 14px; + text-decoration: none; + transition: transform 0.35s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.35s ease, background-color 0.3s ease, border-color 0.3s ease; + } + + .eh-btn-primary { + background: #c01227; + color: #ffffff !important; + border: 1.5px solid #c01227; + } + + .eh-btn-primary:hover { + transform: translateY(-3px); + box-shadow: 0 14px 30px rgba(192, 18, 39, 0.4); + } + + .eh-btn-outline { + background: rgba(255, 255, 255, 0.04); + color: #ffffff !important; + border: 1.5px solid rgba(255, 255, 255, 0.36); + } + + .eh-btn-outline:hover { + border-color: rgba(255, 255, 255, 0.82); + background: rgba(255, 255, 255, 0.09); + transform: translateY(-3px); + } + + @media (max-width: 1020px) { + .eh-outer { padding: 10px; } + } + + @media (max-width: 840px) { + .eh-section { height: 600px; } + } + + @media (max-width: 660px) { + .eh-title { + font-size: clamp(20px, 7vw, 32px) !important; + } + } + + @media (max-width: 480px) { + .eh-section { height: 520px; } + .eh-btn-primary, .eh-btn-outline { width: 100%; justify-content: center; padding: 14px 22px; } + .eh-btns { width: 100%; } + } + 0:{"P":null,"c":["","empowerment"],"q":"","i":false,"f":[[["",{"children":["empowerment",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","div",null,{"id":"empowerment","className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":["$","div",null,{"data-elementor-type":"wp-page","data-elementor-id":"86","className":"elementor elementor-86 elementor-59 elementor-empowerment","children":[[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$c"}}],"$Ld"],"$Le","$Lf","$L10","$L11","$L12","$L13","$L14","$L15","$L16"]}]}]}]}],["$L17"],"$L18"]}],{},null,false,null]},null,false,"$@19"]},null,false,null],"$L1a",false]],"m":"$undefined","G":["$1b",["$L1c"]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"kmSVPuUqY3Rhw5xy4D2nn"} +1d:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0vzdvje64yndv.js"],"ScrollReveal"] +1e:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0vzdvje64yndv.js"],"ShimmerText"] +32:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +33:"$Sreact.suspense" +36:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +38:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +d:["$","div",null,{"className":"eh-outer","children":["$","section",null,{"className":"eh-section","id":"wings-empowerment-hero","children":[["$","div",null,{"className":"eh-bg","aria-hidden":"true"}],["$","div",null,{"className":"eh-scrim","aria-hidden":"true"}],["$","$L1d",null,{"delay":0.05,"duration":0.85,"yOffset":30,"className":"eh-inner","children":[["$","h1",null,{"className":"eh-title","children":["Building ",["$","span",null,{"className":"eh-soft","children":"Women"}],["$","br",null,{}],["$","$L1e",null,{"children":"Entrepreneurs."}]]}],["$","p",null,{"className":"eh-desc","children":"Empowering ambitious women with the network, strategic partnerships, and opportunities to build, grow, and lead successful enterprises that shape the future of logistics."}]]}]]}]}] +1f:Te8f, + .ev-section { + position: relative; + background: #ffffff; + padding: clamp(96px, 11vw, 150px) 0; + overflow: hidden; + } + + .ev-map { + position: absolute; + inset: 0; + z-index: 0; + opacity: 0.4; + pointer-events: none; + } + + .ev-inner { + position: relative; + z-index: 1; + max-width: 1380px; + min-width: 0; + margin: 0 auto; + } + + .ev-eyebrow { + margin: 0 0 18px 0; + font-size: 14px; + font-weight: 500; + letter-spacing: 1.5px; + color: rgba(17, 17, 17, 0.6); + } + + .ev-divider { + width: 100%; + height: 1px; + margin: 0 0 clamp(64px, 7.8vw, 92px) 0; + border: none; + background-color: rgba(17, 17, 17, 0.16); + } + + .ev-title { + margin: 0 0 clamp(92px, 11.5vw, 156px) 0 !important; + max-width: 1320px; + display: block; + font-weight: 800 !important; + font-style: normal !important; + letter-spacing: -0.018em !important; + word-spacing: 0.02em; + line-height: 1.04em !important; + text-transform: none !important; + color: #ffffff !important; + -webkit-text-stroke: 2px #c01227; + paint-order: stroke fill; + font-size: clamp(48px, 8.5vw, 128px) !important; + white-space: normal; + overflow-wrap: normal; + text-wrap: balance; + } + + @media (max-width: 1280px) { + .ev-title { + font-size: 118px !important; + } + } + + @media (max-width: 1020px) { + .ev-title { + font-size: 96px !important; + } + } + + @media (max-width: 767px) { + .ev-title { + font-size: 72px !important; + } + } + + .ev-columns { + display: grid; + grid-template-columns: minmax(0, 0.6fr) minmax(0, 1fr); + gap: clamp(60px, 8vw, 122px); + align-items: start; + } + + .ev-columns > * { + min-width: 0; + } + + .ev-statement { + margin: 0; + font-size: clamp(28px, 3vw, 52px); + font-weight: 600; + line-height: 1.2; + letter-spacing: -0.03em; + color: #111111; + overflow-wrap: break-word; + } + + .ev-support { + display: grid; + gap: clamp(34px, 3.8vw, 52px); + min-width: 0; + } + + .ev-block { + display: grid; + gap: 12px; + } + + .ev-block-label { + margin: 0; + font-size: 12px; + font-weight: 700; + letter-spacing: 1.4px; + line-height: 1; + text-transform: uppercase; + color: rgba(192, 18, 39, 0.86); + } + + .ev-lead, + .ev-note { + font-size: clamp(17px, 1.3vw, 20px); + line-height: 1.6; + color: #333333; + margin: 0; + overflow-wrap: break-word; + } + + .ev-lead { + font-weight: 700; + } + + .ev-note { + font-weight: 400; + } + + @media (max-width: 900px) { + .ev-columns { + grid-template-columns: 1fr; + } + } + + @media (max-width: 600px) { + .ev-section { padding-top: 64px; padding-bottom: 64px; } + .ev-title { + max-width: calc(100vw - (var(--dm-mobile-gutter, 10px) * 2)); + font-size: 56px !important; + letter-spacing: -0.025em !important; + line-height: 1.02em !important; + -webkit-text-stroke-width: 1.5px; + } + } + e:[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$1f"}}],"$L20"] +21:Tbc4, + .esy-section { + position: relative; + width: calc(100% - 40px); + margin: 0 auto clamp(24px, 4vw, 40px); + border-radius: 28px; + overflow: hidden; + box-sizing: border-box; + min-height: clamp(500px, 50vw, 690px); + display: flex; + align-items: stretch; + background: #09090b; + } + + .esy-bg { + position: absolute; + inset: 0; + background-image: + linear-gradient(100deg, rgba(9, 9, 11, 0.96) 0%, rgba(9, 9, 11, 0.84) 43%, rgba(192, 18, 39, 0.28) 100%), + url("/images/wings-heroslider4.png"); + background-size: cover; + background-position: center; + z-index: 0; + } + + .esy-inner { + position: relative; + z-index: 1; + max-width: 1380px; + margin: 0 auto; + width: 100%; + padding-top: clamp(60px, 7vw, 98px); + padding-bottom: clamp(60px, 7vw, 98px); + display: grid; + grid-template-columns: minmax(0, 0.9fr) minmax(280px, 0.52fr); + gap: clamp(36px, 6vw, 96px); + align-items: end; + } + + .esy-eyebrow { + font-size: 13px; + font-weight: 800; + letter-spacing: 2.5px; + text-transform: uppercase; + color: #ff5470; + margin-bottom: 24px; + } + + .esy-statement { + max-width: 920px; + font-size: clamp(38px, 5.7vw, 86px); + font-weight: 800; + letter-spacing: -0.055em; + line-height: 0.98; + text-transform: uppercase; + color: #ffffff; + margin: 0; + } + + .esy-statement em { + color: #ff5470; + font-style: normal; + } + + .esy-side { + border-left: 1px solid rgba(255, 255, 255, 0.18); + padding-left: clamp(24px, 3vw, 42px); + } + + .esy-label { + display: block; + font-size: 12px; + font-weight: 800; + letter-spacing: 1.8px; + text-transform: uppercase; + color: rgba(255, 255, 255, 0.45); + margin-bottom: 18px; + } + + .esy-pull { + font-size: clamp(22px, 2.3vw, 34px); + font-weight: 800; + line-height: 1.16; + letter-spacing: -0.03em; + color: #ffffff; + margin: 0 0 22px 0; + } + + .esy-sub { + font-size: 15.5px; + line-height: 1.65; + color: rgba(255, 255, 255, 0.64); + margin: 0; + } + + @media (max-width: 1024px) { + .esy-section { width: calc(100% - 24px); border-radius: 22px; } + .esy-inner { grid-template-columns: 1fr; align-items: start; } + .esy-side { max-width: 640px; } + } + + @media (max-width: 640px) { + .esy-section { min-height: 560px; } + .esy-side { border-left: none; padding-left: 0; border-top: 1px solid rgba(255, 255, 255, 0.18); padding-top: 24px; } + } + f:[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$21"}}],["$","section",null,{"className":"esy-section","id":"wings-empowerment-story","children":[["$","div",null,{"className":"esy-bg","aria-hidden":"true"}],["$","div",null,{"className":"esy-inner dm-section-container","children":["$L22","$L23"]}]]}]] +24:T3756, + /* ============================================================ + Success Stories — redesigned right column (stats + 2x2 cards) + Dark section · red accent #dc2626 / #ef4444 · Manrope + ============================================================ */ + /* Neutralise the right column's asymmetric 140px left padding so the + box group can be centered instead of pushed to one side. */ + .elementor-element.elementor-element-b2c956f { padding: 0 !important; } + + /* Vertically center the two columns so the right content lines up with + the image instead of needing a big top gap; tighten row gap. */ + .elementor-element.elementor-element-2ed47f3 { align-items: center !important; } + + /* Animated map background behind the Success Stories content */ + .elementor-element.elementor-element-b6e14bd { position: relative; overflow: hidden; } + .elementor-element.elementor-element-b6e14bd > .e-con-inner { position: relative; z-index: 1; } + .ws-map { position: absolute; inset: 0; z-index: 0; opacity: 0.5; pointer-events: none; } + .ws-map canvas { display: block; } + + #ws-stories { + display: flex; + flex-direction: column; + gap: 16px; + width: 100%; + max-width: 620px; + margin: 0 auto; /* center the 7 boxes as a group — no negative margins */ + } + + #ws-stories .ws__stats { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 12px; + } + #ws-stories .ws__stat { + background: rgba(255,255,255,0.04); + border: 1px solid rgba(255,255,255,0.08); + border-radius: 14px; + padding: 20px 16px; + transition: border-color 0.3s ease, background-color 0.3s ease; + } + #ws-stories .ws__stat:hover { border-color: rgba(220,38,38,0.28); background: rgba(220,38,38,0.05); } + #ws-stories .ws__stat-num { + color: #fff !important; + font-weight: 900; + font-size: clamp(28px, 3vw, 38px); + line-height: 1; + letter-spacing: -0.01em; + } + #ws-stories .ws__stat-num span { color: #dc2626 !important; } + #ws-stories .ws__stat-label { + margin-top: 9px; + color: rgba(255,255,255,0.7) !important; + font-size: 14px !important; + font-weight: 700; + letter-spacing: 0.03em; + text-transform: uppercase; + } + + #ws-stories .ws__cards { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 14px; + align-items: stretch; + } + #ws-stories .ws__card { + position: relative; + overflow: hidden; + display: flex; + flex-direction: column; + min-height: 168px; + background: rgba(255,255,255,0.035); + border: 1px solid rgba(255,255,255,0.08); + border-radius: 14px; + padding: 20px; + transition: transform 0.35s cubic-bezier(.25,1,.5,1), border-color 0.35s ease, background-color 0.35s ease, box-shadow 0.35s ease; + } + #ws-stories .ws__card::after { + content: ''; + position: absolute; + top: -45%; left: -25%; + width: 150px; height: 150px; + background: radial-gradient(circle, rgba(220,38,38,0.2), transparent 70%); + opacity: 0; + transition: opacity 0.35s ease; + pointer-events: none; + } + #ws-stories .ws__card:hover { + transform: translateY(-4px); + border-color: rgba(220,38,38,0.3); + background: rgba(220,38,38,0.05); + box-shadow: 0 18px 44px -20px rgba(0,0,0,0.7); + } + #ws-stories .ws__card:hover::after { opacity: 1; } + #ws-stories .ws__card-icon { + display: inline-flex; + align-items: center; + justify-content: center; + width: 40px; height: 40px; + border-radius: 11px; + background: rgba(220,38,38,0.12); + border: 1px solid rgba(220,38,38,0.25); + color: #ef4444; + margin-bottom: 16px; + transition: background-color 0.3s ease, color 0.3s ease; + } + #ws-stories .ws__card:hover .ws__card-icon { background: #dc2626; color: #fff; } + #ws-stories .ws__card-icon svg { width: 21px; height: 21px; } + #ws-stories .ws__card-title { + color: #fff !important; + font-weight: 800; + font-size: 19px; + line-height: 1.2; + letter-spacing: 0; + margin-bottom: 9px; + } + #ws-stories .ws__card-desc { + max-width: 28ch; + color: rgba(255,255,255,0.66) !important; + font-size: 15px; + line-height: 1.52; + margin: 0; + font-weight: 500; + } + + /* ---- Floating card sizing: content-driven, not container-driven ---- + Matches the EV Logistics card height proportions exactly by trimming + red content padding and white footer min-height. */ + .elementor-element.elementor-element-3b61435 { + --padding-top: 46px; + --padding-bottom: 38px; + } + .elementor-element.elementor-element-5aea22e { + --min-height: 38px; + --padding-top: 14px; + --padding-bottom: 14px; + } + @media (max-width: 1020px) { + .elementor-element.elementor-element-3b61435 { + --padding-top: 34px; + --padding-bottom: 28px; + } + .elementor-element.elementor-element-5aea22e { + --min-height: 32px; + --padding-top: 12px; + --padding-bottom: 12px; + } + } + @media (max-width: 660px) { + .elementor-element.elementor-element-3b61435 { + --padding-top: 26px; + --padding-bottom: 22px; + } + .elementor-element.elementor-element-5aea22e { + --min-height: 24px; + --padding-top: 10px; + --padding-bottom: 10px; + } + } + + .elementor-element-778840d .logico-title { + white-space: nowrap !important; + } + + /* The banner image (bg-header-women.png) is very wide (≈2.48:1) and the + woman — the subject of this section — sits on the right. On narrow + screens "cover" center-crops her out, so shift the focal point right + to keep her face in frame. */ + @media (max-width: 1024px) { + .elementor-element.elementor-element-7da6646:not(.elementor-motion-effects-element-type-background) { + background-position: 78% center !important; + } + } + @media (max-width: 767px) { + .elementor-element.elementor-element-7da6646:not(.elementor-motion-effects-element-type-background) { + background-position: 82% 25% !important; + } + } + + /* Stack the two columns below the desktop breakpoint so the box group + always gets full width and stays centered — never clipped. */ + @media (max-width: 1024px) { + .elementor-element-778840d .logico-title { + white-space: normal !important; + } + .elementor-element.elementor-element-2ed47f3 { grid-template-columns: 1fr !important; } + #ws-stories { max-width: 640px; margin: 0 auto; } + /* Align the heading, image and stats/cards to one shared left/right + edge — the heading + image widgets carried extra inset that left + them staggered (80px / 70px / 60px) against the stats column. */ + #women-entrepreneurship .elementor-element-36efec7, + #women-entrepreneurship .elementor-element-b2c956f { + padding-left: 0 !important; + padding-right: 0 !important; + } + #women-entrepreneurship .elementor-element-778840d, + #women-entrepreneurship .elementor-element-bbfb67f, + #women-entrepreneurship .elementor-element-778840d > .elementor-widget-container, + #women-entrepreneurship .elementor-element-bbfb67f > .elementor-widget-container { + padding-left: 0 !important; + padding-right: 0 !important; + margin-left: 0 !important; + margin-right: 0 !important; + } + } + + @media (max-width: 767px) { + #women-entrepreneurship { + width: calc(100% - 20px) !important; + margin-left: 10px !important; + margin-right: 10px !important; + border-radius: 22px !important; + padding-left: 0px !important; + padding-right: 0px !important; + } + #women-entrepreneurship .e-con-boxed > .e-con-inner { + padding-top: 32px !important; + padding-bottom: 32px !important; + padding-left: 0 !important; + padding-right: 0 !important; + } + #women-entrepreneurship .elementor-element-8b5d6e6, + #women-entrepreneurship .elementor-element-b6e14bd, + #women-entrepreneurship .elementor-element-90cc867, + #women-entrepreneurship .elementor-element-36efec7, + #women-entrepreneurship .elementor-element-b2c956f { + padding-left: 0 !important; + padding-right: 0 !important; + margin-left: 0 !important; + margin-right: 0 !important; + } + #women-entrepreneurship .elementor-element-1f766ea { + width: 100% !important; + max-width: 100% !important; + margin-left: auto !important; + margin-right: auto !important; + padding-left: 0 !important; + padding-right: 0 !important; + } + #women-entrepreneurship .elementor-element.elementor-element-2ed47f3 { + padding-left: 0 !important; + padding-right: 0 !important; + margin-left: 0 !important; + margin-right: 0 !important; + margin-top: 0 !important; + padding-top: 0 !important; + gap: 24px !important; + } + #women-entrepreneurship .elementor-element-36efec7 { + margin-top: 0px !important; + padding-top: 0px !important; + gap: 0px !important; + } + #women-entrepreneurship .elementor-element-24c0280 { + margin-bottom: 0px !important; + padding-left: 14px !important; + padding-right: 14px !important; + box-sizing: border-box !important; + } + #women-entrepreneurship .elementor-element-778840d { + margin-top: 14px !important; + margin-bottom: 14px !important; + padding-top: 0px !important; + padding-bottom: 0px !important; + padding-left: 14px !important; + padding-right: 14px !important; + box-sizing: border-box !important; + } + #women-entrepreneurship .elementor-element-778840d h3.logico-title, + #women-entrepreneurship .elementor-element-778840d > .elementor-widget-container { + margin: 0px !important; + padding: 0px !important; + } + #women-entrepreneurship .elementor-element-7da6646 { + width: calc(100% - 28px) !important; + margin-left: 14px !important; + margin-right: 14px !important; + border-radius: 18px !important; + min-height: 240px !important; + margin-top: 15px !important; + margin-bottom: -50px !important; + box-sizing: border-box !important; + } + #women-entrepreneurship .elementor-element-8b5d6e6 { + padding-left: 14px !important; + padding-right: 14px !important; + margin-left: 0px !important; + margin-right: 0px !important; + width: 100% !important; + max-width: 100% !important; + box-sizing: border-box !important; + } + #women-entrepreneurship .elementor-element-bbfb67f img { + width: 100% !important; + } + #women-entrepreneurship .elementor-element-bbfb67f { + margin-top: 0px !important; + margin-bottom: 16px !important; + padding-left: 14px !important; + padding-right: 14px !important; + box-sizing: border-box !important; + } + #ws-stories { + padding-left: 14px !important; + padding-right: 14px !important; + box-sizing: border-box !important; + } + /* KPI stat cards stack one-per-row on mobile. Inside each card the big + number sits on the left and the label on the right, vertically + centered, so every stat reads as a clean full-width row instead of + three cramped columns. */ + #ws-stories .ws__stats { grid-template-columns: 1fr; gap: 12px; } + #ws-stories .ws__stat { + display: flex; + align-items: center; + justify-content: space-between; + gap: 16px; + padding: 16px 20px; + min-width: 0; + } + #ws-stories .ws__stat-num { font-size: clamp(30px, 9vw, 40px); } + #ws-stories .ws__stat-label { + margin-top: 0; + font-size: 13px !important; + letter-spacing: 0.02em; + text-align: right; + min-height: 0; + } + #ws-stories .ws__cards { grid-template-columns: 1fr; gap: 12px; } + } + 10:[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$24"}}],"$L25"] +26:T2d38, + .epr-section { + background: #ffffff; + padding: clamp(78px, 9vw, 132px) 0; + overflow: visible; + } + + .epr-inner { + max-width: 1380px; + min-width: 0; + margin: 0 auto; + } + + .epr-head { + display: flex; + flex-direction: column; + align-items: flex-start; + margin-bottom: clamp(54px, 7vw, 86px); + } + + .epr-head-reveal { + width: 100%; + } + + .epr-divider { + width: 100%; + height: 1px; + margin: 18px 0 clamp(24px, 3.5vw, 40px) 0; + border: none; + background-color: rgba(17, 17, 17, 0.14); + } + + .epr-eyebrow { + font-size: 13px; + font-weight: 800; + letter-spacing: 2.4px; + text-transform: uppercase; + color: rgba(17, 17, 17, 0.42); + } + + .epr-title { + max-width: 950px; + font-size: clamp(42px, 6.2vw, 88px) !important; + font-weight: 800 !important; + letter-spacing: -0.055em !important; + line-height: 0.98 !important; + text-transform: uppercase !important; + color: #111111 !important; + margin: 0; + } + + .epr-stage { + display: grid; + grid-template-columns: minmax(300px, 0.38fr) minmax(0, 0.62fr); + gap: clamp(32px, 5vw, 78px); + /* stretch (not start): the left column's grid-item box must span + the full row — i.e. match the taller Programs list — or the + sticky aside inside it runs out of room and un-sticks well + before the list finishes scrolling. */ + align-items: stretch; + min-width: 0; + } + + .epr-stage > * { + min-width: 0; + } + + /* Plain stretching grid item. Carries no visual styling of its own — + it exists only to give .epr-aside (sized/centered independently + inside it) the full row height to stick within. */ + .epr-aside-wrap { + min-width: 0; + } + + .epr-aside { + position: sticky; + top: 110px; + min-width: 0; + min-height: clamp(480px, 44vw, 660px); + padding: clamp(18px, 3vw, 34px) 0 clamp(24px, 3.5vw, 42px); + display: flex; + flex-direction: column; + justify-content: center; + overflow: hidden; + color: #111111; + } + + .epr-aside-map { + position: absolute; + inset: 8% -22% 8% -28%; + z-index: 0; + opacity: 0.22; + pointer-events: none; + } + + .epr-aside-map canvas { + display: block; + } + + .epr-aside-content { + position: relative; + z-index: 1; + display: grid; + gap: clamp(18px, 2.2vw, 28px); + } + + .epr-aside-num { + position: relative; + font-size: clamp(164px, 17vw, 300px); + font-weight: 900; + line-height: 0.78; + letter-spacing: -0.06em; + color: transparent; + -webkit-text-stroke: 2px rgba(200, 16, 46, 0.2); + } + + .epr-aside-copy { + position: relative; + max-width: 12ch; + font-size: clamp(30px, 3.6vw, 56px); + font-weight: 800; + line-height: 0.98; + letter-spacing: -0.055em; + text-transform: uppercase; + color: #111111; + margin: 0; + } + + .epr-aside-copy em { + font-style: normal; + color: #c8102e; + } + + .epr-aside-desc { + position: relative; + max-width: 34ch; + font-size: 15.5px; + line-height: 1.65; + color: rgba(17, 17, 17, 0.58); + margin: 0; + } + + /* Continues the editorial narrative below the original hero + statement/paragraph — same grid, same gap rhythm as the rest of + .epr-aside-content, so it reads as one uninterrupted column rather + than a bolted-on block. Exists so the sticky aside still has real + editorial content to show while the list scrolls through its last + two entries, instead of ending early and leaving the left side + blank for the remainder of the scroll. */ + .epr-aside-divider { + position: relative; + width: 100%; + height: 1px; + border: none; + margin: 0; + background-color: rgba(17, 17, 17, 0.12); + } + + .epr-aside-label { + position: relative; + font-size: 12px; + font-weight: 800; + letter-spacing: 1.7px; + text-transform: uppercase; + color: rgba(17, 17, 17, 0.4); + margin: 0 0 -6px 0; + } + + .epr-aside-gains-list { + position: relative; + list-style: none; + margin: 0; + padding: 0; + display: grid; + gap: 9px; + } + + .epr-aside-gains-list li { + position: relative; + padding-left: 19px; + font-size: 15.5px; + line-height: 1.5; + color: rgba(17, 17, 17, 0.68); + } + + /* Extra .epr-aside prefix raises specificity above the global theme + rule ".logico-front-end ul li:before" (a fontello glyph), so our + clean red dot replaces the inherited checkmark marker — same fix + already established for this exact conflict in LegalDocument.tsx. */ + .epr-aside .epr-aside-gains-list li::before { + content: "" !important; + position: absolute; + left: 2px; + top: 0.62em; + width: 5px; + height: 5px; + border-radius: 50%; + background: #c8102e; + font-size: 0; + } + + .epr-aside-final { + position: relative; + max-width: 30ch; + font-size: clamp(17px, 1.7vw, 20px); + font-weight: 700; + line-height: 1.5; + letter-spacing: -0.01em; + color: #111111; + margin: 0; + } + + .epr-aside-final em { + font-style: normal; + color: #c8102e; + } + + .epr-list { + display: grid; + gap: clamp(28px, 4vw, 52px); + } + + .epr-row { + display: grid; + grid-template-columns: 110px minmax(0, 1fr); + gap: clamp(22px, 4vw, 58px); + padding-bottom: clamp(28px, 4vw, 52px); + border-bottom: 1px solid rgba(17, 17, 17, 0.14); + } + + .epr-row:nth-child(even) { + margin-left: clamp(0px, 7vw, 96px); + } + + .epr-row-index { + font-size: clamp(38px, 4.2vw, 62px); + font-weight: 900; + line-height: 1; + letter-spacing: -0.05em; + color: #c8102e; + } + + .epr-row-featured { + padding: clamp(28px, 4vw, 44px) clamp(24px, 3vw, 40px); + background: #09090b; + border-radius: 22px; + border-bottom: none; + margin-bottom: clamp(28px, 4vw, 52px); + } + + .epr-row-featured .epr-row-index { + color: rgba(255, 255, 255, 0.22); + -webkit-text-stroke: 1.5px rgba(255, 255, 255, 0.5); + } + + .epr-row-featured .epr-row-title { + font-size: clamp(32px, 4vw, 64px) !important; + color: #ffffff !important; + } + + .epr-row-featured .epr-row-desc { + color: rgba(255, 255, 255, 0.62); + } + + .epr-row-flag { + display: inline-block; + font-size: 12px; + font-weight: 800; + letter-spacing: 1.3px; + text-transform: uppercase; + color: #ffffff; + background: #c8102e; + padding: 6px 14px; + border-radius: 100px; + margin-bottom: 16px; + } + + .epr-row-type { + display: block; + font-size: 12px; + font-weight: 800; + letter-spacing: 1.7px; + text-transform: uppercase; + color: rgba(17, 17, 17, 0.42); + margin-bottom: 14px; + } + + .epr-row-featured .epr-row-type { + color: rgba(255, 255, 255, 0.42); + } + + .epr-row-title { + font-size: clamp(28px, 3.4vw, 52px) !important; + font-weight: 800 !important; + letter-spacing: -0.045em !important; + line-height: 1.02 !important; + text-transform: uppercase !important; + color: #111111 !important; + margin: 0 0 14px 0; + } + + .epr-row-desc { + max-width: 660px; + font-size: 15.5px; + line-height: 1.65; + color: rgba(17, 17, 17, 0.58); + margin: 0; + } + + .epr-cta { + margin-top: clamp(48px, 6vw, 72px); + } + + .epr-cta-link { + display: inline-flex; + align-items: center; + gap: 10px; + font-size: 15px; + font-weight: 800; + color: #111111 !important; + text-decoration: none !important; + border-bottom: 1.5px solid rgba(17, 17, 17, 0.2); + padding-bottom: 5px; + transition: border-color 0.3s ease, color 0.3s ease; + } + + .epr-cta-link:hover { + color: #c8102e !important; + border-color: #c8102e; + } + + /* Laptop: sticky stays enabled, just a narrower gutter. */ + @media (max-width: 1180px) { + .epr-stage { grid-template-columns: minmax(220px, 0.34fr) minmax(0, 0.66fr); gap: clamp(28px, 4vw, 46px); } + .epr-aside { min-height: 420px; } + .epr-row:nth-child(even) { margin-left: 0; } + } + + /* Tablet: sticky disabled — the aside scrolls in normal flow instead + of pinning, since there's no longer enough vertical runway next to + the (now narrower, shorter) program list for pinning to read well. + The wrapper no longer needs to stretch once its child isn't sticky. */ + @media (max-width: 1023px) { + .epr-aside-wrap { + align-self: start; + } + .epr-aside { + position: relative; + top: auto; + } + } + + @media (max-width: 767px) { + .epr-stage { grid-template-columns: 1fr; } + .epr-aside { + position: relative; + top: auto; + min-height: 300px; + padding-top: 4px; + padding-bottom: clamp(24px, 7vw, 38px); + } + .epr-aside-map { + inset: -8% -18% 0 -20%; + opacity: 0.18; + } + .epr-aside-content { + gap: 20px; + } + .epr-aside-num { + font-size: clamp(128px, 34vw, 180px); + } + .epr-aside-copy { + max-width: 11ch; + font-size: clamp(34px, 10vw, 48px); + } + .epr-aside-desc { + max-width: 32ch; + font-size: 14.5px; + } + .epr-aside-gains-list li { + font-size: 14.5px; + } + .epr-aside-final { + max-width: 28ch; + font-size: 16.5px; + } + } + + @media (max-width: 640px) { + .epr-section { padding-top: 54px; padding-bottom: 54px; } + .epr-title { + font-size: clamp(34px, 10vw, 40px) !important; + letter-spacing: -0.045em !important; + overflow-wrap: anywhere; + } + .epr-row-title { + font-size: clamp(27px, 8.5vw, 36px) !important; + overflow-wrap: anywhere; + } + .epr-row { grid-template-columns: 1fr; gap: 12px; } + } + 11:[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$26"}}],"$L27"] +28:Te98, + .eim-section { + position: relative; + width: calc(100% - 40px); + margin: clamp(24px, 4vw, 40px) auto; + border-radius: 28px; + overflow: hidden; + box-sizing: border-box; + background: #09090b; + padding: clamp(64px, 8vw, 100px) clamp(24px, 5vw, 48px); + } + + .eim-inner { + position: relative; + z-index: 1; + max-width: 1380px; + margin: 0 auto; + } + + .eim-eyebrow { + font-size: 13px; + font-weight: 800; + letter-spacing: 2.5px; + text-transform: uppercase; + color: #c8102e; + margin-bottom: 20px; + } + + .eim-title { + font-size: clamp(28px, 3.4vw, 46px) !important; + font-weight: 800 !important; + letter-spacing: -0.03em !important; + line-height: 1.15 !important; + text-transform: none !important; + color: #ffffff !important; + margin: 0 0 clamp(32px, 4vw, 48px) 0; + } + + .eim-divider { + border: none; + border-top: 1px solid rgba(255, 255, 255, 0.12); + margin: 0 0 clamp(40px, 5vw, 56px) 0; + } + + .eim-hero-row { + display: flex; + align-items: flex-end; + gap: clamp(20px, 3vw, 36px); + margin-bottom: clamp(48px, 6vw, 72px); + } + + .eim-hero-num { + font-size: clamp(90px, 13vw, 190px); + font-weight: 800; + line-height: 0.85; + letter-spacing: -0.03em; + color: transparent; + -webkit-text-stroke: 2px #c8102e; + } + + .eim-hero-label { + font-size: 13px; + font-weight: 700; + letter-spacing: 1.5px; + text-transform: uppercase; + color: rgba(255, 255, 255, 0.55); + max-width: 90px; + line-height: 1.4; + padding-bottom: clamp(12px, 1.5vw, 24px); + } + + .eim-divider-2 { + border: none; + border-top: 1px solid rgba(255, 255, 255, 0.12); + margin: 0 0 clamp(40px, 5vw, 56px) 0; + } + + .eim-secondary-row { + display: grid; + grid-template-columns: repeat(4, minmax(0, 1fr)); + } + + .eim-secondary-item { + padding-right: 24px; + border-left: 1px solid rgba(255, 255, 255, 0.12); + padding-left: 24px; + } + + .eim-secondary-item:first-child { + border-left: none; + padding-left: 0; + } + + .eim-secondary-num { + display: block; + font-size: clamp(32px, 3vw, 44px); + font-weight: 800; + color: #ff5470; + letter-spacing: -0.02em; + margin-bottom: 10px; + } + + .eim-secondary-label { + font-size: 13px; + font-weight: 600; + color: rgba(255, 255, 255, 0.5); + line-height: 1.4; + } + + .eim-copy { + max-width: 720px; + margin-top: clamp(48px, 6vw, 72px); + font-size: 15.5px; + line-height: 1.7; + color: rgba(255, 255, 255, 0.55); + } + + @media (max-width: 1024px) { + .eim-section { width: calc(100% - 24px); border-radius: 22px; } + } + + @media (max-width: 700px) { + .eim-hero-row { align-items: flex-start; flex-direction: column; gap: 12px; } + .eim-hero-label { padding-bottom: 0; max-width: none; } + .eim-secondary-row { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: 28px; } + .eim-secondary-item:nth-child(3) { border-left: none; padding-left: 0; } + } + + @media (max-width: 460px) { + .eim-section { padding-top: 48px; padding-bottom: 48px; } + } + 12:[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$28"}}],"$L29"] +2a:T1573, + .ehw-section { + background: #ffffff; + padding: var(--space-section-lg, 80px) 0 calc(var(--space-section-lg, 80px) + 32px) 0; + overflow: hidden; + } + + .ehw-inner { + max-width: 1380px; + margin: 0 auto; + } + + .ehw-head { + display: flex; + flex-direction: column; + align-items: flex-start; + margin-bottom: clamp(126px, calc(7vw + 60px), 172px); + } + + .ehw-head-reveal { + width: 100%; + } + + .ehw-divider { + width: 100%; + height: 1px; + margin: 18px 0 clamp(24px, 3.5vw, 40px) 0; + border: none; + background-color: rgba(17, 17, 17, 0.14); + } + + .ehw-eyebrow { + font-size: 13px; + font-weight: 800; + letter-spacing: 2.4px; + text-transform: uppercase; + color: rgba(17, 17, 17, 0.42); + } + + .ehw-title { + max-width: 820px; + font-size: clamp(32px, 4vw, 54px) !important; + font-weight: 800 !important; + letter-spacing: -0.03em !important; + line-height: 1.08 !important; + text-transform: none !important; + color: #111111 !important; + margin: 0 !important; + } + + /* ---------------------------------------------------------------- + Premium editorial process row: five milestones in a single + sequence, separated by thin hairline dividers (no cards, no + shadows, no boxed containers). One flex-wrap sequence with + responsive flex-basis handles the composition at every size — + 5-across on desktop, 3 + 2 (centered) on tablet, a single + vertical column on mobile — from one shared markup. + ---------------------------------------------------------------- */ + .ehw-sequence { + display: flex; + flex-wrap: wrap; + justify-content: center; + --ehw-gap: clamp(24px, 2.6vw, 48px); + column-gap: var(--ehw-gap); + row-gap: clamp(48px, 6vw, 84px); + } + + .ehw-step { + position: relative; + flex: 0 1 calc((100% - 4 * var(--ehw-gap)) / 5); + min-width: 168px; + padding-left: clamp(20px, 2vw, 32px); + border-left: 1px solid rgba(17, 17, 17, 0.14); + transition: border-color 0.3s ease; + } + + .ehw-step:first-child { + border-left: none; + padding-left: 0; + } + + .ehw-step:hover { + border-left-color: rgba(200, 16, 46, 0.4); + } + + .ehw-step-num { + font-size: clamp(48px, 4.6vw, 78px); + font-weight: 900; + line-height: 0.84; + letter-spacing: -0.03em; + color: transparent; + -webkit-text-stroke: 1.5px rgba(17, 17, 17, 0.24); + margin: 0 0 18px 0; + transition: -webkit-text-stroke-color 0.3s ease; + } + + .ehw-step.is-accent .ehw-step-num { + -webkit-text-stroke: 1.5px rgba(200, 16, 46, 0.58); + } + + .ehw-step-kicker { + display: flex; + align-items: center; + gap: 7px; + margin-bottom: 18px; + } + + .ehw-step-kicker svg { + width: 13px; + height: 13px; + color: rgba(17, 17, 17, 0.36); + flex-shrink: 0; + } + + .ehw-step-kicker span { + font-size: 11px; + font-weight: 800; + letter-spacing: 2px; + text-transform: uppercase; + color: rgba(17, 17, 17, 0.4); + } + + .ehw-step.is-accent .ehw-step-kicker svg, + .ehw-step.is-accent .ehw-step-kicker span { + color: #c8102e; + } + + .ehw-step-title { + font-size: clamp(18px, 1.4vw, 22px) !important; + font-weight: 800 !important; + letter-spacing: -0.02em !important; + line-height: 1.2 !important; + text-transform: none !important; + color: #111111 !important; + margin: 0 0 22px 0; + } + + .ehw-step-desc { + max-width: 27ch; + font-size: 14px; + line-height: 1.6; + color: rgba(17, 17, 17, 0.55); + margin: 0; + } + + /* Tablet: 3 + 2, centered — sever the divider at the start of each row. */ + @media (max-width: 1100px) { + .ehw-step { + flex-basis: calc((100% - 2 * var(--ehw-gap)) / 3); + } + .ehw-step:nth-child(4) { + border-left: none; + padding-left: 0; + } + } + + /* Mobile: single column — dividers rotate from vertical to horizontal. */ + @media (max-width: 640px) { + .ehw-sequence { + row-gap: 0; + } + .ehw-step { + flex-basis: 100%; + padding-left: 0; + padding-top: clamp(28px, 8vw, 38px); + border-left: none; + border-top: 1px solid rgba(17, 17, 17, 0.14); + } + .ehw-step:first-child { + padding-top: 0; + border-top: none; + } + .ehw-step:nth-child(4) { + border-top: 1px solid rgba(17, 17, 17, 0.14); + } + .ehw-step:hover { + border-left-color: transparent; + } + .ehw-step-num { + font-size: clamp(44px, 13vw, 56px); + } + } + + @media (max-width: 480px) { + .ehw-section { padding-top: 48px; padding-bottom: 68px; } + } + 13:[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$2a"}}],"$L2b"] +2c:T1bff, + .est-section { + position: relative; + background: #ffffff; + padding-top: clamp(24px, 3vw, 48px); + padding-bottom: clamp(78px, 9vw, 132px); + overflow: hidden; + } + + .est-inner { + max-width: 1380px; + margin: 0 auto; + } + + .est-head { + display: flex; + flex-direction: column; + align-items: flex-start; + margin-bottom: clamp(54px, 7vw, 86px); + } + + .est-head-reveal { + width: 100%; + } + + .est-divider { + width: 100%; + height: 1px; + margin: 18px 0 clamp(24px, 3.5vw, 40px) 0; + border: none; + background-color: rgba(17, 17, 17, 0.14); + } + + .est-eyebrow { + font-size: 13px; + font-weight: 800; + letter-spacing: 2.4px; + text-transform: uppercase; + color: rgba(17, 17, 17, 0.42); + } + + .est-title { + max-width: 940px; + font-size: clamp(42px, 6.3vw, 90px) !important; + font-weight: 800 !important; + letter-spacing: -0.055em !important; + line-height: 0.98 !important; + text-transform: uppercase !important; + color: #111111 !important; + margin: 0; + } + + .est-feature { + display: grid; + grid-template-columns: minmax(0, 0.94fr) minmax(340px, 0.64fr); + gap: clamp(28px, 4vw, 62px); + align-items: stretch; + margin-bottom: clamp(44px, 6vw, 76px); + } + + .est-photo { + position: relative; + min-height: clamp(460px, 48vw, 680px); + border-radius: 26px; + overflow: hidden; + background: #09090b; + } + + .est-photo img { + object-fit: cover; + object-position: center; + } + + .est-photo::after { + content: ""; + position: absolute; + inset: 0; + background: linear-gradient(180deg, rgba(9, 9, 11, 0) 34%, rgba(9, 9, 11, 0.72) 100%); + pointer-events: none; + } + + .est-photo-caption { + position: absolute; + left: clamp(24px, 3vw, 42px); + right: clamp(24px, 3vw, 42px); + bottom: clamp(24px, 3vw, 42px); + z-index: 1; + color: #ffffff; + } + + .est-photo-caption span { + display: block; + font-size: 12px; + font-weight: 800; + letter-spacing: 1.7px; + text-transform: uppercase; + color: rgba(255, 255, 255, 0.6); + margin-bottom: 8px; + } + + .est-photo-caption strong { + display: block; + font-size: clamp(24px, 3vw, 42px); + font-weight: 900; + line-height: 1.02; + letter-spacing: -0.04em; + } + + .est-copy { + border-radius: 26px; + background: #09090b; + color: #ffffff; + padding: clamp(34px, 5vw, 62px); + display: flex; + flex-direction: column; + justify-content: space-between; + overflow: hidden; + position: relative; + } + + .est-copy::before { + content: ""; + position: absolute; + width: 320px; + height: 320px; + right: -120px; + top: -120px; + background: radial-gradient(circle, rgba(200, 16, 46, 0.42), transparent 68%); + pointer-events: none; + } + + .est-quote-mark { + position: relative; + font-family: Georgia, serif; + font-size: 92px; + line-height: 0.8; + color: #c8102e; + display: block; + margin-bottom: 20px; + } + + .est-quote-text { + position: relative; + font-size: clamp(25px, 3vw, 44px); + font-weight: 800; + line-height: 1.12; + letter-spacing: -0.04em; + color: #ffffff; + margin: 0 0 28px 0; + } + + .est-narrative { + position: relative; + font-size: 15.5px; + line-height: 1.68; + color: rgba(255, 255, 255, 0.66); + margin: 0; + max-width: 46ch; + } + + .est-person { + position: relative; + padding-top: clamp(38px, 5vw, 64px); + } + + .est-person-name { + font-size: 18px; + font-weight: 900; + color: #ffffff; + } + + .est-person-role { + font-size: 13.5px; + color: rgba(255, 255, 255, 0.52); + margin-top: 3px; + } + + .est-list-label { + font-size: 12px; + font-weight: 800; + letter-spacing: 1.8px; + text-transform: uppercase; + color: rgba(17, 17, 17, 0.42); + padding-top: clamp(24px, 3vw, 38px); + border-top: 1px solid rgba(17, 17, 17, 0.14); + margin-bottom: clamp(20px, 3vw, 30px); + } + + .est-list { + display: flex; + gap: 18px; + overflow-x: auto; + scroll-snap-type: x mandatory; + padding-bottom: 12px; + margin-bottom: clamp(6px, 1vw, 10px); + -webkit-overflow-scrolling: touch; + } + + .est-list::-webkit-scrollbar { + height: 4px; + } + + .est-list::-webkit-scrollbar-thumb { + background: rgba(17, 17, 17, 0.18); + border-radius: 100px; + } + + .est-row { + scroll-snap-align: start; + flex: 0 0 clamp(260px, 30vw, 340px); + min-height: 220px; + padding: clamp(24px, 2.6vw, 32px); + border: 1px solid rgba(17, 17, 17, 0.14); + border-radius: 20px; + display: flex; + flex-direction: column; + justify-content: space-between; + transition: border-color 0.3s ease, transform 0.3s ease; + } + + .est-row:hover { + border-color: rgba(200, 16, 46, 0.4); + transform: translateY(-4px); + } + + .est-row-name { + font-size: 20px; + font-weight: 900; + color: #111111; + } + + .est-row-role { + font-size: 13px; + font-weight: 800; + letter-spacing: 1.4px; + text-transform: uppercase; + color: #c8102e; + margin-top: 6px; + } + + .est-row-line { + font-size: 15px; + line-height: 1.6; + color: rgba(17, 17, 17, 0.62); + margin: 28px 0 0; + } + + @media (max-width: 1000px) { + .est-head, + .est-feature { grid-template-columns: 1fr; } + .est-row { + min-height: 0; + flex-basis: 78vw; + } + } + + @media (max-width: 640px) { + .est-section { padding-top: 54px; padding-bottom: 54px; } + .est-title { + font-size: clamp(34px, 10vw, 40px) !important; + letter-spacing: -0.045em !important; + overflow-wrap: anywhere; + } + .est-quote-text { + font-size: clamp(25px, 8vw, 34px); + overflow-wrap: anywhere; + } + .est-photo, + .est-copy { border-radius: 20px; } + .est-photo { min-height: 420px; } + } + 14:[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$2c"}}],"$L2d"] +2e:T16dc, + .epn-section { + position: relative; + width: calc(100% - 40px); + margin: clamp(24px, 4vw, 40px) auto; + border-radius: 28px; + overflow: hidden; + box-sizing: border-box; + background: #09090b; + padding: clamp(68px, 8vw, 112px) 0; + } + + .epn-section::before { + content: ""; + position: absolute; + inset: 0; + background: + linear-gradient(120deg, rgba(9, 9, 11, 0.98) 0%, rgba(9, 9, 11, 0.88) 54%, rgba(192, 18, 39, 0.18) 100%), + url("/images/wings-heroslider3.png"); + background-size: cover; + background-position: center 70%; + opacity: 1; + } + + .epn-inner { + position: relative; + z-index: 1; + max-width: 1380px; + margin: 0 auto; + } + + .epn-head { + display: flex; + flex-direction: column; + align-items: flex-start; + margin-bottom: clamp(50px, 7vw, 84px); + } + + .epn-head-reveal { + width: 100%; + } + + .epn-divider { + width: 100%; + height: 1px; + margin: 18px 0 clamp(24px, 3.5vw, 40px) 0; + border: none; + background-color: rgba(255, 255, 255, 0.16); + } + + .epn-eyebrow { + font-size: 13px; + font-weight: 800; + letter-spacing: 2.5px; + text-transform: uppercase; + color: rgba(255, 255, 255, 0.52); + } + + .epn-title { + max-width: 930px; + font-size: clamp(42px, 6.3vw, 90px) !important; + font-weight: 800 !important; + letter-spacing: -0.055em !important; + line-height: 0.98 !important; + text-transform: uppercase !important; + color: #ffffff !important; + margin: 0; + } + + .epn-title em { + color: #ff5470; + font-style: normal; + } + + .epn-body { + display: grid; + grid-template-columns: minmax(280px, 0.46fr) minmax(0, 1fr); + gap: clamp(32px, 5vw, 72px); + align-items: stretch; + } + + .epn-manifesto { + border-left: 4px solid #c8102e; + padding-left: clamp(22px, 3vw, 36px); + align-self: start; + } + + .epn-intro { + font-size: clamp(22px, 2.5vw, 36px); + font-weight: 800; + line-height: 1.12; + letter-spacing: -0.035em; + color: #ffffff; + margin: 0 0 22px; + } + + .epn-note { + font-size: 15.5px; + line-height: 1.68; + color: rgba(255, 255, 255, 0.62); + margin: 0; + max-width: 38ch; + } + + .epn-grid { + display: flex; + flex-direction: column; + border-top: 1px solid rgba(255, 255, 255, 0.16); + } + + .epn-card { + position: relative; + display: grid; + grid-template-columns: 70px minmax(0, 1fr) 32px; + align-items: center; + gap: clamp(18px, 3vw, 40px); + padding: clamp(22px, 2.6vw, 32px) clamp(4px, 1vw, 16px); + border-bottom: 1px solid rgba(255, 255, 255, 0.16); + border-left: 2px solid transparent; + transition: border-color 0.3s ease, padding-left 0.3s ease, background-color 0.3s ease; + } + + .epn-card:hover { + border-left-color: #c8102e; + background: rgba(200, 16, 46, 0.06); + padding-left: clamp(20px, 2.5vw, 32px); + } + + .epn-card-index { + font-size: 15px; + font-weight: 900; + color: rgba(255, 255, 255, 0.35); + } + + .epn-card-title { + font-size: clamp(22px, 2.2vw, 30px) !important; + font-weight: 900 !important; + line-height: 1.1 !important; + letter-spacing: -0.03em !important; + text-transform: none !important; + color: #ffffff !important; + margin: 0 0 8px; + } + + .epn-card-desc { + max-width: 46ch; + font-size: 14.5px; + line-height: 1.6; + color: rgba(255, 255, 255, 0.58); + margin: 0; + } + + .epn-card-arrow { + display: flex; + color: rgba(255, 255, 255, 0.3); + transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1), color 0.3s ease; + } + + .epn-card:hover .epn-card-arrow { + transform: translateX(4px); + color: #ff5470; + } + + .epn-cta { + margin-top: clamp(42px, 5vw, 64px); + } + + .epn-cta-btn { + display: inline-flex; + align-items: center; + gap: 10px; + padding: 16px 36px; + border-radius: 100px; + background: #c01227; + color: #ffffff !important; + font-weight: 800; + font-size: 15px; + text-decoration: none !important; + transition: transform 0.35s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.35s ease; + } + + .epn-cta-btn:hover { + transform: translateY(-3px); + box-shadow: 0 14px 30px rgba(192, 18, 39, 0.35); + } + + @media (max-width: 1024px) { + .epn-section { width: calc(100% - 24px); border-radius: 22px; } + } + + @media (max-width: 900px) { + .epn-head, + .epn-body { grid-template-columns: 1fr; } + } + + @media (max-width: 700px) { + .epn-title { + font-size: clamp(34px, 10vw, 40px) !important; + letter-spacing: -0.045em !important; + overflow-wrap: anywhere; + } + .epn-card { + grid-template-columns: 44px minmax(0, 1fr); + } + .epn-card-arrow { display: none; } + } + + @media (max-width: 460px) { + .epn-section { padding-top: 54px; padding-bottom: 54px; } + } + 15:[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$2e"}}],"$L2f"] +30:Tdad, + .emp-cta-wrap { + width: calc(100% - 40px); + margin: clamp(24px, 4vw, 40px) auto clamp(40px, 5vw, 64px); + } + + .emp-cta { + position: relative; + overflow: hidden; + border-radius: 28px; + min-height: clamp(480px, 48vw, 680px); + background: #09090b; + display: flex; + align-items: flex-end; + } + + .emp-cta::before { + content: ""; + position: absolute; + inset: 0; + background-image: + linear-gradient(180deg, rgba(9, 9, 11, 0.18) 0%, rgba(9, 9, 11, 0.52) 48%, rgba(9, 9, 11, 0.96) 100%), + linear-gradient(90deg, rgba(9, 9, 11, 0.88) 0%, rgba(9, 9, 11, 0.35) 58%, rgba(9, 9, 11, 0.12) 100%), + url("/images/bg-header-women.webp"); + background-size: cover; + background-position: center; + transform: scale(1.02); + } + + .emp-cta-inner { + position: relative; + z-index: 1; + max-width: 1380px; + width: 100%; + margin: 0 auto; + padding: clamp(46px, 7vw, 88px) clamp(24px, 5vw, 64px); + box-sizing: border-box; + } + + .emp-cta-recap { + display: flex; + gap: clamp(28px, 4vw, 52px); + margin-bottom: clamp(28px, 4vw, 44px); + padding-bottom: clamp(24px, 3vw, 36px); + border-bottom: 1px solid rgba(255, 255, 255, 0.16); + } + + .emp-cta-recap-item { + display: flex; + align-items: baseline; + gap: 10px; + } + + .emp-cta-recap-num { + font-size: clamp(22px, 2.4vw, 32px); + font-weight: 900; + letter-spacing: -0.02em; + color: transparent; + -webkit-text-stroke: 1.3px rgba(255, 255, 255, 0.85); + } + + .emp-cta-recap-label { + font-size: 12px; + font-weight: 700; + letter-spacing: 0.6px; + color: rgba(255, 255, 255, 0.5); + } + + .emp-cta-kicker { + font-size: 13px; + font-weight: 900; + letter-spacing: 2.4px; + text-transform: uppercase; + color: #ff5470; + margin-bottom: 22px; + } + + .emp-cta-title { + max-width: 980px; + color: #ffffff !important; + font-size: clamp(44px, 7vw, 108px) !important; + font-weight: 900 !important; + line-height: 0.95 !important; + letter-spacing: -0.06em !important; + text-transform: uppercase !important; + margin: 0 0 clamp(24px, 3vw, 34px); + } + + .emp-cta-title em { + color: #ff5470; + font-style: normal; + } + + .emp-cta-bottom { + display: block; + max-width: 1120px; + } + + .emp-cta-sub { + max-width: 620px; + font-size: 16px; + line-height: 1.68; + color: rgba(255, 255, 255, 0.68); + margin: 0; + } + + @media (max-width: 1024px) { + .emp-cta-wrap { width: calc(100% - 24px); } + .emp-cta { border-radius: 22px; } + } + + @media (max-width: 760px) { + .emp-cta { min-height: 600px; } + .emp-cta::before { background-position: 76% center; } + .emp-cta-title { + font-size: clamp(36px, 11vw, 44px) !important; + letter-spacing: -0.05em !important; + overflow-wrap: anywhere; + } + .emp-cta-recap { flex-wrap: wrap; row-gap: 14px; } + } + 16:[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$30"}}],"$L31"] +17:["$","script","script-0",{"src":"/_next/static/chunks/0vzdvje64yndv.js","async":true,"nonce":"$undefined"}] +18:["$","$L32",null,{"children":["$","$33",null,{"name":"Next.MetadataOutlet","children":"$@34"}]}] +35:[] +19:"$W35" +1a:["$","$1","h",{"children":[null,["$","$L36",null,{"children":"$L37"}],["$","div",null,{"hidden":true,"children":["$","$L38",null,{"children":["$","$33",null,{"name":"Next.Metadata","children":"$L39"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}] +1c:["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}] +3a:I[5074,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0vzdvje64yndv.js"],"default"] +41:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0vzdvje64yndv.js"],"CountUp"] +42:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0vzdvje64yndv.js"],"StaggerChildren"] +43:I[5500,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0vzdvje64yndv.js"],"Image"] +20:["$","section",null,{"className":"ev-section","id":"wings-empowerment-vision","children":[["$","div",null,{"className":"ev-map","aria-hidden":"true","children":["$","$L3a",null,{}]}],["$","div",null,{"className":"dm-section-container","children":["$","div",null,{"className":"ev-inner","children":[["$","$L1d",null,{"delay":0.05,"duration":0.7,"yOffset":20,"children":[["$","p",null,{"className":"ev-eyebrow","children":"/ Our Vision /"}],["$","hr",null,{"className":"ev-divider"}]]}],["$","$L1d",null,{"delay":0.12,"duration":0.85,"yOffset":30,"children":["$","h2",null,{"className":"ev-title","children":"Women Own The Future."}]}],["$","div",null,{"className":"ev-columns","children":[["$","$L1d",null,{"delay":0.18,"duration":0.8,"yOffset":25,"children":["$","p",null,{"className":"ev-statement","children":"A logistics ecosystem where women don’t just participate — they own, build, and lead."}]}],["$","$L1d",null,{"delay":0.26,"duration":0.8,"yOffset":25,"className":"ev-support","children":[["$","div",null,{"className":"ev-block","children":[["$","p",null,{"className":"ev-block-label","children":"The vision"}],["$","p",null,{"className":"ev-lead","children":"We are building an entrepreneurial ecosystem where women launch enterprises, scale operations, and shape the future of logistics from the inside."}]]}],["$","div",null,{"className":"ev-block","children":[["$","p",null,{"className":"ev-block-label","children":"Why it matters"}],["$","p",null,{"className":"ev-note","children":"Industries transform when founders emerge from every corner. Women-led enterprises bring fresh perspective, operational resilience, and long-term economic impact to logistics."}]]}],["$","div",null,{"className":"ev-block","children":[["$","p",null,{"className":"ev-block-label","children":"How Wings contributes"}],["$","p",null,{"className":"ev-note","children":"Wings provides the infrastructure — strategic partnerships, funding access, founder networks, and industry connections — that turns ambition into enterprise."}]]}]]}]]}]]}]}]]}] +22:["$","$L1d",null,{"delay":0.05,"duration":0.85,"yOffset":25,"children":[["$","div",null,{"className":"esy-eyebrow","children":"/ Our Approach /"}],["$","p",null,{"className":"esy-statement","children":["Not a program on a brochure. ",["$","em",null,{"children":"An ecosystem women can build in."}]]}]]}] +23:["$","$L1d",null,{"delay":0.15,"duration":0.8,"yOffset":25,"className":"esy-side","children":[["$","span",null,{"className":"esy-label","children":"Manifesto"}],["$","p",null,{"className":"esy-pull","children":"A venture that starts with conviction. A network that turns it into momentum."}],["$","p",null,{"className":"esy-sub","children":"Wings is designed around the moments that define a founder: the first partnership signed, the first client won, the first team hired, the first enterprise scaled."}]]}] +25:["$","div",null,{"id":"women-entrepreneurship","className":"elementor-element elementor-element-bbc6760 e-con-full e-flex cut-corner-no sticky-container-off e-con e-parent","data-id":"bbc6760","data-element_type":"container","data-e-type":"container","style":{"backgroundColor":"#1f1f1f","width":"calc(100% - 40px)","marginLeft":"20px","marginRight":"20px","borderRadius":"25px"},"children":[["$","div",null,{"className":"elementor-element elementor-element-13a7637 elementor-widget__width-auto elementor-absolute elementor-widget elementor-widget-logico_decorative_block","data-id":"13a7637","data-element_type":"widget","data-e-type":"widget","style":{"position":"absolute"},"children":["$","div",null,{"className":"elementor-widget-container","children":["$","div",null,{"className":"block-decoration animation-enable block-decoration-style-1","children":["$","div",null,{"className":"block-decoration-item"}]}]}]}],["$","div",null,{"style":{"backgroundImage":"url(/images/bg-header-women.webp)"},"className":"elementor-element elementor-element-7da6646 e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"7da6646","data-element_type":"container","data-e-type":"container"}],["$","div",null,{"className":"elementor-element elementor-element-8b5d6e6 e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"8b5d6e6","data-element_type":"container","data-e-type":"container","children":["$","div",null,{"className":"elementor-element elementor-element-1f766ea e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"1f766ea","data-element_type":"container","data-e-type":"container","children":[["$","div",null,{"className":"elementor-element elementor-element-3b61435 e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"3b61435","data-element_type":"container","data-e-type":"container","data-settings":"{\"background_background\":\"classic\"}","children":[["$","div",null,{"className":"elementor-element elementor-element-c364d1c elementor-widget elementor-widget-text-editor","data-id":"c364d1c","data-element_type":"widget","data-e-type":"widget","data-widget_type":"text-editor.default","children":["$","div",null,{"className":"elementor-widget-container","children":["$","p",null,{"children":"01"}]}]}],["$","div",null,{"className":"elementor-element elementor-element-239afbb elementor-widget elementor-widget-logico_heading","data-id":"239afbb","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_heading.default","children":["$","div",null,{"className":"elementor-widget-container","children":["$","h5",null,{"className":"logico-title","children":"Women Entrepreneurship"}]}]}],["$","div",null,{"className":"elementor-element elementor-element-0d307dd elementor-widget elementor-widget-text-editor","data-id":"0d307dd","data-element_type":"widget","data-e-type":"widget","data-widget_type":"text-editor.default","children":["$","div",null,{"className":"elementor-widget-container","children":["$","p",null,{"children":"An ecosystem where women build, own, and scale enterprises across logistics."}]}]}]]}],["$","div",null,{"className":"elementor-element elementor-element-5aea22e e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"5aea22e","data-element_type":"container","data-e-type":"container","data-settings":"{\"background_background\":\"classic\"}","children":["$","div",null,{"className":"elementor-element elementor-element-46b9ffa elementor-widget elementor-widget-logico_button","data-id":"46b9ffa","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_button.default","children":["$","div",null,{"className":"elementor-widget-container","children":["$","div",null,{"className":"button-widget","children":["$","div",null,{"className":"button-container","children":["$","a",null,{"href":"#wings-empowerment-programs","className":"logico-small-button","children":["Explore the ecosystem",["$","svg",null,{"viewBox":"0 0 13 20","children":"$L3b"}]]}]}]}]}]}]}]]}]}],"$L3c"]}] +27:["$","section",null,{"className":"epr-section","id":"wings-empowerment-programs","children":["$","div",null,{"className":"dm-section-container","children":["$","div",null,{"className":"epr-inner","children":[["$","div",null,{"className":"epr-head","children":[["$","$L1d",null,{"delay":0.05,"duration":0.75,"yOffset":20,"className":"epr-head-reveal","children":[["$","div",null,{"className":"epr-eyebrow","children":"/ Entrepreneurship Pillars /"}],["$","hr",null,{"className":"epr-divider"}]]}],["$","$L1d",null,{"delay":0.1,"duration":0.85,"yOffset":24,"children":["$","h2",null,{"className":"epr-title","children":"Every pillar is built around ownership."}]}]]}],["$","div",null,{"className":"epr-stage","children":[["$","div",null,{"className":"epr-aside-wrap","children":["$","aside",null,{"className":"epr-aside","children":[["$","div",null,{"className":"epr-aside-map","aria-hidden":"true","children":["$","$L3a",null,{}]}],["$","$L1d",null,{"delay":0.05,"duration":0.8,"yOffset":24,"className":"epr-aside-content","children":[["$","div",null,{"className":"epr-aside-num","children":"05"}],["$","p",null,{"className":"epr-aside-copy","children":["Building tomorrow’s ",["$","em",null,{"children":"women entrepreneurs."}]]}],["$","p",null,{"className":"epr-aside-desc","children":"Every enterprise starts with one decision. Our pillars move women from idea to ownership through mentorship, real industry partnerships, and hands-on venture building across the logistics ecosystem."}],["$","hr",null,{"className":"epr-aside-divider"}],["$","div",null,{"className":"epr-aside-label","children":"Journey Summary"}],["$","p",null,{"className":"epr-aside-desc","children":"Each pillar builds on the one before it — moving founders from validating an idea, to forming partnerships, to receiving hands-on guidance, to growing a sustainable logistics business."}],["$","div",null,{"className":"epr-aside-label","children":"What Participants Gain"}],["$","ul",null,{"className":"epr-aside-gains-list","children":[["$","li","Business validation",{"children":"Business validation"}],["$","li","Industry partnerships",{"children":"Industry partnerships"}],["$","li","Founder mentorship",{"children":"Founder mentorship"}],["$","li","Market readiness",{"children":"Market readiness"}],["$","li","Sustainable growth",{"children":"Sustainable growth"}]]}],["$","p",null,{"className":"epr-aside-final","children":["The destination is never just launching a business. It is building ",["$","em",null,{"children":"women-led enterprises that strengthen the logistics ecosystem."}]]}]]}]]}]}],["$","div",null,{"children":[["$","$L1d",null,{"delay":0.1,"duration":0.8,"yOffset":24,"children":["$","div",null,{"className":"epr-list","children":[["$","article","Venture Launchpad",{"className":"epr-row epr-row-featured","children":[["$","div",null,{"className":"epr-row-index","children":"01"}],["$","div",null,{"children":[["$","span",null,{"className":"epr-row-flag","children":"Where most founders begin"}],["$","span",null,{"className":"epr-row-type","children":"Start building"}],["$","h3",null,{"className":"epr-row-title","children":"Venture Launchpad"}],["$","p",null,{"className":"epr-row-desc","children":"Business model validation, market entry strategy, entity formation, and go-to-market execution for women-led logistics enterprises."}]]}]]}],["$","article","Strategic Partnerships",{"className":"epr-row","children":[["$","div",null,{"className":"epr-row-index","children":"02"}],["$","div",null,{"children":[false,["$","span",null,{"className":"epr-row-type","children":"Connect and grow"}],["$","h3",null,{"className":"epr-row-title","children":"Strategic Partnerships"}],["$","p",null,{"className":"epr-row-desc","children":"Direct access to supply chain networks, B2B relationships, industry alliances, and commercial agreements that accelerate growth."}]]}]]}],["$","article","Founder Mentorship",{"className":"epr-row","children":[["$","div",null,{"className":"epr-row-index","children":"03"}],["$","div",null,{"children":[false,["$","span",null,{"className":"epr-row-type","children":"Learn from builders"}],["$","h3",null,{"className":"epr-row-title","children":"Founder Mentorship"}],["$","p",null,{"className":"epr-row-desc","children":"One-on-one guidance from established entrepreneurs, operators, and investors who understand what it takes to scale."}]]}]]}],["$","article","Growth & Scale",{"className":"epr-row","children":["$L3d","$L3e"]}],"$L3f"]}]}],"$L40"]}]]}]]}]}]}] +29:["$","section",null,{"className":"eim-section","id":"wings-empowerment-impact","children":["$","div",null,{"className":"eim-inner dm-section-container","children":[["$","$L1d",null,{"delay":0.05,"duration":0.75,"yOffset":20,"children":[["$","div",null,{"className":"eim-eyebrow","children":"/ Our Impact /"}],["$","h2",null,{"className":"eim-title","children":"Growth we can measure"}]]}],["$","hr",null,{"className":"eim-divider"}],["$","$L1d",null,{"delay":0.08,"duration":0.8,"yOffset":20,"className":"eim-hero-row","children":[["$","span",null,{"className":"eim-hero-num","children":["$","$L41",null,{"end":500,"suffix":"+","duration":2.2,"triggerOnce":true}]}],["$","span",null,{"className":"eim-hero-label","children":"Women-Led Enterprises In The Ecosystem"}]]}],["$","hr",null,{"className":"eim-divider-2"}],["$","$L1d",null,{"delay":0.1,"duration":0.8,"yOffset":20,"children":["$","div",null,{"className":"eim-secondary-row","children":[["$","div","Enterprises Launched",{"className":"eim-secondary-item","children":[["$","span",null,{"className":"eim-secondary-num","children":["$","$L41",null,{"end":100,"suffix":"+","duration":2,"triggerOnce":true}]}],["$","span",null,{"className":"eim-secondary-label","children":"Enterprises Launched"}]]}],["$","div","Industry Partners",{"className":"eim-secondary-item","children":[["$","span",null,{"className":"eim-secondary-num","children":["$","$L41",null,{"end":25,"suffix":"+","duration":2,"triggerOnce":true}]}],["$","span",null,{"className":"eim-secondary-label","children":"Industry Partners"}]]}],["$","div","Cities Active",{"className":"eim-secondary-item","children":[["$","span",null,{"className":"eim-secondary-num","children":["$","$L41",null,{"end":15,"suffix":"+","duration":2,"triggerOnce":true}]}],["$","span",null,{"className":"eim-secondary-label","children":"Cities Active"}]]}],["$","div","In Economic Value Created",{"className":"eim-secondary-item","children":[["$","span",null,{"className":"eim-secondary-num","children":"Millions"}],["$","span",null,{"className":"eim-secondary-label","children":"In Economic Value Created"}]]}]]}]}],["$","$L1d",null,{"delay":0.12,"duration":0.75,"yOffset":20,"className":"eim-copy","children":["$","p",null,{"children":"Every number on this page represents a woman who walked into a room with an idea and walked out with a business. An enterprise launched, a partnership secured, a market entered — each is a marker of real economic impact, not a statistic collected for its own sake."}]}]]}]}] +2b:["$","section",null,{"className":"ehw-section","id":"wings-empowerment-how-it-works","children":["$","div",null,{"className":"dm-section-container","children":["$","div",null,{"className":"ehw-inner","children":[["$","div",null,{"className":"ehw-head","children":[["$","$L1d",null,{"delay":0.05,"duration":0.75,"yOffset":20,"className":"ehw-head-reveal","children":[["$","div",null,{"className":"ehw-eyebrow","children":"/ The Founder Journey /"}],["$","hr",null,{"className":"ehw-divider"}]]}],["$","$L1d",null,{"delay":0.1,"duration":0.85,"yOffset":24,"children":["$","h2",null,{"className":"ehw-title","children":"A clear path, from idea to enterprise"}]}]]}],["$","$L42",null,{"className":"ehw-sequence","stagger":0.12,"duration":0.7,"yOffset":30,"triggerOnce":true,"children":[["$","div","01",{"className":"ehw-step","children":[["$","div",null,{"className":"ehw-step-num","children":"01"}],["$","div",null,{"className":"ehw-step-kicker","aria-hidden":"true","children":[["$","svg",null,{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","children":["$","path",null,{"d":"M7 17 17 7M9 7h8v8"}]}],["$","span",null,{"children":"Step"}]]}],["$","h3",null,{"className":"ehw-step-title","children":"Apply"}],["$","p",null,{"className":"ehw-step-desc","children":"Submit your venture idea and tell us about your entrepreneurial vision."}]]}],["$","div","02",{"className":"ehw-step","children":[["$","div",null,{"className":"ehw-step-num","children":"02"}],["$","div",null,{"className":"ehw-step-kicker","aria-hidden":"true","children":[["$","svg",null,{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","children":["$","path",null,{"d":"M7 17 17 7M9 7h8v8"}]}],["$","span",null,{"children":"Step"}]]}],["$","h3",null,{"className":"ehw-step-title","children":"Discovery"}],["$","p",null,{"className":"ehw-step-desc","children":"Identify the right market opportunity and validate your business model."}]]}],["$","div","03",{"className":"ehw-step is-accent","children":[["$","div",null,{"className":"ehw-step-num","children":"03"}],["$","div",null,{"className":"ehw-step-kicker","aria-hidden":"true","children":[["$","svg",null,{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","children":["$","path",null,{"d":"M7 17 17 7M9 7h8v8"}]}],["$","span",null,{"children":"Step"}]]}],["$","h3",null,{"className":"ehw-step-title","children":"Build"}],["$","p",null,{"className":"ehw-step-desc","children":"Develop your enterprise with ecosystem support, mentorship, and partnerships."}]]}],["$","div","04",{"className":"ehw-step","children":[["$","div",null,{"className":"ehw-step-num","children":"04"}],["$","div",null,{"className":"ehw-step-kicker","aria-hidden":"true","children":[["$","svg",null,{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","children":["$","path",null,{"d":"M7 17 17 7M9 7h8v8"}]}],["$","span",null,{"children":"Step"}]]}],["$","h3",null,{"className":"ehw-step-title","children":"Launch"}],["$","p",null,{"className":"ehw-step-desc","children":"Go to market with strategic backing, industry connections, and operational infrastructure."}]]}],["$","div","05",{"className":"ehw-step","children":[["$","div",null,{"className":"ehw-step-num","children":"05"}],["$","div",null,{"className":"ehw-step-kicker","aria-hidden":"true","children":[["$","svg",null,{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","children":["$","path",null,{"d":"M7 17 17 7M9 7h8v8"}]}],["$","span",null,{"children":"Step"}]]}],["$","h3",null,{"className":"ehw-step-title","children":"Scale"}],["$","p",null,{"className":"ehw-step-desc","children":"Grow your team, expand operations, and lead your enterprise to sustainable impact."}]]}]]}]]}]}]}] +2d:["$","section",null,{"className":"est-section","id":"wings-empowerment-stories","children":["$","div",null,{"className":"dm-section-container","children":["$","div",null,{"className":"est-inner","children":[["$","div",null,{"className":"est-head","children":[["$","$L1d",null,{"delay":0.05,"duration":0.75,"yOffset":20,"className":"est-head-reveal","children":[["$","div",null,{"className":"est-eyebrow","children":"/ Women in Motion /"}],["$","hr",null,{"className":"est-divider"}]]}],["$","$L1d",null,{"delay":0.1,"duration":0.85,"yOffset":24,"children":["$","h2",null,{"className":"est-title","children":"Small steps. Lasting careers."}]}]]}],["$","div",null,{"className":"est-feature","children":[["$","$L1d",null,{"delay":0.05,"duration":0.85,"yOffset":24,"className":"est-photo","children":[["$","$L43",null,{"src":"/images/women-hero-slider-3.png","alt":"A Wings program participant on the operations floor at a Doormile logistics hub","fill":true,"sizes":"(max-width: 1000px) 100vw, 58vw","style":{"objectPosition":"80% 22%"}}],["$","div",null,{"className":"est-photo-caption","children":[["$","span",null,{"children":"Wings Participant"}],["$","strong",null,{"children":" building a career, one milestone at a time."}]]}]]}],["$","$L1d",null,{"delay":0.12,"duration":0.85,"yOffset":24,"className":"est-copy","children":["$","div",null,{"children":[["$","span",null,{"className":"est-quote-mark","aria-hidden":"true","children":"“"}],["$","p",null,{"className":"est-quote-text","children":"I came in looking for a way forward. I found the confidence to lead."}],["$","p",null,{"className":"est-narrative","children":"She started with limited exposure to logistics. Through structured training, mentorship, and hands-on experience, she built real operational skills — and now supports other women stepping into the industry."}]]}]}]]}]]}]}]}] +2f:["$","section",null,{"className":"epn-section","id":"wings-empowerment-partners","children":["$","div",null,{"className":"dm-section-container","children":["$","div",null,{"className":"epn-inner","children":[["$","div",null,{"className":"epn-head","children":[["$","$L1d",null,{"delay":0.05,"duration":0.75,"yOffset":20,"className":"epn-head-reveal","children":[["$","div",null,{"className":"epn-eyebrow","children":"/ Collaboration /"}],["$","hr",null,{"className":"epn-divider"}]]}],["$","$L1d",null,{"delay":0.1,"duration":0.85,"yOffset":24,"children":["$","h2",null,{"className":"epn-title","children":["Partnership is how ",["$","em",null,{"children":"ecosystems grow."}]]}]}]]}],["$","div",null,{"className":"epn-body","children":[["$","$L1d",null,{"delay":0.08,"duration":0.8,"yOffset":22,"className":"epn-manifesto","children":[["$","p",null,{"className":"epn-intro","children":"The strongest ecosystems are built by many hands."}],["$","p",null,{"className":"epn-note","children":"Wings partners bring industry access, strategic infrastructure, capital, and networks. Together, we build the foundation women-led enterprises need to thrive."}]]}],["$","$L1d",null,{"delay":0.12,"duration":0.8,"yOffset":22,"children":["$","div",null,{"className":"epn-grid","children":[["$","article","Industry Partners",{"className":"epn-card","children":[["$","span",null,{"className":"epn-card-index","children":"01"}],["$","div",null,{"children":[["$","h3",null,{"className":"epn-card-title","children":"Industry Partners"}],["$","p",null,{"className":"epn-card-desc","children":"Strategic alliances with logistics operators, supply chain leaders, and distribution networks that open doors for women-led enterprises."}]]}],["$","span",null,{"className":"epn-card-arrow","aria-hidden":"true","children":["$","svg",null,{"width":"20","height":"20","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.25","strokeLinecap":"round","strokeLinejoin":"round","children":["$","path",null,{"d":"M5 12h14M13 6l6 6-6 6"}]}]}]]}],["$","article","Technology Partners",{"className":"epn-card","children":[["$","span",null,{"className":"epn-card-index","children":"02"}],["$","div",null,{"children":[["$","h3",null,{"className":"epn-card-title","children":"Technology Partners"}],["$","p",null,{"className":"epn-card-desc","children":"Platforms, tools, and infrastructure that give founders the operational edge to compete and scale efficiently."}]]}],["$","span",null,{"className":"epn-card-arrow","aria-hidden":"true","children":["$","svg",null,{"width":"20","height":"20","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.25","strokeLinecap":"round","strokeLinejoin":"round","children":["$","path",null,{"d":"M5 12h14M13 6l6 6-6 6"}]}]}]]}],["$","article","Community Networks",{"className":"epn-card","children":[["$","span",null,{"className":"epn-card-index","children":"03"}],["$","div",null,{"children":[["$","h3",null,{"className":"epn-card-title","children":"Community Networks"}],["$","p",null,{"className":"epn-card-desc","children":"Founder communities, women's business networks, and ecosystem builders who extend reach and amplify impact."}]]}],["$","span",null,{"className":"epn-card-arrow","aria-hidden":"true","children":["$","svg",null,{"width":"20","height":"20","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.25","strokeLinecap":"round","strokeLinejoin":"round","children":["$","path",null,{"d":"M5 12h14M13 6l6 6-6 6"}]}]}]]}],["$","article","Investment Partners",{"className":"epn-card","children":[["$","span",null,{"className":"epn-card-index","children":"04"}],["$","div",null,{"children":[["$","h3",null,{"className":"epn-card-title","children":"Investment Partners"}],["$","p",null,{"className":"epn-card-desc","children":"Funding access, grant programs, angel networks, and capital partners aligned with women-led enterprise growth."}]]}],["$","span",null,{"className":"epn-card-arrow","aria-hidden":"true","children":["$","svg",null,{"width":"20","height":"20","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.25","strokeLinecap":"round","strokeLinejoin":"round","children":["$","path",null,{"d":"M5 12h14M13 6l6 6-6 6"}]}]}]]}]]}]}]]}]]}]}]}] +31:["$","div",null,{"className":"emp-cta-wrap","children":["$","section",null,{"className":"emp-cta","aria-labelledby":"empowerment-final-cta","children":["$","div",null,{"className":"emp-cta-inner","children":[["$","div",null,{"className":"emp-cta-recap","children":[["$","div",null,{"className":"emp-cta-recap-item","children":[["$","span",null,{"className":"emp-cta-recap-num","children":"500+"}],["$","span",null,{"className":"emp-cta-recap-label","children":"Women Founders"}]]}],["$","div",null,{"className":"emp-cta-recap-item","children":[["$","span",null,{"className":"emp-cta-recap-num","children":"100+"}],["$","span",null,{"className":"emp-cta-recap-label","children":"Enterprises Launched"}]]}],["$","div",null,{"className":"emp-cta-recap-item","children":[["$","span",null,{"className":"emp-cta-recap-num","children":"25+"}],["$","span",null,{"className":"emp-cta-recap-label","children":"Industry Partners"}]]}]]}],["$","div",null,{"className":"emp-cta-kicker","children":"/ Build the next mile /"}],["$","h2",null,{"className":"emp-cta-title","id":"empowerment-final-cta","children":["Build what’s ",["$","em",null,{"children":"next."}]]}],["$","div",null,{"className":"emp-cta-bottom","children":["$","p",null,{"className":"emp-cta-sub","children":"Join Doormile Wings in building the entrepreneurial ecosystem where women launch, grow, and lead enterprises that create lasting value across logistics."}]}]]}]}]}] +47:I[22016,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0vzdvje64yndv.js"],""] +3b:["$","polyline",null,{"points":"0.5 19.5 3 19.5 12.5 10 3 0.5"}] +3c:["$","div",null,{"className":"elementor-element elementor-element-b6e14bd e-flex e-con-boxed cut-corner-no sticky-container-off e-con e-child","data-id":"b6e14bd","data-element_type":"container","data-e-type":"container","data-settings":"{\"background_background\":\"classic\"}","children":[["$","div",null,{"className":"ws-map","aria-hidden":"true","children":["$","$L3a",null,{}]}],["$","div",null,{"className":"e-con-inner","children":["$","div",null,{"className":"elementor-element elementor-element-90cc867 e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"90cc867","data-element_type":"container","data-e-type":"container","children":[["$","div",null,{"className":"elementor-element elementor-element-24c0280 elementor-widget__width-inherit elementor-widget elementor-widget-logico_heading","data-id":"24c0280","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_heading.default","children":["$","div",null,{"className":"elementor-widget-container","children":["$","div",null,{"className":"logico-title","children":"/ Doormile Wings /"}]}]}],["$","div",null,{"className":"elementor-element elementor-element-2ed47f3 e-con-full e-grid cut-corner-no sticky-container-off e-con e-child","data-id":"2ed47f3","data-element_type":"container","data-e-type":"container","children":[["$","div",null,{"className":"elementor-element elementor-element-36efec7 e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"36efec7","data-element_type":"container","data-e-type":"container","children":[["$","$L1d",null,{"duration":0.8,"yOffset":28,"triggerOnce":true,"children":["$","div",null,{"className":"elementor-element elementor-element-778840d elementor-widget elementor-widget-logico_heading","data-id":"778840d","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_heading.default","children":["$","div",null,{"className":"elementor-widget-container","children":["$","h3",null,{"className":"logico-title","children":"Women Building The Next Mile"}]}]}]}],["$","div",null,{"className":"elementor-element elementor-element-bbfb67f elementor-widget elementor-widget-image","data-id":"bbfb67f","data-element_type":"widget","data-e-type":"widget","data-widget_type":"image.default","children":["$","div",null,{"className":"elementor-widget-container","children":["$","$L43",null,{"src":"/images/bg-map-women.webp","alt":"Women Map","width":626,"height":692,"style":{"maxWidth":"100%","height":"auto"}}]}]}]]}],["$","div",null,{"className":"elementor-element elementor-element-b2c956f e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"b2c956f","data-element_type":"container","data-e-type":"container","children":["$","div",null,{"id":"ws-stories","children":[["$","$L42",null,{"className":"ws__stats","stagger":0.1,"duration":0.6,"yOffset":20,"triggerOnce":true,"children":[["$","div","Women Founders",{"className":"ws__stat","children":[["$","div",null,{"className":"ws__stat-num","children":[["$","$L41",null,{"end":500,"suffix":"","duration":1.8,"triggerOnce":true}],["$","span",null,{"children":"+"}]]}],["$","div",null,{"className":"ws__stat-label","children":"Women Founders"}]]}],["$","div","Cities Active",{"className":"ws__stat","children":[["$","div",null,{"className":"ws__stat-num","children":[["$","$L41",null,{"end":35,"suffix":"","duration":1.8,"triggerOnce":true}],["$","span",null,{"children":"+"}]]}],["$","div",null,{"className":"ws__stat-label","children":"Cities Active"}]]}],["$","div","Enterprises Launched",{"className":"ws__stat","children":[["$","div",null,{"className":"ws__stat-num","children":[["$","$L41",null,{"end":100,"suffix":"","duration":1.8,"triggerOnce":true}],["$","span",null,{"children":"+"}]]}],["$","div",null,{"className":"ws__stat-label","children":"Enterprises Launched"}]]}]]}],["$","$L42",null,{"className":"ws__cards","stagger":0.08,"duration":0.6,"yOffset":24,"triggerOnce":true,"children":[["$","div","Venture Building",{"className":"ws__card","children":[["$","span",null,{"className":"ws__card-icon","aria-hidden":"true","children":["$","svg",null,{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"1.8","strokeLinecap":"round","strokeLinejoin":"round","children":[["$","path",null,{"d":"M4 19V5"}],["$","path",null,{"d":"M4 7h12l-2 4 2 4H4"}],["$","path",null,{"d":"M18 19h2"}]]}]}],["$","div",null,{"className":"ws__card-title","children":"Venture Building"}],["$","p",null,{"className":"ws__card-desc","children":"End-to-end support for women launching logistics enterprises — from ideation to market entry."}]]}],"$L44","$L45","$L46"]}]]}]}]]}]]}]}]]}] +3d:["$","div",null,{"className":"epr-row-index","children":"04"}] +3e:["$","div",null,{"children":[false,["$","span",null,{"className":"epr-row-type","children":"Scale with confidence"}],["$","h3",null,{"className":"epr-row-title","children":"Growth & Scale"}],["$","p",null,{"className":"epr-row-desc","children":"Operational expansion frameworks, team building, funding readiness, and sustainable unit economics for ventures ready to grow."}]]}] +3f:["$","article","Industry Immersion",{"className":"epr-row","children":[["$","div",null,{"className":"epr-row-index","children":"05"}],["$","div",null,{"children":[false,["$","span",null,{"className":"epr-row-type","children":"See the opportunity"}],["$","h3",null,{"className":"epr-row-title","children":"Industry Immersion"}],["$","p",null,{"className":"epr-row-desc","children":"Real exposure to logistics operations, supply chain infrastructure, and distribution networks before founders commit to a vertical."}]]}]]}] +40:["$","div",null,{"className":"epr-cta","children":["$","$L47",null,{"href":"/contact","className":"epr-cta-link","children":["Start your venture",["$","svg",null,{"width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.25","strokeLinecap":"round","strokeLinejoin":"round","children":["$","path",null,{"d":"M5 12h14M13 6l6 6-6 6"}]}]]}]}] +44:["$","div","Entrepreneurship",{"className":"ws__card","children":[["$","span",null,{"className":"ws__card-icon","aria-hidden":"true","children":["$","svg",null,{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"1.8","strokeLinecap":"round","strokeLinejoin":"round","children":[["$","rect",null,{"x":"3","y":"7","width":"18","height":"13","rx":"2"}],["$","path",null,{"d":"M8 7V5a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2M3 12h18"}]]}]}],["$","div",null,{"className":"ws__card-title","children":"Entrepreneurship"}],["$","p",null,{"className":"ws__card-desc","children":"Women building, owning, and scaling sustainable businesses within the logistics ecosystem."}]]}] +45:["$","div","Founder Networks",{"className":"ws__card","children":[["$","span",null,{"className":"ws__card-icon","aria-hidden":"true","children":["$","svg",null,{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"1.8","strokeLinecap":"round","strokeLinejoin":"round","children":[["$","circle",null,{"cx":"8","cy":"8","r":"3"}],["$","circle",null,{"cx":"16","cy":"8","r":"3"}],["$","path",null,{"d":"M2.5 20c.7-3.1 2.8-5 5.5-5s4.8 1.9 5.5 5"}],["$","path",null,{"d":"M10.5 20c.7-3.1 2.8-5 5.5-5s4.8 1.9 5.5 5"}]]}]}],["$","div",null,{"className":"ws__card-title","children":"Founder Networks"}],["$","p",null,{"className":"ws__card-desc","children":"Peer communities and strategic connections that accelerate growth and open new markets."}]]}] +46:["$","div","Enterprise Leadership",{"className":"ws__card","children":[["$","span",null,{"className":"ws__card-icon","aria-hidden":"true","children":["$","svg",null,{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"1.8","strokeLinecap":"round","strokeLinejoin":"round","children":[["$","circle",null,{"cx":"12","cy":"9","r":"5"}],["$","path",null,{"d":"M9 13.5 7.5 21 12 18l4.5 3-1.5-7.5"}]]}]}],["$","div",null,{"className":"ws__card-title","children":"Enterprise Leadership"}],["$","p",null,{"className":"ws__card-desc","children":"Strategic decision-making, operational excellence, and vision-driven leadership for women founders."}]]}] +37:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] +48:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +34:null +39:[["$","title","0",{"children":"Doormile Wings — Women Entrepreneurship Initiative"}],["$","meta","1",{"name":"description","content":"Doormile Wings empowers women to build, own, and lead enterprises within the logistics ecosystem through strategic partnerships, founder networks, and entrepreneurial infrastructure."}],["$","meta","2",{"name":"robots","content":"index, follow"}],["$","link","3",{"rel":"canonical","href":"https://doormile.com/empowerment"}],["$","meta","4",{"property":"og:title","content":"Doormile Wings — Women Entrepreneurship Initiative"}],["$","meta","5",{"property":"og:description","content":"An entrepreneurial ecosystem empowering women to launch, grow, and lead logistics enterprises with strategic partnerships and industry collaboration."}],["$","meta","6",{"property":"og:url","content":"https://doormile.com/empowerment"}],["$","meta","7",{"property":"og:site_name","content":"Doormile"}],["$","meta","8",{"property":"og:image","content":"https://doormile.com/images/wings-logo.png"}],["$","meta","9",{"property":"og:image:width","content":"1200"}],["$","meta","10",{"property":"og:image:height","content":"630"}],["$","meta","11",{"property":"og:image:alt","content":"Doormile Wings — Women Entrepreneurship Initiative"}],["$","meta","12",{"property":"og:type","content":"website"}],["$","meta","13",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","14",{"name":"twitter:title","content":"Doormile Wings — Women Entrepreneurship Initiative"}],["$","meta","15",{"name":"twitter:description","content":"An entrepreneurial ecosystem empowering women to launch, grow, and lead logistics enterprises with strategic partnerships and industry collaboration."}],["$","meta","16",{"name":"twitter:image","content":"https://doormile.com/images/wings-logo.png"}],["$","link","17",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","18",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","19",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","20",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L48","21",{}]] diff --git a/build/empowerment/__next._full.txt b/build/empowerment/__next._full.txt new file mode 100644 index 0000000..d866020 --- /dev/null +++ b/build/empowerment/__next._full.txt @@ -0,0 +1,2125 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +1b:I[68027,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +c:Tf99, + .eh-outer { + box-sizing: border-box; + padding: 20px; + } + + .eh-section { + position: relative; + border-radius: 25px; + overflow: hidden; + box-sizing: border-box; + height: 800px; + display: flex; + align-items: center; + justify-content: center; + background: #07080c; + } + + .eh-bg { + position: absolute; + inset: 0; + background-image: url("/images/women-hero-slider-2.png"); + background-size: cover; + background-position: 30% 72%; + z-index: 0; + } + + .eh-scrim { + position: absolute; + inset: 0; + background: + linear-gradient(180deg, rgba(7, 8, 12, 0.72) 0%, rgba(7, 8, 12, 0.5) 40%, rgba(7, 8, 12, 0.86) 100%); + z-index: 1; + } + + .eh-inner { + position: relative; + z-index: 2; + width: 100%; + max-width: 1000px; + margin: 0 auto; + padding: 0 15px; + display: flex; + flex-direction: column; + align-items: center; + text-align: center; + box-sizing: border-box; + } + + .eh-eyebrow { + font-size: 13px; + font-weight: 800; + letter-spacing: 2.6px; + text-transform: uppercase; + color: #ff5470; + margin-bottom: 20px; + } + + .eh-title { + width: 100%; + font-size: clamp(30px, 5.5vw, 80px) !important; + font-weight: 800 !important; + letter-spacing: -0.03em !important; + line-height: 1.08 !important; + text-transform: uppercase !important; + color: #ffffff !important; + margin: 0; + word-wrap: break-word; + overflow-wrap: break-word; + } + + .eh-title .eh-soft { + color: rgba(255, 255, 255, 0.72); + } + + .eh-desc { + width: 100%; + max-width: 680px; + margin: 23px auto 0; + font-size: clamp(16px, 1.35vw, 23px); + line-height: 1.65; + color: rgba(255, 255, 255, 0.78); + } + + .eh-btns { + display: flex; + align-items: center; + justify-content: center; + gap: 14px; + flex-wrap: wrap; + margin-top: 32px; + } + + .eh-btn-primary, + .eh-btn-outline { + display: inline-flex; + align-items: center; + gap: 10px; + padding: 15px 28px; + border-radius: 100px; + font-weight: 800; + font-size: 14px; + text-decoration: none; + transition: transform 0.35s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.35s ease, background-color 0.3s ease, border-color 0.3s ease; + } + + .eh-btn-primary { + background: #c01227; + color: #ffffff !important; + border: 1.5px solid #c01227; + } + + .eh-btn-primary:hover { + transform: translateY(-3px); + box-shadow: 0 14px 30px rgba(192, 18, 39, 0.4); + } + + .eh-btn-outline { + background: rgba(255, 255, 255, 0.04); + color: #ffffff !important; + border: 1.5px solid rgba(255, 255, 255, 0.36); + } + + .eh-btn-outline:hover { + border-color: rgba(255, 255, 255, 0.82); + background: rgba(255, 255, 255, 0.09); + transform: translateY(-3px); + } + + @media (max-width: 1020px) { + .eh-outer { padding: 10px; } + } + + @media (max-width: 840px) { + .eh-section { height: 600px; } + } + + @media (max-width: 660px) { + .eh-title { + font-size: clamp(20px, 7vw, 32px) !important; + } + } + + @media (max-width: 480px) { + .eh-section { height: 520px; } + .eh-btn-primary, .eh-btn-outline { width: 100%; justify-content: center; padding: 14px 22px; } + .eh-btns { width: 100%; } + } + 0:{"P":null,"c":["","empowerment"],"q":"","i":false,"f":[[["",{"children":["empowerment",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","div",null,{"id":"empowerment","className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":["$","div",null,{"data-elementor-type":"wp-page","data-elementor-id":"86","className":"elementor elementor-86 elementor-59 elementor-empowerment","children":[[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$c"}}],"$Ld"],"$Le","$Lf","$L10","$L11","$L12","$L13","$L14","$L15","$L16"]}]}]}]}],["$L17"],"$L18"]}],{},null,false,null]},null,false,"$@19"]},null,false,null],"$L1a",false]],"m":"$undefined","G":["$1b",["$L1c"]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"kmSVPuUqY3Rhw5xy4D2nn"} +1d:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0vzdvje64yndv.js"],"ScrollReveal"] +1e:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0vzdvje64yndv.js"],"ShimmerText"] +32:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +33:"$Sreact.suspense" +36:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +38:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +d:["$","div",null,{"className":"eh-outer","children":["$","section",null,{"className":"eh-section","id":"wings-empowerment-hero","children":[["$","div",null,{"className":"eh-bg","aria-hidden":"true"}],["$","div",null,{"className":"eh-scrim","aria-hidden":"true"}],["$","$L1d",null,{"delay":0.05,"duration":0.85,"yOffset":30,"className":"eh-inner","children":[["$","h1",null,{"className":"eh-title","children":["Building ",["$","span",null,{"className":"eh-soft","children":"Women"}],["$","br",null,{}],["$","$L1e",null,{"children":"Entrepreneurs."}]]}],["$","p",null,{"className":"eh-desc","children":"Empowering ambitious women with the network, strategic partnerships, and opportunities to build, grow, and lead successful enterprises that shape the future of logistics."}]]}]]}]}] +1f:Te8f, + .ev-section { + position: relative; + background: #ffffff; + padding: clamp(96px, 11vw, 150px) 0; + overflow: hidden; + } + + .ev-map { + position: absolute; + inset: 0; + z-index: 0; + opacity: 0.4; + pointer-events: none; + } + + .ev-inner { + position: relative; + z-index: 1; + max-width: 1380px; + min-width: 0; + margin: 0 auto; + } + + .ev-eyebrow { + margin: 0 0 18px 0; + font-size: 14px; + font-weight: 500; + letter-spacing: 1.5px; + color: rgba(17, 17, 17, 0.6); + } + + .ev-divider { + width: 100%; + height: 1px; + margin: 0 0 clamp(64px, 7.8vw, 92px) 0; + border: none; + background-color: rgba(17, 17, 17, 0.16); + } + + .ev-title { + margin: 0 0 clamp(92px, 11.5vw, 156px) 0 !important; + max-width: 1320px; + display: block; + font-weight: 800 !important; + font-style: normal !important; + letter-spacing: -0.018em !important; + word-spacing: 0.02em; + line-height: 1.04em !important; + text-transform: none !important; + color: #ffffff !important; + -webkit-text-stroke: 2px #c01227; + paint-order: stroke fill; + font-size: clamp(48px, 8.5vw, 128px) !important; + white-space: normal; + overflow-wrap: normal; + text-wrap: balance; + } + + @media (max-width: 1280px) { + .ev-title { + font-size: 118px !important; + } + } + + @media (max-width: 1020px) { + .ev-title { + font-size: 96px !important; + } + } + + @media (max-width: 767px) { + .ev-title { + font-size: 72px !important; + } + } + + .ev-columns { + display: grid; + grid-template-columns: minmax(0, 0.6fr) minmax(0, 1fr); + gap: clamp(60px, 8vw, 122px); + align-items: start; + } + + .ev-columns > * { + min-width: 0; + } + + .ev-statement { + margin: 0; + font-size: clamp(28px, 3vw, 52px); + font-weight: 600; + line-height: 1.2; + letter-spacing: -0.03em; + color: #111111; + overflow-wrap: break-word; + } + + .ev-support { + display: grid; + gap: clamp(34px, 3.8vw, 52px); + min-width: 0; + } + + .ev-block { + display: grid; + gap: 12px; + } + + .ev-block-label { + margin: 0; + font-size: 12px; + font-weight: 700; + letter-spacing: 1.4px; + line-height: 1; + text-transform: uppercase; + color: rgba(192, 18, 39, 0.86); + } + + .ev-lead, + .ev-note { + font-size: clamp(17px, 1.3vw, 20px); + line-height: 1.6; + color: #333333; + margin: 0; + overflow-wrap: break-word; + } + + .ev-lead { + font-weight: 700; + } + + .ev-note { + font-weight: 400; + } + + @media (max-width: 900px) { + .ev-columns { + grid-template-columns: 1fr; + } + } + + @media (max-width: 600px) { + .ev-section { padding-top: 64px; padding-bottom: 64px; } + .ev-title { + max-width: calc(100vw - (var(--dm-mobile-gutter, 10px) * 2)); + font-size: 56px !important; + letter-spacing: -0.025em !important; + line-height: 1.02em !important; + -webkit-text-stroke-width: 1.5px; + } + } + e:[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$1f"}}],"$L20"] +21:Tbc4, + .esy-section { + position: relative; + width: calc(100% - 40px); + margin: 0 auto clamp(24px, 4vw, 40px); + border-radius: 28px; + overflow: hidden; + box-sizing: border-box; + min-height: clamp(500px, 50vw, 690px); + display: flex; + align-items: stretch; + background: #09090b; + } + + .esy-bg { + position: absolute; + inset: 0; + background-image: + linear-gradient(100deg, rgba(9, 9, 11, 0.96) 0%, rgba(9, 9, 11, 0.84) 43%, rgba(192, 18, 39, 0.28) 100%), + url("/images/wings-heroslider4.png"); + background-size: cover; + background-position: center; + z-index: 0; + } + + .esy-inner { + position: relative; + z-index: 1; + max-width: 1380px; + margin: 0 auto; + width: 100%; + padding-top: clamp(60px, 7vw, 98px); + padding-bottom: clamp(60px, 7vw, 98px); + display: grid; + grid-template-columns: minmax(0, 0.9fr) minmax(280px, 0.52fr); + gap: clamp(36px, 6vw, 96px); + align-items: end; + } + + .esy-eyebrow { + font-size: 13px; + font-weight: 800; + letter-spacing: 2.5px; + text-transform: uppercase; + color: #ff5470; + margin-bottom: 24px; + } + + .esy-statement { + max-width: 920px; + font-size: clamp(38px, 5.7vw, 86px); + font-weight: 800; + letter-spacing: -0.055em; + line-height: 0.98; + text-transform: uppercase; + color: #ffffff; + margin: 0; + } + + .esy-statement em { + color: #ff5470; + font-style: normal; + } + + .esy-side { + border-left: 1px solid rgba(255, 255, 255, 0.18); + padding-left: clamp(24px, 3vw, 42px); + } + + .esy-label { + display: block; + font-size: 12px; + font-weight: 800; + letter-spacing: 1.8px; + text-transform: uppercase; + color: rgba(255, 255, 255, 0.45); + margin-bottom: 18px; + } + + .esy-pull { + font-size: clamp(22px, 2.3vw, 34px); + font-weight: 800; + line-height: 1.16; + letter-spacing: -0.03em; + color: #ffffff; + margin: 0 0 22px 0; + } + + .esy-sub { + font-size: 15.5px; + line-height: 1.65; + color: rgba(255, 255, 255, 0.64); + margin: 0; + } + + @media (max-width: 1024px) { + .esy-section { width: calc(100% - 24px); border-radius: 22px; } + .esy-inner { grid-template-columns: 1fr; align-items: start; } + .esy-side { max-width: 640px; } + } + + @media (max-width: 640px) { + .esy-section { min-height: 560px; } + .esy-side { border-left: none; padding-left: 0; border-top: 1px solid rgba(255, 255, 255, 0.18); padding-top: 24px; } + } + f:[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$21"}}],["$","section",null,{"className":"esy-section","id":"wings-empowerment-story","children":[["$","div",null,{"className":"esy-bg","aria-hidden":"true"}],["$","div",null,{"className":"esy-inner dm-section-container","children":["$L22","$L23"]}]]}]] +24:T3756, + /* ============================================================ + Success Stories — redesigned right column (stats + 2x2 cards) + Dark section · red accent #dc2626 / #ef4444 · Manrope + ============================================================ */ + /* Neutralise the right column's asymmetric 140px left padding so the + box group can be centered instead of pushed to one side. */ + .elementor-element.elementor-element-b2c956f { padding: 0 !important; } + + /* Vertically center the two columns so the right content lines up with + the image instead of needing a big top gap; tighten row gap. */ + .elementor-element.elementor-element-2ed47f3 { align-items: center !important; } + + /* Animated map background behind the Success Stories content */ + .elementor-element.elementor-element-b6e14bd { position: relative; overflow: hidden; } + .elementor-element.elementor-element-b6e14bd > .e-con-inner { position: relative; z-index: 1; } + .ws-map { position: absolute; inset: 0; z-index: 0; opacity: 0.5; pointer-events: none; } + .ws-map canvas { display: block; } + + #ws-stories { + display: flex; + flex-direction: column; + gap: 16px; + width: 100%; + max-width: 620px; + margin: 0 auto; /* center the 7 boxes as a group — no negative margins */ + } + + #ws-stories .ws__stats { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 12px; + } + #ws-stories .ws__stat { + background: rgba(255,255,255,0.04); + border: 1px solid rgba(255,255,255,0.08); + border-radius: 14px; + padding: 20px 16px; + transition: border-color 0.3s ease, background-color 0.3s ease; + } + #ws-stories .ws__stat:hover { border-color: rgba(220,38,38,0.28); background: rgba(220,38,38,0.05); } + #ws-stories .ws__stat-num { + color: #fff !important; + font-weight: 900; + font-size: clamp(28px, 3vw, 38px); + line-height: 1; + letter-spacing: -0.01em; + } + #ws-stories .ws__stat-num span { color: #dc2626 !important; } + #ws-stories .ws__stat-label { + margin-top: 9px; + color: rgba(255,255,255,0.7) !important; + font-size: 14px !important; + font-weight: 700; + letter-spacing: 0.03em; + text-transform: uppercase; + } + + #ws-stories .ws__cards { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 14px; + align-items: stretch; + } + #ws-stories .ws__card { + position: relative; + overflow: hidden; + display: flex; + flex-direction: column; + min-height: 168px; + background: rgba(255,255,255,0.035); + border: 1px solid rgba(255,255,255,0.08); + border-radius: 14px; + padding: 20px; + transition: transform 0.35s cubic-bezier(.25,1,.5,1), border-color 0.35s ease, background-color 0.35s ease, box-shadow 0.35s ease; + } + #ws-stories .ws__card::after { + content: ''; + position: absolute; + top: -45%; left: -25%; + width: 150px; height: 150px; + background: radial-gradient(circle, rgba(220,38,38,0.2), transparent 70%); + opacity: 0; + transition: opacity 0.35s ease; + pointer-events: none; + } + #ws-stories .ws__card:hover { + transform: translateY(-4px); + border-color: rgba(220,38,38,0.3); + background: rgba(220,38,38,0.05); + box-shadow: 0 18px 44px -20px rgba(0,0,0,0.7); + } + #ws-stories .ws__card:hover::after { opacity: 1; } + #ws-stories .ws__card-icon { + display: inline-flex; + align-items: center; + justify-content: center; + width: 40px; height: 40px; + border-radius: 11px; + background: rgba(220,38,38,0.12); + border: 1px solid rgba(220,38,38,0.25); + color: #ef4444; + margin-bottom: 16px; + transition: background-color 0.3s ease, color 0.3s ease; + } + #ws-stories .ws__card:hover .ws__card-icon { background: #dc2626; color: #fff; } + #ws-stories .ws__card-icon svg { width: 21px; height: 21px; } + #ws-stories .ws__card-title { + color: #fff !important; + font-weight: 800; + font-size: 19px; + line-height: 1.2; + letter-spacing: 0; + margin-bottom: 9px; + } + #ws-stories .ws__card-desc { + max-width: 28ch; + color: rgba(255,255,255,0.66) !important; + font-size: 15px; + line-height: 1.52; + margin: 0; + font-weight: 500; + } + + /* ---- Floating card sizing: content-driven, not container-driven ---- + Matches the EV Logistics card height proportions exactly by trimming + red content padding and white footer min-height. */ + .elementor-element.elementor-element-3b61435 { + --padding-top: 46px; + --padding-bottom: 38px; + } + .elementor-element.elementor-element-5aea22e { + --min-height: 38px; + --padding-top: 14px; + --padding-bottom: 14px; + } + @media (max-width: 1020px) { + .elementor-element.elementor-element-3b61435 { + --padding-top: 34px; + --padding-bottom: 28px; + } + .elementor-element.elementor-element-5aea22e { + --min-height: 32px; + --padding-top: 12px; + --padding-bottom: 12px; + } + } + @media (max-width: 660px) { + .elementor-element.elementor-element-3b61435 { + --padding-top: 26px; + --padding-bottom: 22px; + } + .elementor-element.elementor-element-5aea22e { + --min-height: 24px; + --padding-top: 10px; + --padding-bottom: 10px; + } + } + + .elementor-element-778840d .logico-title { + white-space: nowrap !important; + } + + /* The banner image (bg-header-women.png) is very wide (≈2.48:1) and the + woman — the subject of this section — sits on the right. On narrow + screens "cover" center-crops her out, so shift the focal point right + to keep her face in frame. */ + @media (max-width: 1024px) { + .elementor-element.elementor-element-7da6646:not(.elementor-motion-effects-element-type-background) { + background-position: 78% center !important; + } + } + @media (max-width: 767px) { + .elementor-element.elementor-element-7da6646:not(.elementor-motion-effects-element-type-background) { + background-position: 82% 25% !important; + } + } + + /* Stack the two columns below the desktop breakpoint so the box group + always gets full width and stays centered — never clipped. */ + @media (max-width: 1024px) { + .elementor-element-778840d .logico-title { + white-space: normal !important; + } + .elementor-element.elementor-element-2ed47f3 { grid-template-columns: 1fr !important; } + #ws-stories { max-width: 640px; margin: 0 auto; } + /* Align the heading, image and stats/cards to one shared left/right + edge — the heading + image widgets carried extra inset that left + them staggered (80px / 70px / 60px) against the stats column. */ + #women-entrepreneurship .elementor-element-36efec7, + #women-entrepreneurship .elementor-element-b2c956f { + padding-left: 0 !important; + padding-right: 0 !important; + } + #women-entrepreneurship .elementor-element-778840d, + #women-entrepreneurship .elementor-element-bbfb67f, + #women-entrepreneurship .elementor-element-778840d > .elementor-widget-container, + #women-entrepreneurship .elementor-element-bbfb67f > .elementor-widget-container { + padding-left: 0 !important; + padding-right: 0 !important; + margin-left: 0 !important; + margin-right: 0 !important; + } + } + + @media (max-width: 767px) { + #women-entrepreneurship { + width: calc(100% - 20px) !important; + margin-left: 10px !important; + margin-right: 10px !important; + border-radius: 22px !important; + padding-left: 0px !important; + padding-right: 0px !important; + } + #women-entrepreneurship .e-con-boxed > .e-con-inner { + padding-top: 32px !important; + padding-bottom: 32px !important; + padding-left: 0 !important; + padding-right: 0 !important; + } + #women-entrepreneurship .elementor-element-8b5d6e6, + #women-entrepreneurship .elementor-element-b6e14bd, + #women-entrepreneurship .elementor-element-90cc867, + #women-entrepreneurship .elementor-element-36efec7, + #women-entrepreneurship .elementor-element-b2c956f { + padding-left: 0 !important; + padding-right: 0 !important; + margin-left: 0 !important; + margin-right: 0 !important; + } + #women-entrepreneurship .elementor-element-1f766ea { + width: 100% !important; + max-width: 100% !important; + margin-left: auto !important; + margin-right: auto !important; + padding-left: 0 !important; + padding-right: 0 !important; + } + #women-entrepreneurship .elementor-element.elementor-element-2ed47f3 { + padding-left: 0 !important; + padding-right: 0 !important; + margin-left: 0 !important; + margin-right: 0 !important; + margin-top: 0 !important; + padding-top: 0 !important; + gap: 24px !important; + } + #women-entrepreneurship .elementor-element-36efec7 { + margin-top: 0px !important; + padding-top: 0px !important; + gap: 0px !important; + } + #women-entrepreneurship .elementor-element-24c0280 { + margin-bottom: 0px !important; + padding-left: 14px !important; + padding-right: 14px !important; + box-sizing: border-box !important; + } + #women-entrepreneurship .elementor-element-778840d { + margin-top: 14px !important; + margin-bottom: 14px !important; + padding-top: 0px !important; + padding-bottom: 0px !important; + padding-left: 14px !important; + padding-right: 14px !important; + box-sizing: border-box !important; + } + #women-entrepreneurship .elementor-element-778840d h3.logico-title, + #women-entrepreneurship .elementor-element-778840d > .elementor-widget-container { + margin: 0px !important; + padding: 0px !important; + } + #women-entrepreneurship .elementor-element-7da6646 { + width: calc(100% - 28px) !important; + margin-left: 14px !important; + margin-right: 14px !important; + border-radius: 18px !important; + min-height: 240px !important; + margin-top: 15px !important; + margin-bottom: -50px !important; + box-sizing: border-box !important; + } + #women-entrepreneurship .elementor-element-8b5d6e6 { + padding-left: 14px !important; + padding-right: 14px !important; + margin-left: 0px !important; + margin-right: 0px !important; + width: 100% !important; + max-width: 100% !important; + box-sizing: border-box !important; + } + #women-entrepreneurship .elementor-element-bbfb67f img { + width: 100% !important; + } + #women-entrepreneurship .elementor-element-bbfb67f { + margin-top: 0px !important; + margin-bottom: 16px !important; + padding-left: 14px !important; + padding-right: 14px !important; + box-sizing: border-box !important; + } + #ws-stories { + padding-left: 14px !important; + padding-right: 14px !important; + box-sizing: border-box !important; + } + /* KPI stat cards stack one-per-row on mobile. Inside each card the big + number sits on the left and the label on the right, vertically + centered, so every stat reads as a clean full-width row instead of + three cramped columns. */ + #ws-stories .ws__stats { grid-template-columns: 1fr; gap: 12px; } + #ws-stories .ws__stat { + display: flex; + align-items: center; + justify-content: space-between; + gap: 16px; + padding: 16px 20px; + min-width: 0; + } + #ws-stories .ws__stat-num { font-size: clamp(30px, 9vw, 40px); } + #ws-stories .ws__stat-label { + margin-top: 0; + font-size: 13px !important; + letter-spacing: 0.02em; + text-align: right; + min-height: 0; + } + #ws-stories .ws__cards { grid-template-columns: 1fr; gap: 12px; } + } + 10:[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$24"}}],"$L25"] +26:T2d38, + .epr-section { + background: #ffffff; + padding: clamp(78px, 9vw, 132px) 0; + overflow: visible; + } + + .epr-inner { + max-width: 1380px; + min-width: 0; + margin: 0 auto; + } + + .epr-head { + display: flex; + flex-direction: column; + align-items: flex-start; + margin-bottom: clamp(54px, 7vw, 86px); + } + + .epr-head-reveal { + width: 100%; + } + + .epr-divider { + width: 100%; + height: 1px; + margin: 18px 0 clamp(24px, 3.5vw, 40px) 0; + border: none; + background-color: rgba(17, 17, 17, 0.14); + } + + .epr-eyebrow { + font-size: 13px; + font-weight: 800; + letter-spacing: 2.4px; + text-transform: uppercase; + color: rgba(17, 17, 17, 0.42); + } + + .epr-title { + max-width: 950px; + font-size: clamp(42px, 6.2vw, 88px) !important; + font-weight: 800 !important; + letter-spacing: -0.055em !important; + line-height: 0.98 !important; + text-transform: uppercase !important; + color: #111111 !important; + margin: 0; + } + + .epr-stage { + display: grid; + grid-template-columns: minmax(300px, 0.38fr) minmax(0, 0.62fr); + gap: clamp(32px, 5vw, 78px); + /* stretch (not start): the left column's grid-item box must span + the full row — i.e. match the taller Programs list — or the + sticky aside inside it runs out of room and un-sticks well + before the list finishes scrolling. */ + align-items: stretch; + min-width: 0; + } + + .epr-stage > * { + min-width: 0; + } + + /* Plain stretching grid item. Carries no visual styling of its own — + it exists only to give .epr-aside (sized/centered independently + inside it) the full row height to stick within. */ + .epr-aside-wrap { + min-width: 0; + } + + .epr-aside { + position: sticky; + top: 110px; + min-width: 0; + min-height: clamp(480px, 44vw, 660px); + padding: clamp(18px, 3vw, 34px) 0 clamp(24px, 3.5vw, 42px); + display: flex; + flex-direction: column; + justify-content: center; + overflow: hidden; + color: #111111; + } + + .epr-aside-map { + position: absolute; + inset: 8% -22% 8% -28%; + z-index: 0; + opacity: 0.22; + pointer-events: none; + } + + .epr-aside-map canvas { + display: block; + } + + .epr-aside-content { + position: relative; + z-index: 1; + display: grid; + gap: clamp(18px, 2.2vw, 28px); + } + + .epr-aside-num { + position: relative; + font-size: clamp(164px, 17vw, 300px); + font-weight: 900; + line-height: 0.78; + letter-spacing: -0.06em; + color: transparent; + -webkit-text-stroke: 2px rgba(200, 16, 46, 0.2); + } + + .epr-aside-copy { + position: relative; + max-width: 12ch; + font-size: clamp(30px, 3.6vw, 56px); + font-weight: 800; + line-height: 0.98; + letter-spacing: -0.055em; + text-transform: uppercase; + color: #111111; + margin: 0; + } + + .epr-aside-copy em { + font-style: normal; + color: #c8102e; + } + + .epr-aside-desc { + position: relative; + max-width: 34ch; + font-size: 15.5px; + line-height: 1.65; + color: rgba(17, 17, 17, 0.58); + margin: 0; + } + + /* Continues the editorial narrative below the original hero + statement/paragraph — same grid, same gap rhythm as the rest of + .epr-aside-content, so it reads as one uninterrupted column rather + than a bolted-on block. Exists so the sticky aside still has real + editorial content to show while the list scrolls through its last + two entries, instead of ending early and leaving the left side + blank for the remainder of the scroll. */ + .epr-aside-divider { + position: relative; + width: 100%; + height: 1px; + border: none; + margin: 0; + background-color: rgba(17, 17, 17, 0.12); + } + + .epr-aside-label { + position: relative; + font-size: 12px; + font-weight: 800; + letter-spacing: 1.7px; + text-transform: uppercase; + color: rgba(17, 17, 17, 0.4); + margin: 0 0 -6px 0; + } + + .epr-aside-gains-list { + position: relative; + list-style: none; + margin: 0; + padding: 0; + display: grid; + gap: 9px; + } + + .epr-aside-gains-list li { + position: relative; + padding-left: 19px; + font-size: 15.5px; + line-height: 1.5; + color: rgba(17, 17, 17, 0.68); + } + + /* Extra .epr-aside prefix raises specificity above the global theme + rule ".logico-front-end ul li:before" (a fontello glyph), so our + clean red dot replaces the inherited checkmark marker — same fix + already established for this exact conflict in LegalDocument.tsx. */ + .epr-aside .epr-aside-gains-list li::before { + content: "" !important; + position: absolute; + left: 2px; + top: 0.62em; + width: 5px; + height: 5px; + border-radius: 50%; + background: #c8102e; + font-size: 0; + } + + .epr-aside-final { + position: relative; + max-width: 30ch; + font-size: clamp(17px, 1.7vw, 20px); + font-weight: 700; + line-height: 1.5; + letter-spacing: -0.01em; + color: #111111; + margin: 0; + } + + .epr-aside-final em { + font-style: normal; + color: #c8102e; + } + + .epr-list { + display: grid; + gap: clamp(28px, 4vw, 52px); + } + + .epr-row { + display: grid; + grid-template-columns: 110px minmax(0, 1fr); + gap: clamp(22px, 4vw, 58px); + padding-bottom: clamp(28px, 4vw, 52px); + border-bottom: 1px solid rgba(17, 17, 17, 0.14); + } + + .epr-row:nth-child(even) { + margin-left: clamp(0px, 7vw, 96px); + } + + .epr-row-index { + font-size: clamp(38px, 4.2vw, 62px); + font-weight: 900; + line-height: 1; + letter-spacing: -0.05em; + color: #c8102e; + } + + .epr-row-featured { + padding: clamp(28px, 4vw, 44px) clamp(24px, 3vw, 40px); + background: #09090b; + border-radius: 22px; + border-bottom: none; + margin-bottom: clamp(28px, 4vw, 52px); + } + + .epr-row-featured .epr-row-index { + color: rgba(255, 255, 255, 0.22); + -webkit-text-stroke: 1.5px rgba(255, 255, 255, 0.5); + } + + .epr-row-featured .epr-row-title { + font-size: clamp(32px, 4vw, 64px) !important; + color: #ffffff !important; + } + + .epr-row-featured .epr-row-desc { + color: rgba(255, 255, 255, 0.62); + } + + .epr-row-flag { + display: inline-block; + font-size: 12px; + font-weight: 800; + letter-spacing: 1.3px; + text-transform: uppercase; + color: #ffffff; + background: #c8102e; + padding: 6px 14px; + border-radius: 100px; + margin-bottom: 16px; + } + + .epr-row-type { + display: block; + font-size: 12px; + font-weight: 800; + letter-spacing: 1.7px; + text-transform: uppercase; + color: rgba(17, 17, 17, 0.42); + margin-bottom: 14px; + } + + .epr-row-featured .epr-row-type { + color: rgba(255, 255, 255, 0.42); + } + + .epr-row-title { + font-size: clamp(28px, 3.4vw, 52px) !important; + font-weight: 800 !important; + letter-spacing: -0.045em !important; + line-height: 1.02 !important; + text-transform: uppercase !important; + color: #111111 !important; + margin: 0 0 14px 0; + } + + .epr-row-desc { + max-width: 660px; + font-size: 15.5px; + line-height: 1.65; + color: rgba(17, 17, 17, 0.58); + margin: 0; + } + + .epr-cta { + margin-top: clamp(48px, 6vw, 72px); + } + + .epr-cta-link { + display: inline-flex; + align-items: center; + gap: 10px; + font-size: 15px; + font-weight: 800; + color: #111111 !important; + text-decoration: none !important; + border-bottom: 1.5px solid rgba(17, 17, 17, 0.2); + padding-bottom: 5px; + transition: border-color 0.3s ease, color 0.3s ease; + } + + .epr-cta-link:hover { + color: #c8102e !important; + border-color: #c8102e; + } + + /* Laptop: sticky stays enabled, just a narrower gutter. */ + @media (max-width: 1180px) { + .epr-stage { grid-template-columns: minmax(220px, 0.34fr) minmax(0, 0.66fr); gap: clamp(28px, 4vw, 46px); } + .epr-aside { min-height: 420px; } + .epr-row:nth-child(even) { margin-left: 0; } + } + + /* Tablet: sticky disabled — the aside scrolls in normal flow instead + of pinning, since there's no longer enough vertical runway next to + the (now narrower, shorter) program list for pinning to read well. + The wrapper no longer needs to stretch once its child isn't sticky. */ + @media (max-width: 1023px) { + .epr-aside-wrap { + align-self: start; + } + .epr-aside { + position: relative; + top: auto; + } + } + + @media (max-width: 767px) { + .epr-stage { grid-template-columns: 1fr; } + .epr-aside { + position: relative; + top: auto; + min-height: 300px; + padding-top: 4px; + padding-bottom: clamp(24px, 7vw, 38px); + } + .epr-aside-map { + inset: -8% -18% 0 -20%; + opacity: 0.18; + } + .epr-aside-content { + gap: 20px; + } + .epr-aside-num { + font-size: clamp(128px, 34vw, 180px); + } + .epr-aside-copy { + max-width: 11ch; + font-size: clamp(34px, 10vw, 48px); + } + .epr-aside-desc { + max-width: 32ch; + font-size: 14.5px; + } + .epr-aside-gains-list li { + font-size: 14.5px; + } + .epr-aside-final { + max-width: 28ch; + font-size: 16.5px; + } + } + + @media (max-width: 640px) { + .epr-section { padding-top: 54px; padding-bottom: 54px; } + .epr-title { + font-size: clamp(34px, 10vw, 40px) !important; + letter-spacing: -0.045em !important; + overflow-wrap: anywhere; + } + .epr-row-title { + font-size: clamp(27px, 8.5vw, 36px) !important; + overflow-wrap: anywhere; + } + .epr-row { grid-template-columns: 1fr; gap: 12px; } + } + 11:[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$26"}}],"$L27"] +28:Te98, + .eim-section { + position: relative; + width: calc(100% - 40px); + margin: clamp(24px, 4vw, 40px) auto; + border-radius: 28px; + overflow: hidden; + box-sizing: border-box; + background: #09090b; + padding: clamp(64px, 8vw, 100px) clamp(24px, 5vw, 48px); + } + + .eim-inner { + position: relative; + z-index: 1; + max-width: 1380px; + margin: 0 auto; + } + + .eim-eyebrow { + font-size: 13px; + font-weight: 800; + letter-spacing: 2.5px; + text-transform: uppercase; + color: #c8102e; + margin-bottom: 20px; + } + + .eim-title { + font-size: clamp(28px, 3.4vw, 46px) !important; + font-weight: 800 !important; + letter-spacing: -0.03em !important; + line-height: 1.15 !important; + text-transform: none !important; + color: #ffffff !important; + margin: 0 0 clamp(32px, 4vw, 48px) 0; + } + + .eim-divider { + border: none; + border-top: 1px solid rgba(255, 255, 255, 0.12); + margin: 0 0 clamp(40px, 5vw, 56px) 0; + } + + .eim-hero-row { + display: flex; + align-items: flex-end; + gap: clamp(20px, 3vw, 36px); + margin-bottom: clamp(48px, 6vw, 72px); + } + + .eim-hero-num { + font-size: clamp(90px, 13vw, 190px); + font-weight: 800; + line-height: 0.85; + letter-spacing: -0.03em; + color: transparent; + -webkit-text-stroke: 2px #c8102e; + } + + .eim-hero-label { + font-size: 13px; + font-weight: 700; + letter-spacing: 1.5px; + text-transform: uppercase; + color: rgba(255, 255, 255, 0.55); + max-width: 90px; + line-height: 1.4; + padding-bottom: clamp(12px, 1.5vw, 24px); + } + + .eim-divider-2 { + border: none; + border-top: 1px solid rgba(255, 255, 255, 0.12); + margin: 0 0 clamp(40px, 5vw, 56px) 0; + } + + .eim-secondary-row { + display: grid; + grid-template-columns: repeat(4, minmax(0, 1fr)); + } + + .eim-secondary-item { + padding-right: 24px; + border-left: 1px solid rgba(255, 255, 255, 0.12); + padding-left: 24px; + } + + .eim-secondary-item:first-child { + border-left: none; + padding-left: 0; + } + + .eim-secondary-num { + display: block; + font-size: clamp(32px, 3vw, 44px); + font-weight: 800; + color: #ff5470; + letter-spacing: -0.02em; + margin-bottom: 10px; + } + + .eim-secondary-label { + font-size: 13px; + font-weight: 600; + color: rgba(255, 255, 255, 0.5); + line-height: 1.4; + } + + .eim-copy { + max-width: 720px; + margin-top: clamp(48px, 6vw, 72px); + font-size: 15.5px; + line-height: 1.7; + color: rgba(255, 255, 255, 0.55); + } + + @media (max-width: 1024px) { + .eim-section { width: calc(100% - 24px); border-radius: 22px; } + } + + @media (max-width: 700px) { + .eim-hero-row { align-items: flex-start; flex-direction: column; gap: 12px; } + .eim-hero-label { padding-bottom: 0; max-width: none; } + .eim-secondary-row { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: 28px; } + .eim-secondary-item:nth-child(3) { border-left: none; padding-left: 0; } + } + + @media (max-width: 460px) { + .eim-section { padding-top: 48px; padding-bottom: 48px; } + } + 12:[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$28"}}],"$L29"] +2a:T1573, + .ehw-section { + background: #ffffff; + padding: var(--space-section-lg, 80px) 0 calc(var(--space-section-lg, 80px) + 32px) 0; + overflow: hidden; + } + + .ehw-inner { + max-width: 1380px; + margin: 0 auto; + } + + .ehw-head { + display: flex; + flex-direction: column; + align-items: flex-start; + margin-bottom: clamp(126px, calc(7vw + 60px), 172px); + } + + .ehw-head-reveal { + width: 100%; + } + + .ehw-divider { + width: 100%; + height: 1px; + margin: 18px 0 clamp(24px, 3.5vw, 40px) 0; + border: none; + background-color: rgba(17, 17, 17, 0.14); + } + + .ehw-eyebrow { + font-size: 13px; + font-weight: 800; + letter-spacing: 2.4px; + text-transform: uppercase; + color: rgba(17, 17, 17, 0.42); + } + + .ehw-title { + max-width: 820px; + font-size: clamp(32px, 4vw, 54px) !important; + font-weight: 800 !important; + letter-spacing: -0.03em !important; + line-height: 1.08 !important; + text-transform: none !important; + color: #111111 !important; + margin: 0 !important; + } + + /* ---------------------------------------------------------------- + Premium editorial process row: five milestones in a single + sequence, separated by thin hairline dividers (no cards, no + shadows, no boxed containers). One flex-wrap sequence with + responsive flex-basis handles the composition at every size — + 5-across on desktop, 3 + 2 (centered) on tablet, a single + vertical column on mobile — from one shared markup. + ---------------------------------------------------------------- */ + .ehw-sequence { + display: flex; + flex-wrap: wrap; + justify-content: center; + --ehw-gap: clamp(24px, 2.6vw, 48px); + column-gap: var(--ehw-gap); + row-gap: clamp(48px, 6vw, 84px); + } + + .ehw-step { + position: relative; + flex: 0 1 calc((100% - 4 * var(--ehw-gap)) / 5); + min-width: 168px; + padding-left: clamp(20px, 2vw, 32px); + border-left: 1px solid rgba(17, 17, 17, 0.14); + transition: border-color 0.3s ease; + } + + .ehw-step:first-child { + border-left: none; + padding-left: 0; + } + + .ehw-step:hover { + border-left-color: rgba(200, 16, 46, 0.4); + } + + .ehw-step-num { + font-size: clamp(48px, 4.6vw, 78px); + font-weight: 900; + line-height: 0.84; + letter-spacing: -0.03em; + color: transparent; + -webkit-text-stroke: 1.5px rgba(17, 17, 17, 0.24); + margin: 0 0 18px 0; + transition: -webkit-text-stroke-color 0.3s ease; + } + + .ehw-step.is-accent .ehw-step-num { + -webkit-text-stroke: 1.5px rgba(200, 16, 46, 0.58); + } + + .ehw-step-kicker { + display: flex; + align-items: center; + gap: 7px; + margin-bottom: 18px; + } + + .ehw-step-kicker svg { + width: 13px; + height: 13px; + color: rgba(17, 17, 17, 0.36); + flex-shrink: 0; + } + + .ehw-step-kicker span { + font-size: 11px; + font-weight: 800; + letter-spacing: 2px; + text-transform: uppercase; + color: rgba(17, 17, 17, 0.4); + } + + .ehw-step.is-accent .ehw-step-kicker svg, + .ehw-step.is-accent .ehw-step-kicker span { + color: #c8102e; + } + + .ehw-step-title { + font-size: clamp(18px, 1.4vw, 22px) !important; + font-weight: 800 !important; + letter-spacing: -0.02em !important; + line-height: 1.2 !important; + text-transform: none !important; + color: #111111 !important; + margin: 0 0 22px 0; + } + + .ehw-step-desc { + max-width: 27ch; + font-size: 14px; + line-height: 1.6; + color: rgba(17, 17, 17, 0.55); + margin: 0; + } + + /* Tablet: 3 + 2, centered — sever the divider at the start of each row. */ + @media (max-width: 1100px) { + .ehw-step { + flex-basis: calc((100% - 2 * var(--ehw-gap)) / 3); + } + .ehw-step:nth-child(4) { + border-left: none; + padding-left: 0; + } + } + + /* Mobile: single column — dividers rotate from vertical to horizontal. */ + @media (max-width: 640px) { + .ehw-sequence { + row-gap: 0; + } + .ehw-step { + flex-basis: 100%; + padding-left: 0; + padding-top: clamp(28px, 8vw, 38px); + border-left: none; + border-top: 1px solid rgba(17, 17, 17, 0.14); + } + .ehw-step:first-child { + padding-top: 0; + border-top: none; + } + .ehw-step:nth-child(4) { + border-top: 1px solid rgba(17, 17, 17, 0.14); + } + .ehw-step:hover { + border-left-color: transparent; + } + .ehw-step-num { + font-size: clamp(44px, 13vw, 56px); + } + } + + @media (max-width: 480px) { + .ehw-section { padding-top: 48px; padding-bottom: 68px; } + } + 13:[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$2a"}}],"$L2b"] +2c:T1bff, + .est-section { + position: relative; + background: #ffffff; + padding-top: clamp(24px, 3vw, 48px); + padding-bottom: clamp(78px, 9vw, 132px); + overflow: hidden; + } + + .est-inner { + max-width: 1380px; + margin: 0 auto; + } + + .est-head { + display: flex; + flex-direction: column; + align-items: flex-start; + margin-bottom: clamp(54px, 7vw, 86px); + } + + .est-head-reveal { + width: 100%; + } + + .est-divider { + width: 100%; + height: 1px; + margin: 18px 0 clamp(24px, 3.5vw, 40px) 0; + border: none; + background-color: rgba(17, 17, 17, 0.14); + } + + .est-eyebrow { + font-size: 13px; + font-weight: 800; + letter-spacing: 2.4px; + text-transform: uppercase; + color: rgba(17, 17, 17, 0.42); + } + + .est-title { + max-width: 940px; + font-size: clamp(42px, 6.3vw, 90px) !important; + font-weight: 800 !important; + letter-spacing: -0.055em !important; + line-height: 0.98 !important; + text-transform: uppercase !important; + color: #111111 !important; + margin: 0; + } + + .est-feature { + display: grid; + grid-template-columns: minmax(0, 0.94fr) minmax(340px, 0.64fr); + gap: clamp(28px, 4vw, 62px); + align-items: stretch; + margin-bottom: clamp(44px, 6vw, 76px); + } + + .est-photo { + position: relative; + min-height: clamp(460px, 48vw, 680px); + border-radius: 26px; + overflow: hidden; + background: #09090b; + } + + .est-photo img { + object-fit: cover; + object-position: center; + } + + .est-photo::after { + content: ""; + position: absolute; + inset: 0; + background: linear-gradient(180deg, rgba(9, 9, 11, 0) 34%, rgba(9, 9, 11, 0.72) 100%); + pointer-events: none; + } + + .est-photo-caption { + position: absolute; + left: clamp(24px, 3vw, 42px); + right: clamp(24px, 3vw, 42px); + bottom: clamp(24px, 3vw, 42px); + z-index: 1; + color: #ffffff; + } + + .est-photo-caption span { + display: block; + font-size: 12px; + font-weight: 800; + letter-spacing: 1.7px; + text-transform: uppercase; + color: rgba(255, 255, 255, 0.6); + margin-bottom: 8px; + } + + .est-photo-caption strong { + display: block; + font-size: clamp(24px, 3vw, 42px); + font-weight: 900; + line-height: 1.02; + letter-spacing: -0.04em; + } + + .est-copy { + border-radius: 26px; + background: #09090b; + color: #ffffff; + padding: clamp(34px, 5vw, 62px); + display: flex; + flex-direction: column; + justify-content: space-between; + overflow: hidden; + position: relative; + } + + .est-copy::before { + content: ""; + position: absolute; + width: 320px; + height: 320px; + right: -120px; + top: -120px; + background: radial-gradient(circle, rgba(200, 16, 46, 0.42), transparent 68%); + pointer-events: none; + } + + .est-quote-mark { + position: relative; + font-family: Georgia, serif; + font-size: 92px; + line-height: 0.8; + color: #c8102e; + display: block; + margin-bottom: 20px; + } + + .est-quote-text { + position: relative; + font-size: clamp(25px, 3vw, 44px); + font-weight: 800; + line-height: 1.12; + letter-spacing: -0.04em; + color: #ffffff; + margin: 0 0 28px 0; + } + + .est-narrative { + position: relative; + font-size: 15.5px; + line-height: 1.68; + color: rgba(255, 255, 255, 0.66); + margin: 0; + max-width: 46ch; + } + + .est-person { + position: relative; + padding-top: clamp(38px, 5vw, 64px); + } + + .est-person-name { + font-size: 18px; + font-weight: 900; + color: #ffffff; + } + + .est-person-role { + font-size: 13.5px; + color: rgba(255, 255, 255, 0.52); + margin-top: 3px; + } + + .est-list-label { + font-size: 12px; + font-weight: 800; + letter-spacing: 1.8px; + text-transform: uppercase; + color: rgba(17, 17, 17, 0.42); + padding-top: clamp(24px, 3vw, 38px); + border-top: 1px solid rgba(17, 17, 17, 0.14); + margin-bottom: clamp(20px, 3vw, 30px); + } + + .est-list { + display: flex; + gap: 18px; + overflow-x: auto; + scroll-snap-type: x mandatory; + padding-bottom: 12px; + margin-bottom: clamp(6px, 1vw, 10px); + -webkit-overflow-scrolling: touch; + } + + .est-list::-webkit-scrollbar { + height: 4px; + } + + .est-list::-webkit-scrollbar-thumb { + background: rgba(17, 17, 17, 0.18); + border-radius: 100px; + } + + .est-row { + scroll-snap-align: start; + flex: 0 0 clamp(260px, 30vw, 340px); + min-height: 220px; + padding: clamp(24px, 2.6vw, 32px); + border: 1px solid rgba(17, 17, 17, 0.14); + border-radius: 20px; + display: flex; + flex-direction: column; + justify-content: space-between; + transition: border-color 0.3s ease, transform 0.3s ease; + } + + .est-row:hover { + border-color: rgba(200, 16, 46, 0.4); + transform: translateY(-4px); + } + + .est-row-name { + font-size: 20px; + font-weight: 900; + color: #111111; + } + + .est-row-role { + font-size: 13px; + font-weight: 800; + letter-spacing: 1.4px; + text-transform: uppercase; + color: #c8102e; + margin-top: 6px; + } + + .est-row-line { + font-size: 15px; + line-height: 1.6; + color: rgba(17, 17, 17, 0.62); + margin: 28px 0 0; + } + + @media (max-width: 1000px) { + .est-head, + .est-feature { grid-template-columns: 1fr; } + .est-row { + min-height: 0; + flex-basis: 78vw; + } + } + + @media (max-width: 640px) { + .est-section { padding-top: 54px; padding-bottom: 54px; } + .est-title { + font-size: clamp(34px, 10vw, 40px) !important; + letter-spacing: -0.045em !important; + overflow-wrap: anywhere; + } + .est-quote-text { + font-size: clamp(25px, 8vw, 34px); + overflow-wrap: anywhere; + } + .est-photo, + .est-copy { border-radius: 20px; } + .est-photo { min-height: 420px; } + } + 14:[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$2c"}}],"$L2d"] +2e:T16dc, + .epn-section { + position: relative; + width: calc(100% - 40px); + margin: clamp(24px, 4vw, 40px) auto; + border-radius: 28px; + overflow: hidden; + box-sizing: border-box; + background: #09090b; + padding: clamp(68px, 8vw, 112px) 0; + } + + .epn-section::before { + content: ""; + position: absolute; + inset: 0; + background: + linear-gradient(120deg, rgba(9, 9, 11, 0.98) 0%, rgba(9, 9, 11, 0.88) 54%, rgba(192, 18, 39, 0.18) 100%), + url("/images/wings-heroslider3.png"); + background-size: cover; + background-position: center 70%; + opacity: 1; + } + + .epn-inner { + position: relative; + z-index: 1; + max-width: 1380px; + margin: 0 auto; + } + + .epn-head { + display: flex; + flex-direction: column; + align-items: flex-start; + margin-bottom: clamp(50px, 7vw, 84px); + } + + .epn-head-reveal { + width: 100%; + } + + .epn-divider { + width: 100%; + height: 1px; + margin: 18px 0 clamp(24px, 3.5vw, 40px) 0; + border: none; + background-color: rgba(255, 255, 255, 0.16); + } + + .epn-eyebrow { + font-size: 13px; + font-weight: 800; + letter-spacing: 2.5px; + text-transform: uppercase; + color: rgba(255, 255, 255, 0.52); + } + + .epn-title { + max-width: 930px; + font-size: clamp(42px, 6.3vw, 90px) !important; + font-weight: 800 !important; + letter-spacing: -0.055em !important; + line-height: 0.98 !important; + text-transform: uppercase !important; + color: #ffffff !important; + margin: 0; + } + + .epn-title em { + color: #ff5470; + font-style: normal; + } + + .epn-body { + display: grid; + grid-template-columns: minmax(280px, 0.46fr) minmax(0, 1fr); + gap: clamp(32px, 5vw, 72px); + align-items: stretch; + } + + .epn-manifesto { + border-left: 4px solid #c8102e; + padding-left: clamp(22px, 3vw, 36px); + align-self: start; + } + + .epn-intro { + font-size: clamp(22px, 2.5vw, 36px); + font-weight: 800; + line-height: 1.12; + letter-spacing: -0.035em; + color: #ffffff; + margin: 0 0 22px; + } + + .epn-note { + font-size: 15.5px; + line-height: 1.68; + color: rgba(255, 255, 255, 0.62); + margin: 0; + max-width: 38ch; + } + + .epn-grid { + display: flex; + flex-direction: column; + border-top: 1px solid rgba(255, 255, 255, 0.16); + } + + .epn-card { + position: relative; + display: grid; + grid-template-columns: 70px minmax(0, 1fr) 32px; + align-items: center; + gap: clamp(18px, 3vw, 40px); + padding: clamp(22px, 2.6vw, 32px) clamp(4px, 1vw, 16px); + border-bottom: 1px solid rgba(255, 255, 255, 0.16); + border-left: 2px solid transparent; + transition: border-color 0.3s ease, padding-left 0.3s ease, background-color 0.3s ease; + } + + .epn-card:hover { + border-left-color: #c8102e; + background: rgba(200, 16, 46, 0.06); + padding-left: clamp(20px, 2.5vw, 32px); + } + + .epn-card-index { + font-size: 15px; + font-weight: 900; + color: rgba(255, 255, 255, 0.35); + } + + .epn-card-title { + font-size: clamp(22px, 2.2vw, 30px) !important; + font-weight: 900 !important; + line-height: 1.1 !important; + letter-spacing: -0.03em !important; + text-transform: none !important; + color: #ffffff !important; + margin: 0 0 8px; + } + + .epn-card-desc { + max-width: 46ch; + font-size: 14.5px; + line-height: 1.6; + color: rgba(255, 255, 255, 0.58); + margin: 0; + } + + .epn-card-arrow { + display: flex; + color: rgba(255, 255, 255, 0.3); + transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1), color 0.3s ease; + } + + .epn-card:hover .epn-card-arrow { + transform: translateX(4px); + color: #ff5470; + } + + .epn-cta { + margin-top: clamp(42px, 5vw, 64px); + } + + .epn-cta-btn { + display: inline-flex; + align-items: center; + gap: 10px; + padding: 16px 36px; + border-radius: 100px; + background: #c01227; + color: #ffffff !important; + font-weight: 800; + font-size: 15px; + text-decoration: none !important; + transition: transform 0.35s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.35s ease; + } + + .epn-cta-btn:hover { + transform: translateY(-3px); + box-shadow: 0 14px 30px rgba(192, 18, 39, 0.35); + } + + @media (max-width: 1024px) { + .epn-section { width: calc(100% - 24px); border-radius: 22px; } + } + + @media (max-width: 900px) { + .epn-head, + .epn-body { grid-template-columns: 1fr; } + } + + @media (max-width: 700px) { + .epn-title { + font-size: clamp(34px, 10vw, 40px) !important; + letter-spacing: -0.045em !important; + overflow-wrap: anywhere; + } + .epn-card { + grid-template-columns: 44px minmax(0, 1fr); + } + .epn-card-arrow { display: none; } + } + + @media (max-width: 460px) { + .epn-section { padding-top: 54px; padding-bottom: 54px; } + } + 15:[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$2e"}}],"$L2f"] +30:Tdad, + .emp-cta-wrap { + width: calc(100% - 40px); + margin: clamp(24px, 4vw, 40px) auto clamp(40px, 5vw, 64px); + } + + .emp-cta { + position: relative; + overflow: hidden; + border-radius: 28px; + min-height: clamp(480px, 48vw, 680px); + background: #09090b; + display: flex; + align-items: flex-end; + } + + .emp-cta::before { + content: ""; + position: absolute; + inset: 0; + background-image: + linear-gradient(180deg, rgba(9, 9, 11, 0.18) 0%, rgba(9, 9, 11, 0.52) 48%, rgba(9, 9, 11, 0.96) 100%), + linear-gradient(90deg, rgba(9, 9, 11, 0.88) 0%, rgba(9, 9, 11, 0.35) 58%, rgba(9, 9, 11, 0.12) 100%), + url("/images/bg-header-women.webp"); + background-size: cover; + background-position: center; + transform: scale(1.02); + } + + .emp-cta-inner { + position: relative; + z-index: 1; + max-width: 1380px; + width: 100%; + margin: 0 auto; + padding: clamp(46px, 7vw, 88px) clamp(24px, 5vw, 64px); + box-sizing: border-box; + } + + .emp-cta-recap { + display: flex; + gap: clamp(28px, 4vw, 52px); + margin-bottom: clamp(28px, 4vw, 44px); + padding-bottom: clamp(24px, 3vw, 36px); + border-bottom: 1px solid rgba(255, 255, 255, 0.16); + } + + .emp-cta-recap-item { + display: flex; + align-items: baseline; + gap: 10px; + } + + .emp-cta-recap-num { + font-size: clamp(22px, 2.4vw, 32px); + font-weight: 900; + letter-spacing: -0.02em; + color: transparent; + -webkit-text-stroke: 1.3px rgba(255, 255, 255, 0.85); + } + + .emp-cta-recap-label { + font-size: 12px; + font-weight: 700; + letter-spacing: 0.6px; + color: rgba(255, 255, 255, 0.5); + } + + .emp-cta-kicker { + font-size: 13px; + font-weight: 900; + letter-spacing: 2.4px; + text-transform: uppercase; + color: #ff5470; + margin-bottom: 22px; + } + + .emp-cta-title { + max-width: 980px; + color: #ffffff !important; + font-size: clamp(44px, 7vw, 108px) !important; + font-weight: 900 !important; + line-height: 0.95 !important; + letter-spacing: -0.06em !important; + text-transform: uppercase !important; + margin: 0 0 clamp(24px, 3vw, 34px); + } + + .emp-cta-title em { + color: #ff5470; + font-style: normal; + } + + .emp-cta-bottom { + display: block; + max-width: 1120px; + } + + .emp-cta-sub { + max-width: 620px; + font-size: 16px; + line-height: 1.68; + color: rgba(255, 255, 255, 0.68); + margin: 0; + } + + @media (max-width: 1024px) { + .emp-cta-wrap { width: calc(100% - 24px); } + .emp-cta { border-radius: 22px; } + } + + @media (max-width: 760px) { + .emp-cta { min-height: 600px; } + .emp-cta::before { background-position: 76% center; } + .emp-cta-title { + font-size: clamp(36px, 11vw, 44px) !important; + letter-spacing: -0.05em !important; + overflow-wrap: anywhere; + } + .emp-cta-recap { flex-wrap: wrap; row-gap: 14px; } + } + 16:[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$30"}}],"$L31"] +17:["$","script","script-0",{"src":"/_next/static/chunks/0vzdvje64yndv.js","async":true,"nonce":"$undefined"}] +18:["$","$L32",null,{"children":["$","$33",null,{"name":"Next.MetadataOutlet","children":"$@34"}]}] +35:[] +19:"$W35" +1a:["$","$1","h",{"children":[null,["$","$L36",null,{"children":"$L37"}],["$","div",null,{"hidden":true,"children":["$","$L38",null,{"children":["$","$33",null,{"name":"Next.Metadata","children":"$L39"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}] +1c:["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}] +3a:I[5074,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0vzdvje64yndv.js"],"default"] +41:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0vzdvje64yndv.js"],"CountUp"] +42:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0vzdvje64yndv.js"],"StaggerChildren"] +43:I[5500,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0vzdvje64yndv.js"],"Image"] +20:["$","section",null,{"className":"ev-section","id":"wings-empowerment-vision","children":[["$","div",null,{"className":"ev-map","aria-hidden":"true","children":["$","$L3a",null,{}]}],["$","div",null,{"className":"dm-section-container","children":["$","div",null,{"className":"ev-inner","children":[["$","$L1d",null,{"delay":0.05,"duration":0.7,"yOffset":20,"children":[["$","p",null,{"className":"ev-eyebrow","children":"/ Our Vision /"}],["$","hr",null,{"className":"ev-divider"}]]}],["$","$L1d",null,{"delay":0.12,"duration":0.85,"yOffset":30,"children":["$","h2",null,{"className":"ev-title","children":"Women Own The Future."}]}],["$","div",null,{"className":"ev-columns","children":[["$","$L1d",null,{"delay":0.18,"duration":0.8,"yOffset":25,"children":["$","p",null,{"className":"ev-statement","children":"A logistics ecosystem where women don’t just participate — they own, build, and lead."}]}],["$","$L1d",null,{"delay":0.26,"duration":0.8,"yOffset":25,"className":"ev-support","children":[["$","div",null,{"className":"ev-block","children":[["$","p",null,{"className":"ev-block-label","children":"The vision"}],["$","p",null,{"className":"ev-lead","children":"We are building an entrepreneurial ecosystem where women launch enterprises, scale operations, and shape the future of logistics from the inside."}]]}],["$","div",null,{"className":"ev-block","children":[["$","p",null,{"className":"ev-block-label","children":"Why it matters"}],["$","p",null,{"className":"ev-note","children":"Industries transform when founders emerge from every corner. Women-led enterprises bring fresh perspective, operational resilience, and long-term economic impact to logistics."}]]}],["$","div",null,{"className":"ev-block","children":[["$","p",null,{"className":"ev-block-label","children":"How Wings contributes"}],["$","p",null,{"className":"ev-note","children":"Wings provides the infrastructure — strategic partnerships, funding access, founder networks, and industry connections — that turns ambition into enterprise."}]]}]]}]]}]]}]}]]}] +22:["$","$L1d",null,{"delay":0.05,"duration":0.85,"yOffset":25,"children":[["$","div",null,{"className":"esy-eyebrow","children":"/ Our Approach /"}],["$","p",null,{"className":"esy-statement","children":["Not a program on a brochure. ",["$","em",null,{"children":"An ecosystem women can build in."}]]}]]}] +23:["$","$L1d",null,{"delay":0.15,"duration":0.8,"yOffset":25,"className":"esy-side","children":[["$","span",null,{"className":"esy-label","children":"Manifesto"}],["$","p",null,{"className":"esy-pull","children":"A venture that starts with conviction. A network that turns it into momentum."}],["$","p",null,{"className":"esy-sub","children":"Wings is designed around the moments that define a founder: the first partnership signed, the first client won, the first team hired, the first enterprise scaled."}]]}] +25:["$","div",null,{"id":"women-entrepreneurship","className":"elementor-element elementor-element-bbc6760 e-con-full e-flex cut-corner-no sticky-container-off e-con e-parent","data-id":"bbc6760","data-element_type":"container","data-e-type":"container","style":{"backgroundColor":"#1f1f1f","width":"calc(100% - 40px)","marginLeft":"20px","marginRight":"20px","borderRadius":"25px"},"children":[["$","div",null,{"className":"elementor-element elementor-element-13a7637 elementor-widget__width-auto elementor-absolute elementor-widget elementor-widget-logico_decorative_block","data-id":"13a7637","data-element_type":"widget","data-e-type":"widget","style":{"position":"absolute"},"children":["$","div",null,{"className":"elementor-widget-container","children":["$","div",null,{"className":"block-decoration animation-enable block-decoration-style-1","children":["$","div",null,{"className":"block-decoration-item"}]}]}]}],["$","div",null,{"style":{"backgroundImage":"url(/images/bg-header-women.webp)"},"className":"elementor-element elementor-element-7da6646 e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"7da6646","data-element_type":"container","data-e-type":"container"}],["$","div",null,{"className":"elementor-element elementor-element-8b5d6e6 e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"8b5d6e6","data-element_type":"container","data-e-type":"container","children":["$","div",null,{"className":"elementor-element elementor-element-1f766ea e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"1f766ea","data-element_type":"container","data-e-type":"container","children":[["$","div",null,{"className":"elementor-element elementor-element-3b61435 e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"3b61435","data-element_type":"container","data-e-type":"container","data-settings":"{\"background_background\":\"classic\"}","children":[["$","div",null,{"className":"elementor-element elementor-element-c364d1c elementor-widget elementor-widget-text-editor","data-id":"c364d1c","data-element_type":"widget","data-e-type":"widget","data-widget_type":"text-editor.default","children":["$","div",null,{"className":"elementor-widget-container","children":["$","p",null,{"children":"01"}]}]}],["$","div",null,{"className":"elementor-element elementor-element-239afbb elementor-widget elementor-widget-logico_heading","data-id":"239afbb","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_heading.default","children":["$","div",null,{"className":"elementor-widget-container","children":["$","h5",null,{"className":"logico-title","children":"Women Entrepreneurship"}]}]}],["$","div",null,{"className":"elementor-element elementor-element-0d307dd elementor-widget elementor-widget-text-editor","data-id":"0d307dd","data-element_type":"widget","data-e-type":"widget","data-widget_type":"text-editor.default","children":["$","div",null,{"className":"elementor-widget-container","children":["$","p",null,{"children":"An ecosystem where women build, own, and scale enterprises across logistics."}]}]}]]}],["$","div",null,{"className":"elementor-element elementor-element-5aea22e e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"5aea22e","data-element_type":"container","data-e-type":"container","data-settings":"{\"background_background\":\"classic\"}","children":["$","div",null,{"className":"elementor-element elementor-element-46b9ffa elementor-widget elementor-widget-logico_button","data-id":"46b9ffa","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_button.default","children":["$","div",null,{"className":"elementor-widget-container","children":["$","div",null,{"className":"button-widget","children":["$","div",null,{"className":"button-container","children":["$","a",null,{"href":"#wings-empowerment-programs","className":"logico-small-button","children":["Explore the ecosystem",["$","svg",null,{"viewBox":"0 0 13 20","children":"$L3b"}]]}]}]}]}]}]}]]}]}],"$L3c"]}] +27:["$","section",null,{"className":"epr-section","id":"wings-empowerment-programs","children":["$","div",null,{"className":"dm-section-container","children":["$","div",null,{"className":"epr-inner","children":[["$","div",null,{"className":"epr-head","children":[["$","$L1d",null,{"delay":0.05,"duration":0.75,"yOffset":20,"className":"epr-head-reveal","children":[["$","div",null,{"className":"epr-eyebrow","children":"/ Entrepreneurship Pillars /"}],["$","hr",null,{"className":"epr-divider"}]]}],["$","$L1d",null,{"delay":0.1,"duration":0.85,"yOffset":24,"children":["$","h2",null,{"className":"epr-title","children":"Every pillar is built around ownership."}]}]]}],["$","div",null,{"className":"epr-stage","children":[["$","div",null,{"className":"epr-aside-wrap","children":["$","aside",null,{"className":"epr-aside","children":[["$","div",null,{"className":"epr-aside-map","aria-hidden":"true","children":["$","$L3a",null,{}]}],["$","$L1d",null,{"delay":0.05,"duration":0.8,"yOffset":24,"className":"epr-aside-content","children":[["$","div",null,{"className":"epr-aside-num","children":"05"}],["$","p",null,{"className":"epr-aside-copy","children":["Building tomorrow’s ",["$","em",null,{"children":"women entrepreneurs."}]]}],["$","p",null,{"className":"epr-aside-desc","children":"Every enterprise starts with one decision. Our pillars move women from idea to ownership through mentorship, real industry partnerships, and hands-on venture building across the logistics ecosystem."}],["$","hr",null,{"className":"epr-aside-divider"}],["$","div",null,{"className":"epr-aside-label","children":"Journey Summary"}],["$","p",null,{"className":"epr-aside-desc","children":"Each pillar builds on the one before it — moving founders from validating an idea, to forming partnerships, to receiving hands-on guidance, to growing a sustainable logistics business."}],["$","div",null,{"className":"epr-aside-label","children":"What Participants Gain"}],["$","ul",null,{"className":"epr-aside-gains-list","children":[["$","li","Business validation",{"children":"Business validation"}],["$","li","Industry partnerships",{"children":"Industry partnerships"}],["$","li","Founder mentorship",{"children":"Founder mentorship"}],["$","li","Market readiness",{"children":"Market readiness"}],["$","li","Sustainable growth",{"children":"Sustainable growth"}]]}],["$","p",null,{"className":"epr-aside-final","children":["The destination is never just launching a business. It is building ",["$","em",null,{"children":"women-led enterprises that strengthen the logistics ecosystem."}]]}]]}]]}]}],["$","div",null,{"children":[["$","$L1d",null,{"delay":0.1,"duration":0.8,"yOffset":24,"children":["$","div",null,{"className":"epr-list","children":[["$","article","Venture Launchpad",{"className":"epr-row epr-row-featured","children":[["$","div",null,{"className":"epr-row-index","children":"01"}],["$","div",null,{"children":[["$","span",null,{"className":"epr-row-flag","children":"Where most founders begin"}],["$","span",null,{"className":"epr-row-type","children":"Start building"}],["$","h3",null,{"className":"epr-row-title","children":"Venture Launchpad"}],["$","p",null,{"className":"epr-row-desc","children":"Business model validation, market entry strategy, entity formation, and go-to-market execution for women-led logistics enterprises."}]]}]]}],["$","article","Strategic Partnerships",{"className":"epr-row","children":[["$","div",null,{"className":"epr-row-index","children":"02"}],["$","div",null,{"children":[false,["$","span",null,{"className":"epr-row-type","children":"Connect and grow"}],["$","h3",null,{"className":"epr-row-title","children":"Strategic Partnerships"}],["$","p",null,{"className":"epr-row-desc","children":"Direct access to supply chain networks, B2B relationships, industry alliances, and commercial agreements that accelerate growth."}]]}]]}],["$","article","Founder Mentorship",{"className":"epr-row","children":[["$","div",null,{"className":"epr-row-index","children":"03"}],["$","div",null,{"children":[false,["$","span",null,{"className":"epr-row-type","children":"Learn from builders"}],["$","h3",null,{"className":"epr-row-title","children":"Founder Mentorship"}],["$","p",null,{"className":"epr-row-desc","children":"One-on-one guidance from established entrepreneurs, operators, and investors who understand what it takes to scale."}]]}]]}],["$","article","Growth & Scale",{"className":"epr-row","children":["$L3d","$L3e"]}],"$L3f"]}]}],"$L40"]}]]}]]}]}]}] +29:["$","section",null,{"className":"eim-section","id":"wings-empowerment-impact","children":["$","div",null,{"className":"eim-inner dm-section-container","children":[["$","$L1d",null,{"delay":0.05,"duration":0.75,"yOffset":20,"children":[["$","div",null,{"className":"eim-eyebrow","children":"/ Our Impact /"}],["$","h2",null,{"className":"eim-title","children":"Growth we can measure"}]]}],["$","hr",null,{"className":"eim-divider"}],["$","$L1d",null,{"delay":0.08,"duration":0.8,"yOffset":20,"className":"eim-hero-row","children":[["$","span",null,{"className":"eim-hero-num","children":["$","$L41",null,{"end":500,"suffix":"+","duration":2.2,"triggerOnce":true}]}],["$","span",null,{"className":"eim-hero-label","children":"Women-Led Enterprises In The Ecosystem"}]]}],["$","hr",null,{"className":"eim-divider-2"}],["$","$L1d",null,{"delay":0.1,"duration":0.8,"yOffset":20,"children":["$","div",null,{"className":"eim-secondary-row","children":[["$","div","Enterprises Launched",{"className":"eim-secondary-item","children":[["$","span",null,{"className":"eim-secondary-num","children":["$","$L41",null,{"end":100,"suffix":"+","duration":2,"triggerOnce":true}]}],["$","span",null,{"className":"eim-secondary-label","children":"Enterprises Launched"}]]}],["$","div","Industry Partners",{"className":"eim-secondary-item","children":[["$","span",null,{"className":"eim-secondary-num","children":["$","$L41",null,{"end":25,"suffix":"+","duration":2,"triggerOnce":true}]}],["$","span",null,{"className":"eim-secondary-label","children":"Industry Partners"}]]}],["$","div","Cities Active",{"className":"eim-secondary-item","children":[["$","span",null,{"className":"eim-secondary-num","children":["$","$L41",null,{"end":15,"suffix":"+","duration":2,"triggerOnce":true}]}],["$","span",null,{"className":"eim-secondary-label","children":"Cities Active"}]]}],["$","div","In Economic Value Created",{"className":"eim-secondary-item","children":[["$","span",null,{"className":"eim-secondary-num","children":"Millions"}],["$","span",null,{"className":"eim-secondary-label","children":"In Economic Value Created"}]]}]]}]}],["$","$L1d",null,{"delay":0.12,"duration":0.75,"yOffset":20,"className":"eim-copy","children":["$","p",null,{"children":"Every number on this page represents a woman who walked into a room with an idea and walked out with a business. An enterprise launched, a partnership secured, a market entered — each is a marker of real economic impact, not a statistic collected for its own sake."}]}]]}]}] +2b:["$","section",null,{"className":"ehw-section","id":"wings-empowerment-how-it-works","children":["$","div",null,{"className":"dm-section-container","children":["$","div",null,{"className":"ehw-inner","children":[["$","div",null,{"className":"ehw-head","children":[["$","$L1d",null,{"delay":0.05,"duration":0.75,"yOffset":20,"className":"ehw-head-reveal","children":[["$","div",null,{"className":"ehw-eyebrow","children":"/ The Founder Journey /"}],["$","hr",null,{"className":"ehw-divider"}]]}],["$","$L1d",null,{"delay":0.1,"duration":0.85,"yOffset":24,"children":["$","h2",null,{"className":"ehw-title","children":"A clear path, from idea to enterprise"}]}]]}],["$","$L42",null,{"className":"ehw-sequence","stagger":0.12,"duration":0.7,"yOffset":30,"triggerOnce":true,"children":[["$","div","01",{"className":"ehw-step","children":[["$","div",null,{"className":"ehw-step-num","children":"01"}],["$","div",null,{"className":"ehw-step-kicker","aria-hidden":"true","children":[["$","svg",null,{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","children":["$","path",null,{"d":"M7 17 17 7M9 7h8v8"}]}],["$","span",null,{"children":"Step"}]]}],["$","h3",null,{"className":"ehw-step-title","children":"Apply"}],["$","p",null,{"className":"ehw-step-desc","children":"Submit your venture idea and tell us about your entrepreneurial vision."}]]}],["$","div","02",{"className":"ehw-step","children":[["$","div",null,{"className":"ehw-step-num","children":"02"}],["$","div",null,{"className":"ehw-step-kicker","aria-hidden":"true","children":[["$","svg",null,{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","children":["$","path",null,{"d":"M7 17 17 7M9 7h8v8"}]}],["$","span",null,{"children":"Step"}]]}],["$","h3",null,{"className":"ehw-step-title","children":"Discovery"}],["$","p",null,{"className":"ehw-step-desc","children":"Identify the right market opportunity and validate your business model."}]]}],["$","div","03",{"className":"ehw-step is-accent","children":[["$","div",null,{"className":"ehw-step-num","children":"03"}],["$","div",null,{"className":"ehw-step-kicker","aria-hidden":"true","children":[["$","svg",null,{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","children":["$","path",null,{"d":"M7 17 17 7M9 7h8v8"}]}],["$","span",null,{"children":"Step"}]]}],["$","h3",null,{"className":"ehw-step-title","children":"Build"}],["$","p",null,{"className":"ehw-step-desc","children":"Develop your enterprise with ecosystem support, mentorship, and partnerships."}]]}],["$","div","04",{"className":"ehw-step","children":[["$","div",null,{"className":"ehw-step-num","children":"04"}],["$","div",null,{"className":"ehw-step-kicker","aria-hidden":"true","children":[["$","svg",null,{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","children":["$","path",null,{"d":"M7 17 17 7M9 7h8v8"}]}],["$","span",null,{"children":"Step"}]]}],["$","h3",null,{"className":"ehw-step-title","children":"Launch"}],["$","p",null,{"className":"ehw-step-desc","children":"Go to market with strategic backing, industry connections, and operational infrastructure."}]]}],["$","div","05",{"className":"ehw-step","children":[["$","div",null,{"className":"ehw-step-num","children":"05"}],["$","div",null,{"className":"ehw-step-kicker","aria-hidden":"true","children":[["$","svg",null,{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","children":["$","path",null,{"d":"M7 17 17 7M9 7h8v8"}]}],["$","span",null,{"children":"Step"}]]}],["$","h3",null,{"className":"ehw-step-title","children":"Scale"}],["$","p",null,{"className":"ehw-step-desc","children":"Grow your team, expand operations, and lead your enterprise to sustainable impact."}]]}]]}]]}]}]}] +2d:["$","section",null,{"className":"est-section","id":"wings-empowerment-stories","children":["$","div",null,{"className":"dm-section-container","children":["$","div",null,{"className":"est-inner","children":[["$","div",null,{"className":"est-head","children":[["$","$L1d",null,{"delay":0.05,"duration":0.75,"yOffset":20,"className":"est-head-reveal","children":[["$","div",null,{"className":"est-eyebrow","children":"/ Women in Motion /"}],["$","hr",null,{"className":"est-divider"}]]}],["$","$L1d",null,{"delay":0.1,"duration":0.85,"yOffset":24,"children":["$","h2",null,{"className":"est-title","children":"Small steps. Lasting careers."}]}]]}],["$","div",null,{"className":"est-feature","children":[["$","$L1d",null,{"delay":0.05,"duration":0.85,"yOffset":24,"className":"est-photo","children":[["$","$L43",null,{"src":"/images/women-hero-slider-3.png","alt":"A Wings program participant on the operations floor at a Doormile logistics hub","fill":true,"sizes":"(max-width: 1000px) 100vw, 58vw","style":{"objectPosition":"80% 22%"}}],["$","div",null,{"className":"est-photo-caption","children":[["$","span",null,{"children":"Wings Participant"}],["$","strong",null,{"children":" building a career, one milestone at a time."}]]}]]}],["$","$L1d",null,{"delay":0.12,"duration":0.85,"yOffset":24,"className":"est-copy","children":["$","div",null,{"children":[["$","span",null,{"className":"est-quote-mark","aria-hidden":"true","children":"“"}],["$","p",null,{"className":"est-quote-text","children":"I came in looking for a way forward. I found the confidence to lead."}],["$","p",null,{"className":"est-narrative","children":"She started with limited exposure to logistics. Through structured training, mentorship, and hands-on experience, she built real operational skills — and now supports other women stepping into the industry."}]]}]}]]}]]}]}]}] +2f:["$","section",null,{"className":"epn-section","id":"wings-empowerment-partners","children":["$","div",null,{"className":"dm-section-container","children":["$","div",null,{"className":"epn-inner","children":[["$","div",null,{"className":"epn-head","children":[["$","$L1d",null,{"delay":0.05,"duration":0.75,"yOffset":20,"className":"epn-head-reveal","children":[["$","div",null,{"className":"epn-eyebrow","children":"/ Collaboration /"}],["$","hr",null,{"className":"epn-divider"}]]}],["$","$L1d",null,{"delay":0.1,"duration":0.85,"yOffset":24,"children":["$","h2",null,{"className":"epn-title","children":["Partnership is how ",["$","em",null,{"children":"ecosystems grow."}]]}]}]]}],["$","div",null,{"className":"epn-body","children":[["$","$L1d",null,{"delay":0.08,"duration":0.8,"yOffset":22,"className":"epn-manifesto","children":[["$","p",null,{"className":"epn-intro","children":"The strongest ecosystems are built by many hands."}],["$","p",null,{"className":"epn-note","children":"Wings partners bring industry access, strategic infrastructure, capital, and networks. Together, we build the foundation women-led enterprises need to thrive."}]]}],["$","$L1d",null,{"delay":0.12,"duration":0.8,"yOffset":22,"children":["$","div",null,{"className":"epn-grid","children":[["$","article","Industry Partners",{"className":"epn-card","children":[["$","span",null,{"className":"epn-card-index","children":"01"}],["$","div",null,{"children":[["$","h3",null,{"className":"epn-card-title","children":"Industry Partners"}],["$","p",null,{"className":"epn-card-desc","children":"Strategic alliances with logistics operators, supply chain leaders, and distribution networks that open doors for women-led enterprises."}]]}],["$","span",null,{"className":"epn-card-arrow","aria-hidden":"true","children":["$","svg",null,{"width":"20","height":"20","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.25","strokeLinecap":"round","strokeLinejoin":"round","children":["$","path",null,{"d":"M5 12h14M13 6l6 6-6 6"}]}]}]]}],["$","article","Technology Partners",{"className":"epn-card","children":[["$","span",null,{"className":"epn-card-index","children":"02"}],["$","div",null,{"children":[["$","h3",null,{"className":"epn-card-title","children":"Technology Partners"}],["$","p",null,{"className":"epn-card-desc","children":"Platforms, tools, and infrastructure that give founders the operational edge to compete and scale efficiently."}]]}],["$","span",null,{"className":"epn-card-arrow","aria-hidden":"true","children":["$","svg",null,{"width":"20","height":"20","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.25","strokeLinecap":"round","strokeLinejoin":"round","children":["$","path",null,{"d":"M5 12h14M13 6l6 6-6 6"}]}]}]]}],["$","article","Community Networks",{"className":"epn-card","children":[["$","span",null,{"className":"epn-card-index","children":"03"}],["$","div",null,{"children":[["$","h3",null,{"className":"epn-card-title","children":"Community Networks"}],["$","p",null,{"className":"epn-card-desc","children":"Founder communities, women's business networks, and ecosystem builders who extend reach and amplify impact."}]]}],["$","span",null,{"className":"epn-card-arrow","aria-hidden":"true","children":["$","svg",null,{"width":"20","height":"20","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.25","strokeLinecap":"round","strokeLinejoin":"round","children":["$","path",null,{"d":"M5 12h14M13 6l6 6-6 6"}]}]}]]}],["$","article","Investment Partners",{"className":"epn-card","children":[["$","span",null,{"className":"epn-card-index","children":"04"}],["$","div",null,{"children":[["$","h3",null,{"className":"epn-card-title","children":"Investment Partners"}],["$","p",null,{"className":"epn-card-desc","children":"Funding access, grant programs, angel networks, and capital partners aligned with women-led enterprise growth."}]]}],["$","span",null,{"className":"epn-card-arrow","aria-hidden":"true","children":["$","svg",null,{"width":"20","height":"20","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.25","strokeLinecap":"round","strokeLinejoin":"round","children":["$","path",null,{"d":"M5 12h14M13 6l6 6-6 6"}]}]}]]}]]}]}]]}]]}]}]}] +31:["$","div",null,{"className":"emp-cta-wrap","children":["$","section",null,{"className":"emp-cta","aria-labelledby":"empowerment-final-cta","children":["$","div",null,{"className":"emp-cta-inner","children":[["$","div",null,{"className":"emp-cta-recap","children":[["$","div",null,{"className":"emp-cta-recap-item","children":[["$","span",null,{"className":"emp-cta-recap-num","children":"500+"}],["$","span",null,{"className":"emp-cta-recap-label","children":"Women Founders"}]]}],["$","div",null,{"className":"emp-cta-recap-item","children":[["$","span",null,{"className":"emp-cta-recap-num","children":"100+"}],["$","span",null,{"className":"emp-cta-recap-label","children":"Enterprises Launched"}]]}],["$","div",null,{"className":"emp-cta-recap-item","children":[["$","span",null,{"className":"emp-cta-recap-num","children":"25+"}],["$","span",null,{"className":"emp-cta-recap-label","children":"Industry Partners"}]]}]]}],["$","div",null,{"className":"emp-cta-kicker","children":"/ Build the next mile /"}],["$","h2",null,{"className":"emp-cta-title","id":"empowerment-final-cta","children":["Build what’s ",["$","em",null,{"children":"next."}]]}],["$","div",null,{"className":"emp-cta-bottom","children":["$","p",null,{"className":"emp-cta-sub","children":"Join Doormile Wings in building the entrepreneurial ecosystem where women launch, grow, and lead enterprises that create lasting value across logistics."}]}]]}]}]}] +47:I[22016,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0vzdvje64yndv.js"],""] +3b:["$","polyline",null,{"points":"0.5 19.5 3 19.5 12.5 10 3 0.5"}] +3c:["$","div",null,{"className":"elementor-element elementor-element-b6e14bd e-flex e-con-boxed cut-corner-no sticky-container-off e-con e-child","data-id":"b6e14bd","data-element_type":"container","data-e-type":"container","data-settings":"{\"background_background\":\"classic\"}","children":[["$","div",null,{"className":"ws-map","aria-hidden":"true","children":["$","$L3a",null,{}]}],["$","div",null,{"className":"e-con-inner","children":["$","div",null,{"className":"elementor-element elementor-element-90cc867 e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"90cc867","data-element_type":"container","data-e-type":"container","children":[["$","div",null,{"className":"elementor-element elementor-element-24c0280 elementor-widget__width-inherit elementor-widget elementor-widget-logico_heading","data-id":"24c0280","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_heading.default","children":["$","div",null,{"className":"elementor-widget-container","children":["$","div",null,{"className":"logico-title","children":"/ Doormile Wings /"}]}]}],["$","div",null,{"className":"elementor-element elementor-element-2ed47f3 e-con-full e-grid cut-corner-no sticky-container-off e-con e-child","data-id":"2ed47f3","data-element_type":"container","data-e-type":"container","children":[["$","div",null,{"className":"elementor-element elementor-element-36efec7 e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"36efec7","data-element_type":"container","data-e-type":"container","children":[["$","$L1d",null,{"duration":0.8,"yOffset":28,"triggerOnce":true,"children":["$","div",null,{"className":"elementor-element elementor-element-778840d elementor-widget elementor-widget-logico_heading","data-id":"778840d","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_heading.default","children":["$","div",null,{"className":"elementor-widget-container","children":["$","h3",null,{"className":"logico-title","children":"Women Building The Next Mile"}]}]}]}],["$","div",null,{"className":"elementor-element elementor-element-bbfb67f elementor-widget elementor-widget-image","data-id":"bbfb67f","data-element_type":"widget","data-e-type":"widget","data-widget_type":"image.default","children":["$","div",null,{"className":"elementor-widget-container","children":["$","$L43",null,{"src":"/images/bg-map-women.webp","alt":"Women Map","width":626,"height":692,"style":{"maxWidth":"100%","height":"auto"}}]}]}]]}],["$","div",null,{"className":"elementor-element elementor-element-b2c956f e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"b2c956f","data-element_type":"container","data-e-type":"container","children":["$","div",null,{"id":"ws-stories","children":[["$","$L42",null,{"className":"ws__stats","stagger":0.1,"duration":0.6,"yOffset":20,"triggerOnce":true,"children":[["$","div","Women Founders",{"className":"ws__stat","children":[["$","div",null,{"className":"ws__stat-num","children":[["$","$L41",null,{"end":500,"suffix":"","duration":1.8,"triggerOnce":true}],["$","span",null,{"children":"+"}]]}],["$","div",null,{"className":"ws__stat-label","children":"Women Founders"}]]}],["$","div","Cities Active",{"className":"ws__stat","children":[["$","div",null,{"className":"ws__stat-num","children":[["$","$L41",null,{"end":35,"suffix":"","duration":1.8,"triggerOnce":true}],["$","span",null,{"children":"+"}]]}],["$","div",null,{"className":"ws__stat-label","children":"Cities Active"}]]}],["$","div","Enterprises Launched",{"className":"ws__stat","children":[["$","div",null,{"className":"ws__stat-num","children":[["$","$L41",null,{"end":100,"suffix":"","duration":1.8,"triggerOnce":true}],["$","span",null,{"children":"+"}]]}],["$","div",null,{"className":"ws__stat-label","children":"Enterprises Launched"}]]}]]}],["$","$L42",null,{"className":"ws__cards","stagger":0.08,"duration":0.6,"yOffset":24,"triggerOnce":true,"children":[["$","div","Venture Building",{"className":"ws__card","children":[["$","span",null,{"className":"ws__card-icon","aria-hidden":"true","children":["$","svg",null,{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"1.8","strokeLinecap":"round","strokeLinejoin":"round","children":[["$","path",null,{"d":"M4 19V5"}],["$","path",null,{"d":"M4 7h12l-2 4 2 4H4"}],["$","path",null,{"d":"M18 19h2"}]]}]}],["$","div",null,{"className":"ws__card-title","children":"Venture Building"}],["$","p",null,{"className":"ws__card-desc","children":"End-to-end support for women launching logistics enterprises — from ideation to market entry."}]]}],"$L44","$L45","$L46"]}]]}]}]]}]]}]}]]}] +3d:["$","div",null,{"className":"epr-row-index","children":"04"}] +3e:["$","div",null,{"children":[false,["$","span",null,{"className":"epr-row-type","children":"Scale with confidence"}],["$","h3",null,{"className":"epr-row-title","children":"Growth & Scale"}],["$","p",null,{"className":"epr-row-desc","children":"Operational expansion frameworks, team building, funding readiness, and sustainable unit economics for ventures ready to grow."}]]}] +3f:["$","article","Industry Immersion",{"className":"epr-row","children":[["$","div",null,{"className":"epr-row-index","children":"05"}],["$","div",null,{"children":[false,["$","span",null,{"className":"epr-row-type","children":"See the opportunity"}],["$","h3",null,{"className":"epr-row-title","children":"Industry Immersion"}],["$","p",null,{"className":"epr-row-desc","children":"Real exposure to logistics operations, supply chain infrastructure, and distribution networks before founders commit to a vertical."}]]}]]}] +40:["$","div",null,{"className":"epr-cta","children":["$","$L47",null,{"href":"/contact","className":"epr-cta-link","children":["Start your venture",["$","svg",null,{"width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.25","strokeLinecap":"round","strokeLinejoin":"round","children":["$","path",null,{"d":"M5 12h14M13 6l6 6-6 6"}]}]]}]}] +44:["$","div","Entrepreneurship",{"className":"ws__card","children":[["$","span",null,{"className":"ws__card-icon","aria-hidden":"true","children":["$","svg",null,{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"1.8","strokeLinecap":"round","strokeLinejoin":"round","children":[["$","rect",null,{"x":"3","y":"7","width":"18","height":"13","rx":"2"}],["$","path",null,{"d":"M8 7V5a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2M3 12h18"}]]}]}],["$","div",null,{"className":"ws__card-title","children":"Entrepreneurship"}],["$","p",null,{"className":"ws__card-desc","children":"Women building, owning, and scaling sustainable businesses within the logistics ecosystem."}]]}] +45:["$","div","Founder Networks",{"className":"ws__card","children":[["$","span",null,{"className":"ws__card-icon","aria-hidden":"true","children":["$","svg",null,{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"1.8","strokeLinecap":"round","strokeLinejoin":"round","children":[["$","circle",null,{"cx":"8","cy":"8","r":"3"}],["$","circle",null,{"cx":"16","cy":"8","r":"3"}],["$","path",null,{"d":"M2.5 20c.7-3.1 2.8-5 5.5-5s4.8 1.9 5.5 5"}],["$","path",null,{"d":"M10.5 20c.7-3.1 2.8-5 5.5-5s4.8 1.9 5.5 5"}]]}]}],["$","div",null,{"className":"ws__card-title","children":"Founder Networks"}],["$","p",null,{"className":"ws__card-desc","children":"Peer communities and strategic connections that accelerate growth and open new markets."}]]}] +46:["$","div","Enterprise Leadership",{"className":"ws__card","children":[["$","span",null,{"className":"ws__card-icon","aria-hidden":"true","children":["$","svg",null,{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"1.8","strokeLinecap":"round","strokeLinejoin":"round","children":[["$","circle",null,{"cx":"12","cy":"9","r":"5"}],["$","path",null,{"d":"M9 13.5 7.5 21 12 18l4.5 3-1.5-7.5"}]]}]}],["$","div",null,{"className":"ws__card-title","children":"Enterprise Leadership"}],["$","p",null,{"className":"ws__card-desc","children":"Strategic decision-making, operational excellence, and vision-driven leadership for women founders."}]]}] +37:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] +48:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +34:null +39:[["$","title","0",{"children":"Doormile Wings — Women Entrepreneurship Initiative"}],["$","meta","1",{"name":"description","content":"Doormile Wings empowers women to build, own, and lead enterprises within the logistics ecosystem through strategic partnerships, founder networks, and entrepreneurial infrastructure."}],["$","meta","2",{"name":"robots","content":"index, follow"}],["$","link","3",{"rel":"canonical","href":"https://doormile.com/empowerment"}],["$","meta","4",{"property":"og:title","content":"Doormile Wings — Women Entrepreneurship Initiative"}],["$","meta","5",{"property":"og:description","content":"An entrepreneurial ecosystem empowering women to launch, grow, and lead logistics enterprises with strategic partnerships and industry collaboration."}],["$","meta","6",{"property":"og:url","content":"https://doormile.com/empowerment"}],["$","meta","7",{"property":"og:site_name","content":"Doormile"}],["$","meta","8",{"property":"og:image","content":"https://doormile.com/images/wings-logo.png"}],["$","meta","9",{"property":"og:image:width","content":"1200"}],["$","meta","10",{"property":"og:image:height","content":"630"}],["$","meta","11",{"property":"og:image:alt","content":"Doormile Wings — Women Entrepreneurship Initiative"}],["$","meta","12",{"property":"og:type","content":"website"}],["$","meta","13",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","14",{"name":"twitter:title","content":"Doormile Wings — Women Entrepreneurship Initiative"}],["$","meta","15",{"name":"twitter:description","content":"An entrepreneurial ecosystem empowering women to launch, grow, and lead logistics enterprises with strategic partnerships and industry collaboration."}],["$","meta","16",{"name":"twitter:image","content":"https://doormile.com/images/wings-logo.png"}],["$","link","17",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","18",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","19",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","20",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L48","21",{}]] diff --git a/build/empowerment/__next._head.txt b/build/empowerment/__next._head.txt new file mode 100644 index 0000000..a4b3c56 --- /dev/null +++ b/build/empowerment/__next._head.txt @@ -0,0 +1,6 @@ +1:"$Sreact.fragment" +2:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +3:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +4:"$Sreact.suspense" +5:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +0:{"rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"Doormile Wings — Women Entrepreneurship Initiative"}],["$","meta","1",{"name":"description","content":"Doormile Wings empowers women to build, own, and lead enterprises within the logistics ecosystem through strategic partnerships, founder networks, and entrepreneurial infrastructure."}],["$","meta","2",{"name":"robots","content":"index, follow"}],["$","link","3",{"rel":"canonical","href":"https://doormile.com/empowerment"}],["$","meta","4",{"property":"og:title","content":"Doormile Wings — Women Entrepreneurship Initiative"}],["$","meta","5",{"property":"og:description","content":"An entrepreneurial ecosystem empowering women to launch, grow, and lead logistics enterprises with strategic partnerships and industry collaboration."}],["$","meta","6",{"property":"og:url","content":"https://doormile.com/empowerment"}],["$","meta","7",{"property":"og:site_name","content":"Doormile"}],["$","meta","8",{"property":"og:image","content":"https://doormile.com/images/wings-logo.png"}],["$","meta","9",{"property":"og:image:width","content":"1200"}],["$","meta","10",{"property":"og:image:height","content":"630"}],["$","meta","11",{"property":"og:image:alt","content":"Doormile Wings — Women Entrepreneurship Initiative"}],["$","meta","12",{"property":"og:type","content":"website"}],["$","meta","13",{"name":"twitter:card","content":"summary_large_image"}],["$","meta","14",{"name":"twitter:title","content":"Doormile Wings — Women Entrepreneurship Initiative"}],["$","meta","15",{"name":"twitter:description","content":"An entrepreneurial ecosystem empowering women to launch, grow, and lead logistics enterprises with strategic partnerships and industry collaboration."}],["$","meta","16",{"name":"twitter:image","content":"https://doormile.com/images/wings-logo.png"}],["$","link","17",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","18",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","19",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","20",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L5","21",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/empowerment/__next._index.txt b/build/empowerment/__next._index.txt new file mode 100644 index 0000000..d0b3355 --- /dev/null +++ b/build/empowerment/__next._index.txt @@ -0,0 +1,15 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","template":["$","$La",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/empowerment/__next._tree.txt b/build/empowerment/__next._tree.txt new file mode 100644 index 0000000..2aeb53c --- /dev/null +++ b/build/empowerment/__next._tree.txt @@ -0,0 +1,9 @@ +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"tree":{"name":"","param":null,"prefetchHints":16,"slots":{"children":{"name":"empowerment","param":null,"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}}}},"staleTime":300,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/empowerment/__next.empowerment.__PAGE__.txt b/build/empowerment/__next.empowerment.__PAGE__.txt new file mode 100644 index 0000000..d309ad8 --- /dev/null +++ b/build/empowerment/__next.empowerment.__PAGE__.txt @@ -0,0 +1,2097 @@ +1:"$Sreact.fragment" +f:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0vzdvje64yndv.js"],"ScrollReveal"] +10:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0vzdvje64yndv.js"],"ShimmerText"] +24:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +25:"$Sreact.suspense" +27:I[5074,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0vzdvje64yndv.js"],"default"] +2e:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0vzdvje64yndv.js"],"CountUp"] +2f:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0vzdvje64yndv.js"],"StaggerChildren"] +30:I[5500,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0vzdvje64yndv.js"],"Image"] +34:I[22016,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0vzdvje64yndv.js"],""] +2:Tf99, + .eh-outer { + box-sizing: border-box; + padding: 20px; + } + + .eh-section { + position: relative; + border-radius: 25px; + overflow: hidden; + box-sizing: border-box; + height: 800px; + display: flex; + align-items: center; + justify-content: center; + background: #07080c; + } + + .eh-bg { + position: absolute; + inset: 0; + background-image: url("/images/women-hero-slider-2.png"); + background-size: cover; + background-position: 30% 72%; + z-index: 0; + } + + .eh-scrim { + position: absolute; + inset: 0; + background: + linear-gradient(180deg, rgba(7, 8, 12, 0.72) 0%, rgba(7, 8, 12, 0.5) 40%, rgba(7, 8, 12, 0.86) 100%); + z-index: 1; + } + + .eh-inner { + position: relative; + z-index: 2; + width: 100%; + max-width: 1000px; + margin: 0 auto; + padding: 0 15px; + display: flex; + flex-direction: column; + align-items: center; + text-align: center; + box-sizing: border-box; + } + + .eh-eyebrow { + font-size: 13px; + font-weight: 800; + letter-spacing: 2.6px; + text-transform: uppercase; + color: #ff5470; + margin-bottom: 20px; + } + + .eh-title { + width: 100%; + font-size: clamp(30px, 5.5vw, 80px) !important; + font-weight: 800 !important; + letter-spacing: -0.03em !important; + line-height: 1.08 !important; + text-transform: uppercase !important; + color: #ffffff !important; + margin: 0; + word-wrap: break-word; + overflow-wrap: break-word; + } + + .eh-title .eh-soft { + color: rgba(255, 255, 255, 0.72); + } + + .eh-desc { + width: 100%; + max-width: 680px; + margin: 23px auto 0; + font-size: clamp(16px, 1.35vw, 23px); + line-height: 1.65; + color: rgba(255, 255, 255, 0.78); + } + + .eh-btns { + display: flex; + align-items: center; + justify-content: center; + gap: 14px; + flex-wrap: wrap; + margin-top: 32px; + } + + .eh-btn-primary, + .eh-btn-outline { + display: inline-flex; + align-items: center; + gap: 10px; + padding: 15px 28px; + border-radius: 100px; + font-weight: 800; + font-size: 14px; + text-decoration: none; + transition: transform 0.35s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.35s ease, background-color 0.3s ease, border-color 0.3s ease; + } + + .eh-btn-primary { + background: #c01227; + color: #ffffff !important; + border: 1.5px solid #c01227; + } + + .eh-btn-primary:hover { + transform: translateY(-3px); + box-shadow: 0 14px 30px rgba(192, 18, 39, 0.4); + } + + .eh-btn-outline { + background: rgba(255, 255, 255, 0.04); + color: #ffffff !important; + border: 1.5px solid rgba(255, 255, 255, 0.36); + } + + .eh-btn-outline:hover { + border-color: rgba(255, 255, 255, 0.82); + background: rgba(255, 255, 255, 0.09); + transform: translateY(-3px); + } + + @media (max-width: 1020px) { + .eh-outer { padding: 10px; } + } + + @media (max-width: 840px) { + .eh-section { height: 600px; } + } + + @media (max-width: 660px) { + .eh-title { + font-size: clamp(20px, 7vw, 32px) !important; + } + } + + @media (max-width: 480px) { + .eh-section { height: 520px; } + .eh-btn-primary, .eh-btn-outline { width: 100%; justify-content: center; padding: 14px 22px; } + .eh-btns { width: 100%; } + } + 0:{"rsc":["$","$1","c",{"children":[["$","div",null,{"id":"empowerment","className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":["$","div",null,{"data-elementor-type":"wp-page","data-elementor-id":"86","className":"elementor elementor-86 elementor-59 elementor-empowerment","children":[[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$2"}}],"$L3"],"$L4","$L5","$L6","$L7","$L8","$L9","$La","$Lb","$Lc"]}]}]}]}],["$Ld"],"$Le"]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} +3:["$","div",null,{"className":"eh-outer","children":["$","section",null,{"className":"eh-section","id":"wings-empowerment-hero","children":[["$","div",null,{"className":"eh-bg","aria-hidden":"true"}],["$","div",null,{"className":"eh-scrim","aria-hidden":"true"}],["$","$Lf",null,{"delay":0.05,"duration":0.85,"yOffset":30,"className":"eh-inner","children":[["$","h1",null,{"className":"eh-title","children":["Building ",["$","span",null,{"className":"eh-soft","children":"Women"}],["$","br",null,{}],["$","$L10",null,{"children":"Entrepreneurs."}]]}],["$","p",null,{"className":"eh-desc","children":"Empowering ambitious women with the network, strategic partnerships, and opportunities to build, grow, and lead successful enterprises that shape the future of logistics."}]]}]]}]}] +11:Te8f, + .ev-section { + position: relative; + background: #ffffff; + padding: clamp(96px, 11vw, 150px) 0; + overflow: hidden; + } + + .ev-map { + position: absolute; + inset: 0; + z-index: 0; + opacity: 0.4; + pointer-events: none; + } + + .ev-inner { + position: relative; + z-index: 1; + max-width: 1380px; + min-width: 0; + margin: 0 auto; + } + + .ev-eyebrow { + margin: 0 0 18px 0; + font-size: 14px; + font-weight: 500; + letter-spacing: 1.5px; + color: rgba(17, 17, 17, 0.6); + } + + .ev-divider { + width: 100%; + height: 1px; + margin: 0 0 clamp(64px, 7.8vw, 92px) 0; + border: none; + background-color: rgba(17, 17, 17, 0.16); + } + + .ev-title { + margin: 0 0 clamp(92px, 11.5vw, 156px) 0 !important; + max-width: 1320px; + display: block; + font-weight: 800 !important; + font-style: normal !important; + letter-spacing: -0.018em !important; + word-spacing: 0.02em; + line-height: 1.04em !important; + text-transform: none !important; + color: #ffffff !important; + -webkit-text-stroke: 2px #c01227; + paint-order: stroke fill; + font-size: clamp(48px, 8.5vw, 128px) !important; + white-space: normal; + overflow-wrap: normal; + text-wrap: balance; + } + + @media (max-width: 1280px) { + .ev-title { + font-size: 118px !important; + } + } + + @media (max-width: 1020px) { + .ev-title { + font-size: 96px !important; + } + } + + @media (max-width: 767px) { + .ev-title { + font-size: 72px !important; + } + } + + .ev-columns { + display: grid; + grid-template-columns: minmax(0, 0.6fr) minmax(0, 1fr); + gap: clamp(60px, 8vw, 122px); + align-items: start; + } + + .ev-columns > * { + min-width: 0; + } + + .ev-statement { + margin: 0; + font-size: clamp(28px, 3vw, 52px); + font-weight: 600; + line-height: 1.2; + letter-spacing: -0.03em; + color: #111111; + overflow-wrap: break-word; + } + + .ev-support { + display: grid; + gap: clamp(34px, 3.8vw, 52px); + min-width: 0; + } + + .ev-block { + display: grid; + gap: 12px; + } + + .ev-block-label { + margin: 0; + font-size: 12px; + font-weight: 700; + letter-spacing: 1.4px; + line-height: 1; + text-transform: uppercase; + color: rgba(192, 18, 39, 0.86); + } + + .ev-lead, + .ev-note { + font-size: clamp(17px, 1.3vw, 20px); + line-height: 1.6; + color: #333333; + margin: 0; + overflow-wrap: break-word; + } + + .ev-lead { + font-weight: 700; + } + + .ev-note { + font-weight: 400; + } + + @media (max-width: 900px) { + .ev-columns { + grid-template-columns: 1fr; + } + } + + @media (max-width: 600px) { + .ev-section { padding-top: 64px; padding-bottom: 64px; } + .ev-title { + max-width: calc(100vw - (var(--dm-mobile-gutter, 10px) * 2)); + font-size: 56px !important; + letter-spacing: -0.025em !important; + line-height: 1.02em !important; + -webkit-text-stroke-width: 1.5px; + } + } + 4:[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$11"}}],"$L12"] +13:Tbc4, + .esy-section { + position: relative; + width: calc(100% - 40px); + margin: 0 auto clamp(24px, 4vw, 40px); + border-radius: 28px; + overflow: hidden; + box-sizing: border-box; + min-height: clamp(500px, 50vw, 690px); + display: flex; + align-items: stretch; + background: #09090b; + } + + .esy-bg { + position: absolute; + inset: 0; + background-image: + linear-gradient(100deg, rgba(9, 9, 11, 0.96) 0%, rgba(9, 9, 11, 0.84) 43%, rgba(192, 18, 39, 0.28) 100%), + url("/images/wings-heroslider4.png"); + background-size: cover; + background-position: center; + z-index: 0; + } + + .esy-inner { + position: relative; + z-index: 1; + max-width: 1380px; + margin: 0 auto; + width: 100%; + padding-top: clamp(60px, 7vw, 98px); + padding-bottom: clamp(60px, 7vw, 98px); + display: grid; + grid-template-columns: minmax(0, 0.9fr) minmax(280px, 0.52fr); + gap: clamp(36px, 6vw, 96px); + align-items: end; + } + + .esy-eyebrow { + font-size: 13px; + font-weight: 800; + letter-spacing: 2.5px; + text-transform: uppercase; + color: #ff5470; + margin-bottom: 24px; + } + + .esy-statement { + max-width: 920px; + font-size: clamp(38px, 5.7vw, 86px); + font-weight: 800; + letter-spacing: -0.055em; + line-height: 0.98; + text-transform: uppercase; + color: #ffffff; + margin: 0; + } + + .esy-statement em { + color: #ff5470; + font-style: normal; + } + + .esy-side { + border-left: 1px solid rgba(255, 255, 255, 0.18); + padding-left: clamp(24px, 3vw, 42px); + } + + .esy-label { + display: block; + font-size: 12px; + font-weight: 800; + letter-spacing: 1.8px; + text-transform: uppercase; + color: rgba(255, 255, 255, 0.45); + margin-bottom: 18px; + } + + .esy-pull { + font-size: clamp(22px, 2.3vw, 34px); + font-weight: 800; + line-height: 1.16; + letter-spacing: -0.03em; + color: #ffffff; + margin: 0 0 22px 0; + } + + .esy-sub { + font-size: 15.5px; + line-height: 1.65; + color: rgba(255, 255, 255, 0.64); + margin: 0; + } + + @media (max-width: 1024px) { + .esy-section { width: calc(100% - 24px); border-radius: 22px; } + .esy-inner { grid-template-columns: 1fr; align-items: start; } + .esy-side { max-width: 640px; } + } + + @media (max-width: 640px) { + .esy-section { min-height: 560px; } + .esy-side { border-left: none; padding-left: 0; border-top: 1px solid rgba(255, 255, 255, 0.18); padding-top: 24px; } + } + 5:[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$13"}}],["$","section",null,{"className":"esy-section","id":"wings-empowerment-story","children":[["$","div",null,{"className":"esy-bg","aria-hidden":"true"}],["$","div",null,{"className":"esy-inner dm-section-container","children":["$L14","$L15"]}]]}]] +16:T3756, + /* ============================================================ + Success Stories — redesigned right column (stats + 2x2 cards) + Dark section · red accent #dc2626 / #ef4444 · Manrope + ============================================================ */ + /* Neutralise the right column's asymmetric 140px left padding so the + box group can be centered instead of pushed to one side. */ + .elementor-element.elementor-element-b2c956f { padding: 0 !important; } + + /* Vertically center the two columns so the right content lines up with + the image instead of needing a big top gap; tighten row gap. */ + .elementor-element.elementor-element-2ed47f3 { align-items: center !important; } + + /* Animated map background behind the Success Stories content */ + .elementor-element.elementor-element-b6e14bd { position: relative; overflow: hidden; } + .elementor-element.elementor-element-b6e14bd > .e-con-inner { position: relative; z-index: 1; } + .ws-map { position: absolute; inset: 0; z-index: 0; opacity: 0.5; pointer-events: none; } + .ws-map canvas { display: block; } + + #ws-stories { + display: flex; + flex-direction: column; + gap: 16px; + width: 100%; + max-width: 620px; + margin: 0 auto; /* center the 7 boxes as a group — no negative margins */ + } + + #ws-stories .ws__stats { + display: grid; + grid-template-columns: repeat(3, 1fr); + gap: 12px; + } + #ws-stories .ws__stat { + background: rgba(255,255,255,0.04); + border: 1px solid rgba(255,255,255,0.08); + border-radius: 14px; + padding: 20px 16px; + transition: border-color 0.3s ease, background-color 0.3s ease; + } + #ws-stories .ws__stat:hover { border-color: rgba(220,38,38,0.28); background: rgba(220,38,38,0.05); } + #ws-stories .ws__stat-num { + color: #fff !important; + font-weight: 900; + font-size: clamp(28px, 3vw, 38px); + line-height: 1; + letter-spacing: -0.01em; + } + #ws-stories .ws__stat-num span { color: #dc2626 !important; } + #ws-stories .ws__stat-label { + margin-top: 9px; + color: rgba(255,255,255,0.7) !important; + font-size: 14px !important; + font-weight: 700; + letter-spacing: 0.03em; + text-transform: uppercase; + } + + #ws-stories .ws__cards { + display: grid; + grid-template-columns: 1fr 1fr; + gap: 14px; + align-items: stretch; + } + #ws-stories .ws__card { + position: relative; + overflow: hidden; + display: flex; + flex-direction: column; + min-height: 168px; + background: rgba(255,255,255,0.035); + border: 1px solid rgba(255,255,255,0.08); + border-radius: 14px; + padding: 20px; + transition: transform 0.35s cubic-bezier(.25,1,.5,1), border-color 0.35s ease, background-color 0.35s ease, box-shadow 0.35s ease; + } + #ws-stories .ws__card::after { + content: ''; + position: absolute; + top: -45%; left: -25%; + width: 150px; height: 150px; + background: radial-gradient(circle, rgba(220,38,38,0.2), transparent 70%); + opacity: 0; + transition: opacity 0.35s ease; + pointer-events: none; + } + #ws-stories .ws__card:hover { + transform: translateY(-4px); + border-color: rgba(220,38,38,0.3); + background: rgba(220,38,38,0.05); + box-shadow: 0 18px 44px -20px rgba(0,0,0,0.7); + } + #ws-stories .ws__card:hover::after { opacity: 1; } + #ws-stories .ws__card-icon { + display: inline-flex; + align-items: center; + justify-content: center; + width: 40px; height: 40px; + border-radius: 11px; + background: rgba(220,38,38,0.12); + border: 1px solid rgba(220,38,38,0.25); + color: #ef4444; + margin-bottom: 16px; + transition: background-color 0.3s ease, color 0.3s ease; + } + #ws-stories .ws__card:hover .ws__card-icon { background: #dc2626; color: #fff; } + #ws-stories .ws__card-icon svg { width: 21px; height: 21px; } + #ws-stories .ws__card-title { + color: #fff !important; + font-weight: 800; + font-size: 19px; + line-height: 1.2; + letter-spacing: 0; + margin-bottom: 9px; + } + #ws-stories .ws__card-desc { + max-width: 28ch; + color: rgba(255,255,255,0.66) !important; + font-size: 15px; + line-height: 1.52; + margin: 0; + font-weight: 500; + } + + /* ---- Floating card sizing: content-driven, not container-driven ---- + Matches the EV Logistics card height proportions exactly by trimming + red content padding and white footer min-height. */ + .elementor-element.elementor-element-3b61435 { + --padding-top: 46px; + --padding-bottom: 38px; + } + .elementor-element.elementor-element-5aea22e { + --min-height: 38px; + --padding-top: 14px; + --padding-bottom: 14px; + } + @media (max-width: 1020px) { + .elementor-element.elementor-element-3b61435 { + --padding-top: 34px; + --padding-bottom: 28px; + } + .elementor-element.elementor-element-5aea22e { + --min-height: 32px; + --padding-top: 12px; + --padding-bottom: 12px; + } + } + @media (max-width: 660px) { + .elementor-element.elementor-element-3b61435 { + --padding-top: 26px; + --padding-bottom: 22px; + } + .elementor-element.elementor-element-5aea22e { + --min-height: 24px; + --padding-top: 10px; + --padding-bottom: 10px; + } + } + + .elementor-element-778840d .logico-title { + white-space: nowrap !important; + } + + /* The banner image (bg-header-women.png) is very wide (≈2.48:1) and the + woman — the subject of this section — sits on the right. On narrow + screens "cover" center-crops her out, so shift the focal point right + to keep her face in frame. */ + @media (max-width: 1024px) { + .elementor-element.elementor-element-7da6646:not(.elementor-motion-effects-element-type-background) { + background-position: 78% center !important; + } + } + @media (max-width: 767px) { + .elementor-element.elementor-element-7da6646:not(.elementor-motion-effects-element-type-background) { + background-position: 82% 25% !important; + } + } + + /* Stack the two columns below the desktop breakpoint so the box group + always gets full width and stays centered — never clipped. */ + @media (max-width: 1024px) { + .elementor-element-778840d .logico-title { + white-space: normal !important; + } + .elementor-element.elementor-element-2ed47f3 { grid-template-columns: 1fr !important; } + #ws-stories { max-width: 640px; margin: 0 auto; } + /* Align the heading, image and stats/cards to one shared left/right + edge — the heading + image widgets carried extra inset that left + them staggered (80px / 70px / 60px) against the stats column. */ + #women-entrepreneurship .elementor-element-36efec7, + #women-entrepreneurship .elementor-element-b2c956f { + padding-left: 0 !important; + padding-right: 0 !important; + } + #women-entrepreneurship .elementor-element-778840d, + #women-entrepreneurship .elementor-element-bbfb67f, + #women-entrepreneurship .elementor-element-778840d > .elementor-widget-container, + #women-entrepreneurship .elementor-element-bbfb67f > .elementor-widget-container { + padding-left: 0 !important; + padding-right: 0 !important; + margin-left: 0 !important; + margin-right: 0 !important; + } + } + + @media (max-width: 767px) { + #women-entrepreneurship { + width: calc(100% - 20px) !important; + margin-left: 10px !important; + margin-right: 10px !important; + border-radius: 22px !important; + padding-left: 0px !important; + padding-right: 0px !important; + } + #women-entrepreneurship .e-con-boxed > .e-con-inner { + padding-top: 32px !important; + padding-bottom: 32px !important; + padding-left: 0 !important; + padding-right: 0 !important; + } + #women-entrepreneurship .elementor-element-8b5d6e6, + #women-entrepreneurship .elementor-element-b6e14bd, + #women-entrepreneurship .elementor-element-90cc867, + #women-entrepreneurship .elementor-element-36efec7, + #women-entrepreneurship .elementor-element-b2c956f { + padding-left: 0 !important; + padding-right: 0 !important; + margin-left: 0 !important; + margin-right: 0 !important; + } + #women-entrepreneurship .elementor-element-1f766ea { + width: 100% !important; + max-width: 100% !important; + margin-left: auto !important; + margin-right: auto !important; + padding-left: 0 !important; + padding-right: 0 !important; + } + #women-entrepreneurship .elementor-element.elementor-element-2ed47f3 { + padding-left: 0 !important; + padding-right: 0 !important; + margin-left: 0 !important; + margin-right: 0 !important; + margin-top: 0 !important; + padding-top: 0 !important; + gap: 24px !important; + } + #women-entrepreneurship .elementor-element-36efec7 { + margin-top: 0px !important; + padding-top: 0px !important; + gap: 0px !important; + } + #women-entrepreneurship .elementor-element-24c0280 { + margin-bottom: 0px !important; + padding-left: 14px !important; + padding-right: 14px !important; + box-sizing: border-box !important; + } + #women-entrepreneurship .elementor-element-778840d { + margin-top: 14px !important; + margin-bottom: 14px !important; + padding-top: 0px !important; + padding-bottom: 0px !important; + padding-left: 14px !important; + padding-right: 14px !important; + box-sizing: border-box !important; + } + #women-entrepreneurship .elementor-element-778840d h3.logico-title, + #women-entrepreneurship .elementor-element-778840d > .elementor-widget-container { + margin: 0px !important; + padding: 0px !important; + } + #women-entrepreneurship .elementor-element-7da6646 { + width: calc(100% - 28px) !important; + margin-left: 14px !important; + margin-right: 14px !important; + border-radius: 18px !important; + min-height: 240px !important; + margin-top: 15px !important; + margin-bottom: -50px !important; + box-sizing: border-box !important; + } + #women-entrepreneurship .elementor-element-8b5d6e6 { + padding-left: 14px !important; + padding-right: 14px !important; + margin-left: 0px !important; + margin-right: 0px !important; + width: 100% !important; + max-width: 100% !important; + box-sizing: border-box !important; + } + #women-entrepreneurship .elementor-element-bbfb67f img { + width: 100% !important; + } + #women-entrepreneurship .elementor-element-bbfb67f { + margin-top: 0px !important; + margin-bottom: 16px !important; + padding-left: 14px !important; + padding-right: 14px !important; + box-sizing: border-box !important; + } + #ws-stories { + padding-left: 14px !important; + padding-right: 14px !important; + box-sizing: border-box !important; + } + /* KPI stat cards stack one-per-row on mobile. Inside each card the big + number sits on the left and the label on the right, vertically + centered, so every stat reads as a clean full-width row instead of + three cramped columns. */ + #ws-stories .ws__stats { grid-template-columns: 1fr; gap: 12px; } + #ws-stories .ws__stat { + display: flex; + align-items: center; + justify-content: space-between; + gap: 16px; + padding: 16px 20px; + min-width: 0; + } + #ws-stories .ws__stat-num { font-size: clamp(30px, 9vw, 40px); } + #ws-stories .ws__stat-label { + margin-top: 0; + font-size: 13px !important; + letter-spacing: 0.02em; + text-align: right; + min-height: 0; + } + #ws-stories .ws__cards { grid-template-columns: 1fr; gap: 12px; } + } + 6:[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$16"}}],"$L17"] +18:T2d38, + .epr-section { + background: #ffffff; + padding: clamp(78px, 9vw, 132px) 0; + overflow: visible; + } + + .epr-inner { + max-width: 1380px; + min-width: 0; + margin: 0 auto; + } + + .epr-head { + display: flex; + flex-direction: column; + align-items: flex-start; + margin-bottom: clamp(54px, 7vw, 86px); + } + + .epr-head-reveal { + width: 100%; + } + + .epr-divider { + width: 100%; + height: 1px; + margin: 18px 0 clamp(24px, 3.5vw, 40px) 0; + border: none; + background-color: rgba(17, 17, 17, 0.14); + } + + .epr-eyebrow { + font-size: 13px; + font-weight: 800; + letter-spacing: 2.4px; + text-transform: uppercase; + color: rgba(17, 17, 17, 0.42); + } + + .epr-title { + max-width: 950px; + font-size: clamp(42px, 6.2vw, 88px) !important; + font-weight: 800 !important; + letter-spacing: -0.055em !important; + line-height: 0.98 !important; + text-transform: uppercase !important; + color: #111111 !important; + margin: 0; + } + + .epr-stage { + display: grid; + grid-template-columns: minmax(300px, 0.38fr) minmax(0, 0.62fr); + gap: clamp(32px, 5vw, 78px); + /* stretch (not start): the left column's grid-item box must span + the full row — i.e. match the taller Programs list — or the + sticky aside inside it runs out of room and un-sticks well + before the list finishes scrolling. */ + align-items: stretch; + min-width: 0; + } + + .epr-stage > * { + min-width: 0; + } + + /* Plain stretching grid item. Carries no visual styling of its own — + it exists only to give .epr-aside (sized/centered independently + inside it) the full row height to stick within. */ + .epr-aside-wrap { + min-width: 0; + } + + .epr-aside { + position: sticky; + top: 110px; + min-width: 0; + min-height: clamp(480px, 44vw, 660px); + padding: clamp(18px, 3vw, 34px) 0 clamp(24px, 3.5vw, 42px); + display: flex; + flex-direction: column; + justify-content: center; + overflow: hidden; + color: #111111; + } + + .epr-aside-map { + position: absolute; + inset: 8% -22% 8% -28%; + z-index: 0; + opacity: 0.22; + pointer-events: none; + } + + .epr-aside-map canvas { + display: block; + } + + .epr-aside-content { + position: relative; + z-index: 1; + display: grid; + gap: clamp(18px, 2.2vw, 28px); + } + + .epr-aside-num { + position: relative; + font-size: clamp(164px, 17vw, 300px); + font-weight: 900; + line-height: 0.78; + letter-spacing: -0.06em; + color: transparent; + -webkit-text-stroke: 2px rgba(200, 16, 46, 0.2); + } + + .epr-aside-copy { + position: relative; + max-width: 12ch; + font-size: clamp(30px, 3.6vw, 56px); + font-weight: 800; + line-height: 0.98; + letter-spacing: -0.055em; + text-transform: uppercase; + color: #111111; + margin: 0; + } + + .epr-aside-copy em { + font-style: normal; + color: #c8102e; + } + + .epr-aside-desc { + position: relative; + max-width: 34ch; + font-size: 15.5px; + line-height: 1.65; + color: rgba(17, 17, 17, 0.58); + margin: 0; + } + + /* Continues the editorial narrative below the original hero + statement/paragraph — same grid, same gap rhythm as the rest of + .epr-aside-content, so it reads as one uninterrupted column rather + than a bolted-on block. Exists so the sticky aside still has real + editorial content to show while the list scrolls through its last + two entries, instead of ending early and leaving the left side + blank for the remainder of the scroll. */ + .epr-aside-divider { + position: relative; + width: 100%; + height: 1px; + border: none; + margin: 0; + background-color: rgba(17, 17, 17, 0.12); + } + + .epr-aside-label { + position: relative; + font-size: 12px; + font-weight: 800; + letter-spacing: 1.7px; + text-transform: uppercase; + color: rgba(17, 17, 17, 0.4); + margin: 0 0 -6px 0; + } + + .epr-aside-gains-list { + position: relative; + list-style: none; + margin: 0; + padding: 0; + display: grid; + gap: 9px; + } + + .epr-aside-gains-list li { + position: relative; + padding-left: 19px; + font-size: 15.5px; + line-height: 1.5; + color: rgba(17, 17, 17, 0.68); + } + + /* Extra .epr-aside prefix raises specificity above the global theme + rule ".logico-front-end ul li:before" (a fontello glyph), so our + clean red dot replaces the inherited checkmark marker — same fix + already established for this exact conflict in LegalDocument.tsx. */ + .epr-aside .epr-aside-gains-list li::before { + content: "" !important; + position: absolute; + left: 2px; + top: 0.62em; + width: 5px; + height: 5px; + border-radius: 50%; + background: #c8102e; + font-size: 0; + } + + .epr-aside-final { + position: relative; + max-width: 30ch; + font-size: clamp(17px, 1.7vw, 20px); + font-weight: 700; + line-height: 1.5; + letter-spacing: -0.01em; + color: #111111; + margin: 0; + } + + .epr-aside-final em { + font-style: normal; + color: #c8102e; + } + + .epr-list { + display: grid; + gap: clamp(28px, 4vw, 52px); + } + + .epr-row { + display: grid; + grid-template-columns: 110px minmax(0, 1fr); + gap: clamp(22px, 4vw, 58px); + padding-bottom: clamp(28px, 4vw, 52px); + border-bottom: 1px solid rgba(17, 17, 17, 0.14); + } + + .epr-row:nth-child(even) { + margin-left: clamp(0px, 7vw, 96px); + } + + .epr-row-index { + font-size: clamp(38px, 4.2vw, 62px); + font-weight: 900; + line-height: 1; + letter-spacing: -0.05em; + color: #c8102e; + } + + .epr-row-featured { + padding: clamp(28px, 4vw, 44px) clamp(24px, 3vw, 40px); + background: #09090b; + border-radius: 22px; + border-bottom: none; + margin-bottom: clamp(28px, 4vw, 52px); + } + + .epr-row-featured .epr-row-index { + color: rgba(255, 255, 255, 0.22); + -webkit-text-stroke: 1.5px rgba(255, 255, 255, 0.5); + } + + .epr-row-featured .epr-row-title { + font-size: clamp(32px, 4vw, 64px) !important; + color: #ffffff !important; + } + + .epr-row-featured .epr-row-desc { + color: rgba(255, 255, 255, 0.62); + } + + .epr-row-flag { + display: inline-block; + font-size: 12px; + font-weight: 800; + letter-spacing: 1.3px; + text-transform: uppercase; + color: #ffffff; + background: #c8102e; + padding: 6px 14px; + border-radius: 100px; + margin-bottom: 16px; + } + + .epr-row-type { + display: block; + font-size: 12px; + font-weight: 800; + letter-spacing: 1.7px; + text-transform: uppercase; + color: rgba(17, 17, 17, 0.42); + margin-bottom: 14px; + } + + .epr-row-featured .epr-row-type { + color: rgba(255, 255, 255, 0.42); + } + + .epr-row-title { + font-size: clamp(28px, 3.4vw, 52px) !important; + font-weight: 800 !important; + letter-spacing: -0.045em !important; + line-height: 1.02 !important; + text-transform: uppercase !important; + color: #111111 !important; + margin: 0 0 14px 0; + } + + .epr-row-desc { + max-width: 660px; + font-size: 15.5px; + line-height: 1.65; + color: rgba(17, 17, 17, 0.58); + margin: 0; + } + + .epr-cta { + margin-top: clamp(48px, 6vw, 72px); + } + + .epr-cta-link { + display: inline-flex; + align-items: center; + gap: 10px; + font-size: 15px; + font-weight: 800; + color: #111111 !important; + text-decoration: none !important; + border-bottom: 1.5px solid rgba(17, 17, 17, 0.2); + padding-bottom: 5px; + transition: border-color 0.3s ease, color 0.3s ease; + } + + .epr-cta-link:hover { + color: #c8102e !important; + border-color: #c8102e; + } + + /* Laptop: sticky stays enabled, just a narrower gutter. */ + @media (max-width: 1180px) { + .epr-stage { grid-template-columns: minmax(220px, 0.34fr) minmax(0, 0.66fr); gap: clamp(28px, 4vw, 46px); } + .epr-aside { min-height: 420px; } + .epr-row:nth-child(even) { margin-left: 0; } + } + + /* Tablet: sticky disabled — the aside scrolls in normal flow instead + of pinning, since there's no longer enough vertical runway next to + the (now narrower, shorter) program list for pinning to read well. + The wrapper no longer needs to stretch once its child isn't sticky. */ + @media (max-width: 1023px) { + .epr-aside-wrap { + align-self: start; + } + .epr-aside { + position: relative; + top: auto; + } + } + + @media (max-width: 767px) { + .epr-stage { grid-template-columns: 1fr; } + .epr-aside { + position: relative; + top: auto; + min-height: 300px; + padding-top: 4px; + padding-bottom: clamp(24px, 7vw, 38px); + } + .epr-aside-map { + inset: -8% -18% 0 -20%; + opacity: 0.18; + } + .epr-aside-content { + gap: 20px; + } + .epr-aside-num { + font-size: clamp(128px, 34vw, 180px); + } + .epr-aside-copy { + max-width: 11ch; + font-size: clamp(34px, 10vw, 48px); + } + .epr-aside-desc { + max-width: 32ch; + font-size: 14.5px; + } + .epr-aside-gains-list li { + font-size: 14.5px; + } + .epr-aside-final { + max-width: 28ch; + font-size: 16.5px; + } + } + + @media (max-width: 640px) { + .epr-section { padding-top: 54px; padding-bottom: 54px; } + .epr-title { + font-size: clamp(34px, 10vw, 40px) !important; + letter-spacing: -0.045em !important; + overflow-wrap: anywhere; + } + .epr-row-title { + font-size: clamp(27px, 8.5vw, 36px) !important; + overflow-wrap: anywhere; + } + .epr-row { grid-template-columns: 1fr; gap: 12px; } + } + 7:[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$18"}}],"$L19"] +1a:Te98, + .eim-section { + position: relative; + width: calc(100% - 40px); + margin: clamp(24px, 4vw, 40px) auto; + border-radius: 28px; + overflow: hidden; + box-sizing: border-box; + background: #09090b; + padding: clamp(64px, 8vw, 100px) clamp(24px, 5vw, 48px); + } + + .eim-inner { + position: relative; + z-index: 1; + max-width: 1380px; + margin: 0 auto; + } + + .eim-eyebrow { + font-size: 13px; + font-weight: 800; + letter-spacing: 2.5px; + text-transform: uppercase; + color: #c8102e; + margin-bottom: 20px; + } + + .eim-title { + font-size: clamp(28px, 3.4vw, 46px) !important; + font-weight: 800 !important; + letter-spacing: -0.03em !important; + line-height: 1.15 !important; + text-transform: none !important; + color: #ffffff !important; + margin: 0 0 clamp(32px, 4vw, 48px) 0; + } + + .eim-divider { + border: none; + border-top: 1px solid rgba(255, 255, 255, 0.12); + margin: 0 0 clamp(40px, 5vw, 56px) 0; + } + + .eim-hero-row { + display: flex; + align-items: flex-end; + gap: clamp(20px, 3vw, 36px); + margin-bottom: clamp(48px, 6vw, 72px); + } + + .eim-hero-num { + font-size: clamp(90px, 13vw, 190px); + font-weight: 800; + line-height: 0.85; + letter-spacing: -0.03em; + color: transparent; + -webkit-text-stroke: 2px #c8102e; + } + + .eim-hero-label { + font-size: 13px; + font-weight: 700; + letter-spacing: 1.5px; + text-transform: uppercase; + color: rgba(255, 255, 255, 0.55); + max-width: 90px; + line-height: 1.4; + padding-bottom: clamp(12px, 1.5vw, 24px); + } + + .eim-divider-2 { + border: none; + border-top: 1px solid rgba(255, 255, 255, 0.12); + margin: 0 0 clamp(40px, 5vw, 56px) 0; + } + + .eim-secondary-row { + display: grid; + grid-template-columns: repeat(4, minmax(0, 1fr)); + } + + .eim-secondary-item { + padding-right: 24px; + border-left: 1px solid rgba(255, 255, 255, 0.12); + padding-left: 24px; + } + + .eim-secondary-item:first-child { + border-left: none; + padding-left: 0; + } + + .eim-secondary-num { + display: block; + font-size: clamp(32px, 3vw, 44px); + font-weight: 800; + color: #ff5470; + letter-spacing: -0.02em; + margin-bottom: 10px; + } + + .eim-secondary-label { + font-size: 13px; + font-weight: 600; + color: rgba(255, 255, 255, 0.5); + line-height: 1.4; + } + + .eim-copy { + max-width: 720px; + margin-top: clamp(48px, 6vw, 72px); + font-size: 15.5px; + line-height: 1.7; + color: rgba(255, 255, 255, 0.55); + } + + @media (max-width: 1024px) { + .eim-section { width: calc(100% - 24px); border-radius: 22px; } + } + + @media (max-width: 700px) { + .eim-hero-row { align-items: flex-start; flex-direction: column; gap: 12px; } + .eim-hero-label { padding-bottom: 0; max-width: none; } + .eim-secondary-row { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: 28px; } + .eim-secondary-item:nth-child(3) { border-left: none; padding-left: 0; } + } + + @media (max-width: 460px) { + .eim-section { padding-top: 48px; padding-bottom: 48px; } + } + 8:[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$1a"}}],"$L1b"] +1c:T1573, + .ehw-section { + background: #ffffff; + padding: var(--space-section-lg, 80px) 0 calc(var(--space-section-lg, 80px) + 32px) 0; + overflow: hidden; + } + + .ehw-inner { + max-width: 1380px; + margin: 0 auto; + } + + .ehw-head { + display: flex; + flex-direction: column; + align-items: flex-start; + margin-bottom: clamp(126px, calc(7vw + 60px), 172px); + } + + .ehw-head-reveal { + width: 100%; + } + + .ehw-divider { + width: 100%; + height: 1px; + margin: 18px 0 clamp(24px, 3.5vw, 40px) 0; + border: none; + background-color: rgba(17, 17, 17, 0.14); + } + + .ehw-eyebrow { + font-size: 13px; + font-weight: 800; + letter-spacing: 2.4px; + text-transform: uppercase; + color: rgba(17, 17, 17, 0.42); + } + + .ehw-title { + max-width: 820px; + font-size: clamp(32px, 4vw, 54px) !important; + font-weight: 800 !important; + letter-spacing: -0.03em !important; + line-height: 1.08 !important; + text-transform: none !important; + color: #111111 !important; + margin: 0 !important; + } + + /* ---------------------------------------------------------------- + Premium editorial process row: five milestones in a single + sequence, separated by thin hairline dividers (no cards, no + shadows, no boxed containers). One flex-wrap sequence with + responsive flex-basis handles the composition at every size — + 5-across on desktop, 3 + 2 (centered) on tablet, a single + vertical column on mobile — from one shared markup. + ---------------------------------------------------------------- */ + .ehw-sequence { + display: flex; + flex-wrap: wrap; + justify-content: center; + --ehw-gap: clamp(24px, 2.6vw, 48px); + column-gap: var(--ehw-gap); + row-gap: clamp(48px, 6vw, 84px); + } + + .ehw-step { + position: relative; + flex: 0 1 calc((100% - 4 * var(--ehw-gap)) / 5); + min-width: 168px; + padding-left: clamp(20px, 2vw, 32px); + border-left: 1px solid rgba(17, 17, 17, 0.14); + transition: border-color 0.3s ease; + } + + .ehw-step:first-child { + border-left: none; + padding-left: 0; + } + + .ehw-step:hover { + border-left-color: rgba(200, 16, 46, 0.4); + } + + .ehw-step-num { + font-size: clamp(48px, 4.6vw, 78px); + font-weight: 900; + line-height: 0.84; + letter-spacing: -0.03em; + color: transparent; + -webkit-text-stroke: 1.5px rgba(17, 17, 17, 0.24); + margin: 0 0 18px 0; + transition: -webkit-text-stroke-color 0.3s ease; + } + + .ehw-step.is-accent .ehw-step-num { + -webkit-text-stroke: 1.5px rgba(200, 16, 46, 0.58); + } + + .ehw-step-kicker { + display: flex; + align-items: center; + gap: 7px; + margin-bottom: 18px; + } + + .ehw-step-kicker svg { + width: 13px; + height: 13px; + color: rgba(17, 17, 17, 0.36); + flex-shrink: 0; + } + + .ehw-step-kicker span { + font-size: 11px; + font-weight: 800; + letter-spacing: 2px; + text-transform: uppercase; + color: rgba(17, 17, 17, 0.4); + } + + .ehw-step.is-accent .ehw-step-kicker svg, + .ehw-step.is-accent .ehw-step-kicker span { + color: #c8102e; + } + + .ehw-step-title { + font-size: clamp(18px, 1.4vw, 22px) !important; + font-weight: 800 !important; + letter-spacing: -0.02em !important; + line-height: 1.2 !important; + text-transform: none !important; + color: #111111 !important; + margin: 0 0 22px 0; + } + + .ehw-step-desc { + max-width: 27ch; + font-size: 14px; + line-height: 1.6; + color: rgba(17, 17, 17, 0.55); + margin: 0; + } + + /* Tablet: 3 + 2, centered — sever the divider at the start of each row. */ + @media (max-width: 1100px) { + .ehw-step { + flex-basis: calc((100% - 2 * var(--ehw-gap)) / 3); + } + .ehw-step:nth-child(4) { + border-left: none; + padding-left: 0; + } + } + + /* Mobile: single column — dividers rotate from vertical to horizontal. */ + @media (max-width: 640px) { + .ehw-sequence { + row-gap: 0; + } + .ehw-step { + flex-basis: 100%; + padding-left: 0; + padding-top: clamp(28px, 8vw, 38px); + border-left: none; + border-top: 1px solid rgba(17, 17, 17, 0.14); + } + .ehw-step:first-child { + padding-top: 0; + border-top: none; + } + .ehw-step:nth-child(4) { + border-top: 1px solid rgba(17, 17, 17, 0.14); + } + .ehw-step:hover { + border-left-color: transparent; + } + .ehw-step-num { + font-size: clamp(44px, 13vw, 56px); + } + } + + @media (max-width: 480px) { + .ehw-section { padding-top: 48px; padding-bottom: 68px; } + } + 9:[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$1c"}}],"$L1d"] +1e:T1bff, + .est-section { + position: relative; + background: #ffffff; + padding-top: clamp(24px, 3vw, 48px); + padding-bottom: clamp(78px, 9vw, 132px); + overflow: hidden; + } + + .est-inner { + max-width: 1380px; + margin: 0 auto; + } + + .est-head { + display: flex; + flex-direction: column; + align-items: flex-start; + margin-bottom: clamp(54px, 7vw, 86px); + } + + .est-head-reveal { + width: 100%; + } + + .est-divider { + width: 100%; + height: 1px; + margin: 18px 0 clamp(24px, 3.5vw, 40px) 0; + border: none; + background-color: rgba(17, 17, 17, 0.14); + } + + .est-eyebrow { + font-size: 13px; + font-weight: 800; + letter-spacing: 2.4px; + text-transform: uppercase; + color: rgba(17, 17, 17, 0.42); + } + + .est-title { + max-width: 940px; + font-size: clamp(42px, 6.3vw, 90px) !important; + font-weight: 800 !important; + letter-spacing: -0.055em !important; + line-height: 0.98 !important; + text-transform: uppercase !important; + color: #111111 !important; + margin: 0; + } + + .est-feature { + display: grid; + grid-template-columns: minmax(0, 0.94fr) minmax(340px, 0.64fr); + gap: clamp(28px, 4vw, 62px); + align-items: stretch; + margin-bottom: clamp(44px, 6vw, 76px); + } + + .est-photo { + position: relative; + min-height: clamp(460px, 48vw, 680px); + border-radius: 26px; + overflow: hidden; + background: #09090b; + } + + .est-photo img { + object-fit: cover; + object-position: center; + } + + .est-photo::after { + content: ""; + position: absolute; + inset: 0; + background: linear-gradient(180deg, rgba(9, 9, 11, 0) 34%, rgba(9, 9, 11, 0.72) 100%); + pointer-events: none; + } + + .est-photo-caption { + position: absolute; + left: clamp(24px, 3vw, 42px); + right: clamp(24px, 3vw, 42px); + bottom: clamp(24px, 3vw, 42px); + z-index: 1; + color: #ffffff; + } + + .est-photo-caption span { + display: block; + font-size: 12px; + font-weight: 800; + letter-spacing: 1.7px; + text-transform: uppercase; + color: rgba(255, 255, 255, 0.6); + margin-bottom: 8px; + } + + .est-photo-caption strong { + display: block; + font-size: clamp(24px, 3vw, 42px); + font-weight: 900; + line-height: 1.02; + letter-spacing: -0.04em; + } + + .est-copy { + border-radius: 26px; + background: #09090b; + color: #ffffff; + padding: clamp(34px, 5vw, 62px); + display: flex; + flex-direction: column; + justify-content: space-between; + overflow: hidden; + position: relative; + } + + .est-copy::before { + content: ""; + position: absolute; + width: 320px; + height: 320px; + right: -120px; + top: -120px; + background: radial-gradient(circle, rgba(200, 16, 46, 0.42), transparent 68%); + pointer-events: none; + } + + .est-quote-mark { + position: relative; + font-family: Georgia, serif; + font-size: 92px; + line-height: 0.8; + color: #c8102e; + display: block; + margin-bottom: 20px; + } + + .est-quote-text { + position: relative; + font-size: clamp(25px, 3vw, 44px); + font-weight: 800; + line-height: 1.12; + letter-spacing: -0.04em; + color: #ffffff; + margin: 0 0 28px 0; + } + + .est-narrative { + position: relative; + font-size: 15.5px; + line-height: 1.68; + color: rgba(255, 255, 255, 0.66); + margin: 0; + max-width: 46ch; + } + + .est-person { + position: relative; + padding-top: clamp(38px, 5vw, 64px); + } + + .est-person-name { + font-size: 18px; + font-weight: 900; + color: #ffffff; + } + + .est-person-role { + font-size: 13.5px; + color: rgba(255, 255, 255, 0.52); + margin-top: 3px; + } + + .est-list-label { + font-size: 12px; + font-weight: 800; + letter-spacing: 1.8px; + text-transform: uppercase; + color: rgba(17, 17, 17, 0.42); + padding-top: clamp(24px, 3vw, 38px); + border-top: 1px solid rgba(17, 17, 17, 0.14); + margin-bottom: clamp(20px, 3vw, 30px); + } + + .est-list { + display: flex; + gap: 18px; + overflow-x: auto; + scroll-snap-type: x mandatory; + padding-bottom: 12px; + margin-bottom: clamp(6px, 1vw, 10px); + -webkit-overflow-scrolling: touch; + } + + .est-list::-webkit-scrollbar { + height: 4px; + } + + .est-list::-webkit-scrollbar-thumb { + background: rgba(17, 17, 17, 0.18); + border-radius: 100px; + } + + .est-row { + scroll-snap-align: start; + flex: 0 0 clamp(260px, 30vw, 340px); + min-height: 220px; + padding: clamp(24px, 2.6vw, 32px); + border: 1px solid rgba(17, 17, 17, 0.14); + border-radius: 20px; + display: flex; + flex-direction: column; + justify-content: space-between; + transition: border-color 0.3s ease, transform 0.3s ease; + } + + .est-row:hover { + border-color: rgba(200, 16, 46, 0.4); + transform: translateY(-4px); + } + + .est-row-name { + font-size: 20px; + font-weight: 900; + color: #111111; + } + + .est-row-role { + font-size: 13px; + font-weight: 800; + letter-spacing: 1.4px; + text-transform: uppercase; + color: #c8102e; + margin-top: 6px; + } + + .est-row-line { + font-size: 15px; + line-height: 1.6; + color: rgba(17, 17, 17, 0.62); + margin: 28px 0 0; + } + + @media (max-width: 1000px) { + .est-head, + .est-feature { grid-template-columns: 1fr; } + .est-row { + min-height: 0; + flex-basis: 78vw; + } + } + + @media (max-width: 640px) { + .est-section { padding-top: 54px; padding-bottom: 54px; } + .est-title { + font-size: clamp(34px, 10vw, 40px) !important; + letter-spacing: -0.045em !important; + overflow-wrap: anywhere; + } + .est-quote-text { + font-size: clamp(25px, 8vw, 34px); + overflow-wrap: anywhere; + } + .est-photo, + .est-copy { border-radius: 20px; } + .est-photo { min-height: 420px; } + } + a:[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$1e"}}],"$L1f"] +20:T16dc, + .epn-section { + position: relative; + width: calc(100% - 40px); + margin: clamp(24px, 4vw, 40px) auto; + border-radius: 28px; + overflow: hidden; + box-sizing: border-box; + background: #09090b; + padding: clamp(68px, 8vw, 112px) 0; + } + + .epn-section::before { + content: ""; + position: absolute; + inset: 0; + background: + linear-gradient(120deg, rgba(9, 9, 11, 0.98) 0%, rgba(9, 9, 11, 0.88) 54%, rgba(192, 18, 39, 0.18) 100%), + url("/images/wings-heroslider3.png"); + background-size: cover; + background-position: center 70%; + opacity: 1; + } + + .epn-inner { + position: relative; + z-index: 1; + max-width: 1380px; + margin: 0 auto; + } + + .epn-head { + display: flex; + flex-direction: column; + align-items: flex-start; + margin-bottom: clamp(50px, 7vw, 84px); + } + + .epn-head-reveal { + width: 100%; + } + + .epn-divider { + width: 100%; + height: 1px; + margin: 18px 0 clamp(24px, 3.5vw, 40px) 0; + border: none; + background-color: rgba(255, 255, 255, 0.16); + } + + .epn-eyebrow { + font-size: 13px; + font-weight: 800; + letter-spacing: 2.5px; + text-transform: uppercase; + color: rgba(255, 255, 255, 0.52); + } + + .epn-title { + max-width: 930px; + font-size: clamp(42px, 6.3vw, 90px) !important; + font-weight: 800 !important; + letter-spacing: -0.055em !important; + line-height: 0.98 !important; + text-transform: uppercase !important; + color: #ffffff !important; + margin: 0; + } + + .epn-title em { + color: #ff5470; + font-style: normal; + } + + .epn-body { + display: grid; + grid-template-columns: minmax(280px, 0.46fr) minmax(0, 1fr); + gap: clamp(32px, 5vw, 72px); + align-items: stretch; + } + + .epn-manifesto { + border-left: 4px solid #c8102e; + padding-left: clamp(22px, 3vw, 36px); + align-self: start; + } + + .epn-intro { + font-size: clamp(22px, 2.5vw, 36px); + font-weight: 800; + line-height: 1.12; + letter-spacing: -0.035em; + color: #ffffff; + margin: 0 0 22px; + } + + .epn-note { + font-size: 15.5px; + line-height: 1.68; + color: rgba(255, 255, 255, 0.62); + margin: 0; + max-width: 38ch; + } + + .epn-grid { + display: flex; + flex-direction: column; + border-top: 1px solid rgba(255, 255, 255, 0.16); + } + + .epn-card { + position: relative; + display: grid; + grid-template-columns: 70px minmax(0, 1fr) 32px; + align-items: center; + gap: clamp(18px, 3vw, 40px); + padding: clamp(22px, 2.6vw, 32px) clamp(4px, 1vw, 16px); + border-bottom: 1px solid rgba(255, 255, 255, 0.16); + border-left: 2px solid transparent; + transition: border-color 0.3s ease, padding-left 0.3s ease, background-color 0.3s ease; + } + + .epn-card:hover { + border-left-color: #c8102e; + background: rgba(200, 16, 46, 0.06); + padding-left: clamp(20px, 2.5vw, 32px); + } + + .epn-card-index { + font-size: 15px; + font-weight: 900; + color: rgba(255, 255, 255, 0.35); + } + + .epn-card-title { + font-size: clamp(22px, 2.2vw, 30px) !important; + font-weight: 900 !important; + line-height: 1.1 !important; + letter-spacing: -0.03em !important; + text-transform: none !important; + color: #ffffff !important; + margin: 0 0 8px; + } + + .epn-card-desc { + max-width: 46ch; + font-size: 14.5px; + line-height: 1.6; + color: rgba(255, 255, 255, 0.58); + margin: 0; + } + + .epn-card-arrow { + display: flex; + color: rgba(255, 255, 255, 0.3); + transition: transform 0.3s cubic-bezier(0.16, 1, 0.3, 1), color 0.3s ease; + } + + .epn-card:hover .epn-card-arrow { + transform: translateX(4px); + color: #ff5470; + } + + .epn-cta { + margin-top: clamp(42px, 5vw, 64px); + } + + .epn-cta-btn { + display: inline-flex; + align-items: center; + gap: 10px; + padding: 16px 36px; + border-radius: 100px; + background: #c01227; + color: #ffffff !important; + font-weight: 800; + font-size: 15px; + text-decoration: none !important; + transition: transform 0.35s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.35s ease; + } + + .epn-cta-btn:hover { + transform: translateY(-3px); + box-shadow: 0 14px 30px rgba(192, 18, 39, 0.35); + } + + @media (max-width: 1024px) { + .epn-section { width: calc(100% - 24px); border-radius: 22px; } + } + + @media (max-width: 900px) { + .epn-head, + .epn-body { grid-template-columns: 1fr; } + } + + @media (max-width: 700px) { + .epn-title { + font-size: clamp(34px, 10vw, 40px) !important; + letter-spacing: -0.045em !important; + overflow-wrap: anywhere; + } + .epn-card { + grid-template-columns: 44px minmax(0, 1fr); + } + .epn-card-arrow { display: none; } + } + + @media (max-width: 460px) { + .epn-section { padding-top: 54px; padding-bottom: 54px; } + } + b:[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$20"}}],"$L21"] +22:Tdad, + .emp-cta-wrap { + width: calc(100% - 40px); + margin: clamp(24px, 4vw, 40px) auto clamp(40px, 5vw, 64px); + } + + .emp-cta { + position: relative; + overflow: hidden; + border-radius: 28px; + min-height: clamp(480px, 48vw, 680px); + background: #09090b; + display: flex; + align-items: flex-end; + } + + .emp-cta::before { + content: ""; + position: absolute; + inset: 0; + background-image: + linear-gradient(180deg, rgba(9, 9, 11, 0.18) 0%, rgba(9, 9, 11, 0.52) 48%, rgba(9, 9, 11, 0.96) 100%), + linear-gradient(90deg, rgba(9, 9, 11, 0.88) 0%, rgba(9, 9, 11, 0.35) 58%, rgba(9, 9, 11, 0.12) 100%), + url("/images/bg-header-women.webp"); + background-size: cover; + background-position: center; + transform: scale(1.02); + } + + .emp-cta-inner { + position: relative; + z-index: 1; + max-width: 1380px; + width: 100%; + margin: 0 auto; + padding: clamp(46px, 7vw, 88px) clamp(24px, 5vw, 64px); + box-sizing: border-box; + } + + .emp-cta-recap { + display: flex; + gap: clamp(28px, 4vw, 52px); + margin-bottom: clamp(28px, 4vw, 44px); + padding-bottom: clamp(24px, 3vw, 36px); + border-bottom: 1px solid rgba(255, 255, 255, 0.16); + } + + .emp-cta-recap-item { + display: flex; + align-items: baseline; + gap: 10px; + } + + .emp-cta-recap-num { + font-size: clamp(22px, 2.4vw, 32px); + font-weight: 900; + letter-spacing: -0.02em; + color: transparent; + -webkit-text-stroke: 1.3px rgba(255, 255, 255, 0.85); + } + + .emp-cta-recap-label { + font-size: 12px; + font-weight: 700; + letter-spacing: 0.6px; + color: rgba(255, 255, 255, 0.5); + } + + .emp-cta-kicker { + font-size: 13px; + font-weight: 900; + letter-spacing: 2.4px; + text-transform: uppercase; + color: #ff5470; + margin-bottom: 22px; + } + + .emp-cta-title { + max-width: 980px; + color: #ffffff !important; + font-size: clamp(44px, 7vw, 108px) !important; + font-weight: 900 !important; + line-height: 0.95 !important; + letter-spacing: -0.06em !important; + text-transform: uppercase !important; + margin: 0 0 clamp(24px, 3vw, 34px); + } + + .emp-cta-title em { + color: #ff5470; + font-style: normal; + } + + .emp-cta-bottom { + display: block; + max-width: 1120px; + } + + .emp-cta-sub { + max-width: 620px; + font-size: 16px; + line-height: 1.68; + color: rgba(255, 255, 255, 0.68); + margin: 0; + } + + @media (max-width: 1024px) { + .emp-cta-wrap { width: calc(100% - 24px); } + .emp-cta { border-radius: 22px; } + } + + @media (max-width: 760px) { + .emp-cta { min-height: 600px; } + .emp-cta::before { background-position: 76% center; } + .emp-cta-title { + font-size: clamp(36px, 11vw, 44px) !important; + letter-spacing: -0.05em !important; + overflow-wrap: anywhere; + } + .emp-cta-recap { flex-wrap: wrap; row-gap: 14px; } + } + c:[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$22"}}],"$L23"] +d:["$","script","script-0",{"src":"/_next/static/chunks/0vzdvje64yndv.js","async":true}] +e:["$","$L24",null,{"children":["$","$25",null,{"name":"Next.MetadataOutlet","children":"$@26"}]}] +12:["$","section",null,{"className":"ev-section","id":"wings-empowerment-vision","children":[["$","div",null,{"className":"ev-map","aria-hidden":"true","children":["$","$L27",null,{}]}],["$","div",null,{"className":"dm-section-container","children":["$","div",null,{"className":"ev-inner","children":[["$","$Lf",null,{"delay":0.05,"duration":0.7,"yOffset":20,"children":[["$","p",null,{"className":"ev-eyebrow","children":"/ Our Vision /"}],["$","hr",null,{"className":"ev-divider"}]]}],["$","$Lf",null,{"delay":0.12,"duration":0.85,"yOffset":30,"children":["$","h2",null,{"className":"ev-title","children":"Women Own The Future."}]}],["$","div",null,{"className":"ev-columns","children":[["$","$Lf",null,{"delay":0.18,"duration":0.8,"yOffset":25,"children":["$","p",null,{"className":"ev-statement","children":"A logistics ecosystem where women don’t just participate — they own, build, and lead."}]}],["$","$Lf",null,{"delay":0.26,"duration":0.8,"yOffset":25,"className":"ev-support","children":[["$","div",null,{"className":"ev-block","children":[["$","p",null,{"className":"ev-block-label","children":"The vision"}],["$","p",null,{"className":"ev-lead","children":"We are building an entrepreneurial ecosystem where women launch enterprises, scale operations, and shape the future of logistics from the inside."}]]}],["$","div",null,{"className":"ev-block","children":[["$","p",null,{"className":"ev-block-label","children":"Why it matters"}],["$","p",null,{"className":"ev-note","children":"Industries transform when founders emerge from every corner. Women-led enterprises bring fresh perspective, operational resilience, and long-term economic impact to logistics."}]]}],["$","div",null,{"className":"ev-block","children":[["$","p",null,{"className":"ev-block-label","children":"How Wings contributes"}],["$","p",null,{"className":"ev-note","children":"Wings provides the infrastructure — strategic partnerships, funding access, founder networks, and industry connections — that turns ambition into enterprise."}]]}]]}]]}]]}]}]]}] +14:["$","$Lf",null,{"delay":0.05,"duration":0.85,"yOffset":25,"children":[["$","div",null,{"className":"esy-eyebrow","children":"/ Our Approach /"}],["$","p",null,{"className":"esy-statement","children":["Not a program on a brochure. ",["$","em",null,{"children":"An ecosystem women can build in."}]]}]]}] +15:["$","$Lf",null,{"delay":0.15,"duration":0.8,"yOffset":25,"className":"esy-side","children":[["$","span",null,{"className":"esy-label","children":"Manifesto"}],["$","p",null,{"className":"esy-pull","children":"A venture that starts with conviction. A network that turns it into momentum."}],["$","p",null,{"className":"esy-sub","children":"Wings is designed around the moments that define a founder: the first partnership signed, the first client won, the first team hired, the first enterprise scaled."}]]}] +17:["$","div",null,{"id":"women-entrepreneurship","className":"elementor-element elementor-element-bbc6760 e-con-full e-flex cut-corner-no sticky-container-off e-con e-parent","data-id":"bbc6760","data-element_type":"container","data-e-type":"container","style":{"backgroundColor":"#1f1f1f","width":"calc(100% - 40px)","marginLeft":"20px","marginRight":"20px","borderRadius":"25px"},"children":[["$","div",null,{"className":"elementor-element elementor-element-13a7637 elementor-widget__width-auto elementor-absolute elementor-widget elementor-widget-logico_decorative_block","data-id":"13a7637","data-element_type":"widget","data-e-type":"widget","style":{"position":"absolute"},"children":["$","div",null,{"className":"elementor-widget-container","children":["$","div",null,{"className":"block-decoration animation-enable block-decoration-style-1","children":["$","div",null,{"className":"block-decoration-item"}]}]}]}],["$","div",null,{"style":{"backgroundImage":"url(/images/bg-header-women.webp)"},"className":"elementor-element elementor-element-7da6646 e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"7da6646","data-element_type":"container","data-e-type":"container"}],["$","div",null,{"className":"elementor-element elementor-element-8b5d6e6 e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"8b5d6e6","data-element_type":"container","data-e-type":"container","children":["$","div",null,{"className":"elementor-element elementor-element-1f766ea e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"1f766ea","data-element_type":"container","data-e-type":"container","children":[["$","div",null,{"className":"elementor-element elementor-element-3b61435 e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"3b61435","data-element_type":"container","data-e-type":"container","data-settings":"{\"background_background\":\"classic\"}","children":[["$","div",null,{"className":"elementor-element elementor-element-c364d1c elementor-widget elementor-widget-text-editor","data-id":"c364d1c","data-element_type":"widget","data-e-type":"widget","data-widget_type":"text-editor.default","children":["$","div",null,{"className":"elementor-widget-container","children":["$","p",null,{"children":"01"}]}]}],["$","div",null,{"className":"elementor-element elementor-element-239afbb elementor-widget elementor-widget-logico_heading","data-id":"239afbb","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_heading.default","children":["$","div",null,{"className":"elementor-widget-container","children":["$","h5",null,{"className":"logico-title","children":"Women Entrepreneurship"}]}]}],["$","div",null,{"className":"elementor-element elementor-element-0d307dd elementor-widget elementor-widget-text-editor","data-id":"0d307dd","data-element_type":"widget","data-e-type":"widget","data-widget_type":"text-editor.default","children":["$","div",null,{"className":"elementor-widget-container","children":["$","p",null,{"children":"An ecosystem where women build, own, and scale enterprises across logistics."}]}]}]]}],["$","div",null,{"className":"elementor-element elementor-element-5aea22e e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"5aea22e","data-element_type":"container","data-e-type":"container","data-settings":"{\"background_background\":\"classic\"}","children":["$","div",null,{"className":"elementor-element elementor-element-46b9ffa elementor-widget elementor-widget-logico_button","data-id":"46b9ffa","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_button.default","children":["$","div",null,{"className":"elementor-widget-container","children":["$","div",null,{"className":"button-widget","children":["$","div",null,{"className":"button-container","children":["$","a",null,{"href":"#wings-empowerment-programs","className":"logico-small-button","children":["Explore the ecosystem",["$","svg",null,{"viewBox":"0 0 13 20","children":"$L28"}]]}]}]}]}]}]}]]}]}],"$L29"]}] +19:["$","section",null,{"className":"epr-section","id":"wings-empowerment-programs","children":["$","div",null,{"className":"dm-section-container","children":["$","div",null,{"className":"epr-inner","children":[["$","div",null,{"className":"epr-head","children":[["$","$Lf",null,{"delay":0.05,"duration":0.75,"yOffset":20,"className":"epr-head-reveal","children":[["$","div",null,{"className":"epr-eyebrow","children":"/ Entrepreneurship Pillars /"}],["$","hr",null,{"className":"epr-divider"}]]}],["$","$Lf",null,{"delay":0.1,"duration":0.85,"yOffset":24,"children":["$","h2",null,{"className":"epr-title","children":"Every pillar is built around ownership."}]}]]}],["$","div",null,{"className":"epr-stage","children":[["$","div",null,{"className":"epr-aside-wrap","children":["$","aside",null,{"className":"epr-aside","children":[["$","div",null,{"className":"epr-aside-map","aria-hidden":"true","children":["$","$L27",null,{}]}],["$","$Lf",null,{"delay":0.05,"duration":0.8,"yOffset":24,"className":"epr-aside-content","children":[["$","div",null,{"className":"epr-aside-num","children":"05"}],["$","p",null,{"className":"epr-aside-copy","children":["Building tomorrow’s ",["$","em",null,{"children":"women entrepreneurs."}]]}],["$","p",null,{"className":"epr-aside-desc","children":"Every enterprise starts with one decision. Our pillars move women from idea to ownership through mentorship, real industry partnerships, and hands-on venture building across the logistics ecosystem."}],["$","hr",null,{"className":"epr-aside-divider"}],["$","div",null,{"className":"epr-aside-label","children":"Journey Summary"}],["$","p",null,{"className":"epr-aside-desc","children":"Each pillar builds on the one before it — moving founders from validating an idea, to forming partnerships, to receiving hands-on guidance, to growing a sustainable logistics business."}],["$","div",null,{"className":"epr-aside-label","children":"What Participants Gain"}],["$","ul",null,{"className":"epr-aside-gains-list","children":[["$","li","Business validation",{"children":"Business validation"}],["$","li","Industry partnerships",{"children":"Industry partnerships"}],["$","li","Founder mentorship",{"children":"Founder mentorship"}],["$","li","Market readiness",{"children":"Market readiness"}],["$","li","Sustainable growth",{"children":"Sustainable growth"}]]}],["$","p",null,{"className":"epr-aside-final","children":["The destination is never just launching a business. It is building ",["$","em",null,{"children":"women-led enterprises that strengthen the logistics ecosystem."}]]}]]}]]}]}],["$","div",null,{"children":[["$","$Lf",null,{"delay":0.1,"duration":0.8,"yOffset":24,"children":["$","div",null,{"className":"epr-list","children":[["$","article","Venture Launchpad",{"className":"epr-row epr-row-featured","children":[["$","div",null,{"className":"epr-row-index","children":"01"}],["$","div",null,{"children":[["$","span",null,{"className":"epr-row-flag","children":"Where most founders begin"}],["$","span",null,{"className":"epr-row-type","children":"Start building"}],["$","h3",null,{"className":"epr-row-title","children":"Venture Launchpad"}],["$","p",null,{"className":"epr-row-desc","children":"Business model validation, market entry strategy, entity formation, and go-to-market execution for women-led logistics enterprises."}]]}]]}],["$","article","Strategic Partnerships",{"className":"epr-row","children":[["$","div",null,{"className":"epr-row-index","children":"02"}],["$","div",null,{"children":[false,["$","span",null,{"className":"epr-row-type","children":"Connect and grow"}],["$","h3",null,{"className":"epr-row-title","children":"Strategic Partnerships"}],["$","p",null,{"className":"epr-row-desc","children":"Direct access to supply chain networks, B2B relationships, industry alliances, and commercial agreements that accelerate growth."}]]}]]}],["$","article","Founder Mentorship",{"className":"epr-row","children":[["$","div",null,{"className":"epr-row-index","children":"03"}],["$","div",null,{"children":[false,["$","span",null,{"className":"epr-row-type","children":"Learn from builders"}],["$","h3",null,{"className":"epr-row-title","children":"Founder Mentorship"}],["$","p",null,{"className":"epr-row-desc","children":"One-on-one guidance from established entrepreneurs, operators, and investors who understand what it takes to scale."}]]}]]}],["$","article","Growth & Scale",{"className":"epr-row","children":["$L2a","$L2b"]}],"$L2c"]}]}],"$L2d"]}]]}]]}]}]}] +1b:["$","section",null,{"className":"eim-section","id":"wings-empowerment-impact","children":["$","div",null,{"className":"eim-inner dm-section-container","children":[["$","$Lf",null,{"delay":0.05,"duration":0.75,"yOffset":20,"children":[["$","div",null,{"className":"eim-eyebrow","children":"/ Our Impact /"}],["$","h2",null,{"className":"eim-title","children":"Growth we can measure"}]]}],["$","hr",null,{"className":"eim-divider"}],["$","$Lf",null,{"delay":0.08,"duration":0.8,"yOffset":20,"className":"eim-hero-row","children":[["$","span",null,{"className":"eim-hero-num","children":["$","$L2e",null,{"end":500,"suffix":"+","duration":2.2,"triggerOnce":true}]}],["$","span",null,{"className":"eim-hero-label","children":"Women-Led Enterprises In The Ecosystem"}]]}],["$","hr",null,{"className":"eim-divider-2"}],["$","$Lf",null,{"delay":0.1,"duration":0.8,"yOffset":20,"children":["$","div",null,{"className":"eim-secondary-row","children":[["$","div","Enterprises Launched",{"className":"eim-secondary-item","children":[["$","span",null,{"className":"eim-secondary-num","children":["$","$L2e",null,{"end":100,"suffix":"+","duration":2,"triggerOnce":true}]}],["$","span",null,{"className":"eim-secondary-label","children":"Enterprises Launched"}]]}],["$","div","Industry Partners",{"className":"eim-secondary-item","children":[["$","span",null,{"className":"eim-secondary-num","children":["$","$L2e",null,{"end":25,"suffix":"+","duration":2,"triggerOnce":true}]}],["$","span",null,{"className":"eim-secondary-label","children":"Industry Partners"}]]}],["$","div","Cities Active",{"className":"eim-secondary-item","children":[["$","span",null,{"className":"eim-secondary-num","children":["$","$L2e",null,{"end":15,"suffix":"+","duration":2,"triggerOnce":true}]}],["$","span",null,{"className":"eim-secondary-label","children":"Cities Active"}]]}],["$","div","In Economic Value Created",{"className":"eim-secondary-item","children":[["$","span",null,{"className":"eim-secondary-num","children":"Millions"}],["$","span",null,{"className":"eim-secondary-label","children":"In Economic Value Created"}]]}]]}]}],["$","$Lf",null,{"delay":0.12,"duration":0.75,"yOffset":20,"className":"eim-copy","children":["$","p",null,{"children":"Every number on this page represents a woman who walked into a room with an idea and walked out with a business. An enterprise launched, a partnership secured, a market entered — each is a marker of real economic impact, not a statistic collected for its own sake."}]}]]}]}] +1d:["$","section",null,{"className":"ehw-section","id":"wings-empowerment-how-it-works","children":["$","div",null,{"className":"dm-section-container","children":["$","div",null,{"className":"ehw-inner","children":[["$","div",null,{"className":"ehw-head","children":[["$","$Lf",null,{"delay":0.05,"duration":0.75,"yOffset":20,"className":"ehw-head-reveal","children":[["$","div",null,{"className":"ehw-eyebrow","children":"/ The Founder Journey /"}],["$","hr",null,{"className":"ehw-divider"}]]}],["$","$Lf",null,{"delay":0.1,"duration":0.85,"yOffset":24,"children":["$","h2",null,{"className":"ehw-title","children":"A clear path, from idea to enterprise"}]}]]}],["$","$L2f",null,{"className":"ehw-sequence","stagger":0.12,"duration":0.7,"yOffset":30,"triggerOnce":true,"children":[["$","div","01",{"className":"ehw-step","children":[["$","div",null,{"className":"ehw-step-num","children":"01"}],["$","div",null,{"className":"ehw-step-kicker","aria-hidden":"true","children":[["$","svg",null,{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","children":["$","path",null,{"d":"M7 17 17 7M9 7h8v8"}]}],["$","span",null,{"children":"Step"}]]}],["$","h3",null,{"className":"ehw-step-title","children":"Apply"}],["$","p",null,{"className":"ehw-step-desc","children":"Submit your venture idea and tell us about your entrepreneurial vision."}]]}],["$","div","02",{"className":"ehw-step","children":[["$","div",null,{"className":"ehw-step-num","children":"02"}],["$","div",null,{"className":"ehw-step-kicker","aria-hidden":"true","children":[["$","svg",null,{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","children":["$","path",null,{"d":"M7 17 17 7M9 7h8v8"}]}],["$","span",null,{"children":"Step"}]]}],["$","h3",null,{"className":"ehw-step-title","children":"Discovery"}],["$","p",null,{"className":"ehw-step-desc","children":"Identify the right market opportunity and validate your business model."}]]}],["$","div","03",{"className":"ehw-step is-accent","children":[["$","div",null,{"className":"ehw-step-num","children":"03"}],["$","div",null,{"className":"ehw-step-kicker","aria-hidden":"true","children":[["$","svg",null,{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","children":["$","path",null,{"d":"M7 17 17 7M9 7h8v8"}]}],["$","span",null,{"children":"Step"}]]}],["$","h3",null,{"className":"ehw-step-title","children":"Build"}],["$","p",null,{"className":"ehw-step-desc","children":"Develop your enterprise with ecosystem support, mentorship, and partnerships."}]]}],["$","div","04",{"className":"ehw-step","children":[["$","div",null,{"className":"ehw-step-num","children":"04"}],["$","div",null,{"className":"ehw-step-kicker","aria-hidden":"true","children":[["$","svg",null,{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","children":["$","path",null,{"d":"M7 17 17 7M9 7h8v8"}]}],["$","span",null,{"children":"Step"}]]}],["$","h3",null,{"className":"ehw-step-title","children":"Launch"}],["$","p",null,{"className":"ehw-step-desc","children":"Go to market with strategic backing, industry connections, and operational infrastructure."}]]}],["$","div","05",{"className":"ehw-step","children":[["$","div",null,{"className":"ehw-step-num","children":"05"}],["$","div",null,{"className":"ehw-step-kicker","aria-hidden":"true","children":[["$","svg",null,{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2","strokeLinecap":"round","strokeLinejoin":"round","children":["$","path",null,{"d":"M7 17 17 7M9 7h8v8"}]}],["$","span",null,{"children":"Step"}]]}],["$","h3",null,{"className":"ehw-step-title","children":"Scale"}],["$","p",null,{"className":"ehw-step-desc","children":"Grow your team, expand operations, and lead your enterprise to sustainable impact."}]]}]]}]]}]}]}] +1f:["$","section",null,{"className":"est-section","id":"wings-empowerment-stories","children":["$","div",null,{"className":"dm-section-container","children":["$","div",null,{"className":"est-inner","children":[["$","div",null,{"className":"est-head","children":[["$","$Lf",null,{"delay":0.05,"duration":0.75,"yOffset":20,"className":"est-head-reveal","children":[["$","div",null,{"className":"est-eyebrow","children":"/ Women in Motion /"}],["$","hr",null,{"className":"est-divider"}]]}],["$","$Lf",null,{"delay":0.1,"duration":0.85,"yOffset":24,"children":["$","h2",null,{"className":"est-title","children":"Small steps. Lasting careers."}]}]]}],["$","div",null,{"className":"est-feature","children":[["$","$Lf",null,{"delay":0.05,"duration":0.85,"yOffset":24,"className":"est-photo","children":[["$","$L30",null,{"src":"/images/women-hero-slider-3.png","alt":"A Wings program participant on the operations floor at a Doormile logistics hub","fill":true,"sizes":"(max-width: 1000px) 100vw, 58vw","style":{"objectPosition":"80% 22%"}}],["$","div",null,{"className":"est-photo-caption","children":[["$","span",null,{"children":"Wings Participant"}],["$","strong",null,{"children":" building a career, one milestone at a time."}]]}]]}],["$","$Lf",null,{"delay":0.12,"duration":0.85,"yOffset":24,"className":"est-copy","children":["$","div",null,{"children":[["$","span",null,{"className":"est-quote-mark","aria-hidden":"true","children":"“"}],["$","p",null,{"className":"est-quote-text","children":"I came in looking for a way forward. I found the confidence to lead."}],["$","p",null,{"className":"est-narrative","children":"She started with limited exposure to logistics. Through structured training, mentorship, and hands-on experience, she built real operational skills — and now supports other women stepping into the industry."}]]}]}]]}]]}]}]}] +21:["$","section",null,{"className":"epn-section","id":"wings-empowerment-partners","children":["$","div",null,{"className":"dm-section-container","children":["$","div",null,{"className":"epn-inner","children":[["$","div",null,{"className":"epn-head","children":[["$","$Lf",null,{"delay":0.05,"duration":0.75,"yOffset":20,"className":"epn-head-reveal","children":[["$","div",null,{"className":"epn-eyebrow","children":"/ Collaboration /"}],["$","hr",null,{"className":"epn-divider"}]]}],["$","$Lf",null,{"delay":0.1,"duration":0.85,"yOffset":24,"children":["$","h2",null,{"className":"epn-title","children":["Partnership is how ",["$","em",null,{"children":"ecosystems grow."}]]}]}]]}],["$","div",null,{"className":"epn-body","children":[["$","$Lf",null,{"delay":0.08,"duration":0.8,"yOffset":22,"className":"epn-manifesto","children":[["$","p",null,{"className":"epn-intro","children":"The strongest ecosystems are built by many hands."}],["$","p",null,{"className":"epn-note","children":"Wings partners bring industry access, strategic infrastructure, capital, and networks. Together, we build the foundation women-led enterprises need to thrive."}]]}],["$","$Lf",null,{"delay":0.12,"duration":0.8,"yOffset":22,"children":["$","div",null,{"className":"epn-grid","children":[["$","article","Industry Partners",{"className":"epn-card","children":[["$","span",null,{"className":"epn-card-index","children":"01"}],["$","div",null,{"children":[["$","h3",null,{"className":"epn-card-title","children":"Industry Partners"}],["$","p",null,{"className":"epn-card-desc","children":"Strategic alliances with logistics operators, supply chain leaders, and distribution networks that open doors for women-led enterprises."}]]}],["$","span",null,{"className":"epn-card-arrow","aria-hidden":"true","children":["$","svg",null,{"width":"20","height":"20","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.25","strokeLinecap":"round","strokeLinejoin":"round","children":["$","path",null,{"d":"M5 12h14M13 6l6 6-6 6"}]}]}]]}],["$","article","Technology Partners",{"className":"epn-card","children":[["$","span",null,{"className":"epn-card-index","children":"02"}],["$","div",null,{"children":[["$","h3",null,{"className":"epn-card-title","children":"Technology Partners"}],["$","p",null,{"className":"epn-card-desc","children":"Platforms, tools, and infrastructure that give founders the operational edge to compete and scale efficiently."}]]}],["$","span",null,{"className":"epn-card-arrow","aria-hidden":"true","children":["$","svg",null,{"width":"20","height":"20","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.25","strokeLinecap":"round","strokeLinejoin":"round","children":["$","path",null,{"d":"M5 12h14M13 6l6 6-6 6"}]}]}]]}],["$","article","Community Networks",{"className":"epn-card","children":[["$","span",null,{"className":"epn-card-index","children":"03"}],["$","div",null,{"children":[["$","h3",null,{"className":"epn-card-title","children":"Community Networks"}],["$","p",null,{"className":"epn-card-desc","children":"Founder communities, women's business networks, and ecosystem builders who extend reach and amplify impact."}]]}],["$","span",null,{"className":"epn-card-arrow","aria-hidden":"true","children":["$","svg",null,{"width":"20","height":"20","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.25","strokeLinecap":"round","strokeLinejoin":"round","children":["$","path",null,{"d":"M5 12h14M13 6l6 6-6 6"}]}]}]]}],["$","article","Investment Partners",{"className":"epn-card","children":[["$","span",null,{"className":"epn-card-index","children":"04"}],["$","div",null,{"children":[["$","h3",null,{"className":"epn-card-title","children":"Investment Partners"}],["$","p",null,{"className":"epn-card-desc","children":"Funding access, grant programs, angel networks, and capital partners aligned with women-led enterprise growth."}]]}],["$","span",null,{"className":"epn-card-arrow","aria-hidden":"true","children":["$","svg",null,{"width":"20","height":"20","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.25","strokeLinecap":"round","strokeLinejoin":"round","children":["$","path",null,{"d":"M5 12h14M13 6l6 6-6 6"}]}]}]]}]]}]}]]}]]}]}]}] +23:["$","div",null,{"className":"emp-cta-wrap","children":["$","section",null,{"className":"emp-cta","aria-labelledby":"empowerment-final-cta","children":["$","div",null,{"className":"emp-cta-inner","children":[["$","div",null,{"className":"emp-cta-recap","children":[["$","div",null,{"className":"emp-cta-recap-item","children":[["$","span",null,{"className":"emp-cta-recap-num","children":"500+"}],["$","span",null,{"className":"emp-cta-recap-label","children":"Women Founders"}]]}],["$","div",null,{"className":"emp-cta-recap-item","children":[["$","span",null,{"className":"emp-cta-recap-num","children":"100+"}],["$","span",null,{"className":"emp-cta-recap-label","children":"Enterprises Launched"}]]}],["$","div",null,{"className":"emp-cta-recap-item","children":[["$","span",null,{"className":"emp-cta-recap-num","children":"25+"}],["$","span",null,{"className":"emp-cta-recap-label","children":"Industry Partners"}]]}]]}],["$","div",null,{"className":"emp-cta-kicker","children":"/ Build the next mile /"}],["$","h2",null,{"className":"emp-cta-title","id":"empowerment-final-cta","children":["Build what’s ",["$","em",null,{"children":"next."}]]}],["$","div",null,{"className":"emp-cta-bottom","children":["$","p",null,{"className":"emp-cta-sub","children":"Join Doormile Wings in building the entrepreneurial ecosystem where women launch, grow, and lead enterprises that create lasting value across logistics."}]}]]}]}]}] +26:null +28:["$","polyline",null,{"points":"0.5 19.5 3 19.5 12.5 10 3 0.5"}] +29:["$","div",null,{"className":"elementor-element elementor-element-b6e14bd e-flex e-con-boxed cut-corner-no sticky-container-off e-con e-child","data-id":"b6e14bd","data-element_type":"container","data-e-type":"container","data-settings":"{\"background_background\":\"classic\"}","children":[["$","div",null,{"className":"ws-map","aria-hidden":"true","children":["$","$L27",null,{}]}],["$","div",null,{"className":"e-con-inner","children":["$","div",null,{"className":"elementor-element elementor-element-90cc867 e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"90cc867","data-element_type":"container","data-e-type":"container","children":[["$","div",null,{"className":"elementor-element elementor-element-24c0280 elementor-widget__width-inherit elementor-widget elementor-widget-logico_heading","data-id":"24c0280","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_heading.default","children":["$","div",null,{"className":"elementor-widget-container","children":["$","div",null,{"className":"logico-title","children":"/ Doormile Wings /"}]}]}],["$","div",null,{"className":"elementor-element elementor-element-2ed47f3 e-con-full e-grid cut-corner-no sticky-container-off e-con e-child","data-id":"2ed47f3","data-element_type":"container","data-e-type":"container","children":[["$","div",null,{"className":"elementor-element elementor-element-36efec7 e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"36efec7","data-element_type":"container","data-e-type":"container","children":[["$","$Lf",null,{"duration":0.8,"yOffset":28,"triggerOnce":true,"children":["$","div",null,{"className":"elementor-element elementor-element-778840d elementor-widget elementor-widget-logico_heading","data-id":"778840d","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_heading.default","children":["$","div",null,{"className":"elementor-widget-container","children":["$","h3",null,{"className":"logico-title","children":"Women Building The Next Mile"}]}]}]}],["$","div",null,{"className":"elementor-element elementor-element-bbfb67f elementor-widget elementor-widget-image","data-id":"bbfb67f","data-element_type":"widget","data-e-type":"widget","data-widget_type":"image.default","children":["$","div",null,{"className":"elementor-widget-container","children":["$","$L30",null,{"src":"/images/bg-map-women.webp","alt":"Women Map","width":626,"height":692,"style":{"maxWidth":"100%","height":"auto"}}]}]}]]}],["$","div",null,{"className":"elementor-element elementor-element-b2c956f e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"b2c956f","data-element_type":"container","data-e-type":"container","children":["$","div",null,{"id":"ws-stories","children":[["$","$L2f",null,{"className":"ws__stats","stagger":0.1,"duration":0.6,"yOffset":20,"triggerOnce":true,"children":[["$","div","Women Founders",{"className":"ws__stat","children":[["$","div",null,{"className":"ws__stat-num","children":[["$","$L2e",null,{"end":500,"suffix":"","duration":1.8,"triggerOnce":true}],["$","span",null,{"children":"+"}]]}],["$","div",null,{"className":"ws__stat-label","children":"Women Founders"}]]}],["$","div","Cities Active",{"className":"ws__stat","children":[["$","div",null,{"className":"ws__stat-num","children":[["$","$L2e",null,{"end":35,"suffix":"","duration":1.8,"triggerOnce":true}],["$","span",null,{"children":"+"}]]}],["$","div",null,{"className":"ws__stat-label","children":"Cities Active"}]]}],["$","div","Enterprises Launched",{"className":"ws__stat","children":[["$","div",null,{"className":"ws__stat-num","children":[["$","$L2e",null,{"end":100,"suffix":"","duration":1.8,"triggerOnce":true}],["$","span",null,{"children":"+"}]]}],["$","div",null,{"className":"ws__stat-label","children":"Enterprises Launched"}]]}]]}],["$","$L2f",null,{"className":"ws__cards","stagger":0.08,"duration":0.6,"yOffset":24,"triggerOnce":true,"children":[["$","div","Venture Building",{"className":"ws__card","children":[["$","span",null,{"className":"ws__card-icon","aria-hidden":"true","children":["$","svg",null,{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"1.8","strokeLinecap":"round","strokeLinejoin":"round","children":[["$","path",null,{"d":"M4 19V5"}],["$","path",null,{"d":"M4 7h12l-2 4 2 4H4"}],["$","path",null,{"d":"M18 19h2"}]]}]}],["$","div",null,{"className":"ws__card-title","children":"Venture Building"}],["$","p",null,{"className":"ws__card-desc","children":"End-to-end support for women launching logistics enterprises — from ideation to market entry."}]]}],"$L31","$L32","$L33"]}]]}]}]]}]]}]}]]}] +2a:["$","div",null,{"className":"epr-row-index","children":"04"}] +2b:["$","div",null,{"children":[false,["$","span",null,{"className":"epr-row-type","children":"Scale with confidence"}],["$","h3",null,{"className":"epr-row-title","children":"Growth & Scale"}],["$","p",null,{"className":"epr-row-desc","children":"Operational expansion frameworks, team building, funding readiness, and sustainable unit economics for ventures ready to grow."}]]}] +2c:["$","article","Industry Immersion",{"className":"epr-row","children":[["$","div",null,{"className":"epr-row-index","children":"05"}],["$","div",null,{"children":[false,["$","span",null,{"className":"epr-row-type","children":"See the opportunity"}],["$","h3",null,{"className":"epr-row-title","children":"Industry Immersion"}],["$","p",null,{"className":"epr-row-desc","children":"Real exposure to logistics operations, supply chain infrastructure, and distribution networks before founders commit to a vertical."}]]}]]}] +2d:["$","div",null,{"className":"epr-cta","children":["$","$L34",null,{"href":"/contact","className":"epr-cta-link","children":["Start your venture",["$","svg",null,{"width":"16","height":"16","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"2.25","strokeLinecap":"round","strokeLinejoin":"round","children":["$","path",null,{"d":"M5 12h14M13 6l6 6-6 6"}]}]]}]}] +31:["$","div","Entrepreneurship",{"className":"ws__card","children":[["$","span",null,{"className":"ws__card-icon","aria-hidden":"true","children":["$","svg",null,{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"1.8","strokeLinecap":"round","strokeLinejoin":"round","children":[["$","rect",null,{"x":"3","y":"7","width":"18","height":"13","rx":"2"}],["$","path",null,{"d":"M8 7V5a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2M3 12h18"}]]}]}],["$","div",null,{"className":"ws__card-title","children":"Entrepreneurship"}],["$","p",null,{"className":"ws__card-desc","children":"Women building, owning, and scaling sustainable businesses within the logistics ecosystem."}]]}] +32:["$","div","Founder Networks",{"className":"ws__card","children":[["$","span",null,{"className":"ws__card-icon","aria-hidden":"true","children":["$","svg",null,{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"1.8","strokeLinecap":"round","strokeLinejoin":"round","children":[["$","circle",null,{"cx":"8","cy":"8","r":"3"}],["$","circle",null,{"cx":"16","cy":"8","r":"3"}],["$","path",null,{"d":"M2.5 20c.7-3.1 2.8-5 5.5-5s4.8 1.9 5.5 5"}],["$","path",null,{"d":"M10.5 20c.7-3.1 2.8-5 5.5-5s4.8 1.9 5.5 5"}]]}]}],["$","div",null,{"className":"ws__card-title","children":"Founder Networks"}],["$","p",null,{"className":"ws__card-desc","children":"Peer communities and strategic connections that accelerate growth and open new markets."}]]}] +33:["$","div","Enterprise Leadership",{"className":"ws__card","children":[["$","span",null,{"className":"ws__card-icon","aria-hidden":"true","children":["$","svg",null,{"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"1.8","strokeLinecap":"round","strokeLinejoin":"round","children":[["$","circle",null,{"cx":"12","cy":"9","r":"5"}],["$","path",null,{"d":"M9 13.5 7.5 21 12 18l4.5 3-1.5-7.5"}]]}]}],["$","div",null,{"className":"ws__card-title","children":"Enterprise Leadership"}],["$","p",null,{"className":"ws__card-desc","children":"Strategic decision-making, operational excellence, and vision-driven leadership for women founders."}]]}] diff --git a/build/empowerment/__next.empowerment.txt b/build/empowerment/__next.empowerment.txt new file mode 100644 index 0000000..e0935ae --- /dev/null +++ b/build/empowerment/__next.empowerment.txt @@ -0,0 +1,5 @@ +1:"$Sreact.fragment" +2:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:[] +0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/express.html b/build/express.html new file mode 100644 index 0000000..8509a17 --- /dev/null +++ b/build/express.html @@ -0,0 +1,756 @@ +Express – Doormile

    Doormile

    Doormile logo
    Address
    Hyderabad

    5th Floor, Vision Ultima,
    Street No.3, Jayabheri Enclave,
    Gachibowli, Hyderabad,
    Telangana 500032.

    Coimbatore

    Mayflower Valencia,
    Near Nava India Bus Stop,
    Avinashi Road,
    Udayampalayam,
    Tamil Nadu 641037.

    Bengaluru

    C612, 6th Floor,
    Trifecta Starlight,
    ITPL Road,
    Garudacharapalya,
    Mahadevapura,
    Bangalore 560048,
    Karnataka, India.

    Contact Us

    Tel : +91 86886 97941

    Email

    care@doormile.com

    Solutions / Express

    Doormile Express is on its way

    We're building a fast-lane logistics service for time-critical shipments. Check back soon, or explore what Doormile already delivers today.

    \ No newline at end of file diff --git a/build/express.txt b/build/express.txt new file mode 100644 index 0000000..b4ee347 --- /dev/null +++ b/build/express.txt @@ -0,0 +1,113 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +11:I[68027,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"P":null,"c":["","express"],"q":"","i":false,"f":[[["",{"children":["express",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","div",null,{"id":"express","className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":[["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":["$","section",null,{"className":"express-coming-soon","children":["$","div",null,{"className":"express-coming-soon-inner","children":[["$","span",null,{"className":"express-coming-soon-eyebrow","children":"Solutions / Express"}],["$","h1",null,{"className":"express-coming-soon-heading","children":["Doormile Express is ",["$","span",null,{"className":"express-coming-soon-accent","children":"on its way"}]]}],["$","p",null,{"className":"express-coming-soon-text","children":"We're building a fast-lane logistics service for time-critical shipments. Check back soon, or explore what Doormile already delivers today."}],"$Lc"]}]}]}]}],"$Ld"]}],null,"$Le"]}],{},null,false,null]},null,false,"$@f"]},null,false,null],"$L10",false]],"m":"$undefined","G":["$11",["$L12"]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"kmSVPuUqY3Rhw5xy4D2nn"} +13:I[22016,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],""] +15:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +16:"$Sreact.suspense" +19:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +1b:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +c:["$","div",null,{"className":"express-coming-soon-actions","children":[["$","$L13",null,{"href":"/doormile-wings","prefetch":true,"className":"logico-alter-button","children":"Explore Doormile Wings"}],["$","$L13",null,{"href":"/contact","className":"express-coming-soon-link","children":"Get notified when we launch →"}]]}] +14:Tb69, + .express-coming-soon { + --logico-dark-text-color: #ffffff; + --logico-light-text-color: #bebebe; + --logico-accent-color: #C01227; + min-height: calc(100vh - 160px); + display: flex; + align-items: center; + justify-content: center; + padding: clamp(48px, 8vw, 120px) 24px; + background: radial-gradient(120% 120% at 50% 0%, rgba(192, 18, 39, 0.18) 0%, rgba(26, 26, 26, 0.98) 55%, #111111 100%); + } + .express-coming-soon-inner { + max-width: 720px; + text-align: center; + } + .express-coming-soon-eyebrow { + display: inline-block; + font-size: 13px; + font-weight: 700; + letter-spacing: 0.14em; + text-transform: uppercase; + color: var(--logico-accent-color); + margin-bottom: 20px; + } + .express-coming-soon-heading { + font-family: 'Manrope', sans-serif; + font-size: clamp(32px, 5vw, 56px); + line-height: 1.15em; + font-weight: 700; + color: var(--logico-dark-text-color); + margin: 0 0 20px; + } + .express-coming-soon-accent { + color: var(--logico-accent-color); + } + .express-coming-soon-text { + font-size: 16px; + line-height: 1.75em; + color: var(--logico-light-text-color); + margin: 0 auto 36px; + max-width: 520px; + } + .express-coming-soon-actions { + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: center; + gap: 24px; + } + .express-coming-soon .logico-alter-button { + color: #ffffff !important; + border-color: rgba(255, 255, 255, 0.45) !important; + background: transparent !important; + } + .express-coming-soon .logico-alter-button:hover { + background: #ffffff !important; + color: #1a1a1a !important; + border-color: #ffffff !important; + } + .express-coming-soon-link { + font-size: 15px; + font-weight: 600; + color: var(--logico-light-text-color); + text-decoration: underline; + text-underline-offset: 4px; + } + .express-coming-soon-link:hover { + color: #ffffff; + } + @media (max-width: 480px) { + .express-coming-soon-actions { + flex-direction: column; + gap: 16px; + } + } + d:["$","style",null,{"suppressHydrationWarning":true,"dangerouslySetInnerHTML":{"__html":"$14"}}] +e:["$","$L15",null,{"children":["$","$16",null,{"name":"Next.MetadataOutlet","children":"$@17"}]}] +18:[] +f:"$W18" +10:["$","$1","h",{"children":[null,["$","$L19",null,{"children":"$L1a"}],["$","div",null,{"hidden":true,"children":["$","$L1b",null,{"children":["$","$16",null,{"name":"Next.Metadata","children":"$L1c"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}] +12:["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}] +1a:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] +1d:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +17:null +1c:[["$","title","0",{"children":"Express – Doormile"}],["$","meta","1",{"name":"description","content":"Doormile Express — a fast-lane logistics service for time-critical shipments. Coming soon."}],["$","meta","2",{"name":"robots","content":"noindex, follow"}],["$","link","3",{"rel":"canonical","href":"https://doormile.com/express"}],["$","link","4",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","5",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","6",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","7",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L1d","8",{}]] diff --git a/build/express/__next._full.txt b/build/express/__next._full.txt new file mode 100644 index 0000000..b4ee347 --- /dev/null +++ b/build/express/__next._full.txt @@ -0,0 +1,113 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +11:I[68027,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"P":null,"c":["","express"],"q":"","i":false,"f":[[["",{"children":["express",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","div",null,{"id":"express","className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":[["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":["$","section",null,{"className":"express-coming-soon","children":["$","div",null,{"className":"express-coming-soon-inner","children":[["$","span",null,{"className":"express-coming-soon-eyebrow","children":"Solutions / Express"}],["$","h1",null,{"className":"express-coming-soon-heading","children":["Doormile Express is ",["$","span",null,{"className":"express-coming-soon-accent","children":"on its way"}]]}],["$","p",null,{"className":"express-coming-soon-text","children":"We're building a fast-lane logistics service for time-critical shipments. Check back soon, or explore what Doormile already delivers today."}],"$Lc"]}]}]}]}],"$Ld"]}],null,"$Le"]}],{},null,false,null]},null,false,"$@f"]},null,false,null],"$L10",false]],"m":"$undefined","G":["$11",["$L12"]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"kmSVPuUqY3Rhw5xy4D2nn"} +13:I[22016,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],""] +15:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +16:"$Sreact.suspense" +19:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +1b:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +c:["$","div",null,{"className":"express-coming-soon-actions","children":[["$","$L13",null,{"href":"/doormile-wings","prefetch":true,"className":"logico-alter-button","children":"Explore Doormile Wings"}],["$","$L13",null,{"href":"/contact","className":"express-coming-soon-link","children":"Get notified when we launch →"}]]}] +14:Tb69, + .express-coming-soon { + --logico-dark-text-color: #ffffff; + --logico-light-text-color: #bebebe; + --logico-accent-color: #C01227; + min-height: calc(100vh - 160px); + display: flex; + align-items: center; + justify-content: center; + padding: clamp(48px, 8vw, 120px) 24px; + background: radial-gradient(120% 120% at 50% 0%, rgba(192, 18, 39, 0.18) 0%, rgba(26, 26, 26, 0.98) 55%, #111111 100%); + } + .express-coming-soon-inner { + max-width: 720px; + text-align: center; + } + .express-coming-soon-eyebrow { + display: inline-block; + font-size: 13px; + font-weight: 700; + letter-spacing: 0.14em; + text-transform: uppercase; + color: var(--logico-accent-color); + margin-bottom: 20px; + } + .express-coming-soon-heading { + font-family: 'Manrope', sans-serif; + font-size: clamp(32px, 5vw, 56px); + line-height: 1.15em; + font-weight: 700; + color: var(--logico-dark-text-color); + margin: 0 0 20px; + } + .express-coming-soon-accent { + color: var(--logico-accent-color); + } + .express-coming-soon-text { + font-size: 16px; + line-height: 1.75em; + color: var(--logico-light-text-color); + margin: 0 auto 36px; + max-width: 520px; + } + .express-coming-soon-actions { + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: center; + gap: 24px; + } + .express-coming-soon .logico-alter-button { + color: #ffffff !important; + border-color: rgba(255, 255, 255, 0.45) !important; + background: transparent !important; + } + .express-coming-soon .logico-alter-button:hover { + background: #ffffff !important; + color: #1a1a1a !important; + border-color: #ffffff !important; + } + .express-coming-soon-link { + font-size: 15px; + font-weight: 600; + color: var(--logico-light-text-color); + text-decoration: underline; + text-underline-offset: 4px; + } + .express-coming-soon-link:hover { + color: #ffffff; + } + @media (max-width: 480px) { + .express-coming-soon-actions { + flex-direction: column; + gap: 16px; + } + } + d:["$","style",null,{"suppressHydrationWarning":true,"dangerouslySetInnerHTML":{"__html":"$14"}}] +e:["$","$L15",null,{"children":["$","$16",null,{"name":"Next.MetadataOutlet","children":"$@17"}]}] +18:[] +f:"$W18" +10:["$","$1","h",{"children":[null,["$","$L19",null,{"children":"$L1a"}],["$","div",null,{"hidden":true,"children":["$","$L1b",null,{"children":["$","$16",null,{"name":"Next.Metadata","children":"$L1c"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}] +12:["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}] +1a:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] +1d:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +17:null +1c:[["$","title","0",{"children":"Express – Doormile"}],["$","meta","1",{"name":"description","content":"Doormile Express — a fast-lane logistics service for time-critical shipments. Coming soon."}],["$","meta","2",{"name":"robots","content":"noindex, follow"}],["$","link","3",{"rel":"canonical","href":"https://doormile.com/express"}],["$","link","4",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","5",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","6",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","7",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L1d","8",{}]] diff --git a/build/express/__next._head.txt b/build/express/__next._head.txt new file mode 100644 index 0000000..37eface --- /dev/null +++ b/build/express/__next._head.txt @@ -0,0 +1,6 @@ +1:"$Sreact.fragment" +2:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +3:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +4:"$Sreact.suspense" +5:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +0:{"rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"Express – Doormile"}],["$","meta","1",{"name":"description","content":"Doormile Express — a fast-lane logistics service for time-critical shipments. Coming soon."}],["$","meta","2",{"name":"robots","content":"noindex, follow"}],["$","link","3",{"rel":"canonical","href":"https://doormile.com/express"}],["$","link","4",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","5",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","6",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","7",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L5","8",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/express/__next._index.txt b/build/express/__next._index.txt new file mode 100644 index 0000000..d0b3355 --- /dev/null +++ b/build/express/__next._index.txt @@ -0,0 +1,15 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","template":["$","$La",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/express/__next._tree.txt b/build/express/__next._tree.txt new file mode 100644 index 0000000..c2a0126 --- /dev/null +++ b/build/express/__next._tree.txt @@ -0,0 +1,9 @@ +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"tree":{"name":"","param":null,"prefetchHints":16,"slots":{"children":{"name":"express","param":null,"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}}}},"staleTime":300,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/express/__next.express.__PAGE__.txt b/build/express/__next.express.__PAGE__.txt new file mode 100644 index 0000000..fac1f98 --- /dev/null +++ b/build/express/__next.express.__PAGE__.txt @@ -0,0 +1,83 @@ +1:"$Sreact.fragment" +2:I[22016,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],""] +5:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +6:"$Sreact.suspense" +3:Tb69, + .express-coming-soon { + --logico-dark-text-color: #ffffff; + --logico-light-text-color: #bebebe; + --logico-accent-color: #C01227; + min-height: calc(100vh - 160px); + display: flex; + align-items: center; + justify-content: center; + padding: clamp(48px, 8vw, 120px) 24px; + background: radial-gradient(120% 120% at 50% 0%, rgba(192, 18, 39, 0.18) 0%, rgba(26, 26, 26, 0.98) 55%, #111111 100%); + } + .express-coming-soon-inner { + max-width: 720px; + text-align: center; + } + .express-coming-soon-eyebrow { + display: inline-block; + font-size: 13px; + font-weight: 700; + letter-spacing: 0.14em; + text-transform: uppercase; + color: var(--logico-accent-color); + margin-bottom: 20px; + } + .express-coming-soon-heading { + font-family: 'Manrope', sans-serif; + font-size: clamp(32px, 5vw, 56px); + line-height: 1.15em; + font-weight: 700; + color: var(--logico-dark-text-color); + margin: 0 0 20px; + } + .express-coming-soon-accent { + color: var(--logico-accent-color); + } + .express-coming-soon-text { + font-size: 16px; + line-height: 1.75em; + color: var(--logico-light-text-color); + margin: 0 auto 36px; + max-width: 520px; + } + .express-coming-soon-actions { + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: center; + gap: 24px; + } + .express-coming-soon .logico-alter-button { + color: #ffffff !important; + border-color: rgba(255, 255, 255, 0.45) !important; + background: transparent !important; + } + .express-coming-soon .logico-alter-button:hover { + background: #ffffff !important; + color: #1a1a1a !important; + border-color: #ffffff !important; + } + .express-coming-soon-link { + font-size: 15px; + font-weight: 600; + color: var(--logico-light-text-color); + text-decoration: underline; + text-underline-offset: 4px; + } + .express-coming-soon-link:hover { + color: #ffffff; + } + @media (max-width: 480px) { + .express-coming-soon-actions { + flex-direction: column; + gap: 16px; + } + } + 0:{"rsc":["$","$1","c",{"children":[["$","div",null,{"id":"express","className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":[["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":["$","section",null,{"className":"express-coming-soon","children":["$","div",null,{"className":"express-coming-soon-inner","children":[["$","span",null,{"className":"express-coming-soon-eyebrow","children":"Solutions / Express"}],["$","h1",null,{"className":"express-coming-soon-heading","children":["Doormile Express is ",["$","span",null,{"className":"express-coming-soon-accent","children":"on its way"}]]}],["$","p",null,{"className":"express-coming-soon-text","children":"We're building a fast-lane logistics service for time-critical shipments. Check back soon, or explore what Doormile already delivers today."}],["$","div",null,{"className":"express-coming-soon-actions","children":[["$","$L2",null,{"href":"/doormile-wings","prefetch":true,"className":"logico-alter-button","children":"Explore Doormile Wings"}],["$","$L2",null,{"href":"/contact","className":"express-coming-soon-link","children":"Get notified when we launch →"}]]}]]}]}]}]}],["$","style",null,{"suppressHydrationWarning":true,"dangerouslySetInnerHTML":{"__html":"$3"}}]]}],null,"$L4"]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} +4:["$","$L5",null,{"children":["$","$6",null,{"name":"Next.MetadataOutlet","children":"$@7"}]}] +7:null diff --git a/build/express/__next.express.txt b/build/express/__next.express.txt new file mode 100644 index 0000000..e0935ae --- /dev/null +++ b/build/express/__next.express.txt @@ -0,0 +1,5 @@ +1:"$Sreact.fragment" +2:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:[] +0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/favicon.ico b/build/favicon.ico new file mode 100644 index 0000000..91c79c6 Binary files /dev/null and b/build/favicon.ico differ diff --git a/build/fonts/Manrope-Bold.ttf b/build/fonts/Manrope-Bold.ttf new file mode 100644 index 0000000..2f84ae3 Binary files /dev/null and b/build/fonts/Manrope-Bold.ttf differ diff --git a/build/fonts/Manrope-SemiBold.ttf b/build/fonts/Manrope-SemiBold.ttf new file mode 100644 index 0000000..24585b9 --- /dev/null +++ b/build/fonts/Manrope-SemiBold.ttf @@ -0,0 +1 @@ +No Content: https://8ded8880.delivery.rocketcdn.me/themes/logico-rounded/wp-content/themes/logico/fonts/Manrope-SemiBold.ttf \ No newline at end of file diff --git a/build/fonts/V8mDoQDjQSkFtoMM3T6r8E7mPbF4Cw.woff2 b/build/fonts/V8mDoQDjQSkFtoMM3T6r8E7mPbF4Cw.woff2 new file mode 100644 index 0000000..9089e65 --- /dev/null +++ b/build/fonts/V8mDoQDjQSkFtoMM3T6r8E7mPbF4Cw.woff2 @@ -0,0 +1 @@ +No Content: https://fonts.gstatic.com/s/spacegrotesk/v22/V8mDoQDjQSkFtoMM3T6r8E7mPbF4Cw.woff2 \ No newline at end of file diff --git a/build/fonts/fa-brands-400.woff2 b/build/fonts/fa-brands-400.woff2 new file mode 100644 index 0000000..36fbda7 Binary files /dev/null and b/build/fonts/fa-brands-400.woff2 differ diff --git a/build/fonts/fontello.woff2 b/build/fonts/fontello.woff2 new file mode 100644 index 0000000..779cfd4 Binary files /dev/null and b/build/fonts/fontello.woff2 differ diff --git a/build/fonts/xn7gYHE41ni1AdIRggexSg.woff2 b/build/fonts/xn7gYHE41ni1AdIRggexSg.woff2 new file mode 100644 index 0000000..4d14eb0 --- /dev/null +++ b/build/fonts/xn7gYHE41ni1AdIRggexSg.woff2 @@ -0,0 +1 @@ +No Content: https://fonts.gstatic.com/s/manrope/v20/xn7gYHE41ni1AdIRggexSg.woff2 \ No newline at end of file diff --git a/build/how-it-works.html b/build/how-it-works.html new file mode 100644 index 0000000..1b081d0 --- /dev/null +++ b/build/how-it-works.html @@ -0,0 +1,891 @@ +How It Works – Doormile

    Doormile

    Doormile logo
    Address
    Hyderabad

    5th Floor, Vision Ultima,
    Street No.3, Jayabheri Enclave,
    Gachibowli, Hyderabad,
    Telangana 500032.

    Coimbatore

    Mayflower Valencia,
    Near Nava India Bus Stop,
    Avinashi Road,
    Udayampalayam,
    Tamil Nadu 641037.

    Bengaluru

    C612, 6th Floor,
    Trifecta Starlight,
    ITPL Road,
    Garudacharapalya,
    Mahadevapura,
    Bangalore 560048,
    Karnataka, India.

    Contact Us

    Tel : +91 86886 97941

    Email

    care@doormile.com

    \ No newline at end of file diff --git a/build/how-it-works.txt b/build/how-it-works.txt new file mode 100644 index 0000000..03a28ad --- /dev/null +++ b/build/how-it-works.txt @@ -0,0 +1,33 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +c:I[74528,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0-8o5q..xlrv7.js"],"default"] +d:I[16948,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0-8o5q..xlrv7.js"],"default"] +e:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +f:"$Sreact.suspense" +12:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +14:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +16:I[68027,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"P":null,"c":["","how-it-works"],"q":"","i":false,"f":[[["",{"children":["how-it-works",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","div",null,{"id":"how-it-works","className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":["$","div",null,{"data-elementor-type":"wp-page","data-elementor-id":"59","className":"elementor elementor-59","children":[["$","$Lc",null,{}],["$","$Ld",null,{}]]}]}]}]}],[["$","script","script-0",{"src":"/_next/static/chunks/0-8o5q..xlrv7.js","async":true,"nonce":"$undefined"}]],["$","$Le",null,{"children":["$","$f",null,{"name":"Next.MetadataOutlet","children":"$@10"}]}]]}],{},null,false,null]},null,false,"$@11"]},null,false,null],["$","$1","h",{"children":[null,["$","$L12",null,{"children":"$L13"}],["$","div",null,{"hidden":true,"children":["$","$L14",null,{"children":["$","$f",null,{"name":"Next.Metadata","children":"$L15"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$16",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"kmSVPuUqY3Rhw5xy4D2nn"} +17:[] +11:"$W17" +13:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] +18:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +10:null +15:[["$","title","0",{"children":"How It Works – Doormile"}],["$","meta","1",{"name":"description","content":"See how Doormile connects first, mid, and last mile into a seamless delivery experience powered by MileTruth™ AI."}],["$","meta","2",{"name":"robots","content":"index, follow"}],["$","link","3",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","4",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","5",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","6",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L18","7",{}]] diff --git a/build/how-it-works/__next._full.txt b/build/how-it-works/__next._full.txt new file mode 100644 index 0000000..03a28ad --- /dev/null +++ b/build/how-it-works/__next._full.txt @@ -0,0 +1,33 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +c:I[74528,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0-8o5q..xlrv7.js"],"default"] +d:I[16948,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0-8o5q..xlrv7.js"],"default"] +e:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +f:"$Sreact.suspense" +12:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +14:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +16:I[68027,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"P":null,"c":["","how-it-works"],"q":"","i":false,"f":[[["",{"children":["how-it-works",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","div",null,{"id":"how-it-works","className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":["$","div",null,{"data-elementor-type":"wp-page","data-elementor-id":"59","className":"elementor elementor-59","children":[["$","$Lc",null,{}],["$","$Ld",null,{}]]}]}]}]}],[["$","script","script-0",{"src":"/_next/static/chunks/0-8o5q..xlrv7.js","async":true,"nonce":"$undefined"}]],["$","$Le",null,{"children":["$","$f",null,{"name":"Next.MetadataOutlet","children":"$@10"}]}]]}],{},null,false,null]},null,false,"$@11"]},null,false,null],["$","$1","h",{"children":[null,["$","$L12",null,{"children":"$L13"}],["$","div",null,{"hidden":true,"children":["$","$L14",null,{"children":["$","$f",null,{"name":"Next.Metadata","children":"$L15"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$16",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"kmSVPuUqY3Rhw5xy4D2nn"} +17:[] +11:"$W17" +13:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] +18:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +10:null +15:[["$","title","0",{"children":"How It Works – Doormile"}],["$","meta","1",{"name":"description","content":"See how Doormile connects first, mid, and last mile into a seamless delivery experience powered by MileTruth™ AI."}],["$","meta","2",{"name":"robots","content":"index, follow"}],["$","link","3",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","4",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","5",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","6",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L18","7",{}]] diff --git a/build/how-it-works/__next._head.txt b/build/how-it-works/__next._head.txt new file mode 100644 index 0000000..d9b12e4 --- /dev/null +++ b/build/how-it-works/__next._head.txt @@ -0,0 +1,6 @@ +1:"$Sreact.fragment" +2:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +3:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +4:"$Sreact.suspense" +5:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +0:{"rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"How It Works – Doormile"}],["$","meta","1",{"name":"description","content":"See how Doormile connects first, mid, and last mile into a seamless delivery experience powered by MileTruth™ AI."}],["$","meta","2",{"name":"robots","content":"index, follow"}],["$","link","3",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","4",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","5",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","6",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L5","7",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/how-it-works/__next._index.txt b/build/how-it-works/__next._index.txt new file mode 100644 index 0000000..d0b3355 --- /dev/null +++ b/build/how-it-works/__next._index.txt @@ -0,0 +1,15 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","template":["$","$La",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/how-it-works/__next._tree.txt b/build/how-it-works/__next._tree.txt new file mode 100644 index 0000000..46313f7 --- /dev/null +++ b/build/how-it-works/__next._tree.txt @@ -0,0 +1,9 @@ +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"tree":{"name":"","param":null,"prefetchHints":16,"slots":{"children":{"name":"how-it-works","param":null,"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}}}},"staleTime":300,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/how-it-works/__next.how-it-works.__PAGE__.txt b/build/how-it-works/__next.how-it-works.__PAGE__.txt new file mode 100644 index 0000000..bbcc794 --- /dev/null +++ b/build/how-it-works/__next.how-it-works.__PAGE__.txt @@ -0,0 +1,7 @@ +1:"$Sreact.fragment" +2:I[74528,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0-8o5q..xlrv7.js"],"default"] +3:I[16948,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0-8o5q..xlrv7.js"],"default"] +4:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +5:"$Sreact.suspense" +0:{"rsc":["$","$1","c",{"children":[["$","div",null,{"id":"how-it-works","className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":["$","div",null,{"data-elementor-type":"wp-page","data-elementor-id":"59","className":"elementor elementor-59","children":[["$","$L2",null,{}],["$","$L3",null,{}]]}]}]}]}],[["$","script","script-0",{"src":"/_next/static/chunks/0-8o5q..xlrv7.js","async":true}]],["$","$L4",null,{"children":["$","$5",null,{"name":"Next.MetadataOutlet","children":"$@6"}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} +6:null diff --git a/build/how-it-works/__next.how-it-works.txt b/build/how-it-works/__next.how-it-works.txt new file mode 100644 index 0000000..e0935ae --- /dev/null +++ b/build/how-it-works/__next.how-it-works.txt @@ -0,0 +1,5 @@ +1:"$Sreact.fragment" +2:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:[] +0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/icon.png b/build/icon.png new file mode 100644 index 0000000..91c79c6 Binary files /dev/null and b/build/icon.png differ diff --git a/build/images/Aravinth.png b/build/images/Aravinth.png new file mode 100644 index 0000000..2f8146c Binary files /dev/null and b/build/images/Aravinth.png differ diff --git a/build/images/Aravinth.webp b/build/images/Aravinth.webp new file mode 100644 index 0000000..c9e1713 Binary files /dev/null and b/build/images/Aravinth.webp differ diff --git a/build/images/Fazul.png b/build/images/Fazul.png new file mode 100644 index 0000000..0464aca Binary files /dev/null and b/build/images/Fazul.png differ diff --git a/build/images/Fazul.webp b/build/images/Fazul.webp new file mode 100644 index 0000000..0a0783b Binary files /dev/null and b/build/images/Fazul.webp differ diff --git a/build/images/Investor.png b/build/images/Investor.png new file mode 100644 index 0000000..3089f76 Binary files /dev/null and b/build/images/Investor.png differ diff --git a/build/images/Investor.webp b/build/images/Investor.webp new file mode 100644 index 0000000..0ad1fc8 Binary files /dev/null and b/build/images/Investor.webp differ diff --git a/build/images/Parthi.png b/build/images/Parthi.png new file mode 100644 index 0000000..c958a53 Binary files /dev/null and b/build/images/Parthi.png differ diff --git a/build/images/Parthi.webp b/build/images/Parthi.webp new file mode 100644 index 0000000..bd5d646 Binary files /dev/null and b/build/images/Parthi.webp differ diff --git a/build/images/Suriya.png b/build/images/Suriya.png new file mode 100644 index 0000000..3ffd5b0 Binary files /dev/null and b/build/images/Suriya.png differ diff --git a/build/images/Suriya.webp b/build/images/Suriya.webp new file mode 100644 index 0000000..ad85b71 Binary files /dev/null and b/build/images/Suriya.webp differ diff --git a/build/images/Team/2.jpg b/build/images/Team/2.jpg new file mode 100644 index 0000000..21b88b8 Binary files /dev/null and b/build/images/Team/2.jpg differ diff --git a/build/images/about-bg.png b/build/images/about-bg.png new file mode 100644 index 0000000..626fe75 Binary files /dev/null and b/build/images/about-bg.png differ diff --git a/build/images/about-bg.webp b/build/images/about-bg.webp new file mode 100644 index 0000000..951ce06 Binary files /dev/null and b/build/images/about-bg.webp differ diff --git a/build/images/air-freight-pic-1.jpg b/build/images/air-freight-pic-1.jpg new file mode 100644 index 0000000..6f6b1bb Binary files /dev/null and b/build/images/air-freight-pic-1.jpg differ diff --git a/build/images/air-freight-slide-1.jpg b/build/images/air-freight-slide-1.jpg new file mode 100644 index 0000000..56f7e62 Binary files /dev/null and b/build/images/air-freight-slide-1.jpg differ diff --git a/build/images/air-freight-slide-2.jpg b/build/images/air-freight-slide-2.jpg new file mode 100644 index 0000000..af60603 Binary files /dev/null and b/build/images/air-freight-slide-2.jpg differ diff --git a/build/images/b5b560fe-aab0-4fe6-9f8c-4b187c2f0e99.png b/build/images/b5b560fe-aab0-4fe6-9f8c-4b187c2f0e99.png new file mode 100644 index 0000000..b74d2e9 Binary files /dev/null and b/build/images/b5b560fe-aab0-4fe6-9f8c-4b187c2f0e99.png differ diff --git a/build/images/b5b560fe-aab0-4fe6-9f8c-4b187c2f0e99.webp b/build/images/b5b560fe-aab0-4fe6-9f8c-4b187c2f0e99.webp new file mode 100644 index 0000000..15a6a0d Binary files /dev/null and b/build/images/b5b560fe-aab0-4fe6-9f8c-4b187c2f0e99.webp differ diff --git a/build/images/bg-404.png b/build/images/bg-404.png new file mode 100644 index 0000000..34bac05 Binary files /dev/null and b/build/images/bg-404.png differ diff --git a/build/images/bg-contacts.png b/build/images/bg-contacts.png new file mode 100644 index 0000000..3f131e1 Binary files /dev/null and b/build/images/bg-contacts.png differ diff --git a/build/images/bg-header-1.jpg b/build/images/bg-header-1.jpg new file mode 100644 index 0000000..20f4cd4 Binary files /dev/null and b/build/images/bg-header-1.jpg differ diff --git a/build/images/bg-header-3.jpeg b/build/images/bg-header-3.jpeg new file mode 100644 index 0000000..1f326e2 Binary files /dev/null and b/build/images/bg-header-3.jpeg differ diff --git a/build/images/bg-header-3.png b/build/images/bg-header-3.png new file mode 100644 index 0000000..9a14267 Binary files /dev/null and b/build/images/bg-header-3.png differ diff --git a/build/images/bg-header-5.png b/build/images/bg-header-5.png new file mode 100644 index 0000000..d7ab42a Binary files /dev/null and b/build/images/bg-header-5.png differ diff --git a/build/images/bg-header-5.webp b/build/images/bg-header-5.webp new file mode 100644 index 0000000..f26f55d Binary files /dev/null and b/build/images/bg-header-5.webp differ diff --git a/build/images/bg-header-women.png b/build/images/bg-header-women.png new file mode 100644 index 0000000..c6db683 Binary files /dev/null and b/build/images/bg-header-women.png differ diff --git a/build/images/bg-header-women.webp b/build/images/bg-header-women.webp new file mode 100644 index 0000000..d7cbd4f Binary files /dev/null and b/build/images/bg-header-women.webp differ diff --git a/build/images/bg-map-about.png b/build/images/bg-map-about.png new file mode 100644 index 0000000..b2f436a Binary files /dev/null and b/build/images/bg-map-about.png differ diff --git a/build/images/bg-map-women.png b/build/images/bg-map-women.png new file mode 100644 index 0000000..8974f64 Binary files /dev/null and b/build/images/bg-map-women.png differ diff --git a/build/images/bg-map-women.webp b/build/images/bg-map-women.webp new file mode 100644 index 0000000..e60434c Binary files /dev/null and b/build/images/bg-map-women.webp differ diff --git a/build/images/bg-map.png b/build/images/bg-map.png new file mode 100644 index 0000000..7b9f88f Binary files /dev/null and b/build/images/bg-map.png differ diff --git a/build/images/bg-slide-sidebar.jpg b/build/images/bg-slide-sidebar.jpg new file mode 100644 index 0000000..c9c185d Binary files /dev/null and b/build/images/bg-slide-sidebar.jpg differ diff --git a/build/images/bg-slide-sidebar.webp b/build/images/bg-slide-sidebar.webp new file mode 100644 index 0000000..8e4bb32 Binary files /dev/null and b/build/images/bg-slide-sidebar.webp differ diff --git a/build/images/blog-post-pic-14.jpeg b/build/images/blog-post-pic-14.jpeg new file mode 100644 index 0000000..4e04093 Binary files /dev/null and b/build/images/blog-post-pic-14.jpeg differ diff --git a/build/images/blog-post-pic-14.webp b/build/images/blog-post-pic-14.webp new file mode 100644 index 0000000..8e68a2e Binary files /dev/null and b/build/images/blog-post-pic-14.webp differ diff --git a/build/images/blog-post-pic-15.png b/build/images/blog-post-pic-15.png new file mode 100644 index 0000000..1d9b4fa Binary files /dev/null and b/build/images/blog-post-pic-15.png differ diff --git a/build/images/blog-post-pic-15.webp b/build/images/blog-post-pic-15.webp new file mode 100644 index 0000000..cb9da29 Binary files /dev/null and b/build/images/blog-post-pic-15.webp differ diff --git a/build/images/blog-post-pic-17.png b/build/images/blog-post-pic-17.png new file mode 100644 index 0000000..d613310 Binary files /dev/null and b/build/images/blog-post-pic-17.png differ diff --git a/build/images/blog-post-pic-17.webp b/build/images/blog-post-pic-17.webp new file mode 100644 index 0000000..6980458 Binary files /dev/null and b/build/images/blog-post-pic-17.webp differ diff --git a/build/images/blog-post-pic-18-840x840.jpg b/build/images/blog-post-pic-18-840x840.jpg new file mode 100644 index 0000000..8ff8360 Binary files /dev/null and b/build/images/blog-post-pic-18-840x840.jpg differ diff --git a/build/images/blog-post-pic-3.jpeg b/build/images/blog-post-pic-3.jpeg new file mode 100644 index 0000000..fb974ba Binary files /dev/null and b/build/images/blog-post-pic-3.jpeg differ diff --git a/build/images/blog-post-pic-3.webp b/build/images/blog-post-pic-3.webp new file mode 100644 index 0000000..df5df4e Binary files /dev/null and b/build/images/blog-post-pic-3.webp differ diff --git a/build/images/blog-post-pic-31.png b/build/images/blog-post-pic-31.png new file mode 100644 index 0000000..6ff58cc Binary files /dev/null and b/build/images/blog-post-pic-31.png differ diff --git a/build/images/blog-post-pic-31.webp b/build/images/blog-post-pic-31.webp new file mode 100644 index 0000000..d3416ff Binary files /dev/null and b/build/images/blog-post-pic-31.webp differ diff --git a/build/images/blog-post-pic-4.jpeg b/build/images/blog-post-pic-4.jpeg new file mode 100644 index 0000000..52c1763 Binary files /dev/null and b/build/images/blog-post-pic-4.jpeg differ diff --git a/build/images/blog-post-pic-6.jpeg b/build/images/blog-post-pic-6.jpeg new file mode 100644 index 0000000..5c9251f Binary files /dev/null and b/build/images/blog-post-pic-6.jpeg differ diff --git a/build/images/blog-post-pic-6.webp b/build/images/blog-post-pic-6.webp new file mode 100644 index 0000000..2fb1344 Binary files /dev/null and b/build/images/blog-post-pic-6.webp differ diff --git a/build/images/blog-post-pic-8.jpeg b/build/images/blog-post-pic-8.jpeg new file mode 100644 index 0000000..1376b0f Binary files /dev/null and b/build/images/blog-post-pic-8.jpeg differ diff --git a/build/images/blog-post-pic-8.webp b/build/images/blog-post-pic-8.webp new file mode 100644 index 0000000..d8fc17a Binary files /dev/null and b/build/images/blog-post-pic-8.webp differ diff --git a/build/images/card 1.png b/build/images/card 1.png new file mode 100644 index 0000000..7e7c9cf Binary files /dev/null and b/build/images/card 1.png differ diff --git a/build/images/card 2.png b/build/images/card 2.png new file mode 100644 index 0000000..864f4d3 Binary files /dev/null and b/build/images/card 2.png differ diff --git a/build/images/card 3.png b/build/images/card 3.png new file mode 100644 index 0000000..ec145b8 Binary files /dev/null and b/build/images/card 3.png differ diff --git a/build/images/card4.png b/build/images/card4.png new file mode 100644 index 0000000..90e4dd2 Binary files /dev/null and b/build/images/card4.png differ diff --git a/build/images/card5.png b/build/images/card5.png new file mode 100644 index 0000000..39adac1 Binary files /dev/null and b/build/images/card5.png differ diff --git a/build/images/card6.png b/build/images/card6.png new file mode 100644 index 0000000..825ff3a Binary files /dev/null and b/build/images/card6.png differ diff --git a/build/images/cropped-image-2.png b/build/images/cropped-image-2.png new file mode 100644 index 0000000..91c79c6 Binary files /dev/null and b/build/images/cropped-image-2.png differ diff --git a/build/images/doormile-black.png b/build/images/doormile-black.png new file mode 100644 index 0000000..796897e Binary files /dev/null and b/build/images/doormile-black.png differ diff --git a/build/images/doormile-logo.png b/build/images/doormile-logo.png new file mode 100644 index 0000000..6f10926 Binary files /dev/null and b/build/images/doormile-logo.png differ diff --git a/build/images/doormile-white.png b/build/images/doormile-white.png new file mode 100644 index 0000000..72a7a16 Binary files /dev/null and b/build/images/doormile-white.png differ diff --git a/build/images/ev-paradox.png b/build/images/ev-paradox.png new file mode 100644 index 0000000..15707f2 Binary files /dev/null and b/build/images/ev-paradox.png differ diff --git a/build/images/ev-paradox.webp b/build/images/ev-paradox.webp new file mode 100644 index 0000000..29e23f7 Binary files /dev/null and b/build/images/ev-paradox.webp differ diff --git a/build/images/ev.jpeg b/build/images/ev.jpeg new file mode 100644 index 0000000..472a2a4 Binary files /dev/null and b/build/images/ev.jpeg differ diff --git a/build/images/ev.webp b/build/images/ev.webp new file mode 100644 index 0000000..28b39b4 Binary files /dev/null and b/build/images/ev.webp differ diff --git a/build/images/first-mile-approach.jpg b/build/images/first-mile-approach.jpg new file mode 100644 index 0000000..bcc7a2a Binary files /dev/null and b/build/images/first-mile-approach.jpg differ diff --git a/build/images/first-mile-approach.webp b/build/images/first-mile-approach.webp new file mode 100644 index 0000000..80ecd63 Binary files /dev/null and b/build/images/first-mile-approach.webp differ diff --git a/build/images/home-bg-1.png b/build/images/home-bg-1.png new file mode 100644 index 0000000..1e7768c Binary files /dev/null and b/build/images/home-bg-1.png differ diff --git a/build/images/home-bg-1.webp b/build/images/home-bg-1.webp new file mode 100644 index 0000000..e9c26d5 Binary files /dev/null and b/build/images/home-bg-1.webp differ diff --git a/build/images/home1-bg2.png b/build/images/home1-bg2.png new file mode 100644 index 0000000..75cbf6e Binary files /dev/null and b/build/images/home1-bg2.png differ diff --git a/build/images/home1-slide-1.png b/build/images/home1-slide-1.png new file mode 100644 index 0000000..828c01f Binary files /dev/null and b/build/images/home1-slide-1.png differ diff --git a/build/images/home1-slide-1.webp b/build/images/home1-slide-1.webp new file mode 100644 index 0000000..876c68b Binary files /dev/null and b/build/images/home1-slide-1.webp differ diff --git a/build/images/home1-slide-2.png b/build/images/home1-slide-2.png new file mode 100644 index 0000000..f85c31b Binary files /dev/null and b/build/images/home1-slide-2.png differ diff --git a/build/images/home1-slide-2.webp b/build/images/home1-slide-2.webp new file mode 100644 index 0000000..4bf62c6 Binary files /dev/null and b/build/images/home1-slide-2.webp differ diff --git a/build/images/home1alt-bg-2.png b/build/images/home1alt-bg-2.png new file mode 100644 index 0000000..ceb4d86 Binary files /dev/null and b/build/images/home1alt-bg-2.png differ diff --git a/build/images/home2-banner-1.jpg b/build/images/home2-banner-1.jpg new file mode 100644 index 0000000..298babc Binary files /dev/null and b/build/images/home2-banner-1.jpg differ diff --git a/build/images/home2-banner-1.webp b/build/images/home2-banner-1.webp new file mode 100644 index 0000000..2550795 Binary files /dev/null and b/build/images/home2-banner-1.webp differ diff --git a/build/images/home2-banner-3.jpg b/build/images/home2-banner-3.jpg new file mode 100644 index 0000000..98d5f2c Binary files /dev/null and b/build/images/home2-banner-3.jpg differ diff --git a/build/images/home2-banner-3.webp b/build/images/home2-banner-3.webp new file mode 100644 index 0000000..b4cdb7e Binary files /dev/null and b/build/images/home2-banner-3.webp differ diff --git a/build/images/home2-banner-4.png b/build/images/home2-banner-4.png new file mode 100644 index 0000000..78acc68 Binary files /dev/null and b/build/images/home2-banner-4.png differ diff --git a/build/images/home2-banner-5 b/build/images/home2-banner-5 new file mode 100644 index 0000000..9d83670 Binary files /dev/null and b/build/images/home2-banner-5 differ diff --git a/build/images/home2-pic-3.png b/build/images/home2-pic-3.png new file mode 100644 index 0000000..215148b Binary files /dev/null and b/build/images/home2-pic-3.png differ diff --git a/build/images/home2-pic-3.webp b/build/images/home2-pic-3.webp new file mode 100644 index 0000000..e5cf320 Binary files /dev/null and b/build/images/home2-pic-3.webp differ diff --git a/build/images/home2-slide-1.jpg b/build/images/home2-slide-1.jpg new file mode 100644 index 0000000..fdeb71d Binary files /dev/null and b/build/images/home2-slide-1.jpg differ diff --git a/build/images/home2-slide-1.webp b/build/images/home2-slide-1.webp new file mode 100644 index 0000000..9b36155 Binary files /dev/null and b/build/images/home2-slide-1.webp differ diff --git a/build/images/home2-slide-2.jpg b/build/images/home2-slide-2.jpg new file mode 100644 index 0000000..9cda61d Binary files /dev/null and b/build/images/home2-slide-2.jpg differ diff --git a/build/images/home2-slide-2.webp b/build/images/home2-slide-2.webp new file mode 100644 index 0000000..dc2114f Binary files /dev/null and b/build/images/home2-slide-2.webp differ diff --git a/build/images/home2alt-bg-1.jpeg b/build/images/home2alt-bg-1.jpeg new file mode 100644 index 0000000..34c3fe8 Binary files /dev/null and b/build/images/home2alt-bg-1.jpeg differ diff --git a/build/images/home2alt-bg-1.jpg b/build/images/home2alt-bg-1.jpg new file mode 100644 index 0000000..191954d Binary files /dev/null and b/build/images/home2alt-bg-1.jpg differ diff --git a/build/images/home3-slide-1.jpg b/build/images/home3-slide-1.jpg new file mode 100644 index 0000000..d7e92c4 Binary files /dev/null and b/build/images/home3-slide-1.jpg differ diff --git a/build/images/home3-slide-2.jpg b/build/images/home3-slide-2.jpg new file mode 100644 index 0000000..b2b34c6 Binary files /dev/null and b/build/images/home3-slide-2.jpg differ diff --git a/build/images/home6-banner.jpg b/build/images/home6-banner.jpg new file mode 100644 index 0000000..0ff26a7 Binary files /dev/null and b/build/images/home6-banner.jpg differ diff --git a/build/images/home6-slide-1.jpg b/build/images/home6-slide-1.jpg new file mode 100644 index 0000000..60d8cee Binary files /dev/null and b/build/images/home6-slide-1.jpg differ diff --git a/build/images/home6-slide-2.jpg b/build/images/home6-slide-2.jpg new file mode 100644 index 0000000..927b864 Binary files /dev/null and b/build/images/home6-slide-2.jpg differ diff --git a/build/images/last-mile-approach.jpg b/build/images/last-mile-approach.jpg new file mode 100644 index 0000000..dd2d904 Binary files /dev/null and b/build/images/last-mile-approach.jpg differ diff --git a/build/images/last-mile-approach.webp b/build/images/last-mile-approach.webp new file mode 100644 index 0000000..c7b745d Binary files /dev/null and b/build/images/last-mile-approach.webp differ diff --git a/build/images/logo-slogan.png b/build/images/logo-slogan.png new file mode 100644 index 0000000..c4ea7fb Binary files /dev/null and b/build/images/logo-slogan.png differ diff --git a/build/images/mid-mile-approach.jpg b/build/images/mid-mile-approach.jpg new file mode 100644 index 0000000..0bb2252 Binary files /dev/null and b/build/images/mid-mile-approach.jpg differ diff --git a/build/images/mid-mile-approach.webp b/build/images/mid-mile-approach.webp new file mode 100644 index 0000000..212783e Binary files /dev/null and b/build/images/mid-mile-approach.webp differ diff --git a/build/images/mile-1.png b/build/images/mile-1.png new file mode 100644 index 0000000..0287905 Binary files /dev/null and b/build/images/mile-1.png differ diff --git a/build/images/mile-1.webp b/build/images/mile-1.webp new file mode 100644 index 0000000..29fe93c Binary files /dev/null and b/build/images/mile-1.webp differ diff --git a/build/images/miletruth-bg.png b/build/images/miletruth-bg.png new file mode 100644 index 0000000..5124af5 Binary files /dev/null and b/build/images/miletruth-bg.png differ diff --git a/build/images/miletruth-bg.webp b/build/images/miletruth-bg.webp new file mode 100644 index 0000000..fd3f7ce Binary files /dev/null and b/build/images/miletruth-bg.webp differ diff --git a/build/images/pahse1.png b/build/images/pahse1.png new file mode 100644 index 0000000..8d3835e Binary files /dev/null and b/build/images/pahse1.png differ diff --git a/build/images/preloader.png b/build/images/preloader.png new file mode 100644 index 0000000..92cb60e Binary files /dev/null and b/build/images/preloader.png differ diff --git a/build/images/premium-ev-van.png b/build/images/premium-ev-van.png new file mode 100644 index 0000000..b108f07 Binary files /dev/null and b/build/images/premium-ev-van.png differ diff --git a/build/images/premium-ev-van.webp b/build/images/premium-ev-van.webp new file mode 100644 index 0000000..cf4ae79 Binary files /dev/null and b/build/images/premium-ev-van.webp differ diff --git a/build/images/tab-pic-1-solution.jpeg b/build/images/tab-pic-1-solution.jpeg new file mode 100644 index 0000000..3eabb7c Binary files /dev/null and b/build/images/tab-pic-1-solution.jpeg differ diff --git a/build/images/tab-pic-1-solution.webp b/build/images/tab-pic-1-solution.webp new file mode 100644 index 0000000..28e54f5 Binary files /dev/null and b/build/images/tab-pic-1-solution.webp differ diff --git a/build/images/tab-pic-1.jpeg b/build/images/tab-pic-1.jpeg new file mode 100644 index 0000000..2ce3559 Binary files /dev/null and b/build/images/tab-pic-1.jpeg differ diff --git a/build/images/tab-pic-1.webp b/build/images/tab-pic-1.webp new file mode 100644 index 0000000..cf44d3f Binary files /dev/null and b/build/images/tab-pic-1.webp differ diff --git a/build/images/tab-pic-2-solution.jpeg b/build/images/tab-pic-2-solution.jpeg new file mode 100644 index 0000000..324efc7 Binary files /dev/null and b/build/images/tab-pic-2-solution.jpeg differ diff --git a/build/images/tab-pic-2-solution.webp b/build/images/tab-pic-2-solution.webp new file mode 100644 index 0000000..1de99f7 Binary files /dev/null and b/build/images/tab-pic-2-solution.webp differ diff --git a/build/images/tab-pic-2.jpeg b/build/images/tab-pic-2.jpeg new file mode 100644 index 0000000..a9a898c Binary files /dev/null and b/build/images/tab-pic-2.jpeg differ diff --git a/build/images/tab-pic-2.webp b/build/images/tab-pic-2.webp new file mode 100644 index 0000000..d6d7c95 Binary files /dev/null and b/build/images/tab-pic-2.webp differ diff --git a/build/images/tab-pic-3-solution.jpeg b/build/images/tab-pic-3-solution.jpeg new file mode 100644 index 0000000..b288ba8 Binary files /dev/null and b/build/images/tab-pic-3-solution.jpeg differ diff --git a/build/images/tab-pic-3-solution.webp b/build/images/tab-pic-3-solution.webp new file mode 100644 index 0000000..e3a8898 Binary files /dev/null and b/build/images/tab-pic-3-solution.webp differ diff --git a/build/images/tab-pic-3.jpeg b/build/images/tab-pic-3.jpeg new file mode 100644 index 0000000..c3f5c16 Binary files /dev/null and b/build/images/tab-pic-3.jpeg differ diff --git a/build/images/tab-pic-3.webp b/build/images/tab-pic-3.webp new file mode 100644 index 0000000..1da7457 Binary files /dev/null and b/build/images/tab-pic-3.webp differ diff --git a/build/images/truck.png b/build/images/truck.png new file mode 100644 index 0000000..e887162 Binary files /dev/null and b/build/images/truck.png differ diff --git a/build/images/wings-heroslide2.png b/build/images/wings-heroslide2.png new file mode 100644 index 0000000..29188b6 Binary files /dev/null and b/build/images/wings-heroslide2.png differ diff --git a/build/images/wings-heroslider3.png b/build/images/wings-heroslider3.png new file mode 100644 index 0000000..f730de8 Binary files /dev/null and b/build/images/wings-heroslider3.png differ diff --git a/build/images/wings-heroslider4.png b/build/images/wings-heroslider4.png new file mode 100644 index 0000000..f10bbf4 Binary files /dev/null and b/build/images/wings-heroslider4.png differ diff --git a/build/images/women-hero-silder-1.png b/build/images/women-hero-silder-1.png new file mode 100644 index 0000000..771a639 Binary files /dev/null and b/build/images/women-hero-silder-1.png differ diff --git a/build/images/women-hero-slider-2.png b/build/images/women-hero-slider-2.png new file mode 100644 index 0000000..4172fca Binary files /dev/null and b/build/images/women-hero-slider-2.png differ diff --git a/build/images/women-hero-slider-3.png b/build/images/women-hero-slider-3.png new file mode 100644 index 0000000..fd87c85 Binary files /dev/null and b/build/images/women-hero-slider-3.png differ diff --git a/build/index.html b/build/index.html new file mode 100644 index 0000000..ac161e8 --- /dev/null +++ b/build/index.html @@ -0,0 +1,1858 @@ +Doormile — Delivering Trust. Beyond Boundaries

    Doormile

    0.0%
    On-Time Delivery
    0x Faster
    Faster Response
    0%
    Cost Reduction
    / The Problem /

    Fragmented Logistics is Broken

    73%

    of delays happen at handoffs

    3x

    higher risk of missed SLAs

    2.5x

    more time spent on coordination

    28%

    increase in operational costs

    30% More Cost Efficient

    30% More Cost Efficient

    30% More Cost Efficient

    30% More Cost Efficient

    30% More Cost Efficient

    30% More Cost Efficient

    30% More Cost Efficient

    30% More Cost Efficient

    30% More Cost Efficient

    Connected Logistics
    / Connected Logistics /

    Smart logistics solutions we deliver for modern supply chains

    Real-Time Visibility

    See every shipment, every vehicle, every handoff—live. No blind spots.

    Dynamic Route Adjustment

    AI continuously optimizes routes based on traffic, weather, and real-world conditions.

    Proactive Delay Prevention

    Detect SLA risks hours before they become problems. Act, don't react.

    Execution Intelligence

    Learn from every delivery. Get smarter with every mile traveled.

    / Doormile Approach /


    The Doormile Way

    Smarter, Faster, Connected Logistics

    We connect first mile and last mile into one seamless system, reducing delays and improving efficiency. With real-time tracking and digital workflows,
    every delivery is faster, reliable, and fully transparent.

    Seamless logistics powered by real-time tracking, digital processes, and reliable delivery execution.

    End-to-End Protection

    End-to-end visibility ensures every shipment stays secure and on schedule.

    Proactive delay prevention

    Real-time monitoring helps prevent delays before they impact deliveries.

    Single owner, single promise

    One unified system manages the entire delivery process seamlessly.

    Dynamic AI-driven adjustments

    AI-powered routing adapts instantly to improve speed and efficiency.

    EV Logistics

    Cleaner miles, lower costs

    / EV-Native Design /

    BUILT FOR ELECTRIC. NOT ADAPTED.

    DoorMile electric delivery van
    100%ELECTRIC FLEET
    -40%COST / MILE
    Battery-Aware Routing

    Battery level, health, and degradation are first-class inputs to route optimization — not afterthoughts.

    Charging Integration

    Seamlessly integrate charging stops without compromising delivery windows or SLA commitments.

    Energy-Optimized Paths

    Factor in elevation, speed limits, payload weight, and live weather for maximum range efficiency.

    Predictable Operations

    EVs become predictable assets, not operational risks. Full visibility from depot to doorstep.

    SLA Compliance0.0%
    Distance Saved0%
    Fewer Vehicles0%
    Dispatch Latency0ms

    Smart solutions built exclusively for your industry

    \ No newline at end of file diff --git a/build/index.txt b/build/index.txt new file mode 100644 index 0000000..0e1bfd0 --- /dev/null +++ b/build/index.txt @@ -0,0 +1,166 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +c:I[97677,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~5amg8el7~oa.js"],"default"] +d:I[58140,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~5amg8el7~oa.js"],"default"] +e:I[36854,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~5amg8el7~oa.js"],"default"] +19:I[68027,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/chunks/0v290txaarww5.css","style"] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"P":null,"c":["",""],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],{"children":[["$","$1","c",{"children":[["$","div",null,{"id":"home","className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":["$","div",null,{"data-elementor-type":"wp-page","data-elementor-id":"61","className":"elementor elementor-61","children":[["$","$Lc",null,{}],["$","$Ld",null,{}],["$","$Le",null,{}],["$","div",null,{"className":"elementor-element elementor-element-b62c0b3 e-con-full e-flex cut-corner-no sticky-container-off e-con e-parent","data-id":"b62c0b3","data-element_type":"container","data-e-type":"container","children":["$","div",null,{"className":"elementor-element elementor-element-592e9e8 e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"592e9e8","data-element_type":"container","data-e-type":"container","children":["$","div",null,{"className":"elementor-element elementor-element-ab41b28 elementor-widget elementor-widget-logico_marquee","data-id":"ab41b28","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_marquee.default","children":"$Lf"}]}]}],"$L10","$L11","$L12","$L13"]}]}]}]}],["$L14","$L15","$L16"],"$L17"]}],{},null,false,null]},null,false,null],"$L18",false]],"m":"$undefined","G":["$19",["$L1a"]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"kmSVPuUqY3Rhw5xy4D2nn"} +1d:I[32693,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~5amg8el7~oa.js"],"default"] +1e:I[24911,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~5amg8el7~oa.js"],"default"] +1f:I[14224,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~5amg8el7~oa.js"],"default"] +25:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +26:"$Sreact.suspense" +28:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +2a:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +f:["$","div",null,{"className":"elementor-widget-container","children":["$","div",null,{"className":"logico-ticker-wrapper","style":{"overflow":"hidden","position":"relative","width":"100%"},"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"\n @keyframes cssMarquee {\n 0% { transform: translate3d(0, 0, 0); }\n 100% { transform: translate3d(-33.33%, 0, 0); }\n }\n .marquee-container-css {\n display: flex;\n width: max-content;\n animation: cssMarquee 25s linear infinite;\n }\n .marquee-container-css:hover {\n animation-play-state: paused;\n }\n "}}],["$","div",null,{"className":"marquee-container-css","children":[["$","div","0",{"className":"ticker","style":{"display":"inline-flex","alignItems":"center","whiteSpace":"nowrap","paddingRight":"50px"},"children":[["$","span",null,{"className":"ticker-text","children":["$","p",null,{"style":{"margin":0,"display":"inline"},"children":"30% More Cost Efficient"}]}],["$","span",null,{"className":"separator","style":{"marginLeft":"25px","display":"inline-flex","alignItems":"center"},"children":["$","i",null,{"className":"fontello icon-half-logo"}]}]]}],["$","div","1",{"className":"ticker","style":{"display":"inline-flex","alignItems":"center","whiteSpace":"nowrap","paddingRight":"50px"},"children":[["$","span",null,{"className":"ticker-text","children":["$","p",null,{"style":{"margin":0,"display":"inline"},"children":"30% More Cost Efficient"}]}],["$","span",null,{"className":"separator","style":{"marginLeft":"25px","display":"inline-flex","alignItems":"center"},"children":["$","i",null,{"className":"fontello icon-half-logo"}]}]]}],["$","div","2",{"className":"ticker","style":{"display":"inline-flex","alignItems":"center","whiteSpace":"nowrap","paddingRight":"50px"},"children":[["$","span",null,{"className":"ticker-text","children":["$","p",null,{"style":{"margin":0,"display":"inline"},"children":"30% More Cost Efficient"}]}],["$","span",null,{"className":"separator","style":{"marginLeft":"25px","display":"inline-flex","alignItems":"center"},"children":["$","i",null,{"className":"fontello icon-half-logo"}]}]]}],["$","div","3",{"className":"ticker","style":{"display":"inline-flex","alignItems":"center","whiteSpace":"nowrap","paddingRight":"50px"},"children":[["$","span",null,{"className":"ticker-text","children":["$","p",null,{"style":{"margin":0,"display":"inline"},"children":"30% More Cost Efficient"}]}],["$","span",null,{"className":"separator","style":{"marginLeft":"25px","display":"inline-flex","alignItems":"center"},"children":["$","i",null,{"className":"fontello icon-half-logo"}]}]]}],["$","div","4",{"className":"ticker","style":{"display":"inline-flex","alignItems":"center","whiteSpace":"nowrap","paddingRight":"50px"},"children":[["$","span",null,{"className":"ticker-text","children":["$","p",null,{"style":{"margin":0,"display":"inline"},"children":"30% More Cost Efficient"}]}],["$","span",null,{"className":"separator","style":{"marginLeft":"25px","display":"inline-flex","alignItems":"center"},"children":["$","i",null,{"className":"fontello icon-half-logo"}]}]]}],["$","div","5",{"className":"ticker","style":{"display":"inline-flex","alignItems":"center","whiteSpace":"nowrap","paddingRight":"50px"},"children":[["$","span",null,{"className":"ticker-text","children":["$","p",null,{"style":{"margin":0,"display":"inline"},"children":"30% More Cost Efficient"}]}],["$","span",null,{"className":"separator","style":{"marginLeft":"25px","display":"inline-flex","alignItems":"center"},"children":["$","i",null,{"className":"fontello icon-half-logo"}]}]]}],["$","div","6",{"className":"ticker","style":{"display":"inline-flex","alignItems":"center","whiteSpace":"nowrap","paddingRight":"50px"},"children":[["$","span",null,{"className":"ticker-text","children":["$","p",null,{"style":{"margin":0,"display":"inline"},"children":"30% More Cost Efficient"}]}],["$","span",null,{"className":"separator","style":{"marginLeft":"25px","display":"inline-flex","alignItems":"center"},"children":["$","i",null,{"className":"fontello icon-half-logo"}]}]]}],["$","div","7",{"className":"ticker","style":{"display":"inline-flex","alignItems":"center","whiteSpace":"nowrap","paddingRight":"50px"},"children":[["$","span",null,{"className":"ticker-text","children":["$","p",null,{"style":{"margin":0,"display":"inline"},"children":"30% More Cost Efficient"}]}],"$L1b"]}],"$L1c"]}]]}]}] +10:["$","$L1d",null,{}] +11:["$","$L1e",null,{}] +12:["$","$L1f",null,{}] +20:T95e, + @media (max-width: 768px) { + .elementor-element.elementor-element-3b4a7cc { + --padding-left: 0px !important; + --padding-right: 0px !important; + padding-left: 0px !important; + padding-right: 0px !important; + box-sizing: border-box !important; + } + + .elementor-element.elementor-element-3b4a7cc > .e-con-inner { + width: 100% !important; + max-width: 100% !important; + margin-left: auto !important; + margin-right: auto !important; + padding-left: 0 !important; + padding-right: 0 !important; + } + + .elementor-element.elementor-element-d602f7f { + --padding-left: 20px !important; + --padding-right: 20px !important; + padding-left: 20px !important; + padding-right: 20px !important; + width: 100% !important; + max-width: 100% !important; + margin-left: 0 !important; + margin-right: 0 !important; + box-sizing: border-box !important; + } + + .elementor-element.elementor-element-f64bd88, + .elementor-element.elementor-element-5ed2dbb, + .elementor-element.elementor-element-6829276 { + --padding-left: 0px !important; + --padding-right: 0px !important; + --margin-left: 0px !important; + --margin-right: 0px !important; + width: 100% !important; + max-width: 100% !important; + margin-left: 0 !important; + margin-right: 0 !important; + padding-left: 0 !important; + padding-right: 0 !important; + box-sizing: border-box !important; + } + + .elementor-element.elementor-element-6829276 { + --e-con-grid-template-columns: minmax(0, 1fr) !important; + --grid-justify-content: stretch !important; + --justify-items: stretch !important; + grid-template-columns: minmax(0, 1fr) !important; + justify-content: stretch !important; + justify-items: stretch !important; + min-width: 0 !important; + } + + .industry-solutions-grid, + .industry-card-link { + width: 100% !important; + max-width: 100% !important; + min-width: 0 !important; + } + + .industry-solutions-grid { + margin-left: 0 !important; + margin-right: 0 !important; + } + } + 13:[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$20"}}],["$","div",null,{"className":"elementor-element elementor-element-3b4a7cc e-flex e-con-boxed cut-corner-no sticky-container-off e-con e-parent","data-id":"3b4a7cc","data-element_type":"container","data-e-type":"container","children":["$","div",null,{"className":"e-con-inner","children":["$","div",null,{"className":"elementor-element elementor-element-d602f7f e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"d602f7f","data-element_type":"container","data-e-type":"container","children":[["$","div",null,{"className":"elementor-element elementor-element-f64bd88 e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"f64bd88","data-element_type":"container","data-e-type":"container","children":[["$","div",null,{"className":"elementor-element elementor-element-5ed2dbb e-con-full e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"5ed2dbb","data-element_type":"container","data-e-type":"container","children":["$L21","$L22"]}],"$L23"]}],"$L24"]}]}]}]] +14:["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0v290txaarww5.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}] +15:["$","script","script-0",{"src":"/_next/static/chunks/07eq5is00w7sy.js","async":true,"nonce":"$undefined"}] +16:["$","script","script-1",{"src":"/_next/static/chunks/0~5amg8el7~oa.js","async":true,"nonce":"$undefined"}] +17:["$","$L25",null,{"children":["$","$26",null,{"name":"Next.MetadataOutlet","children":"$@27"}]}] +18:["$","$1","h",{"children":[null,["$","$L28",null,{"children":"$L29"}],["$","div",null,{"hidden":true,"children":["$","$L2a",null,{"children":["$","$26",null,{"name":"Next.Metadata","children":"$L2b"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}] +1a:["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}] +2d:I[2018,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~5amg8el7~oa.js"],"ScrollReveal"] +2e:I[22016,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~5amg8el7~oa.js"],""] +2f:I[5500,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/07eq5is00w7sy.js","/_next/static/chunks/0~5amg8el7~oa.js"],"Image"] +1b:["$","span",null,{"className":"separator","style":{"marginLeft":"25px","display":"inline-flex","alignItems":"center"},"children":["$","i",null,{"className":"fontello icon-half-logo"}]}] +1c:["$","div","8",{"className":"ticker","style":{"display":"inline-flex","alignItems":"center","whiteSpace":"nowrap","paddingRight":"50px"},"children":[["$","span",null,{"className":"ticker-text","children":["$","p",null,{"style":{"margin":0,"display":"inline"},"children":"30% More Cost Efficient"}]}],["$","span",null,{"className":"separator","style":{"marginLeft":"25px","display":"inline-flex","alignItems":"center"},"children":["$","i",null,{"className":"fontello icon-half-logo"}]}]]}] +2c:T65e, + /* Minimal section label — matches the "/ Doormile Approach /" pattern */ + .industry-section-label { + width: 100%; + } + .industry-section-label > .elementor-widget-container { + max-width: 100%; + margin: 12px 0 50px 0; + padding: 0 0 14px 0; + border-style: solid; + border-width: 0 0 1px 0; + border-color: rgba(17, 17, 17, 0.15); + } + .industry-section-label .logico-title { + font-size: 14px; + font-weight: 500; + line-height: 2.1429em; + letter-spacing: 2px; + text-transform: uppercase; + color: #111111; + } + @media (max-width: 1024px) { + .industry-section-label > .elementor-widget-container { + margin-bottom: 36px; + padding-bottom: 12px; + } + } + @media (max-width: 767px) { + .industry-section-label > .elementor-widget-container { + margin-bottom: 28px; + padding-bottom: 10px; + } + .industry-section-label .logico-title { + font-size: 12px; + letter-spacing: 1.5px; + } + } + 21:["$","div",null,{"className":"elementor-element elementor-element-c8162c4 elementor-widget elementor-widget-logico_heading industry-section-label","data-id":"c8162c4","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_heading.default","children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$2c"}}],["$","div",null,{"className":"elementor-widget-container","children":["$","div",null,{"className":"logico-title","children":"/ Industry Solutions /"}]}]]}] +22:["$","div",null,{"className":"elementor-element elementor-element-1487241 elementor-widget__width-initial elementor-widget elementor-widget-logico_heading","data-id":"1487241","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_heading.default","children":["$","div",null,{"className":"elementor-widget-container","style":{"margin":"30px 0 0 0"},"children":["$","h3",null,{"className":"logico-title","style":{"fontSize":"clamp(28px, 3.5vw, 48px)","lineHeight":"1.1","fontWeight":800,"textTransform":"uppercase","maxWidth":"900px"},"children":["$","$L2d",null,{"delay":0.05,"duration":0.8,"yOffset":25,"children":["Smart solutions built exclusively for your ",["$","span",null,{"style":{"color":"#c01227"},"children":"industry"}]]}]}]}]}] +23:["$","div",null,{"className":"elementor-element elementor-element-4af73cb e-con-full elementor-hidden-tablet elementor-hidden-mobile_extra elementor-hidden-mobile e-flex cut-corner-no sticky-container-off e-con e-child","data-id":"4af73cb","data-element_type":"container","data-e-type":"container","children":["$","div",null,{"className":"elementor-element elementor-element-46f2f7d elementor-widget__width-initial elementor-widget elementor-widget-logico_button","data-id":"46f2f7d","data-element_type":"widget","data-e-type":"widget","data-widget_type":"logico_button.default","children":["$","div",null,{"className":"elementor-widget-container"}]}]}] +24:["$","div",null,{"className":"elementor-element elementor-element-6829276 e-grid e-con-full cut-corner-no sticky-container-off e-con e-child","data-id":"6829276","data-element_type":"container","data-e-type":"container","children":["$","div",null,{"className":"industry-solutions-grid","children":[["$","$L2e",null,{"href":"/solutions","className":"industry-card-link","children":[["$","div",null,{"className":"industry-card-bg","children":["$","$L2f",null,{"src":"/images/tab-pic-1.webp","alt":"FMCG Logistics","fill":true,"style":{"objectFit":"cover"},"sizes":"(max-width: 768px) 100vw, (max-width: 1024px) 50vw, 33vw"}]}],["$","div",null,{"className":"industry-card-overlay"}],["$","div",null,{"className":"industry-card-hover-bg"}],["$","div",null,{"className":"industry-card-default-content","children":["$","h4",null,{"className":"industry-card-default-title","children":"FMCG"}]}],["$","div",null,{"className":"industry-card-hover-content","children":[["$","div",null,{"className":"industry-card-hover-top","children":[["$","p",null,{"className":"industry-card-description","children":"High volume, tight margins, zero tolerance for stockouts."}],["$","div",null,{"children":[["$","h5",null,{"className":"industry-card-section-title","children":"Challenges"}],["$","ul",null,{"className":"industry-card-list","children":[["$","li",null,{"className":"industry-card-list-item bullet-1","children":"Unpredictable demand spikes"}],["$","li",null,{"className":"industry-card-list-item bullet-2","children":"Fresh product expiry constraints"}],["$","li",null,{"className":"industry-card-list-item bullet-3","children":"Multi-stop route complexity"}]]}]]}],["$","div",null,{"children":[["$","h5",null,{"className":"industry-card-section-title","children":"Doormile Solutions"}],["$","ul",null,{"className":"industry-card-list","children":[["$","li",null,{"className":"industry-card-list-item bullet-4","children":"AI-driven demand-responsive routing"}],["$","li",null,{"className":"industry-card-list-item bullet-5","children":"Freshness-aware delivery prioritization"}],["$","li",null,{"className":"industry-card-list-item bullet-6","children":"Dynamic batch optimization"}]]}]]}]]}],["$","div",null,{"className":"industry-card-hover-bottom","children":[["$","div",null,{"className":"industry-card-hover-icon","children":["$","svg",null,{"xmlns":"http://www.w3.org/2000/svg","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"3","strokeLinecap":"round","strokeLinejoin":"round","style":{"width":"20px","height":"20px"},"children":[["$","line",null,{"x1":"7","y1":"17","x2":"17","y2":"7"}],["$","polyline",null,{"points":"7 7 17 7 17 17"}]]}]}],["$","h4",null,{"className":"industry-card-hover-title","children":"FMCG"}]]}]]}]]}],["$","$L2e",null,{"href":"/solutions","className":"industry-card-link","children":[["$","div",null,{"className":"industry-card-bg","children":["$","$L2f",null,{"src":"/images/tab-pic-2.webp","alt":"Pharma Logistics","fill":true,"style":{"objectFit":"cover"},"sizes":"(max-width: 768px) 100vw, (max-width: 1024px) 50vw, 33vw"}]}],["$","div",null,{"className":"industry-card-overlay"}],["$","div",null,{"className":"industry-card-hover-bg"}],["$","div",null,{"className":"industry-card-default-content","children":["$","h4",null,{"className":"industry-card-default-title","children":"Pharmaceutical"}]}],["$","div",null,{"className":"industry-card-hover-content","children":[["$","div",null,{"className":"industry-card-hover-top","children":[["$","p",null,{"className":"industry-card-description","children":"Temperature-sensitive, compliance-critical, life-saving."}],["$","div",null,{"children":[["$","h5",null,{"className":"industry-card-section-title","children":"Challenges"}],["$","ul",null,{"className":"industry-card-list","children":[["$","li",null,{"className":"industry-card-list-item bullet-1","children":"Cold chain integrity requirements"}],["$","li",null,{"className":"industry-card-list-item bullet-2","children":"Regulatory compliance tracking"}],["$","li",null,{"className":"industry-card-list-item bullet-3","children":"Critical delivery time windows"}]]}]]}],["$","div",null,{"children":[["$","h5",null,{"className":"industry-card-section-title","children":"Doormile Solutions"}],["$","ul",null,{"className":"industry-card-list","children":[["$","li",null,{"className":"industry-card-list-item bullet-4","children":"Real-time temperature monitoring"}],"$L30","$L31"]}]]}]]}],"$L32"]}]]}],"$L33"]}]}] +30:["$","li",null,{"className":"industry-card-list-item bullet-5","children":"Chain-of-custody documentation"}] +31:["$","li",null,{"className":"industry-card-list-item bullet-6","children":"Priority override for critical shipments"}] +32:["$","div",null,{"className":"industry-card-hover-bottom","children":[["$","div",null,{"className":"industry-card-hover-icon","children":["$","svg",null,{"xmlns":"http://www.w3.org/2000/svg","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"3","strokeLinecap":"round","strokeLinejoin":"round","style":{"width":"20px","height":"20px"},"children":[["$","line",null,{"x1":"7","y1":"17","x2":"17","y2":"7"}],["$","polyline",null,{"points":"7 7 17 7 17 17"}]]}]}],["$","h4",null,{"className":"industry-card-hover-title","children":"Pharmaceutical"}]]}] +33:["$","$L2e",null,{"href":"/solutions","className":"industry-card-link","children":[["$","div",null,{"className":"industry-card-bg","children":["$","$L2f",null,{"src":"/images/tab-pic-3.webp","alt":"Enterprise Logistics","fill":true,"style":{"objectFit":"cover"},"sizes":"(max-width: 768px) 100vw, (max-width: 1024px) 50vw, 33vw"}]}],["$","div",null,{"className":"industry-card-overlay"}],["$","div",null,{"className":"industry-card-hover-bg"}],["$","div",null,{"className":"industry-card-default-content","children":["$","h4",null,{"className":"industry-card-default-title","children":"Enterprise & B2B"}]}],["$","div",null,{"className":"industry-card-hover-content","children":[["$","div",null,{"className":"industry-card-hover-top","children":[["$","p",null,{"className":"industry-card-description","children":"High-value shipments with complex delivery requirements."}],["$","div",null,{"children":[["$","h5",null,{"className":"industry-card-section-title","children":"Challenges"}],["$","ul",null,{"className":"industry-card-list","children":[["$","li",null,{"className":"industry-card-list-item bullet-1","children":"Appointment scheduling coordination"}],["$","li",null,{"className":"industry-card-list-item bullet-2","children":"White-glove delivery standards"}],["$","li",null,{"className":"industry-card-list-item bullet-3","children":"Multi-location routing complexity"}]]}]]}],["$","div",null,{"children":[["$","h5",null,{"className":"industry-card-section-title","children":"Doormile Solutions"}],["$","ul",null,{"className":"industry-card-list","children":[["$","li",null,{"className":"industry-card-list-item bullet-4","children":"Automated appointment optimization"}],["$","li",null,{"className":"industry-card-list-item bullet-5","children":"Service level guarantee tracking"}],["$","li",null,{"className":"industry-card-list-item bullet-6","children":"Enterprise integration APIs"}]]}]]}]]}],["$","div",null,{"className":"industry-card-hover-bottom","children":[["$","div",null,{"className":"industry-card-hover-icon","children":["$","svg",null,{"xmlns":"http://www.w3.org/2000/svg","viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":"3","strokeLinecap":"round","strokeLinejoin":"round","style":{"width":"20px","height":"20px"},"children":[["$","line",null,{"x1":"7","y1":"17","x2":"17","y2":"7"}],["$","polyline",null,{"points":"7 7 17 7 17 17"}]]}]}],["$","h4",null,{"className":"industry-card-hover-title","children":"Enterprise & B2B"}]]}]]}]]}] +29:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] +34:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +27:null +2b:[["$","title","0",{"children":"Doormile — Delivering Trust. Beyond Boundaries"}],["$","meta","1",{"name":"description","content":"Doormile helps logistics companies track every mile with MileTruth™ AI. Real-time SLA protection and connected miles visibility."}],["$","meta","2",{"name":"robots","content":"index, follow"}],["$","link","3",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","4",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","5",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","6",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L34","7",{}]] diff --git a/build/miletruth.html b/build/miletruth.html new file mode 100644 index 0000000..b0dd5d8 --- /dev/null +++ b/build/miletruth.html @@ -0,0 +1,2612 @@ +MileTruth – Doormile

    Doormile

    Doormile logo
    Address
    Hyderabad

    5th Floor, Vision Ultima,
    Street No.3, Jayabheri Enclave,
    Gachibowli, Hyderabad,
    Telangana 500032.

    Coimbatore

    Mayflower Valencia,
    Near Nava India Bus Stop,
    Avinashi Road,
    Udayampalayam,
    Tamil Nadu 641037.

    Bengaluru

    C612, 6th Floor,
    Trifecta Starlight,
    ITPL Road,
    Garudacharapalya,
    Mahadevapura,
    Bangalore 560048,
    Karnataka, India.

    Contact Us

    Tel : +91 86886 97941

    Email

    care@doormile.com

    SLA Compliance
    1 %
    Distance Saved
    1 %
    Fewer Vehicles
    1 %
    Dispatch Latency
    45ms
    OPTIMIZE EVERY MILE

    Cut travel distance, reduce operating cost, and improve fleet productivity across every route.

    / Performance /

    SMARTER ROUTES. LOWER COSTS.

    -42%DISTANCE SAVED
    -37%FEWER VEHICLES
    Performance InsightAI ENGINE
    0%Distance Saved
    0%Faster Routes
    0%Lower Cost
    0.0%On-Time
    Route Optimization

    AI selects the most efficient path across every zone.

    Distance Reduction

    Same volume delivered with a leaner, better-used fleet.

    Fleet Efficiency

    Higher utilisation and lower operating cost.

    SLA Performance

    Real-time correction keeps deliveries on time.

    Distance Saved0%
    Faster Routes0%
    Lower Cost0%
    On-Time0.0%
    CHOOSE THE BEST PLAN

    Analyze thousands of route possibilities and automatically select the most efficient delivery strategy.

    / Innovation /

    MANY STRATEGIES. ONE BEST PLAN.

    45msINFERENCE
    100%SLA-FIRST
    AI Decision EngineAI ENGINE
    0msInference
    0+Strategies
    0.0%SLA Met
    0/7Adaptive
    Generate Routes

    Many strategies explored per dispatch window.

    Check Constraints

    Battery, capacity, distance and time validated.

    Score & Compare

    Plans ranked by total cost in parallel.

    Select Best Plan

    SLA-first plan locked in and dispatched.

    Inference0ms
    Strategies0+
    SLA Met0.0%
    Adaptive0/7
    \ No newline at end of file diff --git a/build/miletruth.txt b/build/miletruth.txt new file mode 100644 index 0000000..bb4a712 --- /dev/null +++ b/build/miletruth.txt @@ -0,0 +1,35 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +c:I[58829,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0~gr-u6_wl8~w.js","/_next/static/chunks/07eq5is00w7sy.js"],"default"] +d:I[76756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0~gr-u6_wl8~w.js","/_next/static/chunks/07eq5is00w7sy.js"],"default"] +e:I[38730,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0~gr-u6_wl8~w.js","/_next/static/chunks/07eq5is00w7sy.js"],"default"] +f:I[33016,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0~gr-u6_wl8~w.js","/_next/static/chunks/07eq5is00w7sy.js"],"default"] +10:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +11:"$Sreact.suspense" +14:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +16:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +18:I[68027,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"P":null,"c":["","miletruth"],"q":"","i":false,"f":[[["",{"children":["miletruth",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","div",null,{"id":"miletruth","className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":["$","div",null,{"data-elementor-type":"wp-page","data-elementor-id":"59","className":"elementor elementor-59","children":[["$","$Lc",null,{}],["$","$Ld",null,{}],["$","$Le",null,{}],["$","$Lf",null,{}]]}]}]}]}],[["$","script","script-0",{"src":"/_next/static/chunks/0~gr-u6_wl8~w.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/07eq5is00w7sy.js","async":true,"nonce":"$undefined"}]],["$","$L10",null,{"children":["$","$11",null,{"name":"Next.MetadataOutlet","children":"$@12"}]}]]}],{},null,false,null]},null,false,"$@13"]},null,false,null],["$","$1","h",{"children":[null,["$","$L14",null,{"children":"$L15"}],["$","div",null,{"hidden":true,"children":["$","$L16",null,{"children":["$","$11",null,{"name":"Next.Metadata","children":"$L17"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$18",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"kmSVPuUqY3Rhw5xy4D2nn"} +19:[] +13:"$W19" +15:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] +1a:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +12:null +17:[["$","title","0",{"children":"MileTruth – Doormile"}],["$","meta","1",{"name":"description","content":"Optimizes every stage of the delivery journey for maximum efficiency. Explore the only AI built exclusively for logistics."}],["$","meta","2",{"name":"robots","content":"index, follow"}],["$","link","3",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","4",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","5",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","6",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L1a","7",{}]] diff --git a/build/miletruth/__next._full.txt b/build/miletruth/__next._full.txt new file mode 100644 index 0000000..bb4a712 --- /dev/null +++ b/build/miletruth/__next._full.txt @@ -0,0 +1,35 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +c:I[58829,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0~gr-u6_wl8~w.js","/_next/static/chunks/07eq5is00w7sy.js"],"default"] +d:I[76756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0~gr-u6_wl8~w.js","/_next/static/chunks/07eq5is00w7sy.js"],"default"] +e:I[38730,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0~gr-u6_wl8~w.js","/_next/static/chunks/07eq5is00w7sy.js"],"default"] +f:I[33016,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0~gr-u6_wl8~w.js","/_next/static/chunks/07eq5is00w7sy.js"],"default"] +10:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +11:"$Sreact.suspense" +14:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +16:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +18:I[68027,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"P":null,"c":["","miletruth"],"q":"","i":false,"f":[[["",{"children":["miletruth",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","div",null,{"id":"miletruth","className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":["$","div",null,{"data-elementor-type":"wp-page","data-elementor-id":"59","className":"elementor elementor-59","children":[["$","$Lc",null,{}],["$","$Ld",null,{}],["$","$Le",null,{}],["$","$Lf",null,{}]]}]}]}]}],[["$","script","script-0",{"src":"/_next/static/chunks/0~gr-u6_wl8~w.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/07eq5is00w7sy.js","async":true,"nonce":"$undefined"}]],["$","$L10",null,{"children":["$","$11",null,{"name":"Next.MetadataOutlet","children":"$@12"}]}]]}],{},null,false,null]},null,false,"$@13"]},null,false,null],["$","$1","h",{"children":[null,["$","$L14",null,{"children":"$L15"}],["$","div",null,{"hidden":true,"children":["$","$L16",null,{"children":["$","$11",null,{"name":"Next.Metadata","children":"$L17"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],false]],"m":"$undefined","G":["$18",[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"kmSVPuUqY3Rhw5xy4D2nn"} +19:[] +13:"$W19" +15:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] +1a:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +12:null +17:[["$","title","0",{"children":"MileTruth – Doormile"}],["$","meta","1",{"name":"description","content":"Optimizes every stage of the delivery journey for maximum efficiency. Explore the only AI built exclusively for logistics."}],["$","meta","2",{"name":"robots","content":"index, follow"}],["$","link","3",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","4",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","5",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","6",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L1a","7",{}]] diff --git a/build/miletruth/__next._head.txt b/build/miletruth/__next._head.txt new file mode 100644 index 0000000..ddffea7 --- /dev/null +++ b/build/miletruth/__next._head.txt @@ -0,0 +1,6 @@ +1:"$Sreact.fragment" +2:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +3:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +4:"$Sreact.suspense" +5:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +0:{"rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"MileTruth – Doormile"}],["$","meta","1",{"name":"description","content":"Optimizes every stage of the delivery journey for maximum efficiency. Explore the only AI built exclusively for logistics."}],["$","meta","2",{"name":"robots","content":"index, follow"}],["$","link","3",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","4",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","5",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","6",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L5","7",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/miletruth/__next._index.txt b/build/miletruth/__next._index.txt new file mode 100644 index 0000000..d0b3355 --- /dev/null +++ b/build/miletruth/__next._index.txt @@ -0,0 +1,15 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","template":["$","$La",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/miletruth/__next._tree.txt b/build/miletruth/__next._tree.txt new file mode 100644 index 0000000..6e1310c --- /dev/null +++ b/build/miletruth/__next._tree.txt @@ -0,0 +1,9 @@ +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"tree":{"name":"","param":null,"prefetchHints":16,"slots":{"children":{"name":"miletruth","param":null,"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}}}},"staleTime":300,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/miletruth/__next.miletruth.__PAGE__.txt b/build/miletruth/__next.miletruth.__PAGE__.txt new file mode 100644 index 0000000..85dba76 --- /dev/null +++ b/build/miletruth/__next.miletruth.__PAGE__.txt @@ -0,0 +1,9 @@ +1:"$Sreact.fragment" +2:I[58829,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0~gr-u6_wl8~w.js","/_next/static/chunks/07eq5is00w7sy.js"],"default"] +3:I[76756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0~gr-u6_wl8~w.js","/_next/static/chunks/07eq5is00w7sy.js"],"default"] +4:I[38730,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0~gr-u6_wl8~w.js","/_next/static/chunks/07eq5is00w7sy.js"],"default"] +5:I[33016,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0~gr-u6_wl8~w.js","/_next/static/chunks/07eq5is00w7sy.js"],"default"] +6:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +7:"$Sreact.suspense" +0:{"rsc":["$","$1","c",{"children":[["$","div",null,{"id":"miletruth","className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":["$","div",null,{"data-elementor-type":"wp-page","data-elementor-id":"59","className":"elementor elementor-59","children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{}],["$","$L5",null,{}]]}]}]}]}],[["$","script","script-0",{"src":"/_next/static/chunks/0~gr-u6_wl8~w.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/07eq5is00w7sy.js","async":true}]],["$","$L6",null,{"children":["$","$7",null,{"name":"Next.MetadataOutlet","children":"$@8"}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} +8:null diff --git a/build/miletruth/__next.miletruth.txt b/build/miletruth/__next.miletruth.txt new file mode 100644 index 0000000..e0935ae --- /dev/null +++ b/build/miletruth/__next.miletruth.txt @@ -0,0 +1,5 @@ +1:"$Sreact.fragment" +2:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:[] +0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/models/3d_scene_final.glb b/build/models/3d_scene_final.glb new file mode 100644 index 0000000..67f0b46 Binary files /dev/null and b/build/models/3d_scene_final.glb differ diff --git a/build/models/auto_rickshaw.glb b/build/models/auto_rickshaw.glb new file mode 100644 index 0000000..3a9fc5e Binary files /dev/null and b/build/models/auto_rickshaw.glb differ diff --git a/build/models/optimized/auto_rickshaw.glb b/build/models/optimized/auto_rickshaw.glb new file mode 100644 index 0000000..ec6bf6a Binary files /dev/null and b/build/models/optimized/auto_rickshaw.glb differ diff --git a/build/models/optimized/scooter.glb b/build/models/optimized/scooter.glb new file mode 100644 index 0000000..19f3fb4 Binary files /dev/null and b/build/models/optimized/scooter.glb differ diff --git a/build/models/optimized/truck.glb b/build/models/optimized/truck.glb new file mode 100644 index 0000000..5890358 Binary files /dev/null and b/build/models/optimized/truck.glb differ diff --git a/build/models/optimized/van.glb b/build/models/optimized/van.glb new file mode 100644 index 0000000..42b939c Binary files /dev/null and b/build/models/optimized/van.glb differ diff --git a/build/models/scooter.glb b/build/models/scooter.glb new file mode 100644 index 0000000..c977e1d Binary files /dev/null and b/build/models/scooter.glb differ diff --git a/build/models/truck.glb b/build/models/truck.glb new file mode 100644 index 0000000..78c3d03 Binary files /dev/null and b/build/models/truck.glb differ diff --git a/build/models/van.glb b/build/models/van.glb new file mode 100644 index 0000000..da09ec6 Binary files /dev/null and b/build/models/van.glb differ diff --git a/build/privacy-policy.html b/build/privacy-policy.html new file mode 100644 index 0000000..bad6165 --- /dev/null +++ b/build/privacy-policy.html @@ -0,0 +1,853 @@ +Privacy Policy – Doormile

    Doormile

    Doormile logo
    Address
    Hyderabad

    5th Floor, Vision Ultima,
    Street No.3, Jayabheri Enclave,
    Gachibowli, Hyderabad,
    Telangana 500032.

    Coimbatore

    Mayflower Valencia,
    Near Nava India Bus Stop,
    Avinashi Road,
    Udayampalayam,
    Tamil Nadu 641037.

    Bengaluru

    C612, 6th Floor,
    Trifecta Starlight,
    ITPL Road,
    Garudacharapalya,
    Mahadevapura,
    Bangalore 560048,
    Karnataka, India.

    Contact Us

    Tel : +91 86886 97941

    Email

    care@doormile.com

    \ No newline at end of file diff --git a/build/privacy-policy.txt b/build/privacy-policy.txt new file mode 100644 index 0000000..9b7d566 --- /dev/null +++ b/build/privacy-policy.txt @@ -0,0 +1,222 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +19:I[68027,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"P":null,"c":["","privacy-policy"],"q":"","i":false,"f":[[["",{"children":["privacy-policy",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","div",null,{"className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":["$","section",null,{"className":"dm-legal","aria-label":"Privacy Policy","children":[["$","div",null,{"className":"dm-legal__wrap","children":[["$","aside",null,{"className":"dm-legal__toc","aria-label":"On this page","children":["$","div",null,{"className":"dm-legal__toc-inner","children":[["$","p",null,{"className":"dm-legal__toc-label","children":"On this page"}],["$","nav",null,{"children":["$","ul",null,{"children":[["$","li","Information We Collect",{"children":["$","a",null,{"href":"#information-we-collect","children":"Information We Collect"}]}],["$","li","How We Use Your Information",{"children":["$","a",null,{"href":"#how-we-use-your-information","children":"How We Use Your Information"}]}],"$Lc","$Ld","$Le","$Lf","$L10","$L11","$L12","$L13"]}]}]]}]}],"$L14"]}],"$L15"]}]}]}]}],null,"$L16"]}],{},null,false,null]},null,false,"$@17"]},null,false,null],"$L18",false]],"m":"$undefined","G":["$19",["$L1a"]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"kmSVPuUqY3Rhw5xy4D2nn"} +20:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +21:"$Sreact.suspense" +24:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +26:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +c:["$","li","Information Sharing",{"children":["$","a",null,{"href":"#information-sharing","children":"Information Sharing"}]}] +d:["$","li","Data Security",{"children":["$","a",null,{"href":"#data-security","children":"Data Security"}]}] +e:["$","li","Data Retention",{"children":["$","a",null,{"href":"#data-retention","children":"Data Retention"}]}] +f:["$","li","Cookies and Tracking Technologies",{"children":["$","a",null,{"href":"#cookies-and-tracking-technologies","children":"Cookies and Tracking Technologies"}]}] +10:["$","li","Your Rights",{"children":["$","a",null,{"href":"#your-rights","children":"Your Rights"}]}] +11:["$","li","Third-Party Links",{"children":["$","a",null,{"href":"#third-party-links","children":"Third-Party Links"}]}] +12:["$","li","Policy Updates",{"children":["$","a",null,{"href":"#policy-updates","children":"Policy Updates"}]}] +13:["$","li","Contact Us",{"children":["$","a",null,{"href":"#contact-us","children":"Contact Us"}]}] +14:["$","div",null,{"className":"dm-legal__main","children":[["$","header",null,{"className":"dm-legal__hero","children":[["$","h1",null,{"className":"dm-legal__title","children":"Privacy Policy"}],["$","p",null,{"className":"dm-legal__updated","children":["Last Updated: ","June 2026"]}],["$","p",null,{"className":"dm-legal__lead","children":"At Doormile, we are committed to protecting your privacy and maintaining the security of the information you share with us. This Privacy Policy outlines how we collect, use, store, and protect your information when you visit our website, interact with our services, or communicate with us."}]]}],["$","article",null,{"className":"dm-legal__content","children":[["$","section","Information We Collect",{"id":"information-we-collect","className":"dm-legal__section","children":[["$","h2",null,{"className":"dm-legal__h2","children":"Information We Collect"}],[["$","p","0",{"className":"dm-legal__p","children":"We may collect the following information:"}],["$","ul","1",{"className":"dm-legal__ul","children":[["$","li","0",{"children":"Full name"}],["$","li","1",{"children":"Email address"}],["$","li","2",{"children":"Phone number"}],["$","li","3",{"children":"Company name"}],["$","li","4",{"children":"Job title"}],["$","li","5",{"children":"Information submitted through contact forms"}],["$","li","6",{"children":"Service inquiry details"}],["$","li","7",{"children":"Website usage data and analytics"}],["$","li","8",{"children":"Browser, device, and IP information"}]]}]]]}],["$","section","How We Use Your Information",{"id":"how-we-use-your-information","className":"dm-legal__section","children":[["$","h2",null,{"className":"dm-legal__h2","children":"How We Use Your Information"}],[["$","p","0",{"className":"dm-legal__p","children":"We use your information to:"}],["$","ul","1",{"className":"dm-legal__ul","children":[["$","li","0",{"children":"Respond to inquiries and support requests"}],["$","li","1",{"children":"Provide information about our services"}],["$","li","2",{"children":"Improve website performance and user experience"}],["$","li","3",{"children":"Analyze usage trends and platform effectiveness"}],["$","li","4",{"children":"Maintain security and prevent unauthorized access"}],["$","li","5",{"children":"Communicate service updates and business information"}],["$","li","6",{"children":"Comply with legal and regulatory requirements"}]]}]]]}],["$","section","Information Sharing",{"id":"information-sharing","className":"dm-legal__section","children":[["$","h2",null,{"className":"dm-legal__h2","children":"Information Sharing"}],[["$","p","0",{"className":"dm-legal__p","children":"Doormile does not sell, rent, or trade personal information. Information may be shared with trusted service providers that assist with website hosting, analytics, communications, and operational support, subject to appropriate confidentiality and security obligations."}]]]}],["$","section","Data Security",{"id":"data-security","className":"dm-legal__section","children":[["$","h2",null,{"className":"dm-legal__h2","children":"Data Security"}],[["$","p","0",{"className":"dm-legal__p","children":"We implement industry-standard administrative, technical, and organizational safeguards designed to protect personal information from unauthorized access, disclosure, alteration, or destruction."}]]]}],["$","section","Data Retention",{"id":"data-retention","className":"dm-legal__section","children":[["$","h2",null,{"className":"dm-legal__h2","children":"Data Retention"}],[["$","p","0",{"className":"dm-legal__p","children":"We retain information only for as long as necessary to fulfill the purposes described in this policy, comply with legal obligations, resolve disputes, and enforce agreements."}]]]}],["$","section","Cookies and Tracking Technologies",{"id":"cookies-and-tracking-technologies","className":"dm-legal__section","children":[["$","h2",null,{"className":"dm-legal__h2","children":"Cookies and Tracking Technologies"}],[["$","p","0",{"className":"dm-legal__p","children":"We use cookies and similar technologies to improve website functionality, measure performance, understand user behavior, and enhance user experience."}]]]}],"$L1b","$L1c","$L1d","$L1e"]}]]}] +1f:T15aa, +.dm-legal { + background: #ffffff; + color: #334155; + /* Top padding clears the fixed/absolute floating navbar (~104px) + breathing room. */ + padding: clamp(132px, 16vh, 184px) 0 clamp(72px, 10vw, 96px); + font-family: var(--font-manrope), system-ui, -apple-system, sans-serif; +} + +.dm-legal__wrap { + max-width: 1180px; + margin: 0 auto; + padding: 0 clamp(20px, 5vw, 40px); + display: grid; + grid-template-columns: minmax(0, 1fr); + gap: 0; +} + +/* ---- Sticky table of contents (desktop only) ---- */ +.dm-legal__toc { display: none; } + +@media (min-width: 1080px) { + .dm-legal__wrap { + grid-template-columns: 248px minmax(0, 800px); + justify-content: center; + gap: 64px; + } + .dm-legal__toc { display: block; } +} + +.dm-legal__toc-inner { position: sticky; top: 128px; } +.dm-legal__toc-label { + margin: 0 0 14px; + font-size: 12px; + font-weight: 700; + letter-spacing: 0.14em; + text-transform: uppercase; + color: #94a3b8; +} +.dm-legal__toc nav ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; } +.dm-legal__toc nav a { + display: block; + font-size: 14px; + line-height: 1.4; + color: #64748b; + text-decoration: none; + border-left: 2px solid transparent; + padding-left: 12px; + transition: color 0.2s ease, border-color 0.2s ease; +} +.dm-legal__toc nav a:hover { color: #c01227; border-left-color: #c01227; } + +/* ---- Reading column (max 800px) ---- */ +.dm-legal__main { min-width: 0; max-width: 800px; } + +.dm-legal__hero { margin-bottom: clamp(40px, 6vw, 56px); } +.dm-legal__title { + margin: 0 !important; + padding: 0 !important; + /* !important / text-transform override the global ".elementor-kit-5 h1" + (uppercase + kit font-size) so headings render in normal case at the spec sizes. */ + font-size: clamp(40px, 6vw, 60px) !important; + font-weight: 800 !important; + line-height: 1.08 !important; + letter-spacing: -0.02em !important; + text-transform: none !important; + color: #0f172a !important; +} +.dm-legal__updated { + margin: 16px 0 0; + font-size: 14px; + font-weight: 700; + letter-spacing: 0.08em; + text-transform: uppercase; + color: #94a3b8; +} + +.dm-legal__lead { + margin: 24px 0 0; + font-size: clamp(18px, 1.6vw, 20px); + line-height: 1.7; + color: #475569; +} +.dm-legal__hero .dm-legal__lead { margin-top: 24px; } + +/* ---- Sections ---- */ +.dm-legal__content { display: flex; flex-direction: column; } +.dm-legal__section { padding-top: 32px; } +.dm-legal__section:first-child { padding-top: 0; } + +.dm-legal__h2 { + margin: 0 0 16px !important; + padding: 0 !important; + font-size: clamp(24px, 3vw, 32px) !important; + font-weight: 700 !important; + line-height: 1.2 !important; + letter-spacing: -0.01em !important; + text-transform: none !important; + color: #0f172a !important; + /* Offset anchor jumps so the heading isn't hidden under the fixed navbar. */ + scroll-margin-top: 120px; +} +.dm-legal__h3 { + margin: 24px 0 8px !important; + padding: 0 !important; + font-size: 20px !important; + font-weight: 700 !important; + line-height: 1.35 !important; + text-transform: none !important; + color: #0f172a !important; +} +.dm-legal__p { + margin: 0 0 16px; + font-size: 18px; + line-height: 1.7; + color: #334155; +} +.dm-legal__p:last-child { margin-bottom: 0; } + +.dm-legal__ul { margin: 4px 0 16px; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 10px; } +.dm-legal__ul li { + position: relative; + padding-left: 26px; + font-size: 18px; + line-height: 1.7; + color: #334155; +} +/* Extra .dm-legal prefix raises specificity above the global theme rule + ".logico-front-end ul li:before" (a fontello glyph), so our clean red dot + replaces the inherited checkmark marker. */ +.dm-legal .dm-legal__ul li::before { + content: "" !important; + position: absolute; + left: 4px; + top: 0.62em; + width: 7px; + height: 7px; + border-radius: 50%; + background: #c01227; + font-size: 0; +} +/* TOC links are inside a
      too — suppress the same inherited glyph marker. */ +.dm-legal .dm-legal__toc nav li::before { content: none !important; } + +.dm-legal__link { color: #c01227; font-weight: 600; text-decoration: none; border-bottom: 1px solid rgba(192,18,39,0.35); } +.dm-legal__link:hover { border-bottom-color: #c01227; } + +@media (max-width: 1079px) { + .dm-legal__main { margin: 0 auto; } +} + +/* ============================================================ + Navbar visibility — LEGAL PAGES ONLY. + This
      FMCG logistics

      FMCG

      FMCG logistics demands speed, precision, and continuous fulfillment across high-volume delivery networks. Businesses must balance tight delivery timelines, inventory movement, and operational efficiency without compromising product availability.

      • Unpredictable demand spikes create delivery pressure and reduce operational efficiency during peak periods.
      • Fresh product expiry constraints require faster, precisely timed deliveries to maintain product quality.
      • Multi-stop route complexity increases travel time, operational costs, and delivery coordination challenges.
      • Inventory stockout risks increase when delivery delays disrupt fast-moving product distribution.
      Pharma logistics

      Pharma

      Pharma logistics requires precision, compliance, and real-time monitoring so every shipment arrives safely and on time — from temperature-sensitive medicines to urgent emergency deliveries.

      • Cold chain integrity demands precise temperature control throughout transit.
      • Regulatory compliance must be tracked and documented on every delivery.
      • Critical delivery time windows require highly accurate scheduling.
      • Emergency shipments need instant dispatch and zero-delay execution.
      Enterprise and B2B logistics

      Enterprise & B2B

      Enterprise and B2B logistics require coordination and reliability to manage high-value shipments at scale — with appointment scheduling, white-glove standards, and strict SLA commitments.

      • Appointment scheduling requires precise timing across many locations.
      • White-glove delivery standards demand premium handling and accuracy.
      • Multi-location routing complexity grows with large-scale operations.
      • Strict SLA commitments pressure teams to stay timely and error-free.

    Doormile

    Doormile logo
    Address
    Hyderabad

    5th Floor, Vision Ultima,
    Street No.3, Jayabheri Enclave,
    Gachibowli, Hyderabad,
    Telangana 500032.

    Coimbatore

    Mayflower Valencia,
    Near Nava India Bus Stop,
    Avinashi Road,
    Udayampalayam,
    Tamil Nadu 641037.

    Bengaluru

    C612, 6th Floor,
    Trifecta Starlight,
    ITPL Road,
    Garudacharapalya,
    Mahadevapura,
    Bangalore 560048,
    Karnataka, India.

    Contact Us

    Tel : +91 86886 97941

    Email

    care@doormile.com

    Building Women
    Entrepreneurs.

    Empowering ambitious women with the network, strategic partnerships, and opportunities to build, grow, and lead successful enterprises that shape the future of logistics.

    / Our Vision /


    Women Own The Future.

    A logistics ecosystem where women don’t just participate — they own, build, and lead.

    The vision

    We are building an entrepreneurial ecosystem where women launch enterprises, scale operations, and shape the future of logistics from the inside.

    Why it matters

    Industries transform when founders emerge from every corner. Women-led enterprises bring fresh perspective, operational resilience, and long-term economic impact to logistics.

    How Wings contributes

    Wings provides the infrastructure — strategic partnerships, funding access, founder networks, and industry connections — that turns ambition into enterprise.

    / Our Approach /

    Not a program on a brochure. An ecosystem women can build in.

    Manifesto

    A venture that starts with conviction. A network that turns it into momentum.

    Wings is designed around the moments that define a founder: the first partnership signed, the first client won, the first team hired, the first enterprise scaled.

    01

    Women Entrepreneurship

    An ecosystem where women build, own, and scale enterprises across logistics.

    / Doormile Wings /

    Women Building The Next Mile

    Women Map
    0+
    Women Founders
    0+
    Cities Active
    0+
    Enterprises Launched
    Venture Building

    End-to-end support for women launching logistics enterprises — from ideation to market entry.

    Entrepreneurship

    Women building, owning, and scaling sustainable businesses within the logistics ecosystem.

    Founder Networks

    Peer communities and strategic connections that accelerate growth and open new markets.

    Enterprise Leadership

    Strategic decision-making, operational excellence, and vision-driven leadership for women founders.

    / Entrepreneurship Pillars /

    Every pillar is built around ownership.

    02
    Connect and grow

    Strategic Partnerships

    Direct access to supply chain networks, B2B relationships, industry alliances, and commercial agreements that accelerate growth.

    03
    Learn from builders

    Founder Mentorship

    One-on-one guidance from established entrepreneurs, operators, and investors who understand what it takes to scale.

    04
    Scale with confidence

    Growth & Scale

    Operational expansion frameworks, team building, funding readiness, and sustainable unit economics for ventures ready to grow.

    05
    See the opportunity

    Industry Immersion

    Real exposure to logistics operations, supply chain infrastructure, and distribution networks before founders commit to a vertical.

    / Our Impact /

    Growth we can measure


    0+Women-Led Enterprises In The Ecosystem

    0+Enterprises Launched
    0+Industry Partners
    0+Cities Active
    MillionsIn Economic Value Created

    Every number on this page represents a woman who walked into a room with an idea and walked out with a business. An enterprise launched, a partnership secured, a market entered — each is a marker of real economic impact, not a statistic collected for its own sake.

    / The Founder Journey /

    A clear path, from idea to enterprise

    01

    Apply

    Submit your venture idea and tell us about your entrepreneurial vision.

    02

    Discovery

    Identify the right market opportunity and validate your business model.

    03

    Build

    Develop your enterprise with ecosystem support, mentorship, and partnerships.

    04

    Launch

    Go to market with strategic backing, industry connections, and operational infrastructure.

    05

    Scale

    Grow your team, expand operations, and lead your enterprise to sustainable impact.

    / Women in Motion /

    Small steps. Lasting careers.

    A Wings program participant on the operations floor at a Doormile logistics hub
    Wings Participant building a career, one milestone at a time.

    I came in looking for a way forward. I found the confidence to lead.

    She started with limited exposure to logistics. Through structured training, mentorship, and hands-on experience, she built real operational skills — and now supports other women stepping into the industry.

    / Collaboration /

    Partnership is how ecosystems grow.

    The strongest ecosystems are built by many hands.

    Wings partners bring industry access, strategic infrastructure, capital, and networks. Together, we build the foundation women-led enterprises need to thrive.

    01

    Industry Partners

    Strategic alliances with logistics operators, supply chain leaders, and distribution networks that open doors for women-led enterprises.

    02

    Technology Partners

    Platforms, tools, and infrastructure that give founders the operational edge to compete and scale efficiently.

    03

    Community Networks

    Founder communities, women's business networks, and ecosystem builders who extend reach and amplify impact.

    04

    Investment Partners

    Funding access, grant programs, angel networks, and capital partners aligned with women-led enterprise growth.

    500+Women Founders
    100+Enterprises Launched
    25+Industry Partners
    / Build the next mile /

    Build what’s next.

    Join Doormile Wings in building the entrepreneurial ecosystem where women launch, grow, and lead enterprises that create lasting value across logistics.

    \ No newline at end of file diff --git a/build/solutions.txt b/build/solutions.txt new file mode 100644 index 0000000..7d968f1 --- /dev/null +++ b/build/solutions.txt @@ -0,0 +1,76 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +12:I[68027,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +c:T5ca, + /* Fix "Why Businesses Choose Doormile" section — anchor absolute image left, push content right */ + .elementor-element.elementor-element-ead59d3 { + position: relative; + overflow: hidden; + } + .elementor-element.elementor-element-f35119c { + position: absolute !important; + left: -2% !important; + top: 50% !important; + transform: translateY(-50%) !important; + width: 48% !important; + max-width: 520px !important; + opacity: 0.18 !important; + z-index: 0 !important; + pointer-events: none; + } + .elementor-element.elementor-element-56ecbb3 { + position: relative !important; + z-index: 1 !important; + width: 55% !important; + max-width: 55% !important; + margin-left: auto !important; + margin-right: 4% !important; + } + .elementor-element.elementor-element-56ecbb3 .e-con-inner { + max-width: 100% !important; + padding-left: 0 !important; + padding-right: 0 !important; + } + @media (max-width: 1020px) { + .elementor-element.elementor-element-f35119c { display: none !important; } + .elementor-element.elementor-element-56ecbb3 { + width: 100% !important; + max-width: 100% !important; + margin: 0 !important; + } + } + 0:{"P":null,"c":["","solutions"],"q":"","i":false,"f":[[["",{"children":["solutions",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$c"}}],"$Ld"],["$Le"],"$Lf"]}],{},null,false,null]},null,false,"$@10"]},null,false,null],"$L11",false]],"m":"$undefined","G":["$12",["$L13"]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"kmSVPuUqY3Rhw5xy4D2nn"} +14:I[89937,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yd8cyhuvvzan.js"],"default"] +15:I[40086,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yd8cyhuvvzan.js"],"default"] +16:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +17:"$Sreact.suspense" +1a:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +1c:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +d:["$","div",null,{"id":"solutions","className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":["$","div",null,{"data-elementor-type":"wp-page","data-elementor-id":"59","className":"elementor elementor-59","children":[["$","$L14",null,{}],["$","$L15",null,{}]]}]}]}]}] +e:["$","script","script-0",{"src":"/_next/static/chunks/0yd8cyhuvvzan.js","async":true,"nonce":"$undefined"}] +f:["$","$L16",null,{"children":["$","$17",null,{"name":"Next.MetadataOutlet","children":"$@18"}]}] +19:[] +10:"$W19" +11:["$","$1","h",{"children":[null,["$","$L1a",null,{"children":"$L1b"}],["$","div",null,{"hidden":true,"children":["$","$L1c",null,{"children":["$","$17",null,{"name":"Next.Metadata","children":"$L1d"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}] +13:["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}] +1b:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] +1e:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +18:null +1d:[["$","title","0",{"children":"Solutions – Doormile"}],["$","meta","1",{"name":"description","content":"Discover how Doormile's connected logistics platform serves diverse industries (FMCG, Pharma, and Enterprise) with tailored solutions."}],["$","meta","2",{"name":"robots","content":"index, follow"}],["$","link","3",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","4",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","5",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","6",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L1e","7",{}]] diff --git a/build/solutions/__next._full.txt b/build/solutions/__next._full.txt new file mode 100644 index 0000000..7d968f1 --- /dev/null +++ b/build/solutions/__next._full.txt @@ -0,0 +1,76 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +12:I[68027,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +c:T5ca, + /* Fix "Why Businesses Choose Doormile" section — anchor absolute image left, push content right */ + .elementor-element.elementor-element-ead59d3 { + position: relative; + overflow: hidden; + } + .elementor-element.elementor-element-f35119c { + position: absolute !important; + left: -2% !important; + top: 50% !important; + transform: translateY(-50%) !important; + width: 48% !important; + max-width: 520px !important; + opacity: 0.18 !important; + z-index: 0 !important; + pointer-events: none; + } + .elementor-element.elementor-element-56ecbb3 { + position: relative !important; + z-index: 1 !important; + width: 55% !important; + max-width: 55% !important; + margin-left: auto !important; + margin-right: 4% !important; + } + .elementor-element.elementor-element-56ecbb3 .e-con-inner { + max-width: 100% !important; + padding-left: 0 !important; + padding-right: 0 !important; + } + @media (max-width: 1020px) { + .elementor-element.elementor-element-f35119c { display: none !important; } + .elementor-element.elementor-element-56ecbb3 { + width: 100% !important; + max-width: 100% !important; + margin: 0 !important; + } + } + 0:{"P":null,"c":["","solutions"],"q":"","i":false,"f":[[["",{"children":["solutions",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$c"}}],"$Ld"],["$Le"],"$Lf"]}],{},null,false,null]},null,false,"$@10"]},null,false,null],"$L11",false]],"m":"$undefined","G":["$12",["$L13"]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"kmSVPuUqY3Rhw5xy4D2nn"} +14:I[89937,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yd8cyhuvvzan.js"],"default"] +15:I[40086,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yd8cyhuvvzan.js"],"default"] +16:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +17:"$Sreact.suspense" +1a:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +1c:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +d:["$","div",null,{"id":"solutions","className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":["$","div",null,{"data-elementor-type":"wp-page","data-elementor-id":"59","className":"elementor elementor-59","children":[["$","$L14",null,{}],["$","$L15",null,{}]]}]}]}]}] +e:["$","script","script-0",{"src":"/_next/static/chunks/0yd8cyhuvvzan.js","async":true,"nonce":"$undefined"}] +f:["$","$L16",null,{"children":["$","$17",null,{"name":"Next.MetadataOutlet","children":"$@18"}]}] +19:[] +10:"$W19" +11:["$","$1","h",{"children":[null,["$","$L1a",null,{"children":"$L1b"}],["$","div",null,{"hidden":true,"children":["$","$L1c",null,{"children":["$","$17",null,{"name":"Next.Metadata","children":"$L1d"}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}] +13:["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}] +1b:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] +1e:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +18:null +1d:[["$","title","0",{"children":"Solutions – Doormile"}],["$","meta","1",{"name":"description","content":"Discover how Doormile's connected logistics platform serves diverse industries (FMCG, Pharma, and Enterprise) with tailored solutions."}],["$","meta","2",{"name":"robots","content":"index, follow"}],["$","link","3",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","4",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","5",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","6",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L1e","7",{}]] diff --git a/build/solutions/__next._head.txt b/build/solutions/__next._head.txt new file mode 100644 index 0000000..6616402 --- /dev/null +++ b/build/solutions/__next._head.txt @@ -0,0 +1,6 @@ +1:"$Sreact.fragment" +2:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +3:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +4:"$Sreact.suspense" +5:I[27201,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"IconMark"] +0:{"rsc":["$","$1","h",{"children":[null,["$","$L2",null,{"children":[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]]}],["$","div",null,{"hidden":true,"children":["$","$L3",null,{"children":["$","$4",null,{"name":"Next.Metadata","children":[["$","title","0",{"children":"Solutions – Doormile"}],["$","meta","1",{"name":"description","content":"Discover how Doormile's connected logistics platform serves diverse industries (FMCG, Pharma, and Enterprise) with tailored solutions."}],["$","meta","2",{"name":"robots","content":"index, follow"}],["$","link","3",{"rel":"shortcut icon","href":"/images/cropped-image-2.png"}],["$","link","4",{"rel":"icon","href":"/favicon.ico?favicon.14w3bhkxgz946.ico","sizes":"40x40","type":"image/x-icon"}],["$","link","5",{"rel":"icon","href":"/images/cropped-image-2.png"}],["$","link","6",{"rel":"apple-touch-icon","href":"/images/cropped-image-2.png"}],["$","$L5","7",{}]]}]}]}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/solutions/__next._index.txt b/build/solutions/__next._index.txt new file mode 100644 index 0000000..d0b3355 --- /dev/null +++ b/build/solutions/__next._index.txt @@ -0,0 +1,15 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"rsc":["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","template":["$","$La",null,{}],"notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]]}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/solutions/__next._tree.txt b/build/solutions/__next._tree.txt new file mode 100644 index 0000000..44986c1 --- /dev/null +++ b/build/solutions/__next._tree.txt @@ -0,0 +1,9 @@ +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"tree":{"name":"","param":null,"prefetchHints":16,"slots":{"children":{"name":"solutions","param":null,"prefetchHints":0,"slots":{"children":{"name":"__PAGE__","param":null,"prefetchHints":0,"slots":null}}}}},"staleTime":300,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/solutions/__next.solutions.__PAGE__.txt b/build/solutions/__next.solutions.__PAGE__.txt new file mode 100644 index 0000000..fdc02e4 --- /dev/null +++ b/build/solutions/__next.solutions.__PAGE__.txt @@ -0,0 +1,45 @@ +1:"$Sreact.fragment" +3:I[89937,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yd8cyhuvvzan.js"],"default"] +4:I[40086,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js","/_next/static/chunks/0yd8cyhuvvzan.js"],"default"] +5:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +6:"$Sreact.suspense" +2:T5ca, + /* Fix "Why Businesses Choose Doormile" section — anchor absolute image left, push content right */ + .elementor-element.elementor-element-ead59d3 { + position: relative; + overflow: hidden; + } + .elementor-element.elementor-element-f35119c { + position: absolute !important; + left: -2% !important; + top: 50% !important; + transform: translateY(-50%) !important; + width: 48% !important; + max-width: 520px !important; + opacity: 0.18 !important; + z-index: 0 !important; + pointer-events: none; + } + .elementor-element.elementor-element-56ecbb3 { + position: relative !important; + z-index: 1 !important; + width: 55% !important; + max-width: 55% !important; + margin-left: auto !important; + margin-right: 4% !important; + } + .elementor-element.elementor-element-56ecbb3 .e-con-inner { + max-width: 100% !important; + padding-left: 0 !important; + padding-right: 0 !important; + } + @media (max-width: 1020px) { + .elementor-element.elementor-element-f35119c { display: none !important; } + .elementor-element.elementor-element-56ecbb3 { + width: 100% !important; + max-width: 100% !important; + margin: 0 !important; + } + } + 0:{"rsc":["$","$1","c",{"children":[[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"$2"}}],["$","div",null,{"id":"solutions","className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":["$","div",null,{"data-elementor-type":"wp-page","data-elementor-id":"59","className":"elementor elementor-59","children":[["$","$L3",null,{}],["$","$L4",null,{}]]}]}]}]}]],[["$","script","script-0",{"src":"/_next/static/chunks/0yd8cyhuvvzan.js","async":true}]],["$","$L5",null,{"children":["$","$6",null,{"name":"Next.MetadataOutlet","children":"$@7"}]}]]}],"isPartial":false,"staleTime":300,"varyParams":null,"buildId":"kmSVPuUqY3Rhw5xy4D2nn"} +7:null diff --git a/build/solutions/__next.solutions.txt b/build/solutions/__next.solutions.txt new file mode 100644 index 0000000..e0935ae --- /dev/null +++ b/build/solutions/__next.solutions.txt @@ -0,0 +1,5 @@ +1:"$Sreact.fragment" +2:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:[] +0:{"rsc":["$","$1","c",{"children":[null,["$","$L2",null,{"parallelRouterKey":"children","template":["$","$L3",null,{}]}]]}],"isPartial":false,"staleTime":300,"varyParams":"$W4","buildId":"kmSVPuUqY3Rhw5xy4D2nn"} diff --git a/build/terms-of-service.html b/build/terms-of-service.html new file mode 100644 index 0000000..1a8a3a5 --- /dev/null +++ b/build/terms-of-service.html @@ -0,0 +1,853 @@ +Terms of Service – Doormile

    Doormile

    Doormile logo
    Address
    Hyderabad

    5th Floor, Vision Ultima,
    Street No.3, Jayabheri Enclave,
    Gachibowli, Hyderabad,
    Telangana 500032.

    Coimbatore

    Mayflower Valencia,
    Near Nava India Bus Stop,
    Avinashi Road,
    Udayampalayam,
    Tamil Nadu 641037.

    Bengaluru

    C612, 6th Floor,
    Trifecta Starlight,
    ITPL Road,
    Garudacharapalya,
    Mahadevapura,
    Bangalore 560048,
    Karnataka, India.

    Contact Us

    Tel : +91 86886 97941

    Email

    care@doormile.com

    \ No newline at end of file diff --git a/build/terms-of-service.txt b/build/terms-of-service.txt new file mode 100644 index 0000000..42ac732 --- /dev/null +++ b/build/terms-of-service.txt @@ -0,0 +1,223 @@ +1:"$Sreact.fragment" +2:I[67989,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +3:I[8971,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +4:I[48064,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +5:I[26290,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +6:I[82637,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"HeaderUIProvider"] +7:I[92260,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +8:I[3374,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +9:I[39756,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +a:I[37457,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +b:I[58234,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default"] +1a:I[68027,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"default",1] +:HL["/_next/static/chunks/0w9rs8fz9m7so.css","style"] +:HL["/_next/static/media/0c795a286deabae8-s.p.14tvuu96~wkr0.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/0c89a48fa5027cee-s.p.0rd3rjvnnhw7n.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/5c285b27cdda1fe8-s.p.0yo6-5yoeeudq.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/83afe278b6a6bb3c-s.p.0q-301v4kxxnr.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/_next/static/media/a343f882a40d2cc9-s.p.0kho-wj7-y-w1.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css","style"] +:HL["/css/site.css","style"] +0:{"P":null,"c":["","terms-of-service"],"q":"","i":false,"f":[[["",{"children":["terms-of-service",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",16],[["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/chunks/0w9rs8fz9m7so.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}],["$","script","script-0",{"src":"/_next/static/chunks/06n0m6ck5r8gy.js","async":true,"nonce":"$undefined"}],["$","script","script-1",{"src":"/_next/static/chunks/08hj-sa49t6qk.js","async":true,"nonce":"$undefined"}],["$","script","script-2",{"src":"/_next/static/chunks/074ch-b_0x~v-.js","async":true,"nonce":"$undefined"}],["$","script","script-3",{"src":"/_next/static/chunks/04xui0pxt.et1.js","async":true,"nonce":"$undefined"}],["$","script","script-4",{"src":"/_next/static/chunks/0d3shmwh5_nmn.js","async":true,"nonce":"$undefined"}]],["$","html",null,{"lang":"en-US","data-scroll-behavior":"smooth","className":"manrope_67dc055e-module__BHrBnq__variable space_grotesk_2e42c3c6-module__3Wl9rq__variable syne_ef5854ac-module__2TJB3a__variable dm_sans_2770e922-module__TdA3fW__variable inter_5dbe1e89-module__i9oJOa__variable","suppressHydrationWarning":true,"children":[["$","head",null,{"children":[["$","link",null,{"rel":"stylesheet","href":"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css"}],["$","link",null,{"rel":"stylesheet","href":"/css/site.css"}]]}],["$","body",null,{"className":"wp-singular page-template-default page wp-theme-logico wp-child-theme-logico-child theme-logico ehf-header ehf-footer ehf-template-logico ehf-stylesheet-logico-child logico-front-end logico-theme-style-rounded elementor-default elementor-kit-5 elementor-page","suppressHydrationWarning":true,"children":[["$","$L2",null,{}],["$","$L3",null,{}],["$","$L4",null,{"children":[["$","$L5",null,{}],["$","$L6",null,{"children":[["$","$L7",null,{}],["$","div",null,{"className":"body-container","children":["$","div",null,{"id":"page","className":"hfeed site","children":[["$","$L8",null,{}],["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}],["$","$Lb",null,{}]]}]}]]}]]}]]}]]}]]}],{"children":[["$","$1","c",{"children":[null,["$","$L9",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$La",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":[["$","$1","c",{"children":[["$","div",null,{"className":"content-wrapper content-wrapper-may-contain-elementor-code content-wrapper-sidebar-position-none","children":["$","div",null,{"className":"content","children":["$","div",null,{"className":"content-inner","children":["$","section",null,{"className":"dm-legal","aria-label":"Terms of Service","children":[["$","div",null,{"className":"dm-legal__wrap","children":[["$","aside",null,{"className":"dm-legal__toc","aria-label":"On this page","children":["$","div",null,{"className":"dm-legal__toc-inner","children":[["$","p",null,{"className":"dm-legal__toc-label","children":"On this page"}],["$","nav",null,{"children":["$","ul",null,{"children":[["$","li","Acceptance of Terms",{"children":["$","a",null,{"href":"#acceptance-of-terms","children":"Acceptance of Terms"}]}],["$","li","Permitted Use",{"children":["$","a",null,{"href":"#permitted-use","children":"Permitted Use"}]}],["$","li","Intellectual Property Rights",{"children":"$Lc"}],"$Ld","$Le","$Lf","$L10","$L11","$L12","$L13","$L14"]}]}]]}]}],"$L15"]}],"$L16"]}]}]}]}],null,"$L17"]}],{},null,false,null]},null,false,"$@18"]},null,false,null],"$L19",false]],"m":"$undefined","G":["$1a",["$L1b"]],"S":true,"h":null,"s":"$undefined","l":"$undefined","p":"$undefined","d":"$undefined","b":"kmSVPuUqY3Rhw5xy4D2nn"} +21:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"OutletBoundary"] +22:"$Sreact.suspense" +25:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"ViewportBoundary"] +27:I[97367,["/_next/static/chunks/06n0m6ck5r8gy.js","/_next/static/chunks/08hj-sa49t6qk.js","/_next/static/chunks/074ch-b_0x~v-.js","/_next/static/chunks/04xui0pxt.et1.js","/_next/static/chunks/0d3shmwh5_nmn.js"],"MetadataBoundary"] +c:["$","a",null,{"href":"#intellectual-property-rights","children":"Intellectual Property Rights"}] +d:["$","li","User Submissions",{"children":["$","a",null,{"href":"#user-submissions","children":"User Submissions"}]}] +e:["$","li","Service Availability",{"children":["$","a",null,{"href":"#service-availability","children":"Service Availability"}]}] +f:["$","li","Disclaimer of Warranties",{"children":["$","a",null,{"href":"#disclaimer-of-warranties","children":"Disclaimer of Warranties"}]}] +10:["$","li","Limitation of Liability",{"children":["$","a",null,{"href":"#limitation-of-liability","children":"Limitation of Liability"}]}] +11:["$","li","Indemnification",{"children":["$","a",null,{"href":"#indemnification","children":"Indemnification"}]}] +12:["$","li","Modifications",{"children":["$","a",null,{"href":"#modifications","children":"Modifications"}]}] +13:["$","li","Governing Law",{"children":["$","a",null,{"href":"#governing-law","children":"Governing Law"}]}] +14:["$","li","Contact Us",{"children":["$","a",null,{"href":"#contact-us","children":"Contact Us"}]}] +15:["$","div",null,{"className":"dm-legal__main","children":[["$","header",null,{"className":"dm-legal__hero","children":[["$","h1",null,{"className":"dm-legal__title","children":"Terms of Service"}],["$","p",null,{"className":"dm-legal__updated","children":["Last Updated: ","June 2026"]}],["$","p",null,{"className":"dm-legal__lead","children":"These Terms of Service govern your access to and use of the Doormile website and related services. By accessing or using our website, you agree to comply with these terms."}]]}],["$","article",null,{"className":"dm-legal__content","children":[["$","section","Acceptance of Terms",{"id":"acceptance-of-terms","className":"dm-legal__section","children":[["$","h2",null,{"className":"dm-legal__h2","children":"Acceptance of Terms"}],[["$","p","0",{"className":"dm-legal__p","children":"By accessing this website, you acknowledge that you have read, understood, and agreed to these Terms of Service and all applicable laws and regulations."}]]]}],["$","section","Permitted Use",{"id":"permitted-use","className":"dm-legal__section","children":[["$","h2",null,{"className":"dm-legal__h2","children":"Permitted Use"}],[["$","p","0",{"className":"dm-legal__p","children":"You agree to use the website and services only for lawful purposes and in accordance with these terms."}],["$","p","1",{"className":"dm-legal__p","children":"You agree not to:"}],["$","ul","2",{"className":"dm-legal__ul","children":[["$","li","0",{"children":"Violate applicable laws or regulations"}],["$","li","1",{"children":"Attempt unauthorized access to systems or networks"}],["$","li","2",{"children":"Interfere with website functionality or security"}],["$","li","3",{"children":"Distribute malicious software or harmful code"}],["$","li","4",{"children":"Misrepresent your identity or organization"}],["$","li","5",{"children":"Use website content without authorization"}]]}]]]}],["$","section","Intellectual Property Rights",{"id":"intellectual-property-rights","className":"dm-legal__section","children":[["$","h2",null,{"className":"dm-legal__h2","children":"Intellectual Property Rights"}],[["$","p","0",{"className":"dm-legal__p","children":"All content, technology, software, graphics, trademarks, logos, text, designs, and other materials available on this website are the property of Doormile or its licensors and are protected by applicable intellectual property laws."}]]]}],["$","section","User Submissions",{"id":"user-submissions","className":"dm-legal__section","children":[["$","h2",null,{"className":"dm-legal__h2","children":"User Submissions"}],[["$","p","0",{"className":"dm-legal__p","children":"Any information submitted through forms, inquiries, or communications must be accurate and lawful. Users are responsible for the content they submit."}]]]}],["$","section","Service Availability",{"id":"service-availability","className":"dm-legal__section","children":[["$","h2",null,{"className":"dm-legal__h2","children":"Service Availability"}],[["$","p","0",{"className":"dm-legal__p","children":"While we strive to maintain uninterrupted access, we do not guarantee that the website or services will always be available, secure, or error-free."}]]]}],["$","section","Disclaimer of Warranties",{"id":"disclaimer-of-warranties","className":"dm-legal__section","children":[["$","h2",null,{"className":"dm-legal__h2","children":"Disclaimer of Warranties"}],[["$","p","0",{"className":"dm-legal__p","children":"The website and services are provided on an \"as is\" and \"as available\" basis without warranties of any kind, whether express or implied."}]]]}],["$","section","Limitation of Liability",{"id":"limitation-of-liability","className":"dm-legal__section","children":[["$","h2",null,{"className":"dm-legal__h2","children":"Limitation of Liability"}],[["$","p","0",{"className":"dm-legal__p","children":"To the maximum extent permitted by law, Doormile shall not be liable for any indirect, incidental, special, consequential, or punitive damages arising from or related to the use of the website or services."}]]]}],"$L1c","$L1d","$L1e","$L1f"]}]]}] +20:T15aa, +.dm-legal { + background: #ffffff; + color: #334155; + /* Top padding clears the fixed/absolute floating navbar (~104px) + breathing room. */ + padding: clamp(132px, 16vh, 184px) 0 clamp(72px, 10vw, 96px); + font-family: var(--font-manrope), system-ui, -apple-system, sans-serif; +} + +.dm-legal__wrap { + max-width: 1180px; + margin: 0 auto; + padding: 0 clamp(20px, 5vw, 40px); + display: grid; + grid-template-columns: minmax(0, 1fr); + gap: 0; +} + +/* ---- Sticky table of contents (desktop only) ---- */ +.dm-legal__toc { display: none; } + +@media (min-width: 1080px) { + .dm-legal__wrap { + grid-template-columns: 248px minmax(0, 800px); + justify-content: center; + gap: 64px; + } + .dm-legal__toc { display: block; } +} + +.dm-legal__toc-inner { position: sticky; top: 128px; } +.dm-legal__toc-label { + margin: 0 0 14px; + font-size: 12px; + font-weight: 700; + letter-spacing: 0.14em; + text-transform: uppercase; + color: #94a3b8; +} +.dm-legal__toc nav ul { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; } +.dm-legal__toc nav a { + display: block; + font-size: 14px; + line-height: 1.4; + color: #64748b; + text-decoration: none; + border-left: 2px solid transparent; + padding-left: 12px; + transition: color 0.2s ease, border-color 0.2s ease; +} +.dm-legal__toc nav a:hover { color: #c01227; border-left-color: #c01227; } + +/* ---- Reading column (max 800px) ---- */ +.dm-legal__main { min-width: 0; max-width: 800px; } + +.dm-legal__hero { margin-bottom: clamp(40px, 6vw, 56px); } +.dm-legal__title { + margin: 0 !important; + padding: 0 !important; + /* !important / text-transform override the global ".elementor-kit-5 h1" + (uppercase + kit font-size) so headings render in normal case at the spec sizes. */ + font-size: clamp(40px, 6vw, 60px) !important; + font-weight: 800 !important; + line-height: 1.08 !important; + letter-spacing: -0.02em !important; + text-transform: none !important; + color: #0f172a !important; +} +.dm-legal__updated { + margin: 16px 0 0; + font-size: 14px; + font-weight: 700; + letter-spacing: 0.08em; + text-transform: uppercase; + color: #94a3b8; +} + +.dm-legal__lead { + margin: 24px 0 0; + font-size: clamp(18px, 1.6vw, 20px); + line-height: 1.7; + color: #475569; +} +.dm-legal__hero .dm-legal__lead { margin-top: 24px; } + +/* ---- Sections ---- */ +.dm-legal__content { display: flex; flex-direction: column; } +.dm-legal__section { padding-top: 32px; } +.dm-legal__section:first-child { padding-top: 0; } + +.dm-legal__h2 { + margin: 0 0 16px !important; + padding: 0 !important; + font-size: clamp(24px, 3vw, 32px) !important; + font-weight: 700 !important; + line-height: 1.2 !important; + letter-spacing: -0.01em !important; + text-transform: none !important; + color: #0f172a !important; + /* Offset anchor jumps so the heading isn't hidden under the fixed navbar. */ + scroll-margin-top: 120px; +} +.dm-legal__h3 { + margin: 24px 0 8px !important; + padding: 0 !important; + font-size: 20px !important; + font-weight: 700 !important; + line-height: 1.35 !important; + text-transform: none !important; + color: #0f172a !important; +} +.dm-legal__p { + margin: 0 0 16px; + font-size: 18px; + line-height: 1.7; + color: #334155; +} +.dm-legal__p:last-child { margin-bottom: 0; } + +.dm-legal__ul { margin: 4px 0 16px; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 10px; } +.dm-legal__ul li { + position: relative; + padding-left: 26px; + font-size: 18px; + line-height: 1.7; + color: #334155; +} +/* Extra .dm-legal prefix raises specificity above the global theme rule + ".logico-front-end ul li:before" (a fontello glyph), so our clean red dot + replaces the inherited checkmark marker. */ +.dm-legal .dm-legal__ul li::before { + content: "" !important; + position: absolute; + left: 4px; + top: 0.62em; + width: 7px; + height: 7px; + border-radius: 50%; + background: #c01227; + font-size: 0; +} +/* TOC links are inside a
      too — suppress the same inherited glyph marker. */ +.dm-legal .dm-legal__toc nav li::before { content: none !important; } + +.dm-legal__link { color: #c01227; font-weight: 600; text-decoration: none; border-bottom: 1px solid rgba(192,18,39,0.35); } +.dm-legal__link:hover { border-bottom-color: #c01227; } + +@media (max-width: 1079px) { + .dm-legal__main { margin: 0 auto; } +} + +/* ============================================================ + Navbar visibility — LEGAL PAGES ONLY. + This