{"id":630,"date":"2022-01-19T09:41:08","date_gmt":"2022-01-19T09:41:08","guid":{"rendered":"https:\/\/startersites.io\/stagingthree\/?page_id=630"},"modified":"2026-09-04T03:31:44","modified_gmt":"2026-09-04T03:31:44","slug":"contact-us","status":"publish","type":"page","link":"http:\/\/yuanlinoutdoor.com\/zh\/contact-us\/","title":{"rendered":"\u8054\u7cfb\u6211\u4eec"},"content":{"rendered":"<style>\n.entry-content.is-layout-constrained p {<br \/>\n    display: block !important;<br \/>\n}<br \/>\n<\/style>\n\n\n<figure class=\"wp-block-image alignfull size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"1920\" height=\"656\" src=\"https:\/\/yuanlinoutdoor.com\/wp-content\/uploads\/2025\/05\/contact.jpg\" alt=\"\" class=\"wp-image-801\"\/><\/figure>\n\n\n\n<div class=\"wp-block-stackable-columns stk-block-columns stk-block stk-6e52a67\" data-block-id=\"6e52a67\"><style>.stk-6e52a67 {max-width:1000px !important;min-width:auto !important;margin-top:-80px !important;margin-right:auto !important;margin-bottom:0px !important;margin-left:auto !important;}.stk-6e52a67-column{--stk-column-gap:35px !important;}@media screen and (max-width:689px){.stk-6e52a67 {margin-top:0px !important;}.stk-6e52a67-column{--stk-column-gap:0px !important;row-gap:80px !important;}}<\/style><div class=\"stk-row stk-inner-blocks has-text-align-center-mobile stk-block-content stk-content-align stk-6e52a67-column\">\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-7879cbb\" data-v=\"4\" data-block-id=\"7879cbb\"><style>.stk-7879cbb-container{margin-top:0px !important;margin-right:0px !important;margin-bottom:0px !important;margin-left:0px !important;}@media screen and (min-width:690px){.stk-7879cbb {flex:var(--stk-flex-grow, 1) 1 calc(40% - var(--stk-column-gap, 0px) * 1 \/ 2 ) !important;}}<\/style><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-7879cbb-container stk--no-background stk--no-padding\"><div class=\"stk-block-content stk-inner-blocks stk-7879cbb-inner-blocks\">\n<div class=\"wp-block-stackable-spacer stk-block-spacer stk--no-padding stk-block stk-a573235\" data-block-id=\"a573235\"><style>.stk-a573235 {height:130px !important;}@media screen and (max-width:689px){.stk-a573235 {height:50px !important;}}<\/style><\/div>\n\n\n\n<div class=\"wp-block-stackable-columns stk-block-columns stk-block stk-f54aa14\" data-block-id=\"f54aa14\"><style>.stk-f54aa14 {margin-bottom:35px !important;}.stk-f54aa14-column{--stk-column-gap:35px !important;}@media screen and (max-width:689px){.stk-f54aa14-column{--stk-column-gap:0px !important;row-gap:35px !important;}}<\/style><div class=\"stk-row stk-inner-blocks stk-block-content stk-content-align stk-f54aa14-column\">\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-4c654e2\" data-v=\"4\" data-block-id=\"4c654e2\"><style>.stk-4c654e2-container{margin-top:0px !important;margin-right:0px !important;margin-bottom:0px !important;margin-left:0px !important;}@media screen and (min-width:690px){.stk-4c654e2 {flex:var(--stk-flex-grow, 1) 1 calc(15% - var(--stk-column-gap, 0px) * 1 \/ 2 ) !important;}}<\/style><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-4c654e2-container stk--no-background stk--no-padding\"><div class=\"stk-block-content stk-inner-blocks stk-4c654e2-inner-blocks\">\n<div class=\"wp-block-stackable-icon stk-block-icon stk-block stk-71ea651\" data-block-id=\"71ea651\"><style>.stk-71ea651 .stk--svg-wrapper .stk--inner-svg svg:last-child{height:40px !important;width:40px !important;}.stk-71ea651 .stk--svg-wrapper .stk--inner-svg svg:last-child, .stk-71ea651 .stk--svg-wrapper .stk--inner-svg svg:last-child :is(g, path, rect, polygon, ellipse){fill:var(--theme-palette-color-1, #a8977b) !important;}<\/style><span class=\"stk--svg-wrapper\"><div class=\"stk--inner-svg\"><svg style=\"height:0;width:0\"><defs><lineargradient id=\"linear-gradient-71ea651\" x1=\"0\" x2=\"100%\" y1=\"0\" y2=\"0\"><stop offset=\"0%\" style=\"stop-opacity:1;stop-color:var(--linear-gradient-71-ea-651-color-1)\"><\/stop><stop offset=\"100%\" style=\"stop-opacity:1;stop-color:var(--linear-gradient-71-ea-651-color-2)\"><\/stop><\/lineargradient><\/defs><\/svg><svg class=\"ugb-custom-icon\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewbox=\"0 0 40 40\" aria-hidden=\"true\" width=\"32\" height=\"32\">\n  <path d=\"M23.9 15.7c0 2.2-1.7 3.9-3.9 4-2.2 0-3.9-1.7-4-3.9v-.1c0-2.1 1.7-3.9 3.9-3.9s4 1.7 4 3.9zm11.6-.4v.3c0 6.5-8.2 17.4-13.1 23.3-.6.7-1.5 1.1-2.4 1.1-.7 0-1.4-.2-1.9-.7-.2-.1-.3-.3-.4-.4C12.8 33 4.5 22.1 4.5 15.6 4.5 7.1 11.3.1 19.9 0c4.2 0 8 1.5 11 4.4 2.9 2.9 4.5 6.8 4.6 10.9zm-3.5.1c0-3.2-1.3-6.2-3.6-8.5-2.3-2.2-5.3-3.4-8.4-3.4h-.1c-3.2 0-6.2 1.3-8.5 3.6-2.2 2.2-3.5 5.3-3.4 8.5 0 4.5 6.2 13.6 12 20.8 5.9-7.2 12-16.3 12-20.8v-.2z\"><\/path>\n<\/svg><\/div><\/span><\/div>\n<\/div><\/div><\/div>\n\n\n\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-859da84\" data-v=\"4\" data-block-id=\"859da84\"><style>.stk-859da84-container{margin-top:0px !important;margin-right:0px !important;margin-bottom:0px !important;margin-left:0px !important;}@media screen and (min-width:690px){.stk-859da84 {flex:var(--stk-flex-grow, 1) 1 calc(85% - var(--stk-column-gap, 0px) * 1 \/ 2 ) !important;}}<\/style><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-859da84-container stk--no-background stk--no-padding\"><div class=\"stk-block-content stk-inner-blocks stk-859da84-inner-blocks\">\n<div class=\"wp-block-stackable-heading stk-block-heading stk-block-heading--v2 stk-block stk-9003eb7\" id=\"address\" data-block-id=\"9003eb7\"><style>.stk-9003eb7 {margin-bottom:10px !important;}<\/style><h6 class=\"stk-block-heading__text\">\u5730\u5740<\/h6><\/div>\n\n\n\n<p>\u5e7f\u4e1c\u7701\u4f5b\u5c71\u5e02\u987a\u5fb7\u533a\u4e50\u4ece\u9547\u7f57\u6d6e\u5bab\u56fd\u9645\u5bb6\u5177\u535a\u89c8\u4e2d\u5fc31FA17\u300118\u300123\u300126<\/p>\n<\/div><\/div><\/div>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-stackable-columns stk-block-columns stk-block stk-71ca896\" data-block-id=\"71ca896\"><style>.stk-71ca896 {margin-bottom:35px !important;}.stk-71ca896-column{--stk-column-gap:35px !important;}@media screen and (max-width:689px){.stk-71ca896-column{--stk-column-gap:0px !important;row-gap:35px !important;}}<\/style><div class=\"stk-row stk-inner-blocks stk-block-content stk-content-align stk-71ca896-column\">\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-3e5aa5f\" data-v=\"4\" data-block-id=\"3e5aa5f\"><style>.stk-3e5aa5f-container{margin-top:0px !important;margin-right:0px !important;margin-bottom:0px !important;margin-left:0px !important;}@media screen and (min-width:690px){.stk-3e5aa5f {flex:var(--stk-flex-grow, 1) 1 calc(15% - var(--stk-column-gap, 0px) * 1 \/ 2 ) !important;}}<\/style><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-3e5aa5f-container stk--no-background stk--no-padding\"><div class=\"stk-block-content stk-inner-blocks stk-3e5aa5f-inner-blocks\">\n<div class=\"wp-block-stackable-icon stk-block-icon stk-block stk-4f66621\" data-block-id=\"4f66621\"><style>.stk-4f66621 .stk--svg-wrapper .stk--inner-svg svg:last-child{height:40px !important;width:40px !important;}.stk-4f66621 .stk--svg-wrapper .stk--inner-svg svg:last-child, .stk-4f66621 .stk--svg-wrapper .stk--inner-svg svg:last-child :is(g, path, rect, polygon, ellipse){fill:var(--theme-palette-color-1, #a8977b) !important;}<\/style><span class=\"stk--svg-wrapper\"><div class=\"stk--inner-svg\"><svg style=\"height:0;width:0\"><defs><lineargradient id=\"linear-gradient-4f66621\" x1=\"0\" x2=\"100%\" y1=\"0\" y2=\"0\"><stop offset=\"0%\" style=\"stop-opacity:1;stop-color:var(--linear-gradient-4-f-66621-color-1)\"><\/stop><stop offset=\"100%\" style=\"stop-opacity:1;stop-color:var(--linear-gradient-4-f-66621-color-2)\"><\/stop><\/lineargradient><\/defs><\/svg><svg class=\"ugb-custom-icon\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewbox=\"0 0 40 40\" aria-hidden=\"true\" width=\"32\" height=\"32\">\n  <path d=\"M40 13.1V6.4c0-1-.8-1.8-1.8-1.8H1.8c-1 0-1.8.8-1.8 1.8v27.2c0 1 .8 1.8 1.8 1.8h36.5c1 0 1.8-.8 1.8-1.8V13.3c-.1-.1-.1-.2-.1-.2zm-3.5-5v4.1L20 22.6 3.5 12.2V8.1h33zm-33 23.8V16.3L19 26.2c.3.2.6.3.9.3.3 0 .6-.1.9-.3l15.6-9.9v15.5H3.5z\"><\/path>\n<\/svg><\/div><\/span><\/div>\n<\/div><\/div><\/div>\n\n\n\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-e0183ce\" data-v=\"4\" data-block-id=\"e0183ce\"><style>.stk-e0183ce-container{margin-top:0px !important;margin-right:0px !important;margin-bottom:0px !important;margin-left:0px !important;}@media screen and (min-width:690px){.stk-e0183ce {flex:var(--stk-flex-grow, 1) 1 calc(85% - var(--stk-column-gap, 0px) * 1 \/ 2 ) !important;}}<\/style><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-e0183ce-container stk--no-background stk--no-padding\"><div class=\"stk-block-content stk-inner-blocks stk-e0183ce-inner-blocks\">\n<div class=\"wp-block-stackable-heading stk-block-heading stk-block-heading--v2 stk-block stk-bfe9254\" id=\"email\" data-block-id=\"bfe9254\"><style>.stk-bfe9254 {margin-bottom:10px !important;}<\/style><h6 class=\"stk-block-heading__text\">\u90ae\u7bb1<\/h6><\/div>\n\n\n\n<p><a href=\"mailto:yuanlinoutdoor@gmail.com\">yuanlinoutdoor@gmail.com<\/a><\/p>\n<\/div><\/div><\/div>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-stackable-columns stk-block-columns stk-block stk-576a428\" data-block-id=\"576a428\"><style>.stk-576a428-column{--stk-column-gap:35px !important;}@media screen and (max-width:689px){.stk-576a428-column{--stk-column-gap:0px !important;row-gap:35px !important;}}<\/style><div class=\"stk-row stk-inner-blocks stk-block-content stk-content-align stk-576a428-column\">\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-80a43cf\" data-v=\"4\" data-block-id=\"80a43cf\"><style>.stk-80a43cf-container{margin-top:0px !important;margin-right:0px !important;margin-bottom:0px !important;margin-left:0px !important;}@media screen and (min-width:690px){.stk-80a43cf {flex:var(--stk-flex-grow, 1) 1 calc(15% - var(--stk-column-gap, 0px) * 1 \/ 2 ) !important;}}<\/style><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-80a43cf-container stk--no-background stk--no-padding\"><div class=\"stk-block-content stk-inner-blocks stk-80a43cf-inner-blocks\">\n<div class=\"wp-block-stackable-icon stk-block-icon stk-block stk-514d4fa\" data-block-id=\"514d4fa\"><style>.stk-514d4fa .stk--svg-wrapper .stk--inner-svg svg:last-child{height:40px !important;width:40px !important;}.stk-514d4fa .stk--svg-wrapper .stk--inner-svg svg:last-child, .stk-514d4fa .stk--svg-wrapper .stk--inner-svg svg:last-child :is(g, path, rect, polygon, ellipse){fill:var(--theme-palette-color-1, #a8977b) !important;}<\/style><span class=\"stk--svg-wrapper\"><div class=\"stk--inner-svg\"><svg style=\"height:0;width:0\"><defs><lineargradient id=\"linear-gradient-514d4fa\" x1=\"0\" x2=\"100%\" y1=\"0\" y2=\"0\"><stop offset=\"0%\" style=\"stop-opacity:1;stop-color:var(--linear-gradient-514-d-4-fa-color-1)\"><\/stop><stop offset=\"100%\" style=\"stop-opacity:1;stop-color:var(--linear-gradient-514-d-4-fa-color-2)\"><\/stop><\/lineargradient><\/defs><\/svg><svg class=\"ugb-custom-icon\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewbox=\"0 0 40 40\" aria-hidden=\"true\" width=\"32\" height=\"32\">\n  <path d=\"M29.5 40c-4 0-10-2.2-18.7-10.8C5 23.3 1.5 18 .4 13.4c-1.2-5 .8-7.7 1.7-8.6L5.8 1c1.4-1.4 3.6-1.4 5 0 .2.1.2.2.3.3l5.5 7c1.1 1.4 1 3.4-.3 4.7l-2 2c-.2.3-.3.6-.2.9v.1c0 .9 1.7 3.8 3.8 6 2.1 2.1 5.1 3.8 6 3.8h.1c.3 0 .6 0 .9-.2l2-2c1.3-1.3 3.3-1.4 4.7-.3l7 5.4c1.5 1.2 1.8 3.5.6 5-.1.3-.2.4-.2.4l-3.8 3.8c-.6.6-2.4 2.1-5.7 2.1zM8.4 3.4h-.1L4.4 7.2c-.4.4-1.6 1.9-.8 5.4.7 2.8 2.9 7.5 9.6 14.2 6.7 6.7 11.4 8.9 14.2 9.6 3.5.8 5-.4 5.4-.8l3.8-3.8c.1-.1.1-.2 0-.3l-7-5.4c-.1-.1-.2-.1-.3 0l-2.1 2.1-.1.1c-1 .8-2.2 1.1-3.5 1-2.2-.2-5.9-2.5-8.1-4.8-2.2-2.2-4.6-5.9-4.8-8.1-.2-1.2.2-2.5 1-3.5l.1-.1 2.1-2.1c.1-.1.1-.2 0-.3l-5.5-7c.1 0 0 0 0 0zM3.2 6z\"><\/path>\n<\/svg><\/div><\/span><\/div>\n<\/div><\/div><\/div>\n\n\n\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-11a8507\" data-v=\"4\" data-block-id=\"11a8507\"><style>.stk-11a8507-container{margin-top:0px !important;margin-right:0px !important;margin-bottom:0px !important;margin-left:0px !important;}@media screen and (min-width:690px){.stk-11a8507 {flex:var(--stk-flex-grow, 1) 1 calc(85% - var(--stk-column-gap, 0px) * 1 \/ 2 ) !important;}}<\/style><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-11a8507-container stk--no-background stk--no-padding\"><div class=\"stk-block-content stk-inner-blocks stk-11a8507-inner-blocks\">\n<div class=\"wp-block-stackable-heading stk-block-heading stk-block-heading--v2 stk-block stk-a4c2d2e\" id=\"phone-numbers\" data-block-id=\"a4c2d2e\"><style>.stk-a4c2d2e {margin-bottom:10px !important;}<\/style><h6 class=\"stk-block-heading__text\">\u7535\u8bdd\u53f7\u7801<\/h6><\/div>\n\n\n\n<p>(+86) 13794623718<br>(+86) 757-28786886<\/p>\n<\/div><\/div><\/div>\n<\/div><\/div>\n<\/div><\/div><\/div>\n\n\n\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-a77da3a stk-block-background\" data-v=\"4\" data-block-id=\"a77da3a\"><style>.stk-a77da3a-container{margin-top:0px !important;margin-right:0px !important;margin-bottom:0px !important;margin-left:0px !important;padding-top:50px !important;padding-right:70px !important;padding-bottom:70px !important;padding-left:70px !important;}.stk-a77da3a {background-color:var(--theme-palette-color-8, #ffffff) !important;box-shadow:0px 10px 30px #0000000d !important;padding-top:0px !important;padding-right:0px !important;padding-bottom:0px !important;padding-left:0px !important;}.stk-a77da3a:before{background-color:var(--theme-palette-color-8, #ffffff) !important;}@media screen and (min-width:690px){.stk-a77da3a {flex:var(--stk-flex-grow, 1) 1 calc(60% - var(--stk-column-gap, 0px) * 1 \/ 2 ) !important;}}@media screen and (max-width:689px){.stk-a77da3a-container{padding-top:35px !important;padding-right:35px !important;padding-bottom:35px !important;padding-left:35px !important;}}<\/style><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-a77da3a-container stk--no-background stk--no-padding\"><div class=\"stk-block-content stk-inner-blocks stk-a77da3a-inner-blocks\">\n<div class=\"wp-block-stackable-heading stk-block-heading stk-block-heading--v2 stk-block stk-98be702\" id=\"send-us-a-message\" data-block-id=\"98be702\"><style>.stk-98be702 {margin-bottom:35px !important;}@media screen and (max-width:689px){.stk-98be702 .stk-block-heading__text{font-size:25px !important;}}<\/style><h3 class=\"stk-block-heading__text\">\u7ed9\u6211\u4eec\u7559\u8a00<\/h3><\/div>\n\n\n    <style>\r\n\r\n     .fivestar-rating {\r\n        display: flex;\r\n        flex-direction: row-reverse;\r\n        justify-content: flex-end;\r\n        width:100%;\r\n      }\r\n\r\n      .fivestar-rating input {\r\n        display: none!important;\r\n      }\r\n\r\n      .fivestar-rating label {\r\n        font-size: 30px;\r\n        color: #ccc;\r\n        cursor: pointer;\r\n      }\r\n\r\n      \/* Highlight stars on hover *\/\r\n      .fivestar-rating label:hover,\r\n      .fivestar-rating label:hover ~ label {\r\n        color: gold;\r\n      }\r\n\r\n      \/* Highlight selected stars *\/\r\n      .fivestar-rating input:checked ~ label {\r\n        color: #ccc; \/* Reset *\/\r\n      }\r\n\r\n      .fivestar-rating input:checked + label,\r\n      .fivestar-rating input:checked + label ~ label {\r\n        color: gold;\r\n      }\r\n\r\n      .nps-scale {\r\n          display: flex;\r\n          justify-content: flex-start;\r\n          gap: 5px;\r\n          margin-top: 10px;\r\n          flex-direction: row;\r\n          flex-wrap: wrap;\r\n          width: 100%;\r\n      }\r\n\r\n      .nps-scale label {\r\n        border: 1px solid #ccc;\r\n        \/* padding: 10px 12px; *\/\r\n        cursor: pointer;\r\n        user-select: none;\r\n        background: #fff;\r\n        font-weight: 500;\r\n        transition: all 0.2s;\r\n      }\r\n\r\n      .nps-scale input {\r\n        display: none!Important;\r\n      }\r\n\r\n      .nps-scale input:checked + span {\r\n        background-color: #0066cc;\r\n        color: white;\r\n        font-weight: bold;\r\n      }\r\n\r\n      .nps-scale label span {\r\n        display: inline-block;\r\n        \/* width: 24px; *\/\r\n        text-align: center;\r\n        padding: 10px 17px;\r\n      }\r\n      .nps-slider-group {\r\n        width: 300px;\r\n        margin: 20px auto;\r\n        font-family: sans-serif;\r\n      }\r\n\r\n      .nps-slider{\r\n          width: 100% !important;\r\n          margin-top: 10px;\r\n          border: 2px solid #e2e2e2;\r\n          height: 10px !important;\r\n          border-radius: 8px;\r\n      }\r\n\r\n      .slider-value {\r\n        margin-top: 5px;\r\n        font-weight: bold;\r\n        text-align: left;\r\n        \/* color: #007bff; *\/\r\n      }\r\n      \r\n    \r\n\r\n      .vform-fileupload .primary-input {\r\n          border: 1px solid #ccc;\r\n          padding: 8px;\r\n          border-radius: 6px;\r\n          background-color: #f9f9f9;\r\n          cursor: pointer;\r\n          font-size: 14px;\r\n          width: 100%;\r\n          color: #333;\r\n          height: auto !important;\r\n        }\r\n\r\n      \/* Style the file upload button *\/\r\n      .vform-fileupload .primary-input::file-selector-button {\r\n        padding: 8px 16px;\r\n        background-color: #4a90e2;\r\n        color: white;\r\n        border: none;\r\n        border-radius: 6px;\r\n        cursor: pointer;\r\n        font-weight: 500;\r\n        transition: background-color 0.3s ease;\r\n        margin-right: 10px;\r\n      }\r\n\r\n      .vform-fileupload .primary-input::file-selector-button:hover {\r\n        background-color: #357ab8;\r\n      }\r\n\r\n      .vform-phone-with-code {\r\n        display: flex;\r\n        gap: 10px;\r\n        width:100%;\r\n      }\r\n\r\n      .country-code-select {\r\n        width: 100px!important;\r\n        padding: 5px;\r\n      }\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n      .vform-error {\r\n            border: 2px dotted red !important;\r\n        }\r\n      .vform-group-vform{\r\n          padding: 10px;\r\n          float: left;\r\n          width: 100%;\r\n          transition: .5s ease;\r\n          position: relative;\r\n      }\r\n\r\n      #vformgroup1 input, #vformgroup1 select {\r\n          height: 40px;\r\n          width: 100%;\r\n          max-width: 100%;\r\n      }\r\n      #vformgroup1 textarea{\r\n        width:100%;\r\n      }\r\n      #vformgroup1 * {\r\n          -webkit-box-sizing: border-box;\r\n          -moz-box-sizing: border-box;\r\n          box-sizing: border-box;\r\n      }\r\n\r\n      #vformgroup1 input[type=\"radio\"], #vformgroup1 input[type=\"checkbox\"] {\r\n          border: 1px solid #ccc;\r\n          background-color: #fff;\r\n          width: 14px;\r\n          height: 14px;\r\n          min-width: 14px;\r\n          margin: 0 10px 0 3px;\r\n          display: inline-block;\r\n      }\r\n\r\n      #vformgroup1 .vform-group-vform .primary-input{\r\n        width: 100%;\r\n      }\r\n\r\n      #vformgroup1 .vform-termscondition > input {\r\n          max-width: 20px!important;\r\n          height: 20px;\r\n      }\r\n\r\n      #vformgroup1 .vform-group-vform.size-small{\r\n          width:33%!important;\r\n      }\r\n      #vformgroup1 .vform-group-vform.size-medium{\r\n          width:65%!important;\r\n      }\r\n      #vformgroup1 .vform-group-vform.size-large{\r\n          width:100%!important;\r\n      }\r\n\r\n      #vformgroup1 .vform-group-vform.format-selected-simple .vform-first-name, #vformgroup1 .vform-group-vform.format-selected-combo-middle-last .vform-first-name{\r\n          width: 100%;\r\n      }\r\n      #vformgroup1 .vform-group-vform.format-selected-first-last .vform-middle-name, #vformgroup1 .vform-group-vform.format-selected-simple .vform-middle-name, #vformgroup1 .vform-group-vform.format-selected-simple .vform-last-name{\r\n        display:none;\r\n      }\r\n      #vformgroup1 .vform-group-vform.format-selected-first-last .vform-first-name, \r\n      #vformgroup1 .vform-group-vform.format-selected-first-last .vform-last-name{\r\n        width:48%;\r\n      }\r\n      #vformgroup1 .vform-group-vform.format-selected-combo-middle-last .vform-middle-name, \r\n      #vformgroup1 .vform-group-vform.format-selected-combo-middle-last .vform-last-name{\r\n          width: 48%;\r\n      }\r\n\r\n      #vformgroup1 .vform-main-submit {\r\n          font-size: 16px;\r\n          background: #ddd;\r\n          border: none;\r\n          padding: 8px 20px;\r\n          color: #000;\r\n          cursor: pointer;\r\n          display: inline-block;\r\n          text-align: center;\r\n          width: auto;\r\n      }\r\n\r\n      #vformgroup1 .vform-address{\r\n          display:flex;\r\n          flex-wrap:wrap;\r\n          gap:10px;\r\n          width: 100%;\r\n      }\r\n\r\n      #vformgroup1 .vform-address p {\r\n          display: none;\r\n      }\r\n      #vformgroup1 .vform-address p{\r\n          margin:0;\r\n          width:100%;\r\n      }\r\n\r\n      \/* state *\/\r\n      #vformgroup1 .vform-address input[name^=\"state_name\"]{\r\n          flex:1 1 57%;\r\n      }\r\n\r\n      \/* zip *\/\r\n      #vformgroup1 .vform-address input[name^=\"zip_code\"]{\r\n          flex:1 1 40%;\r\n      }\r\n\r\n      \/* #vformgroup1 .vform-address p {\r\n          margin: 5px;\r\n          float: left;\r\n          width: 100%;\r\n      }\r\n      #vformgroup1 .vform-group-vform .primary-input[name^=\"state_name\"] {\r\n          max-width: 57%;\r\n          float: left;\r\n          margin-bottom: 2%;\r\n      }\r\n      #vformgroup1 .vform-group-vform .primary-input[name^=\"zip_code\"] {\r\n          max-width: 40%;\r\n          float: right;\r\n      } *\/\r\n\r\n      #vformgroup1  .vform-address p:nth-child(6),#vformgroup1  .vform-address p:nth-child(8) {\r\n          display: none;\r\n      }\r\n      #vformgroup1 .primary-input:focus {\r\n          outline: none;\r\n      }\r\n\r\n      .vform-group-vform input[type=color], .vform-group-vform input[type=date], .vform-group-vform input[type=datetime-local], .vform-group-vform input[type=datetime], .vform-group-vform input[type=email], .vform-group-vform input[type=month], .vform-group-vform input[type=number], .vform-group-vform input[type=password], .vform-group-vform input[type=search], .vform-group-vform input[type=tel], .vform-group-vform input[type=text], .vform-group-vform input[type=time], .vform-group-vform input[type=url], .vform-group-vform input[type=week], select, textarea{\r\n          height: 40px;\r\n          width: 100%;\r\n          max-width: 100%;\r\n          border-radius: 4px;\r\n          border: 1px solid #8c8f94;\r\n          padding: 0 24px 0 8px;\r\n      }\r\n      .vform-group-vform ul.primary-input {\r\n          margin: 0;\r\n          padding: 0px;\r\n          list-style: none;\r\n      }\r\n      .vform-group-vform textarea{\r\n        height: 100px;\r\n      }\r\n      .validate_vform, .invalid_vform{\r\n        color:red;\r\n        margin: 10px;\r\n        font-size:14px;\r\n        display:none;\r\n      }\r\n      .vfrm-loader {\r\n        position: relative;\r\n        top: -71px;\r\n        left: 0;\r\n        color: orange;\r\n        display: none;\r\n        width: 100%;\r\n        \/* display: flex; *\/\r\n        justify-content: center;\r\n        cursor: no-drop;\r\n      }\r\n      .myallinone-vform {\r\n        display: -ms-flexbox;\r\n        display: flex;\r\n        -ms-flex-direction: column;\r\n        flex-direction: column;\r\n        width: 100%;\r\n      }\r\n\r\n\r\n\r\n\r\n\r\n\r\n      \/* country code *\/\r\n      .country-dropdown-wrapper {\r\n        position: relative;\r\n        width: 100%;\r\n      }\r\n      .country-search {\r\n        width: 15% !important;\r\n      }\r\n      .country-list {\r\n        position: absolute;\r\n        top: 100%;\r\n        left: 0;\r\n        width: 13%;\r\n        display: none;\r\n        max-height: 180px;\r\n        border: none !important;\r\n        border-radius: 6px;\r\n        overflow-y: auto;\r\n        background-color: #fff;\r\n        padding: 0;\r\n        margin: 0;\r\n        box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1);\r\n        z-index: 1000;\r\n        list-style: none;\r\n      }\r\n      .country-list li {\r\n        padding: 10px 12px;\r\n        cursor: pointer;\r\n        font-size: 14px;\r\n        transition: background-color 0.2s ease;\r\n      }\r\n      .country-list li:hover {\r\n        background-color: #f1f1f1;\r\n      }\r\n      .vform-phone-with-code > div {\r\n          width: 100%;\r\n          margin-top: 0px !important;\r\n      }\r\n      \/* country code *\/\r\n\r\n    <\/style>\r\n    <style>\r\n\r\n      .dot-spinner {\r\n        --uib-size: 2.8rem;\r\n        --uib-speed: .9s;\r\n        --uib-color: #183153;\r\n        position: relative;\r\n        display: flex;\r\n        align-items: center;\r\n        justify-content: flex-start;\r\n        height: var(--uib-size);\r\n        width: var(--uib-size);\r\n      }\r\n\r\n      .dot-spinner__dot {\r\n        position: absolute;\r\n        top: 0;\r\n        left: 0;\r\n        display: flex;\r\n        align-items: center;\r\n        justify-content: flex-start;\r\n        height: 100%;\r\n        width: 100%;\r\n      }\r\n\r\n      .dot-spinner__dot::before {\r\n        content: '';\r\n        height: 20%;\r\n        width: 20%;\r\n        border-radius: 50%;\r\n        background-color: var(--uib-color);\r\n        transform: scale(0);\r\n        opacity: 0.5;\r\n        animation: pulse0112 calc(var(--uib-speed) * 1.111) ease-in-out infinite;\r\n        box-shadow: 0 0 20px rgba(18, 31, 53, 0.3);\r\n      }\r\n\r\n      .dot-spinner__dot:nth-child(2) {\r\n        transform: rotate(45deg);\r\n      }\r\n\r\n      .dot-spinner__dot:nth-child(2)::before {\r\n        animation-delay: calc(var(--uib-speed) * -0.875);\r\n      }\r\n\r\n      .dot-spinner__dot:nth-child(3) {\r\n        transform: rotate(90deg);\r\n      }\r\n\r\n      .dot-spinner__dot:nth-child(3)::before {\r\n        animation-delay: calc(var(--uib-speed) * -0.75);\r\n      }\r\n\r\n      .dot-spinner__dot:nth-child(4) {\r\n        transform: rotate(135deg);\r\n      }\r\n\r\n      .dot-spinner__dot:nth-child(4)::before {\r\n        animation-delay: calc(var(--uib-speed) * -0.625);\r\n      }\r\n\r\n      .dot-spinner__dot:nth-child(5) {\r\n        transform: rotate(180deg);\r\n      }\r\n\r\n      .dot-spinner__dot:nth-child(5)::before {\r\n        animation-delay: calc(var(--uib-speed) * -0.5);\r\n      }\r\n\r\n      .dot-spinner__dot:nth-child(6) {\r\n        transform: rotate(225deg);\r\n      }\r\n\r\n      .dot-spinner__dot:nth-child(6)::before {\r\n        animation-delay: calc(var(--uib-speed) * -0.375);\r\n      }\r\n\r\n      .dot-spinner__dot:nth-child(7) {\r\n        transform: rotate(270deg);\r\n      }\r\n\r\n      .dot-spinner__dot:nth-child(7)::before {\r\n        animation-delay: calc(var(--uib-speed) * -0.25);\r\n      }\r\n\r\n      .dot-spinner__dot:nth-child(8) {\r\n        transform: rotate(315deg);\r\n      }\r\n\r\n      .dot-spinner__dot:nth-child(8)::before {\r\n        animation-delay: calc(var(--uib-speed) * -0.125);\r\n      }\r\n\r\n      @keyframes pulse0112 {\r\n        0%,\r\n        100% {\r\n          transform: scale(0);\r\n          opacity: 0.5;\r\n        }\r\n\r\n        50% {\r\n          transform: scale(1);\r\n          opacity: 1;\r\n        }\r\n      }\r\n\r\n    <\/style>\r\n\r\n    <style>\r\n      .vform-field-error {\r\n        color: #dc2626;\r\n        font-size: 13px;\r\n        margin-top: 4px;\r\n      }\r\n\r\n      .vform-error {\r\n        border: 2px dotted red !important;\r\n      }\r\n    <\/style>\r\n    <form action=\"\" class=\"myallinone-vform\" data-id=\"1\" id=\"vformgroup1\" method=\"POST\" enctype=\"multipart\/form-data\" data-trp-original-action=\"javascript:void(0)\">\r\n    <div class=\"form-all vform-mainfields-inside\" style=\"box-shadow: none;\" data-filtered=\"filtered\"> <div class=\"vform-group-vform format-selected-first-last vform-required\" data-type=\"name\" data-batchid=\"2\" id=\"vform-group-vform2\" style=\"position: relative; left: 0px; top: 0px;\" data-filtered=\"filtered\"><label class=\"vform-heading\" data-filtered=\"filtered\"><span class=\"text\">\u59d3\u540d<\/span><span class=\"required\">*<\/span><\/label><div class=\"vform-format-selected\" data-filtered=\"filtered\"> <div class=\"vform-first-name\" data-filtered=\"filtered\"><input type=\"text\" placeholder=\"\" class=\"primary-input\"  name=\"name__firstname[]\" fdprocessedid=\"n3gc0g\" required=\"required\" style=\"border-color: rgb(128, 128, 128);\" data-filtered=\"filtered\"><label class=\"vform-sub-label\" data-filtered=\"filtered\">\u59d3<\/label><\/div> <div class=\"vform-last-name\" data-filtered=\"filtered\"><input type=\"text\" placeholder=\"\" name=\"name__lastname[]\" class=\"primary-input\"  fdprocessedid=\"xo1rp7\" style=\"border-color: rgb(128, 128, 128);\" data-filtered=\"filtered\"><label class=\"vform-sub-label\" data-filtered=\"filtered\">\u540d<\/label><\/div><\/div><div class=\"vform-description\" data-filtered=\"filtered\"><\/div><\/div><div class=\"vform-group-vform vform-required\" data-type=\"email\" data-batchid=\"4\" id=\"vform-group-vform4\" data-filtered=\"filtered\"><label class=\"vform-heading\" data-filtered=\"filtered\"><span class=\"text\">\u90ae\u7bb1<\/span><span class=\"required\">*<\/span><\/label><div class=\"vform-format-selected\" data-filtered=\"filtered\"><div class=\"vform-email\" data-filtered=\"filtered\"><input type=\"email\" name=\"email__email[]\" placeholder=\"\" class=\"primary-input\"  fdprocessedid=\"0lk9q\" required=\"required\" style=\"border-color: rgb(128, 128, 128);\" data-filtered=\"filtered\"><\/div><\/div><div class=\"vform-description\" data-filtered=\"filtered\"><\/div><\/div><div class=\"vform-group-vform vform-required\" data-type=\"paragraph\" data-batchid=\"5\" id=\"vform-group-vform5\" data-filtered=\"filtered\"><label class=\"vform-heading\" data-filtered=\"filtered\"><span class=\"text\">\u7559\u8a00\u5185\u5bb9<\/span><span class=\"required\">*<\/span><\/label><div class=\"vform-format-selected\" data-filtered=\"filtered\"><div class=\"vform-paragraph\" data-filtered=\"filtered\"><textarea placeholder=\"\" class=\"primary-input\"  name=\"paragraph__Comment~or~Message[]\" required=\"required\" style=\"border-color: rgb(128, 128, 128);\" data-filtered=\"filtered\"><\/textarea><\/div><\/div><div class=\"vform-description\" data-filtered=\"filtered\"><\/div><\/div><div class=\"vform-group-vform\" data-type=\"submit\" data-batchid=\"1\" id=\"vform-group-vform1\" data-filtered=\"filtered\"><div class=\"vform-cpy-del\" data-filtered=\"filtered\"><button type=\"button\" class=\"sc-properties\" data-filtered=\"filtered\"><i class=\"fa fa-cog\" aria-hidden=\"true\" data-filtered=\"filtered\"><\/i><span>Properties<\/span><\/button><\/div><div class=\"vform-format-selected\" data-filtered=\"filtered\"><button type=\"submit\" data-brand=\"new\" class=\"vform-main-submit\" value=\"Submit\" fdprocessedid=\"ljq4wi\" style=\"background-color: rgb(168, 151, 123); color: rgb(255, 255, 255); width: 100px; height: 50px; border-radius: 0px;\" data-filtered=\"filtered\">\u63d0\u4ea4<\/button><\/div><\/div><\/div>    <input type='hidden' name=\"formid\" value=\"1\" \/>\r\n    <input type=\"hidden\" name=\"ip\" value=\"216.73.217.73\">\r\n    <input type=\"hidden\" name=\"browser\" value=\"Mozilla\/5.0 AppleWebKit\/537.36 (KHTML, like Gecko; compatible; ClaudeBot\/1.0; +claudebot@anthropic.com)\">\r\n    <!-- <input type=\"hidden\" name=\"currentdate\" value=\"October 26, 2026, 7:03 pm\"> -->\r\n    <input type=\"hidden\" name=\"currentdate\" value=\"October 26, 2026, 7:03 pm\">\r\n\r\n    <input type=\"hidden\" name=\"timezone\" value=\"UTC\">\r\n    \r\n    <input type=\"hidden\" name=\"application_id\" value=\"BR-00003-26102026-US\">\r\n    <input id=\"currentdate_part2\" type=\"hidden\" name=\"currentdate_part2\" value=\"\">\r\n\r\n    <input type=\"hidden\" id=\"vfm-nonce\" name=\"vfm-nonce\" value=\"1b615b6935\" \/><input type=\"hidden\" name=\"_wp_http_referer\" value=\"\/zh\/wp-json\/wp\/v2\/pages\/630\" \/>    <input type=\"hidden\" name=\"trp-form-language\" value=\"zh\"\/><\/form>\r\n\r\n    <div class=\"vfrm-loader\" data-id=\"1\">\r\n      <div class=\"dot-spinner\">\r\n          <div class=\"dot-spinner__dot\"><\/div>\r\n          <div class=\"dot-spinner__dot\"><\/div>\r\n          <div class=\"dot-spinner__dot\"><\/div>\r\n          <div class=\"dot-spinner__dot\"><\/div>\r\n          <div class=\"dot-spinner__dot\"><\/div>\r\n          <div class=\"dot-spinner__dot\"><\/div>\r\n          <div class=\"dot-spinner__dot\"><\/div>\r\n          <div class=\"dot-spinner__dot\"><\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <div class=\"confirmation_vform\" data-id=\"1\"><\/div>\r\n    <div class=\"validate_vform\" data-id=\"1\">*\u8868\u5355\u5b57\u6bb5\u9700\u8981\u586b\u5199\u5b8c\u6574<\/div>\r\n\r\n    <div class=\"invalid_vform\" data-id=\"1\">You have an error in your fields!<\/div>\r\n\r\n\r\n \r\n\r\n    <form id=\"myvformdata7form\" action=\"\">\r\n    <input type=\"hidden\" id=\"vfm-nonce7\" name=\"vfm-nonce7\" value=\"60872edeb7\" \/><input type=\"hidden\" name=\"_wp_http_referer\" value=\"\/zh\/wp-json\/wp\/v2\/pages\/630\" \/>    <input type=\"hidden\" name=\"trp-form-language\" value=\"zh\"\/><\/form>\r\n\r\n    <script>\r\n      jQuery(function($){\r\n        $(document).ready(function(){\r\n\r\n            function showFieldError($field, message) {\r\n              if (!$field.hasClass('vform-error')) {\r\n                console.log('show');\r\n\r\n                $field.addClass('vform-error');\r\n\r\n                if ($field.next('.vform-field-error').length === 0) {\r\n                  $('<div class=\"vform-field-error\">' + message + '<\/div>')\r\n                    .insertAfter($field);\r\n                }\r\n              }\r\n            }\r\n\r\n\r\n            function removeFieldError($field) {\r\n              if ($field.hasClass('vform-error')) {\r\n                console.log('remove');\r\n\r\n                $field.removeClass('vform-error');\r\n                $field.next('.vform-field-error').remove();\r\n              }\r\n            }\r\n\r\n\r\n\r\n            var userdata1 = new Date();\r\n            var countalltime;\r\n            function chkusertime(Christmas){\r\n                var diffMs = (Christmas - userdata1);\r\n                var diffDays = Math.floor(diffMs \/ 86400000);\r\n                var diffHrs = Math.floor((diffMs % 86400000) \/ 3600000);\r\n                var diffMins = Math.round(((diffMs % 86400000) % 3600000) \/ 60000);\r\n                var seconds = Math.round(diffMs \/ (1000) % 60);\r\n                countalltime = {\r\n                  \"days\":diffDays,\r\n                  \"hours\":diffHrs,\r\n                  \"minute\":diffMins,\r\n                  \"second\":seconds\r\n                };\r\n              }\r\n\r\n            $('#currentdate_part2').val(new Date());\r\n\r\n            function sanitizeInput(input) {\r\n              return input?.replace(\/<[^>]*>\/g, '');\r\n            }\r\n\r\n\r\n            function convertSizeToBytes(sizeText) {\r\n                var sizeUnits = { KB: 1024, MB: 1024 * 1024, GB: 1024 * 1024 * 1024 };\r\n                var unitMatch = sizeText.match(\/([0-9.]+)([KMGB]+)$\/i);\r\n\r\n                if (unitMatch) {\r\n                    var size = parseFloat(unitMatch[1]);\r\n                    var unit = unitMatch[2].toUpperCase();\r\n                    return size * (sizeUnits[unit] || 1);\r\n                }\r\n                return parseInt(sizeText, 10); \/\/ Fallback if no unit\r\n            }\r\n\r\n\r\n            $(document).on('input change', '.primary-input', function () {\r\n              removeFieldError($(this));\r\n            });\r\n\r\n\r\n            $('#vformgroup1 [type=\"submit\"]').click(function (e) {\r\n                e.preventDefault(); \/\/ Prevent form submission by default\r\n                var valid = true;\r\n\r\n\r\n                \/\/ var errorMessages = [];\r\n\r\n                \/\/ Validate required fields\r\n                var valid = true;\r\n                var formSelector = '#vformgroup1';\r\n                var errorSelector = '.validate_vform[data-id=\"1\"]';\r\n                \r\n                var invalidSelector = '.invalid_vform[data-id=\"1\"]';\r\n               \r\n\r\n                $(formSelector + ' [required]').each(function () {\r\n                    var $field = $(this);\r\n                    var type = $field.attr('type');\r\n                    var name = $field.attr('name');\r\n                    var isValid = true;\r\n                    var errorMsg = 'This field is required';\r\n\r\n                    if (!$field.is(':visible')) {\r\n                      removeFieldError($field);\r\n                      return;\r\n                    }\r\n\r\n                    if (type === 'checkbox' || type === 'radio') {\r\n                      if ($(`${formSelector} [name=\"${name}\"]:checked`).length === 0) {\r\n                        isValid = false;\r\n                        errorMsg = 'Please select at least one option';\r\n                      }\r\n                    } else if (type === 'email') {\r\n                      var emailVal = $field.val().trim();\r\n                      var emailRegex = \/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/;\r\n                      if (!emailRegex.test(emailVal)) {\r\n                        isValid = false;\r\n                        errorMsg = 'Please enter a valid email address';\r\n                      }\r\n                    } else {\r\n                      var value = $field.val().trim();\r\n                      if (\/<[^>]*script|<[^>]*iframe|<[^>]*object|<[^>]*embed\/i.test(value)) {\r\n                        isValid = false;\r\n                        errorMsg = 'Invalid characters detected';\r\n                      } else if (value === '') {\r\n                        isValid = false;\r\n                      }\r\n                    }\r\n\r\n                    if (!isValid) {\r\n                      valid = false;\r\n                      showFieldError($field, errorMsg);\r\n                    } else {\r\n                      removeFieldError($field);\r\n                    }\r\n                  });\r\n\r\n\r\n\r\n               \r\n\r\n                var valid_2 = true;\r\n\r\n                 $(formSelector+ ' input').each(function () {\r\n                  var $field = $(this);\r\n                  var type = $field.attr('type');\r\n                  var name = $field.attr('name');\r\n                  var isValid = true;\r\n\r\n                  var sanitizedValue = $field.val().trim();\r\n                  if (\/<[^>]*script|<[^>]*iframe|<[^>]*object|<[^>]*embed\/i.test(sanitizedValue)) {\r\n                      isValid = false;\r\n                  }\r\n                  \r\n                 if (!isValid && $field.is(':visible')) {\r\n                    valid_2 = false;\r\n                    showFieldError($field, 'Invalid input detected');\r\n                  } else {\r\n                    \/\/ removeFieldError($field);\r\n                  }\r\n\r\n                  \r\n                });\r\n\r\n\r\n                if (!valid_2) {\r\n                  $(invalidSelector).show();\r\n                  return false;\r\n                } else {\r\n                  $(invalidSelector).hide();\r\n                }\r\n               \r\n\r\n                if (!valid) {\r\n                  $(errorSelector).show();\r\n                  return false;\r\n                } else {\r\n                  $(errorSelector).hide();\r\n                }\r\n                \r\n\r\n                \/\/ hCaptcha validation if present\r\n                if (jQuery('.h-captcha').length) {\r\n                    var hcaptchaResponse = document.querySelector('.h-captcha textarea[name=\"h-captcha-response\"]').value;\r\n                    if (hcaptchaResponse === '') {\r\n                        alert('Please complete the hCaptcha.');\r\n                        return;\r\n                    }\r\n                }\r\n\r\n                var fileValidationErrors = [];\r\n\r\n                \/\/ Define a list of disallowed file extensions\r\n                var disallowedFileTypes = ['html', 'htm', 'js', 'css', 'php', 'exe', 'sh', 'bat', 'py', 'rb', 'pl'];\r\n\r\n\r\n                jQuery('.vform-fileupload').each(function () {\r\n                    var fileInput = jQuery(this).find('.primary-input')[0];\r\n\r\n                    \/\/ Read constraints for allowed file types and max file size\r\n                    var allowedFileTypes = jQuery(this)\r\n                        .find('input[name^=\"custom_file_constraints\"][name$=\"[allowed_file_types]\"]')\r\n                        .val()\r\n                        .split(',');\r\n\r\n                    var maxFileSizeText = jQuery(this)\r\n                        .find('input[name^=\"custom_file_constraints\"][name$=\"[max_file_size]\"]')\r\n                        .val();\r\n\r\n                    var maxFileSize = convertSizeToBytes(maxFileSizeText);\r\n\r\n                    if (fileInput.files && fileInput.files.length > 0) {\r\n                        for (var i = 0; i < fileInput.files.length; i++) {\r\n                            var file = fileInput.files[i];\r\n                            var fileExtension = file.name.split('.').pop().toLowerCase();\r\n\r\n                            \/\/ Check if file type is disallowed\r\n                            if (disallowedFileTypes.includes(fileExtension)) {\r\n                                fileValidationErrors.push(`Disallowed file type: ${file.name}`);\r\n                                continue;\r\n                            }\r\n\r\n                            \/\/ Check file type\r\n                            if (!allowedFileTypes.includes(fileExtension)) {\r\n                                fileValidationErrors.push(`Invalid file type: ${file.name}`);\r\n                            }\r\n\r\n                            \/\/ Check file size\r\n                            if (file.size > maxFileSize) {\r\n                                fileValidationErrors.push(\r\n                                    `File size exceeds ${maxFileSizeText}: ${file.name}`\r\n                                );\r\n                            }\r\n                        }\r\n                    }\r\n                });\r\n\r\n                if (fileValidationErrors.length > 0) {\r\n                    alert(fileValidationErrors.join('\\n'));\r\n                    return;\r\n                }\r\n\r\n                \/\/ Proceed with form data submission\r\n                var vformfrmid = '1';\r\n                var thfrid = '#vformgroup' + vformfrmid;\r\n                var formData = new FormData();\r\n\r\n                var valid_number = false;\r\n\r\n                jQuery('.primary-input[type=\"file\"]').each(function () {\r\n                  var inputName = $(this).attr('name');\r\n\r\n                  if (this.files && this.files.length > 0) {\r\n                  } else {\r\n                          formData.append('file_empty', '1');\r\n                  }\r\n              });\r\n\r\n\r\n                \r\n                jQuery('.primary-input').each(function () {\r\n                  var inputName = $(this).attr('name'); \/\/ Extract the input field name\r\n                      if (this.files && this.files.length > 0) {\r\n                          for (var i = 0; i < this.files.length; i++) {\r\n                              formData.append(inputName, this.files[i]); \/\/ Use the dynamic input name\r\n                          }\r\n                      }\r\n\r\n                      var min = parseInt($(this).attr('min'));\r\n                      var max = parseInt($(this).attr('max'));\r\n                      var value = parseInt($(this).val());\r\n\r\n                      if (value < min || value > max) {\r\n                        alert('Please enter a number between ' + min + ' and ' + max);\r\n                        valid_number = true;\r\n                      }\r\n\r\n                  });\r\n                  \r\n                  if(valid_number){\r\n                    return;\r\n                  }\r\n\r\n                var userdata2 = new Date();\r\n                chkusertime(userdata2);\r\n                countalltime = JSON.stringify(countalltime);\r\n\r\n                formData.append('action', 'myvformfrontsave');\r\n                formData.append('mainformdata', 'param=save_vform&vfid=' + vformfrmid + '&usertimetakes='+encodeURIComponent(countalltime)+'&' + $(thfrid).serialize());\r\n\r\n                \/\/ Show loader and disable button\r\n                $('.vfrm-loader[data-id=\"1\"]').css('display', 'flex');\r\n                $(this).attr('disabled', true);\r\n\r\n                \/\/ Send the AJAX request\r\n                jQuery.ajax({\r\n                    url: ajax_object.ajax_url,\r\n                    type: 'POST',\r\n                    data: formData,\r\n                    processData: false,\r\n                    contentType: false,\r\n                    success: function (response) {\r\n                      var data = jQuery.parseJSON(response);\r\n                        if(data.status==1){\r\n                        \/\/ console.log(data);\r\n                        $('.vfrm-loader[data-id=\"1\"]').hide();\r\n\r\n\r\n                        var res1 = data.confirmation;\r\n                        var res2 = data.confirmation_value;\r\n\r\n                        \/\/ Decode HTML entities\r\n                        var txt = document.createElement(\"textarea\");\r\n                        txt.innerHTML = res2;\r\n                        res2 = txt.value;\r\n                        res2 = res2.replace(\/\\\\'\/g, \"'\");\r\n                        \/\/ Remove escaped slashes\r\n\r\n                        var Title = $('<textarea \/>').html(res2).text();\r\n\r\n                            switch (res1) {\r\n                              case 'message':\r\n                                var getappliid = 'BR-00003-26102026-US';\r\n                                if (getappliid) {\r\n                                    Title = Title.replace('{application_id}', getappliid);\r\n                                }\r\n                              $('.confirmation_vform[data-id=\"1\"]').html(Title);\r\n                              $('.myallinone-vform[data-id=\"1\"]').remove();\r\n                                break;\r\n                            case 'page':\r\n                              window.location.href=\"\/\"+res2;\r\n                              break;\r\n                            case 'redirect':\r\n                              window.location.href=res2;\r\n                              break;\r\n                              case 'redirect_2':\r\n                                \/\/ var inserted_id = data.inserted_id;\r\n                                var token = data.token;\r\n                              window.location.href=res2+'?token='+token;\r\n                              break;\r\n                              default:\r\n                              $('.confirmation_vform[data-id=\"1\"]').html('Thanks For your Response!');\r\n                              $('.myallinone-vform[data-id=\"1\"]').remove();\r\n                            }\r\n\r\n                        }else{\r\n                          alert('!Oops Something went Wrong.');\r\n                        }\r\n\r\n\r\n                        \r\n                    }\r\n                });\r\n            });\r\n\r\n            \r\n            var nonce = $('#myvformdata7form').serialize();\r\n            var vformfrmid ='1';\r\n            var postdata = \"action=myvformconversion&param=save_vform&vfid=\"+vformfrmid+\"&ip=\"+$('[name=\"ip\"]').val()+\"&\"+nonce;\r\n\r\n            jQuery.post(ajax_object.ajax_url,postdata,function(response){\r\n\r\n              var data = jQuery.parseJSON(response);\r\n              if(data.status==1){\r\n                \/\/ console.log(data);\r\n              }\r\n            });\r\n\r\n\r\n            \/\/ send stack\r\n             let startedForms = {};\r\n\r\n              $(document).on('focus change input', '.myallinone-vform input, .myallinone-vform select, .myallinone-vform textarea', function () {\r\n                const $form = $(this).closest('.myallinone-vform');\r\n\r\n                if (!$form.length) return;\r\n\r\n                const formId = $form.data('id');\r\n                if (!formId) return;\r\n\r\n                \/\/ prevent multiple ajax calls for same form in same page load\r\n                if (startedForms[formId]) return;\r\n                startedForms[formId] = true;\r\n\r\n                const ip = $form.find('[name=\"ip\"]').val() || '';\r\n\r\n                const postdata =\r\n                  \"action=myvformstarttrack\" +\r\n                  \"&param=save_start\" +\r\n                  \"&vfid=\" + encodeURIComponent(formId) +\r\n                  \"&ip=\" + encodeURIComponent(ip) +\r\n                  \"&\" + nonce;\r\n\r\n                $.post(ajax_object.ajax_url, postdata, function (response) {\r\n                  try {\r\n                    const data = typeof response === 'object' ? response : $.parseJSON(response);\r\n                    if (data.status == 1) {\r\n                      \/\/ console.log('Form start tracked');\r\n                    }\r\n                  } catch (e) {\r\n                    \/\/ console.log('Invalid response', response);\r\n                  }\r\n                });\r\n              });\r\n            \/\/ send stack\r\n\r\n\r\n            \/\/ Check if .datetime-input exists\r\n            if (document.querySelector('.datetime-input')) {\r\n                var pluginUrl = pluginData.pluginUrl;\r\n\r\n                \/\/ Add CSS\r\n                if (!document.querySelector('link[href=\"' + pluginUrl + 'assets\/css\/vform-datetimepicker.css\"]')) {\r\n                  var link = document.createElement('link');\r\n                  link.rel = 'stylesheet';\r\n                  link.href = pluginUrl + 'assets\/css\/vform-datetimepicker.css';\r\n                  $('.vform-mainfields-inside').append(link);\r\n                }\r\n\r\n                \/\/ Add JS\r\n                if (!document.querySelector('script[src=\"' + pluginUrl + 'assets\/js\/vform-datetimepicker.js\"]')) {\r\n                  var script = document.createElement('script');\r\n                  script.src = pluginUrl + 'assets\/js\/vform-datetimepicker.js';\r\n                  script.defer = true; \/\/ Optional: delay execution until DOM is parsed\r\n                  $('.vform-mainfields-inside').append(script);\r\n\r\n                }\r\n              }\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n        });\r\n      });\r\n    <\/script>\r\n\r\n    <script>\r\n      document.querySelectorAll('.nps-slider').forEach(slider => {\r\n        slider.addEventListener('input', function () {\r\n          const outputId = this.getAttribute('data-target');\r\n          document.getElementById(outputId).textContent = this.value;\r\n        });\r\n      });\r\n    <\/script>\r\n\r\n\r\n    \r\n    <!-- country list -->\r\n    \r\n     <script>\r\n\r\n        document.addEventListener('DOMContentLoaded', function () {\r\n          if (document.querySelector('.country-search')) {\r\n            if (typeof pluginData !== 'undefined' && pluginData.pluginUrl) {\r\n              const scriptUrl = pluginData.pluginUrl + 'assets\/js\/countrycodes.js';\r\n\r\n              if (!document.querySelector('script[src=\"' + scriptUrl + '\"]')) {\r\n                const script = document.createElement('script');\r\n                script.src = scriptUrl;\r\n                script.type = 'text\/javascript';\r\n                script.defer = true;\r\n                document.head.appendChild(script);\r\n\r\n\r\n                setTimeout(() => {\r\n                    function countryCodeToFlagEmoji(countryCode) {\r\n                      return countryCode.toUpperCase().replace(\/.\/g, char =>\r\n                        String.fromCodePoint(127397 + char.charCodeAt())\r\n                      );\r\n                    }\r\n\r\n                    document.querySelectorAll('.vform-phone-with-code').forEach(wrapper => {\r\n                      const input = wrapper.querySelector('.country-search');\r\n                      const list = wrapper.querySelector('.country-list');\r\n                      const selectedCode = wrapper.querySelector('.selected-code');\r\n\r\n                      function renderList(filter = '') {\r\n                        list.innerHTML = '';\r\n                        const filterLower = filter.toLowerCase();\r\n\r\n                        Object.entries(dialCodes)\r\n                          .filter(([country, code]) =>\r\n                            country.toLowerCase().includes(filterLower) || code.includes(filter)\r\n                          )\r\n                          .forEach(([country, code]) => {\r\n                            const li = document.createElement('li');\r\n                            li.textContent = `${countryCodeToFlagEmoji(country)} ${code} (${country})`;\r\n                            li.onclick = () => {\r\n                              selectedCode.value = code;\r\n                              input.value = '';\r\n                              list.style.display = 'none';\r\n                            };\r\n                            list.appendChild(li);\r\n                          });\r\n\r\n                        if (!list.children.length) {\r\n                          const li = document.createElement('li');\r\n                          li.textContent = 'No results found';\r\n                          list.appendChild(li);\r\n                        }\r\n                      }\r\n\r\n                      input.addEventListener('input', (e) => {\r\n                        if (input.value.trim() !== '') {\r\n                          list.style.display = 'block';\r\n                          renderList(e.target.value);\r\n                        } else {\r\n                          list.style.display = 'none';\r\n                        }\r\n                      });\r\n\r\n                      \/\/ Hide list on click outside\r\n                      document.addEventListener('click', function (e) {\r\n                        if (!wrapper.contains(e.target)) {\r\n                          list.style.display = 'none';\r\n                        }\r\n                      });\r\n\r\n                      renderList(); \/\/ Initial render\r\n                    });\r\n                  }, 50);\r\n\r\n              \r\n                }\r\n            } else {\r\n              \/\/ console.warn('pluginData is not defined');\r\n            }\r\n          }\r\n\r\n\r\n              });\r\n\r\n\r\n\r\n\r\n      <\/script>\r\n    <!-- country list -->\r\n\r\n\r\n\r\n    <style>\r\n\r\n        .repeater-row {\r\n          display: flex;\r\n          align-items: center;\r\n          gap: 0.5rem;\r\n          width: 100%;\r\n          margin-bottom:10px;\r\n        }\r\n\r\n        \/* Input takes most space, button stays compact *\/\r\n        .repeater-input {\r\n          flex: 1;\r\n          min-width: 0;\r\n          padding: 0.375rem 0.75rem;\r\n          border: 1px solid #ced4da;\r\n          border-radius: 4px;\r\n          font-size: 14px;\r\n        }\r\n\r\n        .remove-repeater-btn,\r\n        .add-repeater-btn {\r\n          white-space: nowrap;\r\n          padding: 0.375rem 0.75rem;\r\n          font-size: 14px;\r\n          border-radius: 4px;\r\n          border: 1px solid transparent;\r\n          transition: background-color 0.2s;\r\n          line-height: 1.5;\r\n          cursor: pointer;\r\n        }\r\n\r\n        \/* Remove button style *\/\r\n        .remove-repeater-btn {\r\n          background-color: #dc3545;\r\n          color: white;\r\n        }\r\n\r\n        .remove-repeater-btn:hover {\r\n          background-color: #c82333;\r\n        }\r\n\r\n        \/* Add button style *\/\r\n        .add-repeater-btn {\r\n          background-color: #007bff;\r\n          color: white;\r\n          align-self: flex-start;\r\n        }\r\n\r\n        .add-repeater-btn:hover {\r\n          background-color: #0056b3;\r\n        }\r\n\r\n    <\/style>\r\n    <script>\r\n\r\n      jQuery(document).ready(function($) {\r\n\r\n        \/\/ Add new repeater row\r\n        $('.myallinone-vform').on('click', '.vform-group-vform .add-repeater-btn', function () {\r\n           const $group = $(this).closest('.vform-group-vform');\r\n            const $wrapper = $group.find('.vform-repeater-wrapper');\r\n\r\n            \/\/ Get the name from the first existing input\r\n            const baseInput = $wrapper.find('.repeater-row:first input');\r\n            const inputName = baseInput.attr('name') || 'repeater_input[]';\r\n\r\n            const newRow = `\r\n              <div class=\"repeater-row\">\r\n                <input type=\"text\" name=\"${inputName}\" class=\"repeater-input primary-input\" placeholder=\"Type something\">\r\n                <button type=\"button\" class=\"btn remove-repeater-btn\">Remove<\/button>\r\n              <\/div>\r\n            `;\r\n\r\n            $wrapper.append(newRow);\r\n          });\r\n\r\n        \/\/ Remove repeater row\r\n        $('.myallinone-vform').on('click', '.vform-group-vform .remove-repeater-btn', function () {\r\n          $(this).closest('.repeater-row').remove();\r\n        });\r\n\r\n      });\r\n\r\n      \r\n    <\/script>\r\n\r\n\r\n      <!-- multi step form -->\r\n\r\n      <style>\r\n\r\n          .vform-btn-area{\r\n            margin-top:25px;\r\n            display:flex;\r\n            align-items:center;\r\n            justify-content:space-between;\r\n          }\r\n\r\n          .vform-step-count{\r\n            font-size:15px;\r\n            font-weight:600;\r\n            color:#111827;\r\n          }\r\n\r\n          .vform-btn{\r\n            padding:10px 18px;\r\n            border-radius:6px;\r\n            border:none;\r\n            cursor:pointer;\r\n            font-weight:600;\r\n            font-size:14px;\r\n          }\r\n\r\n          .vform-btn-primary{\r\n            background:#2563eb;\r\n            color:white;\r\n          }\r\n\r\n          .vform-btn-secondary{\r\n            background:#d1d5db;\r\n            color:#111827;\r\n          }\r\n\r\n      <\/style>\r\n\r\n\r\n      <script>\r\n\r\n          const stepCountEl = document.getElementById(\"vform-stepCountText\");\r\n          if (stepCountEl){\r\n\r\n              let container = document.getElementsByClassName(\"vform-mainfields-inside\")[0];\r\n              let nodes = Array.from(container.children);\r\n\r\n              let steps = [];\r\n              let currentStep = [];\r\n\r\n              nodes.forEach(n=>{\r\n                if(n.classList.contains('step-break')){\r\n                  steps.push(currentStep);\r\n                  currentStep = [];\r\n                }else{\r\n                  currentStep.push(n);\r\n                }\r\n              });\r\n              steps.push(currentStep);\r\n\r\n              let current = 0;\r\n\r\n              function updateStepText(){\r\n                document.getElementById('vform-stepCountText').innerText = `Step ${current+1} \/ ${steps.length}`;\r\n                var twostep = document.querySelector('.vform-group-vform[data-type=\"twostep\"]');\r\n                twostep.style.display = 'block';\r\n              }\r\n\r\n              function showStep(index){\r\n                steps.forEach((group,i)=>{\r\n                  group.forEach(el=>{\r\n                    el.style.display = (i==index) ? 'block' : 'none';\r\n                  })\r\n                });\r\n\r\n                document.getElementById('vform-prevBtn').style.display = index==0? 'none':'inline-block';\r\n                if(index == steps.length-1){\r\n                  document.getElementById('vform-nextBtn').style.display = \"none\";\r\n                }else{\r\n                    document.getElementById('vform-nextBtn').style.display = \"inline-block\";\r\n                    document.getElementById('vform-nextBtn').innerText = \"Next\";\r\n                }\r\n                updateStepText();\r\n              }\r\n\r\n              showStep(current);\r\n\r\n              document.getElementById('vform-nextBtn').onclick = ()=>{\r\n                if(current < steps.length-1){\r\n                  current++;\r\n                  showStep(current);\r\n                }\r\n              }\r\n\r\n              document.getElementById('vform-prevBtn').onclick = ()=>{\r\n                if(current > 0){\r\n                  current--;\r\n                  showStep(current);\r\n                }\r\n              }\r\n\r\n          }\r\n          \r\n      <\/script>\r\n\r\n      <!-- multi step form -->\r\n\r\n      <!-- find location -->\r\n      <style>\r\n          .vform-address-wrapper {\r\n              position: relative;\r\n              width: 100%;\r\n          }\r\n\r\n          .vform-address-input {\r\n              width: 100%;\r\n              padding: 12px 14px;\r\n              font-size: 14px;\r\n              border: 1px solid #dcdcdc;\r\n              border-radius: 8px;\r\n              outline: none;\r\n              transition: all 0.2s ease;\r\n          }\r\n\r\n          .vform-address-input:focus {\r\n              border-color: #2271b1;\r\n              box-shadow: 0 0 0 3px rgba(34, 113, 177, 0.15);\r\n          }\r\n\r\n          .vform-address-suggestions {\r\n              position: absolute;\r\n              top: 100%;\r\n              left: 0;\r\n              width: 100%;\r\n              background: #fff;\r\n              border: 1px solid #e5e5e5;\r\n              border-top: none;\r\n              border-radius: 0 0 8px 8px;\r\n              box-shadow: 0 8px 20px rgba(0, 0, 0, 0.08);\r\n              max-height: 250px;\r\n              overflow-y: auto;\r\n              z-index: 9999;\r\n              display: none;\r\n          }\r\n\r\n          .vform-address-suggestions.active {\r\n              display: block;\r\n          }\r\n\r\n          .vform-suggestion-item {\r\n              padding: 10px 14px;\r\n              font-size: 13px;\r\n              cursor: pointer;\r\n              transition: background 0.15s ease;\r\n              border-bottom: 1px solid #f1f1f1;\r\n          }\r\n\r\n          .vform-suggestion-item:last-child {\r\n              border-bottom: none;\r\n          }\r\n\r\n          .vform-suggestion-item:hover {\r\n              background: #f6f9fc;\r\n          }\r\n\r\n          .vform-suggestion-loading {\r\n              padding: 10px 14px;\r\n              font-size: 13px;\r\n              color: #777;\r\n          }\r\n\r\n          .vform-address-suggestions::-webkit-scrollbar {\r\n              width: 6px;\r\n          }\r\n\r\n          .vform-address-suggestions::-webkit-scrollbar-thumb {\r\n              background: #ccc;\r\n              border-radius: 10px;\r\n          }\r\n      <\/style>\r\n\r\n      <script>\r\n          document.addEventListener(\"DOMContentLoaded\", function() {\r\n\r\n              const addressFields = document.querySelectorAll(\".vform-address-wrapper\");\r\n\r\n              addressFields.forEach(wrapper => {\r\n\r\n                  const input = wrapper.querySelector(\".vform-address-input\");\r\n                  const suggestionsBox = wrapper.querySelector(\".vform-address-suggestions\");\r\n\r\n                  let debounceTimer;\r\n\r\n                  function closeSuggestions() {\r\n                      suggestionsBox.classList.remove(\"active\");\r\n                      suggestionsBox.innerHTML = \"\";\r\n                  }\r\n\r\n                  input.addEventListener(\"input\", function() {\r\n\r\n                      const query = this.value.trim();\r\n\r\n                      clearTimeout(debounceTimer);\r\n\r\n                      if (query.length < 3) {\r\n                          closeSuggestions();\r\n                          return;\r\n                      }\r\n\r\n                      debounceTimer = setTimeout(() => {\r\n\r\n                          suggestionsBox.innerHTML = \"<div class='vform-suggestion-loading'>Searching...<\/div>\";\r\n                          suggestionsBox.classList.add(\"active\");\r\n\r\n                          fetch(`https:\/\/nominatim.openstreetmap.org\/search?format=json&addressdetails=1&limit=5&q=${encodeURIComponent(query)}`)\r\n                              .then(res => res.json())\r\n                              .then(data => {\r\n\r\n                                  suggestionsBox.innerHTML = \"\";\r\n\r\n                                  if (!data.length) {\r\n                                      suggestionsBox.innerHTML = \"<div class='vform-suggestion-loading'>No results found<\/div>\";\r\n                                      return;\r\n                                  }\r\n\r\n                                  data.forEach(place => {\r\n\r\n                                      const div = document.createElement(\"div\");\r\n                                      div.classList.add(\"vform-suggestion-item\");\r\n                                      div.textContent = place.display_name;\r\n\r\n                                      div.addEventListener(\"click\", function() {\r\n                                          input.value = place.display_name;\r\n                                          closeSuggestions();\r\n                                      });\r\n\r\n                                      suggestionsBox.appendChild(div);\r\n\r\n                                  });\r\n\r\n                              })\r\n                              .catch(() => {\r\n                                  suggestionsBox.innerHTML = \"<div class='vform-suggestion-loading'>Error loading results<\/div>\";\r\n                              });\r\n\r\n                      }, 400);\r\n\r\n                  });\r\n\r\n                  \/\/ Close when clicking outside THIS wrapper\r\n                  document.addEventListener(\"click\", function(e) {\r\n                      if (!wrapper.contains(e.target)) {\r\n                          closeSuggestions();\r\n                      }\r\n                  });\r\n\r\n                  \/\/ Close on ESC\r\n                  document.addEventListener(\"keydown\", function(e) {\r\n                      if (e.key === \"Escape\") {\r\n                          closeSuggestions();\r\n                      }\r\n                  });\r\n\r\n              });\r\n\r\n          });\r\n      <\/script>\r\n      <!-- find location -->\r\n\r\n      <!-- e signature -->\r\n      <style>\r\n        .vform-signature-pad {\r\n            width: 100%;\r\n            height: 200px;\r\n            border: 2px dashed #dcdcdc;\r\n            border-radius: 8px;\r\n            background: #fff;\r\n            cursor: crosshair;\r\n            touch-action: none;\r\n        }\r\n        .vform-signature-clear {\r\n            margin-top: 8px;\r\n            padding: 6px 12px;\r\n            font-size: 12px;\r\n            background: #f1f1f1;\r\n            border: 1px solid #ccc;\r\n            border-radius: 6px;\r\n            cursor: pointer;\r\n        }\r\n      <\/style>\r\n      \r\n      <script>\r\n        document.addEventListener(\"DOMContentLoaded\", function () {\r\n\r\n            document.querySelectorAll(\".vform-signature-wrapper\").forEach(wrapper => {\r\n\r\n                const canvas = wrapper.querySelector(\".vform-signature-pad\");\r\n                const input = wrapper.querySelector(\".vform-signature-input\");\r\n                const clearBtn = wrapper.querySelector(\".vform-signature-clear\");\r\n\r\n                const ctx = canvas.getContext(\"2d\");\r\n                let drawing = false;\r\n\r\n                \/\/ Fix canvas resolution\r\n                function resizeCanvas() {\r\n                    canvas.width = canvas.offsetWidth;\r\n                    canvas.height = canvas.offsetHeight;\r\n                }\r\n                resizeCanvas();\r\n\r\n                function startDraw(e) {\r\n                    drawing = true;\r\n                    ctx.beginPath();\r\n                    ctx.moveTo(getX(e), getY(e));\r\n                }\r\n\r\n                function draw(e) {\r\n                    if (!drawing) return;\r\n                    ctx.lineTo(getX(e), getY(e));\r\n                    ctx.strokeStyle = \"#000\";\r\n                    ctx.lineWidth = 2;\r\n                    ctx.lineCap = \"round\";\r\n                    ctx.stroke();\r\n                }\r\n\r\n                function stopDraw() {\r\n                    drawing = false;\r\n                    input.value = canvas.toDataURL(\"image\/png\");\r\n                }\r\n\r\n                function getX(e) {\r\n                    return (e.touches ? e.touches[0].clientX : e.clientX) - canvas.getBoundingClientRect().left;\r\n                }\r\n\r\n                function getY(e) {\r\n                    return (e.touches ? e.touches[0].clientY : e.clientY) - canvas.getBoundingClientRect().top;\r\n                }\r\n\r\n                canvas.addEventListener(\"mousedown\", startDraw);\r\n                canvas.addEventListener(\"mousemove\", draw);\r\n                canvas.addEventListener(\"mouseup\", stopDraw);\r\n                canvas.addEventListener(\"mouseleave\", stopDraw);\r\n\r\n                canvas.addEventListener(\"touchstart\", startDraw);\r\n                canvas.addEventListener(\"touchmove\", draw);\r\n                canvas.addEventListener(\"touchend\", stopDraw);\r\n\r\n                clearBtn.addEventListener(\"click\", function () {\r\n                    ctx.clearRect(0, 0, canvas.width, canvas.height);\r\n                    input.value = \"\";\r\n                });\r\n\r\n            });\r\n\r\n        });\r\n      <\/script>\r\n      <!-- e signature -->\r\n\r\n\r\n    \n<\/div><\/div><\/div>\n<\/div><\/div>\n\n\n\n<div class=\"wp-block-stackable-spacer stk-block-spacer stk--no-padding stk-block stk-173396b\" data-block-id=\"173396b\"><style>.stk-173396b {height:100px !important;}@media screen and (max-width:999px){.stk-173396b {height:80px !important;}}<\/style><\/div>\n\n\n\n<div class=\"wp-block-stackable-columns stk-block-columns stk-block stk-dbddf0e\" data-block-id=\"dbddf0e\"><style>.stk-dbddf0e {margin-bottom:35px !important;}.stk-dbddf0e-column{--stk-column-gap:35px !important;}@media screen and (max-width:689px){.stk-dbddf0e {padding-bottom:50px !important;}.stk-dbddf0e-column{row-gap:30px !important;}}<\/style><div class=\"stk-row stk-inner-blocks stk-block-content stk-content-align stk-dbddf0e-column\">\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-9fbb797\" data-v=\"4\" data-block-id=\"9fbb797\"><style>.stk-9fbb797-container{margin-top:0px !important;margin-right:0px !important;margin-bottom:0px !important;margin-left:0px !important;}<\/style><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-9fbb797-container stk--no-background stk--no-padding\"><div class=\"stk-block-content stk-inner-blocks stk-9fbb797-inner-blocks\">\n<div class=\"wp-block-stackable-heading stk-block-heading stk-block-heading--v2 stk-block stk-578a10f\" id=\"trending-now\" data-block-id=\"578a10f\"><style>@media screen and (max-width:689px){.stk-578a10f .stk-block-heading__text{font-size:25px !important;}}<\/style><h3 class=\"stk-block-heading__text has-text-align-left has-text-align-center-mobile\">\u70ed\u95e8\u4ea7\u54c1<\/h3><\/div>\n<\/div><\/div><\/div>\n\n\n\n<div class=\"wp-block-stackable-column stk-block-column stk-column stk-block stk-54c8569\" data-v=\"4\" data-block-id=\"54c8569\"><style>.stk-54c8569-container{margin-top:0px !important;margin-right:0px !important;margin-bottom:0px !important;margin-left:0px !important;}<\/style><div class=\"stk-column-wrapper stk-block-column__content stk-container stk-54c8569-container stk--no-background stk--no-padding\"><div class=\"stk-block-content stk-inner-blocks stk-54c8569-inner-blocks\">\n<div class=\"wp-block-stackable-button-group stk-block-button-group stk-block stk-bd2e216\" data-block-id=\"bd2e216\"><div class=\"stk-row stk-inner-blocks has-text-align-right has-text-align-center-mobile stk-block-content stk-button-group\">\n<div class=\"wp-block-stackable-button stk-block-button stk-block stk-a4fe38e\" data-block-id=\"a4fe38e\"><style>.stk-a4fe38e .stk-button{padding-top:10px !important;padding-right:25px !important;padding-bottom:10px !important;padding-left:25px !important;background:var(--theme-palette-color-6, #f4f4f5) !important;}.stk-a4fe38e .stk-button:hover:after{background:var(--theme-palette-color-2, #7f715c) !important;opacity:1 !important;}.stk-a4fe38e .stk-button .stk--inner-svg svg:last-child{height:12px !important;width:12px !important;}.stk-a4fe38e .stk-button .stk--inner-svg svg:last-child, .stk-a4fe38e .stk-button .stk--inner-svg svg:last-child :is(g, path, rect, polygon, ellipse){fill:var(--theme-palette-color-3, #3f4245) !important;}.stk-a4fe38e .stk-button:hover .stk--inner-svg svg:last-child, .stk-a4fe38e .stk-button:hover .stk--inner-svg svg:last-child :is(g, path, rect, polygon, ellipse){fill:var(--theme-palette-color-8, #ffffff) !important;}.stk-a4fe38e .stk-button__inner-text{color:var(--theme-palette-color-3, #3f4245) !important;}.stk-a4fe38e .stk-button:hover .stk-button__inner-text{color:var(--theme-palette-color-8, #ffffff) !important;}<\/style><a class=\"stk-link stk-button stk--hover-effect-darken\" href=\"https:\/\/startersites.io\/blocksy\/homi\/?page_id=22\"><span class=\"has-text-color has-palette-color-3-color stk-button__inner-text\">\u67e5\u770b\u66f4\u591a<\/span><span class=\"stk--svg-wrapper\"><div class=\"stk--inner-svg\"><svg aria-hidden=\"true\" focusable=\"false\" data-prefix=\"fas\" data-icon=\"arrow-right\" class=\"svg-inline--fa fa-arrow-right fa-w-14\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewbox=\"0 0 448 512\" width=\"32\" height=\"32\"><path fill=\"currentColor\" d=\"M190.5 66.9l22.2-22.2c9.4-9.4 24.6-9.4 33.9 0L441 239c9.4 9.4 9.4 24.6 0 33.9L246.6 467.3c-9.4 9.4-24.6 9.4-33.9 0l-22.2-22.2c-9.5-9.5-9.3-25 .4-34.3L311.4 296H24c-13.3 0-24-10.7-24-24v-32c0-13.3 10.7-24 24-24h287.4L190.9 101.2c-9.8-9.3-10-24.8-.4-34.3z\"><\/path><\/svg><\/div><\/span><\/a><\/div>\n<\/div><\/div>\n<\/div><\/div><\/div>\n<\/div><\/div>\n\n\n<div class=\"woocommerce columns-4\"><ul class=\"products columns-4\" data-products=\"type-1\" data-hover=\"zoom-in\">\r\n<li class=\"product type-product post-1448 status-publish first instock product_cat-side-table has-post-thumbnail shipping-taxable purchasable product-type-simple\">\r\n\t<a href=\"http:\/\/yuanlinoutdoor.com\/zh\/product\/22380-sq-coffee-table-dynasty\/\" class=\"woocommerce-LoopProduct-link woocommerce-loop-product__link\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"800\" src=\"http:\/\/yuanlinoutdoor.com\/wp-content\/uploads\/2025\/05\/22380-SQ-Coffee-Table-Dynasty-1.jpg\" class=\"attachment-woocommerce_thumbnail size-woocommerce_thumbnail\" alt=\"22380  DYNASTY Coffee Table\" \/><h2 class=\"woocommerce-loop-product__title\">22380 \u7687\u671d \u5496\u5561\u684c\/\u8336\u51e0<\/h2>\r\n\t<span class=\"price\"><span class=\"woocommerce-Price-amount amount\"><bdi><span class=\"woocommerce-Price-currencySymbol\">&#36;<\/span>1,349.00<\/bdi><\/span><\/span>\r\n<\/a><a href=\"\/zh\/wp-json\/wp\/v2\/pages\/630?add-to-cart=1448\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_1448\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"1448\" data-product_sku=\"\" aria-label=\"\u52a0\u5165\u8d2d\u7269\u8f66\uff1a\u201c22380  DYNASTY Coffee Table\u201d\" rel=\"nofollow\" data-success_message=\"\u201c22380  DYNASTY Coffee Table\u201d\u5df2\u6dfb\u52a0\u5230\u60a8\u7684\u8d2d\u7269\u8f66\" role=\"button\" data-no-translation=\"\" data-trp-gettext=\"\" data-no-translation-aria-label=\"\" data-no-translation-data-success_message=\"\">\u52a0\u5165\u8d2d\u7269\u8f66<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_1448\" class=\"screen-reader-text\">\r\n\t\t\t<\/span>\r\n<\/li>\r\n<li class=\"product type-product post-1446 status-publish instock product_cat-side-table has-post-thumbnail shipping-taxable purchasable product-type-simple\">\r\n\t<a href=\"http:\/\/yuanlinoutdoor.com\/zh\/product\/22384-rect-coffee-table-dynasty\/\" class=\"woocommerce-LoopProduct-link woocommerce-loop-product__link\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"800\" src=\"http:\/\/yuanlinoutdoor.com\/wp-content\/uploads\/2025\/05\/22384.jpg\" class=\"attachment-woocommerce_thumbnail size-woocommerce_thumbnail\" alt=\"22384 DYNASTY Coffee Table\" \/><h2 class=\"woocommerce-loop-product__title\">22384 \u7687\u671d \u5496\u5561\u684c<\/h2>\r\n\t<span class=\"price\"><span class=\"woocommerce-Price-amount amount\"><bdi><span class=\"woocommerce-Price-currencySymbol\">&#36;<\/span>1,786.00<\/bdi><\/span><\/span>\r\n<\/a><a href=\"\/zh\/wp-json\/wp\/v2\/pages\/630?add-to-cart=1446\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_1446\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"1446\" data-product_sku=\"\" aria-label=\"\u52a0\u5165\u8d2d\u7269\u8f66\uff1a\u201c22384 DYNASTY Coffee Table\u201d\" rel=\"nofollow\" data-success_message=\"\u201c22384 DYNASTY Coffee Table\u201d\u5df2\u6dfb\u52a0\u5230\u60a8\u7684\u8d2d\u7269\u8f66\" role=\"button\" data-no-translation=\"\" data-trp-gettext=\"\" data-no-translation-aria-label=\"\" data-no-translation-data-success_message=\"\">\u52a0\u5165\u8d2d\u7269\u8f66<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_1446\" class=\"screen-reader-text\">\r\n\t\t\t<\/span>\r\n<\/li>\r\n<li class=\"product type-product post-1444 status-publish instock product_cat-side-table has-post-thumbnail shipping-taxable purchasable product-type-simple\">\r\n\t<a href=\"http:\/\/yuanlinoutdoor.com\/zh\/product\/22385-side-table-dynasty\/\" class=\"woocommerce-LoopProduct-link woocommerce-loop-product__link\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"800\" src=\"http:\/\/yuanlinoutdoor.com\/wp-content\/uploads\/2025\/05\/22385-Side-Table-Dynasty-1.jpg\" class=\"attachment-woocommerce_thumbnail size-woocommerce_thumbnail\" alt=\"22385 DYNASTY Side Table\" \/><h2 class=\"woocommerce-loop-product__title\">22385  \u7687\u671d \u8fb9\u51e0<\/h2>\r\n\t<span class=\"price\"><span class=\"woocommerce-Price-amount amount\"><bdi><span class=\"woocommerce-Price-currencySymbol\">&#36;<\/span>858.00<\/bdi><\/span><\/span>\r\n<\/a><a href=\"\/zh\/wp-json\/wp\/v2\/pages\/630?add-to-cart=1444\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_1444\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"1444\" data-product_sku=\"\" aria-label=\"\u52a0\u5165\u8d2d\u7269\u8f66\uff1a\u201c22385 DYNASTY Side Table\u201d\" rel=\"nofollow\" data-success_message=\"\u201c22385 DYNASTY Side Table\u201d\u5df2\u6dfb\u52a0\u5230\u60a8\u7684\u8d2d\u7269\u8f66\" role=\"button\" data-no-translation=\"\" data-trp-gettext=\"\" data-no-translation-aria-label=\"\" data-no-translation-data-success_message=\"\">\u52a0\u5165\u8d2d\u7269\u8f66<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_1444\" class=\"screen-reader-text\">\r\n\t\t\t<\/span>\r\n<\/li>\r\n<li class=\"product type-product post-1442 status-publish last instock product_cat-other has-post-thumbnail shipping-taxable purchasable product-type-simple\">\r\n\t<a href=\"http:\/\/yuanlinoutdoor.com\/zh\/product\/22386-ottoman-dynasty\/\" class=\"woocommerce-LoopProduct-link woocommerce-loop-product__link\"><img loading=\"lazy\" decoding=\"async\" width=\"800\" height=\"800\" src=\"http:\/\/yuanlinoutdoor.com\/wp-content\/uploads\/2025\/05\/22386.jpg\" class=\"attachment-woocommerce_thumbnail size-woocommerce_thumbnail\" alt=\"22386  DYNASTY Ottoman\" \/><h2 class=\"woocommerce-loop-product__title\">22386 \u7687\u671d \u811a\u8e0f<\/h2>\r\n\t<span class=\"price\"><span class=\"woocommerce-Price-amount amount\"><bdi><span class=\"woocommerce-Price-currencySymbol\">&#36;<\/span>861.00<\/bdi><\/span><\/span>\r\n<\/a><a href=\"\/zh\/wp-json\/wp\/v2\/pages\/630?add-to-cart=1442\" aria-describedby=\"woocommerce_loop_add_to_cart_link_describedby_1442\" data-quantity=\"1\" class=\"button product_type_simple add_to_cart_button ajax_add_to_cart\" data-product_id=\"1442\" data-product_sku=\"\" aria-label=\"\u52a0\u5165\u8d2d\u7269\u8f66\uff1a\u201c22386  DYNASTY Ottoman\u201d\" rel=\"nofollow\" data-success_message=\"\u201c22386  DYNASTY Ottoman\u201d\u5df2\u6dfb\u52a0\u5230\u60a8\u7684\u8d2d\u7269\u8f66\" role=\"button\" data-no-translation=\"\" data-trp-gettext=\"\" data-no-translation-aria-label=\"\" data-no-translation-data-success_message=\"\">\u52a0\u5165\u8d2d\u7269\u8f66<\/a>\t<span id=\"woocommerce_loop_add_to_cart_link_describedby_1442\" class=\"screen-reader-text\">\r\n\t\t\t<\/span>\r\n<\/li>\r\n<\/ul>\r\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Address\u200b 1FA17, 18, 23, 26, Louver International Furniture Exhibition Center, Shunde District, Foshan City,Guangdong Province, China. Email yuanlinoutdoor@gmail.com Phone Numbers (+86) 13794623718(+86) 757-28786886 Send us a message Trending Now Browse Shop<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-630","page","type-page","status-publish","hentry"],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":6}},"_links":{"self":[{"href":"http:\/\/yuanlinoutdoor.com\/zh\/wp-json\/wp\/v2\/pages\/630","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/yuanlinoutdoor.com\/zh\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"http:\/\/yuanlinoutdoor.com\/zh\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"http:\/\/yuanlinoutdoor.com\/zh\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/yuanlinoutdoor.com\/zh\/wp-json\/wp\/v2\/comments?post=630"}],"version-history":[{"count":7,"href":"http:\/\/yuanlinoutdoor.com\/zh\/wp-json\/wp\/v2\/pages\/630\/revisions"}],"predecessor-version":[{"id":1588,"href":"http:\/\/yuanlinoutdoor.com\/zh\/wp-json\/wp\/v2\/pages\/630\/revisions\/1588"}],"wp:attachment":[{"href":"http:\/\/yuanlinoutdoor.com\/zh\/wp-json\/wp\/v2\/media?parent=630"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}