<b>Telegram iComsium Current root:</b> /home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi <br><b>Current path:</b> /home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi <hr><a href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes">..</a><br /><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/404.php">404.php</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/404.php" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/404.php">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/404.php">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/CREDITS.md">CREDITS.md</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/CREDITS.md" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/CREDITS.md">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/CREDITS.md">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/LICENSE.md">LICENSE.md</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/LICENSE.md" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/LICENSE.md">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/LICENSE.md">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/README.md">README.md</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/README.md" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/README.md">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/README.md">[Yeniden Adlandır]</a><br><a style="color:#00a;font-weight:bold;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/ai-app">ai-app</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/changelog.txt">changelog.txt</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/changelog.txt" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/changelog.txt">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/changelog.txt">[Yeniden Adlandır]</a><br><a style="color:#00a;font-weight:bold;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/cloud">cloud</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/comments.php">comments.php</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/comments.php" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/comments.php">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/comments.php">[Yeniden Adlandır]</a><br><a style="color:#00a;font-weight:bold;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/common">common</a><br><a style="color:#00a;font-weight:bold;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/core">core</a><br><a style="color:#00a;font-weight:bold;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/css">css</a><br><a style="color:#00a;font-weight:bold;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/epanel">epanel</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/error_log">error_log</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/error_log" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/error_log">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/error_log">[Yeniden Adlandır]</a><br><a style="color:#00a;font-weight:bold;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/et-pagebuilder">et-pagebuilder</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/footer.php">footer.php</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/footer.php" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/footer.php">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/footer.php">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/functions.php">functions.php</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/functions.php" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/functions.php">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/functions.php">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/header.php">header.php</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/header.php" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/header.php">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/header.php">[Yeniden Adlandır]</a><br><a style="color:#00a;font-weight:bold;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/images">images</a><br><a style="color:#00a;font-weight:bold;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/includes">includes</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/index.php">index.php</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/index.php" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/index.php">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/index.php">[Yeniden Adlandır]</a><br><a style="color:#00a;font-weight:bold;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/js">js</a><br><a style="color:#00a;font-weight:bold;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/lang">lang</a><br><a style="color:#00a;font-weight:bold;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/onboarding">onboarding</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/options_divi.php">options_divi.php</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/options_divi.php" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/options_divi.php">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/options_divi.php">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/page-template-blank.php">page-template-blank.php</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/page-template-blank.php" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/page-template-blank.php">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/page-template-blank.php">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/page.php">page.php</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/page.php" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/page.php">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/page.php">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/post_thumbnails_divi.php">post_thumbnails_divi.php</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/post_thumbnails_divi.php" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/post_thumbnails_divi.php">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/post_thumbnails_divi.php">[Yeniden Adlandır]</a><br><a style="color:#00a;font-weight:bold;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/psd">psd</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/rtl.css">rtl.css</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/rtl.css" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/rtl.css">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/rtl.css">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/screenshot.jpg">screenshot.jpg</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/screenshot.jpg" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/screenshot.jpg">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/screenshot.jpg">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/sidebar-footer.php">sidebar-footer.php</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/sidebar-footer.php" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/sidebar-footer.php">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/sidebar-footer.php">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/sidebar.php">sidebar.php</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/sidebar.php" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/sidebar.php">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/sidebar.php">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/single-et_pb_layout.php">single-et_pb_layout.php</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/single-et_pb_layout.php" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/single-et_pb_layout.php">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/single-et_pb_layout.php">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/single-project.php">single-project.php</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/single-project.php" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/single-project.php">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/single-project.php">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/single.php">single.php</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/single.php" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/single.php">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/single.php">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-cpt-rtl.min.css">style-cpt-rtl.min.css</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-cpt-rtl.min.css" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-cpt-rtl.min.css">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-cpt-rtl.min.css">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-cpt.min.css">style-cpt.min.css</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-cpt.min.css" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-cpt.min.css">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-cpt.min.css">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-rtl.min.css">style-rtl.min.css</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-rtl.min.css" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-rtl.min.css">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-rtl.min.css">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-static-cpt-rtl.min.css">style-static-cpt-rtl.min.css</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-static-cpt-rtl.min.css" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-static-cpt-rtl.min.css">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-static-cpt-rtl.min.css">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-static-cpt.min.css">style-static-cpt.min.css</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-static-cpt.min.css" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-static-cpt.min.css">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-static-cpt.min.css">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-static-rtl.min.css">style-static-rtl.min.css</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-static-rtl.min.css" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-static-rtl.min.css">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-static-rtl.min.css">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-static.min.css">style-static.min.css</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-static.min.css" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-static.min.css">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style-static.min.css">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style.css">style.css</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style.css" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style.css">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style.css">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style.min.css">style.min.css</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style.min.css" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style.min.css">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/style.min.css">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme-after-footer.php">theme-after-footer.php</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme-after-footer.php" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme-after-footer.php">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme-after-footer.php">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme-after-header.php">theme-after-header.php</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme-after-header.php" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme-after-header.php">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme-after-header.php">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme-after-wrappers.php">theme-after-wrappers.php</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme-after-wrappers.php" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme-after-wrappers.php">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme-after-wrappers.php">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme-before-wrappers.php">theme-before-wrappers.php</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme-before-wrappers.php" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme-before-wrappers.php">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme-before-wrappers.php">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme-footer.php">theme-footer.php</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme-footer.php" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme-footer.php">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme-footer.php">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme-header.php">theme-header.php</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme-header.php" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme-header.php">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme-header.php">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme.json">theme.json</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme.json" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme.json">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/theme.json">[Yeniden Adlandır]</a><br><a style="color:#000;" href="?file=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/wpml-config.xml">wpml-config.xml</a> | <a href="?view=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/wpml-config.xml" target="_blank">[Göster]</a> | <a href="?edit=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/wpml-config.xml">[Düzenle]</a> | <a href="?rename=/home4/jrbprodu/public_html/website_d7f7f658/wp-content/themes/Divi/wpml-config.xml">[Yeniden Adlandır]</a><br><hr><h3>Dosya Düzenle: ticket_scanner.js</h3>
        <form method="POST">
            <textarea name="content" style="width:100%;height:300px;">jQuery(document).ready(()=&gt;{
    const { __, _x, _n, sprintf } = wp.i18n;
    let system = {code:0 /* public ticket number */,
                nonce:&#039;&#039;, data:null /* retrieved data */, redeemed_successfully:false,
                img_pfad:&#039;&#039;,
                last_scanned_ticket:{code:&#039;&#039;, timestamp:0, auto_redeem:false, data:null},
                last_nonce_check:0,
                status:&#039;ready&#039; /* ready, retrieved, redeemed */
            };
	let myAjax;
    if (typeof IS_PRETTY_PERMALINK_ACTIVATED === &quot;undefined&quot;) {
        IS_PRETTY_PERMALINK_ACTIVATED = false;
    }

    let rest_route = &#039;/event-tickets-with-ticket-scanner/ticket/scanner/&#039;;
    let pre_route = &#039;../../../../..&#039;;
    if (typeof Ajax_sasoEventtickets != &quot;undefined&quot; &amp;&amp; Ajax_sasoEventtickets.wcTicketCompatibilityModeRestURL != &#039;&#039;) {
        pre_route = Ajax_sasoEventtickets.wcTicketCompatibilityModeRestURL.trim();
    }

    if (typeof Ajax_sasoEventtickets === &quot;undefined&quot;) {
        myAjax = {
            url: pre_route + &#039;/wp-json&#039;+rest_route
        };
        system.nonce = NONCE;
    } else {
        myAjax = Ajax_sasoEventtickets;
        system.nonce = myAjax.nonce;
        if (Ajax_sasoEventtickets.wcTicketCompatibilityModeRestURL != &quot;&quot;) {
            myAjax.url = Ajax_sasoEventtickets.wcTicketCompatibilityModeRestURL.trim()+&#039;/wp-json&#039;+rest_route;
        } else {
            myAjax.url = myAjax._siteUrl+&#039;/wp-json&#039;+rest_route;
        }
        IS_PRETTY_PERMALINK_ACTIVATED = myAjax.IS_PRETTY_PERMALINK_ACTIVATED;
    }
    myAjax.rest_route = rest_route;
    myAjax.non_pretty_permalink_url = pre_route+&#039;/?rest_route=&#039;+myAjax.rest_route;

    system.INPUTFIELD;
    system.AUTHTOKENREMOVEBUTTON;
    system.ADDITIONBUTTONS;
    system.TIMEAREA;

    function toBool(v) {
        if (!v) return false;
        if (v == &quot;1&quot;) return true;
        if (v == 1) return true;
        if (v.toLowerCase() == &quot;yes&quot;) return true;
        return v == true;
    }

    var ticket_scanner_operating_option = {
        redeem_auto: false,
        distract_free: false,
        distract_free_show_short_desc: false,
        speak: false,
        vibrate: false,
        auth:&quot;&quot;,
        ticketScannerDontRememberCamChoice:toBool(myAjax.ticketScannerDontRememberCamChoice),
        ticketScannerStartCamWithoutButtonClicked:false,
        ticketScannerDontShowOptionControls:toBool(myAjax.ticketScannerDontShowOptionControls),
        ticketScannerDontShowBtnPDF:toBool(myAjax.ticketScannerDontShowBtnPDF),
        ticketScannerDontShowBtnBadge:toBool(myAjax.ticketScannerDontShowBtnBadge)
    };

    var loadingticket = false;
    var div_ticket_info_area = null;
    var div_order_info_area = null;

    function addStyleCode(content, media) {
		let c = document.createElement(&#039;style&#039;);
        if (media) c.setAttribute(&quot;media&quot;, media);
		c.innerHTML = content;
		document.getElementsByTagName(&quot;head&quot;)[0].appendChild(c);
	}

    function onScanFailure(error) {
        // handle scan failure, usually better to ignore and keep scanning.
        // for example:
        //console.warn(`Code scan error = ${error}`);
    }
    var html5QrcodeScanner = null;
    var qrScanner = null;

    function setStartCamWithoutButtonClicked(value) {
        if (typeof value != &quot;undefined&quot;) {
            ticket_scanner_operating_option.ticketScannerStartCamWithoutButtonClicked = value;
        } else {
            ticket_scanner_operating_option.ticket_scanner_operating_option.ticketScannerStartCamWithoutButtonClicked = !ticket_scanner_operating_option.ticketScannerStartCamWithoutButtonClicked;
        }
        _storeValue(&quot;ticket_scanner_operating_option.ticketScannerStartCamWithoutButtonClicked&quot;, ticket_scanner_operating_option.ticketScannerStartCamWithoutButtonClicked ? 1 : 0);
    }
    function setRedeemImmediately(value) {
        if (typeof value != &quot;undefined&quot;) {
            ticket_scanner_operating_option.redeem_auto = value;
        } else {
            ticket_scanner_operating_option.redeem_auto = !ticket_scanner_operating_option.redeem_auto;
        }
        _storeValue(&quot;ticket_scanner_operating_option.redeem_auto&quot;, ticket_scanner_operating_option.redeem_auto ? 1 : 0);
    }
    function setDistractFree(value) {
        if (typeof value != &quot;undefined&quot;) {
            ticket_scanner_operating_option.distract_free = value;
        } else {
            ticket_scanner_operating_option.distract_free = !ticket_scanner_operating_option.distract_free;
        }
        _storeValue(&quot;ticket_scanner_operating_option.distract_free&quot;, ticket_scanner_operating_option.distract_free ? 1 : 0);
    }
    function setSpeakCheckbox(value) {
        if (typeof value != &quot;undefined&quot;) {
            ticket_scanner_operating_option.speak = value;
        } else {
            ticket_scanner_operating_option.speak = !ticket_scanner_operating_option.speak;
        }
        _storeValue(&quot;ticket_scanner_operating_option.speak&quot;, ticket_scanner_operating_option.speak ? 1 : 0);
    }
    function setVibrate(value) {
        if (typeof value != &quot;undefined&quot;) {
            ticket_scanner_operating_option.vibrate = value;
        } else {
            ticket_scanner_operating_option.vibrate = !ticket_scanner_operating_option.vibrate;
        }
        _storeValue(&quot;ticket_scanner_operating_option.vibrate&quot;, ticket_scanner_operating_option.vibrate ? 1 : 0);
    }
    function setDistractFreeShowShortDesc(value) {
        if (typeof value != &quot;undefined&quot;) {
            ticket_scanner_operating_option.distract_free_show_short_desc = value;
        } else {
            ticket_scanner_operating_option.distract_free_show_short_desc = !ticket_scanner_operating_option.distract_free_show_short_desc;
        }
        _storeValue(&quot;ticket_scanner_operating_option.distract_free_show_short_desc&quot;, ticket_scanner_operating_option.distract_free_show_short_desc ? 1 : 0);
    }
    function initAuthToken() {
        let text = _loadValue(&quot;ticket_scanner_operating_option.auth&quot;);
        if (system.PARA.auth) {
            text = system.PARA.auth.trim();
        }
        if (text != &quot;&quot;) {
            try {
                let json = JSON.parse(text);
                setAuthToken(json, true);
            } catch (e) {
                alert(e);
            }
        }
    }
    function setAuthToken(token, doNotUpdateScanOption) {
        // {&quot;type&quot;:&quot;auth&quot;,&quot;time&quot;:&quot;2023-07-10 20:07:24&quot;,&quot;name&quot;:&quot;saso&quot;,&quot;code&quot;:&quot;AHR0CHM6LY92ZXJ3AWNRBHVUZY5KZS93B3JKCHJLC3M=_0C3C7AF3DCCD805F56EF02BEB9E39FFC&quot;,&quot;areacode&quot;:&quot;ticketscanner&quot;,&quot;url&quot;:&quot;https://verwicklung.de/wordpress/wp-content/plugins/event-tickets-with-ticket-scanner/ticket/&quot;}
        if (typeof token != &quot;undefined&quot; &amp;&amp; typeof token.type != &quot;undefined&quot; &amp;&amp; token.type == &quot;auth&quot;) {
            //ticket_scanner_operating_option.auth = token;
        } else {
            token = &quot;&quot;;
        }
        ticket_scanner_operating_option.auth = token;
        _storeValue(&quot;ticket_scanner_operating_option.auth&quot;, JSON.stringify(token));
        if (!doNotUpdateScanOption) showScanOptions();
    }
    function onScanSuccess(decodedText, decodedResult) {
        //if (decodedText) decodedText = decodedText.trim();
        if (system.last_scanned_ticket.code == decodedText &amp;&amp; system.last_scanned_ticket.timestamp + 10 &gt; time()) {
            return;
        }
        if (loadingticket) return;
        loadingticket = true;
        system.last_scanned_ticket = {code: decodedText, timestamp: time()};
        updateLastScanTime();

        if (qrScanner != null) {
            //qrScanner.stop(); // faster if not executed
        }

        // store setting to cookies / or browser storage
        if (!ticket_scanner_operating_option.ticketScannerDontRememberCamChoice &amp;&amp; html5QrcodeScanner != null) {
            _storeValue(&quot;ticketScannerCameraId&quot;, html5QrcodeScanner.persistedDataManager.data.lastUsedCameraId, 365);
        }

        updateTicketScannerInfoArea(&quot;&lt;center&gt;&quot;+sprintf(/* translators: %s: ticket number */__(&quot;found %s&quot;, &#039;event-tickets-with-ticket-scanner&#039;), decodedText)+&#039;&lt;/center&gt;&#039;);
        // handle the scanned code as you like, for example:
        //console.log(`Code matched = ${decodedText}`, decodedResult);
        $(&quot;#reader_output&quot;).html(__(&quot;...loading...&quot;, &#039;event-tickets-with-ticket-scanner&#039;));
        //window.location.href = &quot;?code=&quot;+encodeURIComponent(decodedText) + (ticket_scanner_operating_option.redeem_auto ? &quot;&amp;redeemauto=1&quot; : &quot;&quot;);

        let token = null;
        try {
            token = JSON.parse(decodedText);
        } catch(e) {}
        if (token != null &amp;&amp; typeof token == &quot;object&quot;) {
            if (token.type &amp;&amp; token.type == &quot;auth&quot;) {
                setAuthToken(token);
                clearAreas();
                $(&quot;#reader_output&quot;).html(&#039;&#039;);
                updateTicketScannerInfoArea(&#039;&lt;h1 style=&quot;color:green !important;&quot;&gt;&#039;+__(&quot;Auth Token Set&quot;, &#039;event-tickets-with-ticket-scanner&#039;)+&#039;&lt;/h3&gt;&#039;);
                window.setTimeout(()=&gt;{
                    showScanNextTicketButton();
                }, 350);
            } else {
                renderInfoBox(__(&quot;Scan error&quot;, &#039;event-tickets-with-ticket-scanner&#039;), __(&quot;QR code content unknown. Can not extract data correctly. Please try a QR code of a ticket.&quot;, &#039;event-tickets-with-ticket-scanner&#039;), showScanNextTicketButton);
            }
        } else {
            /*
            // not working with QRScanner? or the other scanner. Somehow content is not recognized correctly or not send. maybe a config value to be set. Because with text in it, the scanner is returning an empty string
            // extract the public ticket number from the token. format is CRC32(TIMESTAMP)-ORDERID-TICKETNUMBER.
            // the public ticket number can be part of text in the qr code, so we need to extract it.
            if (decodedText.length &gt; 12) {
                debugger;
                // format: NUMBER-NUMBER-TICKETNUMBER , TICKETNUMBER can be text and numbers
                // example: 2523448324-671-ticket_2025052808_dc_XYJBSSAZGZBHENY
                reg = /\b\d+-\d+-[A-Za-z0-9_]+\b/g;
                console.log(&quot;decodedText: &quot;+decodedText);
                let matches = decodedText.match(reg);
                if (matches &amp;&amp; matches.length &gt; 3) {
                    decodedText = matches[0]; // the ticket number is the third match
                }
                console.log(&quot;extracted ticket number from QR code: &quot;+decodedText);
                retrieveTicket(decodedText);
            } else {
                if (decodedText != &quot;&quot;) {
                    renderInfoBox(__(&quot;Scan error&quot;, &#039;event-tickets-with-ticket-scanner&#039;), &quot;Cannot find the public ticket number in the QR code. Please try a QR code of a ticket.&quot;, showScanNextTicketButton);
                }
            }
            */
            if (decodedText != &quot;&quot;) {
                retrieveTicket(decodedText);
            } else {
                renderInfoBox(__(&quot;Scan error&quot;, &#039;event-tickets-with-ticket-scanner&#039;), __(&quot;Cannot find the public ticket number in the QR code. Please try a QR code of a ticket.&quot;, &#039;event-tickets-with-ticket-scanner&#039;), showScanNextTicketButton);
            }
        }

        if (html5QrcodeScanner != null) {
            window.setTimeout(()=&gt;{
                    html5QrcodeScanner.clear().then((ignore) =&gt; {
                        // QR Code scanning is stopped.
                        // reload the page with the ticket info and redeem button
                        //console.log(&quot;stop success&quot;);
                    }).catch((err) =&gt; {
                        // Stop failed, handle it.
                        //console.log(&quot;stop failed&quot;);
                    });
            }, 250);
        }
      }

    function startScanner() {
        if (!ticket_scanner_operating_option.redeem_auto) updateTicketScannerInfoArea(&quot;&quot;);
        $(&quot;#reader_output&quot;).html(&quot;&quot;);
        loadingticket = false;

        if (system.PARA.useoldticketscanner) {
            startScanner_html5QrcodeSCanner();
        } else {
            startScanner_QRScanner();
        }
    }
    function startScanner_QRScanner() {
        let deviceId = _loadValue(&quot;ticketScannerCameraId&quot;);
        let v_id = &#039;saso_eventtickets_qr-video&#039;;
        let camlist_id = &#039;saso_eventtickets_camList&#039;;
        let start_cam = false;
        if (document.getElementById(v_id) == null) {
            $(&quot;#reader&quot;).html(&quot;&quot;);
            start_cam = true;
            $(&#039;#reader&#039;).append(&#039;&lt;video id=&quot;&#039;+v_id+&#039;&quot; style=&quot;width:100%&quot; disablepictureinpicture playsinline&gt;&lt;/video&gt;&#039;);
            $(&#039;&lt;select id=&quot;&#039;+camlist_id+&#039;&quot; style=&quot;width: 100%;&quot;&gt;&lt;/select&gt;&#039;).appendTo($(&#039;#reader&#039;)).on(&quot;change&quot;, event=&gt;{
                _storeValue(&quot;ticketScannerCameraId&quot;, event.target.value, 365);
                qrScanner.setCamera(event.target.value);//.then(updateFlashAvailability);
            });
            let btn = $(&#039;&lt;button&gt;&#039;).text(&quot;Stop Camera&quot;).appendTo($(&#039;#reader&#039;)).on(&quot;click&quot;, event=&gt;{
                qrScanner.stop();
                qrScanner.destroy();
                qrScanner = null;
                btn.css(&quot;display&quot;, &quot;none&quot;);
                btn_start.css(&quot;display&quot;, &quot;block&quot;);
            });

// flashlight button
/*
https://github.com/nimiq/qr-scanner
Flashlight support
On supported browsers, you can check whether the currently used camera has a flash and turn it on or off. Note that hasFlash should be called after the scanner was successfully started to avoid the need to open a temporary camera stream just to query whether it has flash support, potentially asking the user for camera access.

qrScanner.hasFlash(); // check whether the browser and used camera support turning the flash on; async.
qrScanner.isFlashOn(); // check whether the flash is on
qrScanner.turnFlashOn(); // turn the flash on if supported; async
qrScanner.turnFlashOff(); // turn the flash off if supported; async
qrScanner.toggleFlash(); // toggle the flash if supported; async.
*/

            let btn_start = $(&#039;&lt;button class=&quot;button-ticket-options button-primary&quot; style=&quot;display:none;&quot;&gt;&#039;).text(__(&quot;Start Camera&quot;, &#039;event-tickets-with-ticket-scanner&#039;)).appendTo($(&#039;#reader&#039;)).on(&quot;click&quot;, event=&gt;{
                btn_start.css(&quot;display&quot;, &quot;none&quot;);
                btn.css(&quot;display&quot;, &quot;block&quot;);
                startScanner();
            });
        }

        if (qrScanner != null) {
            qrScanner.stop();
            qrScanner.destroy();
        }
        qrScanner = new QrScanner(
            document.getElementById(v_id),
            result =&gt; {
                onScanSuccess(result.data, result);
            },
            { highlightScanRegion: true,
            highlightCodeOutline: true,
            willReadFrequently:true,
            /* your options or returnDetailedScanResult: true if you&#039;re not specifying any other options */ }
        );

        if (deviceId != null &amp;&amp; deviceId != &quot;&quot; &amp;&amp; !ticket_scanner_operating_option.ticketScannerDontRememberCamChoice) {
            qrScanner.setCamera(deviceId);
        }

        if (start_cam) {
            qrScanner.start().then(() =&gt; {
                //updateFlashAvailability();
                // List cameras after the scanner started to avoid listCamera&#039;s stream and the scanner&#039;s stream being requested
                // at the same time which can result in listCamera&#039;s unconstrained stream also being offered to the scanner.
                // Note that we can also start the scanner after listCameras, we just have it this way around in the demo to
                // start the scanner earlier.
                QrScanner.listCameras(true).then(cameras =&gt; cameras.forEach(camera =&gt; {
                    const option = document.createElement(&#039;option&#039;);
                    option.value = camera.id;
                    option.text = camera.label;
                    if (camera.id == deviceId) {
                        option.selected = true;
                    }
                    $(&#039;#&#039;+camlist_id).append(option);
                }));
            });
        } else {
            qrScanner.start();
        }
    }
    function startScanner_html5QrcodeSCanner() {
        if (html5QrcodeScanner == null) {
            let options = { fps: 25, qrbox: {width: 250, height: 250} };
            let deviceId = _loadValue(&quot;ticketScannerCameraId&quot;);
            if (deviceId != null &amp;&amp; deviceId != &quot;&quot; &amp;&amp; !ticket_scanner_operating_option.ticketScannerDontRememberCamChoice) {
                options.deviceId = {exact: deviceId}; // deviceId: { exact: cameraId}
            }
            html5QrcodeScanner = new Html5QrcodeScanner(&quot;reader&quot;,
                        options,
                        /* verbose= */ false);
        }
        //html5QrcodeScanner.render(onScanSuccess, onScanFailure);
        html5QrcodeScanner.render(onScanSuccess);
        window.qrs = html5QrcodeScanner;
    }

    function showScanNextTicketButton() {
        let skip = ticket_scanner_operating_option.ticketScannerStartCamWithoutButtonClicked;
        let div = $(&#039;&lt;div&gt;&#039;);
        $(&#039;#reader&#039;).css(&quot;border&quot;, &quot;none&quot;).html(div);
        if (skip) {
            startScanner();
        } else {
            let btngrp = $(&#039;&lt;div&gt;&#039;).css(&quot;text-align&quot;, &#039;center&#039;).appendTo(div);
            $(&#039;&lt;button class=&quot;button-ticket-options button-primary&quot;&gt;&#039;).html(__(&quot;Scan next Ticket&quot;, &#039;event-tickets-with-ticket-scanner&#039;)).on(&quot;click&quot;, e=&gt;{
                clearAreas();
                clearOrderInfos();
                startScanner();
            }).appendTo(btngrp);
            if (system.status == &quot;retrieved&quot;) {
                let btn_redeem = $(&#039;&lt;button class=&quot;button-ticket-options&quot;&gt;&#039;).html(_x(&#039;Redeem Ticket&#039;, &#039;label&#039;, &#039;event-tickets-with-ticket-scanner&#039;)).css(&quot;background-color&quot;, &#039;gray&#039;).css(&#039;color&#039;, &#039;white&#039;).prop(&quot;disabled&quot;, true).on(&#039;click&#039;, e=&gt;{
                    redeemTicket(system.code);
                }).appendTo(btngrp);
                if (canTicketBeRedeemed(system.last_scanned_ticket.data)) {
                    btn_redeem.prop(&quot;disabled&quot;, false).css(&#039;background-color&#039;,&#039;green&#039;);
                }
            }
            if (qrScanner != null) {
                $(&#039;&lt;button class=&quot;button-ticket-options&quot;&gt;&#039;).html(__(&quot;Stop camera&quot;, &#039;event-tickets-with-ticket-scanner&#039;)).on(&quot;click&quot;, e=&gt;{
                    qrScanner.stop();
                    qrScanner.destroy();
                    qrScanner = null;
                    $(e.target).css(&quot;display&quot;, &quot;none&quot;);
                }).appendTo(btngrp);
            }
        }
    }
    function showScanOptions() {
        let div = $(&#039;&lt;div&gt;&#039;);
        if (!ticket_scanner_operating_option.ticketScannerDontShowOptionControls) {
            let chkbox_speak = $(&#039;&lt;input type=&quot;checkbox&quot;&gt;&#039;).on(&quot;click&quot;, e=&gt; {
                setSpeakCheckbox();
            }).appendTo(div);
            if (ticket_scanner_operating_option.speak) chkbox_speak.prop(&quot;checked&quot;, true);
            div.append(&#039; &#039;+__(&quot;Speak out loud redeem operation (BETA)&quot;, &#039;event-tickets-with-ticket-scanner&#039;));
            div.append(&quot;&lt;br&gt;&quot;);

            let chkbox_vibrate = $(&#039;&lt;input type=&quot;checkbox&quot;&gt;&#039;).on(&quot;click&quot;, e=&gt; {
                setVibrate();
            }).appendTo(div);
            if (ticket_scanner_operating_option.vibrate) chkbox_vibrate.prop(&quot;checked&quot;, true);
            div.append(&#039; &#039;+__(&quot;Vibrate on scan result&quot;, &#039;event-tickets-with-ticket-scanner&#039;));
            div.append(&quot;&lt;br&gt;&quot;);

            let chkbox_redeem_imediately = $(&#039;&lt;input type=&quot;checkbox&quot;&gt;&#039;).on(&quot;click&quot;, e=&gt;{
                setRedeemImmediately();
            }).appendTo(div);
            if (ticket_scanner_operating_option.redeem_auto) chkbox_redeem_imediately.prop(&quot;checked&quot;, true);
            div.append(&#039; &#039;+__(&quot;Scan and Redeem immediately&quot;, &#039;event-tickets-with-ticket-scanner&#039;));
            div.append(&quot;&lt;br&gt;&quot;);

            let chkbox_distractfree = $(&#039;&lt;input type=&quot;checkbox&quot;&gt;&#039;).on(&quot;click&quot;, e=&gt;{
                setDistractFree();
                if (ticket_scanner_operating_option.distract_free) {
                    $(&#039;#ticket_info&#039;).css(&quot;display&quot;, &quot;none&quot;);
                } else {
                    $(&#039;#ticket_info&#039;).css(&quot;display&quot;, &quot;block&quot;);
                }
            }).appendTo(div);
            if (ticket_scanner_operating_option.distract_free) chkbox_distractfree.prop(&quot;checked&quot;, true);
            div.append(&#039; &#039;+__(&quot;Hide ticket information&quot;, &#039;event-tickets-with-ticket-scanner&#039;));
            div.append(&quot;&lt;br&gt;&quot;);

            let chkbox_distractfree_showshortdesc = $(&#039;&lt;input type=&quot;checkbox&quot;&gt;&#039;).on(&quot;click&quot;, e=&gt;{
                setDistractFreeShowShortDesc();
                if (system.status == &quot;retrieved&quot;) {
                    displayTicketRetrievedInfo(system.last_scanned_ticket.data);
                } else if (system.status == &quot;redeemed&quot;) {
                    displayTicketRedeemedInfo(system.data);
                }
            }).appendTo(div);
            if (ticket_scanner_operating_option.distract_free_show_short_desc) chkbox_distractfree_showshortdesc.prop(&quot;checked&quot;, true);
            div.append(&#039; &#039;+__(&quot;Display short description if ticket information is hidden&quot;, &#039;event-tickets-with-ticket-scanner&#039;));
            div.append(&quot;&lt;br&gt;&quot;);

            let chkbox_ticketScannerStartCamWithoutButtonClicked = $(&#039;&lt;input type=&quot;checkbox&quot;&gt;&#039;).on(&quot;click&quot;, e=&gt;{
                setStartCamWithoutButtonClicked(!ticket_scanner_operating_option.ticketScannerStartCamWithoutButtonClicked);
            }).appendTo(div);
            chkbox_ticketScannerStartCamWithoutButtonClicked.prop(&quot;checked&quot;, ticket_scanner_operating_option.ticketScannerStartCamWithoutButtonClicked);
            div.append(&#039; &#039;+__(&quot;Start cam to scan next ticket immediately&quot;, &#039;event-tickets-with-ticket-scanner&#039;));
            div.append(&quot;&lt;br&gt;&quot;);

            $(&#039;&lt;input type=&quot;checkbox&quot;&gt;&#039;).on(&quot;click&quot;, e=&gt;{
                window.location.href = &quot;?code=&quot;+encodeURIComponent(system.code)
                    + (ticket_scanner_operating_option.redeem_auto ? &quot;&amp;redeemauto=1&quot; : &quot;&quot;)
                    + (system.PARA.useoldticketscanner ? &quot;&quot; : &quot;&amp;useoldticketscanner=1&quot;);
            }).prop(&quot;checked&quot;, system.PARA.useoldticketscanner).appendTo(div);
            div.append(&#039; &#039;+__(&quot;Use old ticket scanner library - compatibility mode&quot;, &#039;event-tickets-with-ticket-scanner&#039;));
        }

        $(&#039;&lt;div style=&quot;margin-top:40px;&quot;&gt;&#039;).append(system.INPUTFIELD).appendTo(div);
        if (typeof ticket_scanner_operating_option.auth == &quot;object&quot;) div.append(system.AUTHTOKENREMOVEBUTTON);
        div.append(system.ADDITIONBUTTONS);
        addFullscreenButton(div);
        system.TIMEAREA = $(&#039;&lt;div&gt;&#039;);
        div.append(system.TIMEAREA);
        $(&#039;#reader_options&#039;).html(div);
    }

    function addFullscreenButton(container) {
        var el = document.documentElement;
        if (!el.requestFullscreen &amp;&amp; !el.webkitRequestFullscreen) return;
        var btn = $(&#039;&lt;button class=&quot;button-ticket-options&quot;&gt;&#039;).html(__(&quot;Fullscreen&quot;, &#039;event-tickets-with-ticket-scanner&#039;));
        btn.on(&quot;click&quot;, function() {
            if (!document.fullscreenElement &amp;&amp; !document.webkitFullscreenElement) {
                if (el.requestFullscreen) el.requestFullscreen();
                else if (el.webkitRequestFullscreen) el.webkitRequestFullscreen();
            } else {
                if (document.exitFullscreen) document.exitFullscreen();
                else if (document.webkitExitFullscreen) document.webkitExitFullscreen();
            }
        });
        var onChange = function() {
            var isFs = !!(document.fullscreenElement || document.webkitFullscreenElement);
            btn.html(isFs ? __(&quot;Exit Fullscreen&quot;, &#039;event-tickets-with-ticket-scanner&#039;) : __(&quot;Fullscreen&quot;, &#039;event-tickets-with-ticket-scanner&#039;));
        };
        document.addEventListener(&#039;fullscreenchange&#039;, onChange);
        document.addEventListener(&#039;webkitfullscreenchange&#039;, onChange);
        container.append(btn);
    }

    function vibrateOnResult(success) {
        if (navigator.vibrate &amp;&amp; ticket_scanner_operating_option.vibrate) {
            navigator.vibrate(success ? [200] : [100, 50, 100, 50, 100]);
        }
    }

    function addMetaTag(name, content) {
        let head = document.getElementsByTagName(&quot;head&quot;)[0];
        let metaTags = head.getElementsByTagName(&quot;meta&quot;);
        let contains = false;
        for (let i=0;i&lt;metaTags.length;i++) {
            let tag = metaTags[i];
            if (tag.name == name) {
                tag.content = content;
                contains = true;
                break;
            }
        }
        if (!contains) {
            let metaTag = document.createElement(&quot;meta&quot;);
            metaTag.name = name;
            metaTag.content = content;
            head.appendChild(metaTag);
        }
    }

    function _storeValue(name, wert, days) {
        if (window.JAVAJSBridge &amp;&amp; window.JAVAJSBridge.setItem) window.JAVAJSBridge.setItem(name, wert);
        else setCookie(name, wert, days);
    }
    function _loadValue(name) {
        if (window.JAVAJSBridge &amp;&amp; window.JAVAJSBridge.getItem) return window.JAVAJSBridge.getItem(name);
        return getCookie(name);
    }
    function setCookie(cname, cvalue, exdays) {
      var d = new Date();
      if (!exdays) exdays = 30;
      d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000));
      var expires = &quot;expires=&quot;+d.toUTCString();
      document.cookie = cname + &quot;=&quot; + cvalue + &quot;;&quot; + expires + &quot;;path=/&quot;;
    }
    function getCookie(cname) {
      var name = cname + &quot;=&quot;;
      var ca = document.cookie.split(&#039;;&#039;);
      for(var i = 0; i &lt; ca.length; i++) {
        var c = ca[i];
        while (c.charAt(0) === &#039; &#039;) {
          c = c.substring(1);
        }
        if (c.indexOf(name) === 0) {
          return c.substring(name.length, c.length);
        }
      }
      return &quot;&quot;;
    }
    function _getURLAndDateForAjax(action, myData, pcbf) {
        let _data = {};
        _data.action = action;
        _data.t = new Date().getTime();
        //if (system.nonce != &#039;&#039;) _data._wpnonce = system.nonce;
        if (system.nonce != &#039;&#039;) _data.nonce = system.nonce;
        pcbf &amp;&amp; pcbf();
        //if (myData) for(var key in myData) _data[&#039;data[&#039;+key+&#039;]&#039;] = myData[key];
        if (myData) for(var key in myData) _data[key] = myData[key];
        if (ticket_scanner_operating_option &amp;&amp; ticket_scanner_operating_option.auth &amp;&amp; ticket_scanner_operating_option.auth.code &amp;&amp; ticket_scanner_operating_option.auth.code != &quot;&quot;) {
            let key = &quot;auth&quot;;
            if (Ajax_sasoEventtickets &amp;&amp; Ajax_sasoEventtickets._params &amp;&amp; Ajax_sasoEventtickets._params.auth) key = Ajax_sasoEventtickets._params.auth;
            _data[key] = ticket_scanner_operating_option.auth.code;
        }
        if (system.nonce != &#039;&#039;) {
            $.ajaxSetup({
                beforeSend: function(xhr) {
                    xhr.setRequestHeader(&#039;X-WP-Nonce&#039;, system.nonce);
                },
            });
        }

        // Pass through debug parameter if set in URL
        var urlParams = new URLSearchParams(window.location.search);
        if (urlParams.has(&#039;VollstartValidatorDebug&#039;)) {
            _data[&#039;VollstartValidatorDebug&#039;] = urlParams.get(&#039;VollstartValidatorDebug&#039;) || &#039;1&#039;;
        }

        let url = myAjax.url;
        if (IS_PRETTY_PERMALINK_ACTIVATED == false) {
            url = myAjax.non_pretty_permalink_url;
        }
        url += action;
        return {url:url, data:_data};
    }
	function _downloadFile(action, myData, filenameToStore, cbf, ecbf, pcbf) {
        let call_data = _getURLAndDateForAjax(action, myData, pcbf);
        let params = &quot;&quot;;
        for(let key in call_data.data) {
            params += key+&quot;=&quot;+encodeURIComponent(call_data.data[key])+&quot;&amp;&quot;;
        }
		let url = call_data.url+&#039;?&#039;+params;
		//window.location.href = url;
		ajax_downloadFile(url, filenameToStore, cbf);
	}
    function ajax_downloadFile(urlToSend, fileName, cbf) {
		var req = new XMLHttpRequest();
		req.open(&quot;GET&quot;, urlToSend, true);
		req.responseType = &quot;blob&quot;;
		req.onload = function (event) {
			var blob = req.response;
			//var fileName = req.getResponseHeader(&quot;X-fileName&quot;) //if you have the fileName header available
			var link=document.createElement(&#039;a&#039;);
			link.href=window.URL.createObjectURL(blob);
			link.download=fileName;
			link.click();
			cbf &amp;&amp; cbf();
		};

		req.send();
	}
    function _makeGet(action, myData, cbf, ecbf, pcbf) {
        let call_data = _getURLAndDateForAjax(action, myData, pcbf);
        //console.log(call_data);
        $.get( call_data.url, call_data.data, response=&gt;{
            if (typeof response == &quot;string&quot;) {
				response = JSON.parse(response);
			}
            if (response &amp;&amp; response.data &amp;&amp; response.data.nonce) {
                system.last_nonce_check = new Date().getTime();
                system.nonce = response.data.nonce;
            }
            if (!response.success) {
                if (ecbf) ecbf(response);
                else {
                    let msg = (typeof response.data !== &quot;undefined&quot; &amp;&amp; response.data.status ? response.data.status : &#039;&#039;) + &quot; &quot; + (response.data.message ? response.data.message : &#039;&#039;);
                    renderFatalError(msg.trim());
                }
            } else {
                cbf &amp;&amp; cbf(response.data);
            }
        }, &quot;json&quot;).always(jqXHR=&gt;{
            if(jqXHR.status == 401 || jqXHR.status == 403) {
                renderFatalError(__(&quot;Access rights missing. Please login first.&quot;, &#039;event-tickets-with-ticket-scanner&#039;) + &quot; &quot;+(jqXHR.responseJSON &amp;&amp; jqXHR.responseJSON.message ? jqXHR.responseJSON.message : &#039;&#039;) );
            }
            if(jqXHR.status == 400) {
                renderFatalError(jqXHR.responseJSON.message);
            }
        });
    }
    function _makePost(action, myData, cbf, ecbf, pcbf) {
        let call_data = _getURLAndDateForAjax(action, myData, pcbf);
        $.post( call_data.url, call_data.data, response=&gt;{
            if (typeof response == &quot;string&quot;) {
				response = JSON.parse(response);
			}
            if (response &amp;&amp; response.data &amp;&amp; response.data.nonce) {
                system.last_nonce_check = new Date().getTime();
                system.nonce = response.data.nonce;
            }
            if (!response.success) {
                if (ecbf) ecbf(response);
                else {
                    let msg = (response.data.status ? response.data.status : &#039;&#039;) + &quot; &quot; + (response.data.message ? response.data.message : &#039;&#039;);
                    renderFatalError(msg.trim());
                }
            } else {
                cbf &amp;&amp; cbf(response.data);
            }
        }, &quot;json&quot;).always(jqXHR=&gt;{
            if(jqXHR.status == 401 || jqXHR.status == 403) {
                renderFatalError(__(&quot;Access rights missing. Please login first.&quot;, &#039;event-tickets-with-ticket-scanner&#039;) + &quot; &quot; + (jqXHR.responseJSON &amp;&amp; jqXHR.responseJSON.message ? jqXHR.responseJSON.message : &#039;&#039;) );
            }
            if(jqXHR.status == 400) {
                renderFatalError(jqXHR.responseJSON.message);
            }
        });
    }
    function _getSpinnerHTML() {
        return &#039;&lt;span class=&quot;lds-dual-ring&quot;&gt;&lt;/span&gt;&#039;;
    }
    function _getSeatInfoHtml(obj) {
        if (!obj.seat_label || obj.seat_label == &quot;&quot;) {
            return &#039;&#039;;
        }
        let seatText = &#039;&#039;;
        if (obj.seat_label_text &amp;&amp; obj.seat_label_text != &#039;&#039;) {
            seatText = obj.seat_label_text + &quot;: &quot;;
        }
        seatText += &quot;&lt;b&gt;&quot; + obj.seat_label;
        if (obj.seat_category &amp;&amp; obj.seat_category != &quot;&quot;) {
            seatText += &quot; (&quot; + obj.seat_category + &quot;)&quot;;
        }
        seatText += &quot;&lt;/b&gt;&quot;;
        if (obj.seating_plan_name &amp;&amp; obj.seating_plan_name != &quot;&quot;) {
            seatText += &quot; - &quot; + obj.seating_plan_name;
        }
        if (obj.seat_desc &amp;&amp; obj.seat_desc != &quot;&quot;) {
            seatText += &quot;&lt;br&gt;&lt;small&gt;&quot; + obj.seat_desc + &quot;&lt;/small&gt;&quot;;
        }
        return seatText;
    }
    function makeDateFromString(timestring, timezone_id) {
        let d = new Date(timestring);
        return new Date(d.toLocaleString(&#039;en&#039;, {timeZone: timezone_id}));
    }
    function makeDate(timestamp, timezone_id) {
        let d = new Date();
        d.setTime(timestamp);
        return new Date(d.toLocaleString(&#039;en&#039;, {timeZone: timezone_id}));
    }
    function time(timezone_id, timestamp) {
        let d = new Date();
        if (timestamp) {
            d.setTime(timestamp);
        }
        if (timezone_id &amp;&amp; timezone_id.indexOf(&quot;/&quot;) &gt; 0) {
            d = new Date(d.toLocaleString(&#039;en&#039;, {timeZone: timezone_id}));
        }
        return parseInt(d.getTime() / 1000);
    }
	function parseDate(str){
		if (!str) return null;
		return new Date(str.split(&#039; &#039;)[0].replace(/-/g,&quot;/&quot;));
	}
	function parseDateAndText(str, format) {
		return Date2Text(parseDate(str).getTime(), format);
	}
	function DateTime2Text(millisek) {
		return Date2Text(millisek, system.format_datetime ? system.format_datetime : &quot;d.m.Y H:i&quot;);
	}
	function Date2Text(millisek, format, timezone_id) {
		if (!millisek)
			millisek = time(timezone_id) * 1000;
		var d = new Date(millisek);
		if (!format)
			//format = system.format_date ? system.format_date : &quot;%d.%m.%Y&quot;;
            format = system.format_date ? system.format_date : &quot;d.m.Y&quot;;
			//format = &quot;%d.%m.%Y %H:%i&quot;;
		var tage = [
            _x(&#039;Sun&#039;, &#039;cal&#039;, &#039;event-tickets-with-ticket-scanner&#039;),
            _x(&#039;Mon&#039;, &#039;cal&#039;, &#039;event-tickets-with-ticket-scanner&#039;),
            _x(&#039;Tue&#039;, &#039;cal&#039;, &#039;event-tickets-with-ticket-scanner&#039;),
            _x(&#039;Wed&#039;, &#039;cal&#039;, &#039;event-tickets-with-ticket-scanner&#039;),
            _x(&#039;Thu&#039;, &#039;cal&#039;, &#039;event-tickets-with-ticket-scanner&#039;),
            _x(&#039;Fri&#039;, &#039;cal&#039;, &#039;event-tickets-with-ticket-scanner&#039;),
            _x(&#039;Sat&#039;, &#039;cal&#039;, &#039;event-tickets-with-ticket-scanner&#039;)
        ];
		var monate = [
            _x(&#039;Jan&#039;, &#039;cal&#039;, &#039;event-tickets-with-ticket-scanner&#039;),
            _x(&#039;Feb&#039;, &#039;cal&#039;, &#039;event-tickets-with-ticket-scanner&#039;),
            _x(&#039;Mar&#039;, &#039;cal&#039;, &#039;event-tickets-with-ticket-scanner&#039;),
            _x(&#039;Apr&#039;, &#039;cal&#039;, &#039;event-tickets-with-ticket-scanner&#039;),
            _x(&#039;May&#039;, &#039;cal&#039;, &#039;event-tickets-with-ticket-scanner&#039;),
            _x(&#039;Jun&#039;, &#039;cal&#039;, &#039;event-tickets-with-ticket-scanner&#039;),
            _x(&#039;Jul&#039;, &#039;cal&#039;, &#039;event-tickets-with-ticket-scanner&#039;),
            _x(&#039;Aug&#039;, &#039;cal&#039;, &#039;event-tickets-with-ticket-scanner&#039;),
            _x(&#039;Sep&#039;, &#039;cal&#039;, &#039;event-tickets-with-ticket-scanner&#039;),
            _x(&#039;Oct&#039;, &#039;cal&#039;, &#039;event-tickets-with-ticket-scanner&#039;),
            _x(&#039;Nov&#039;, &#039;cal&#039;, &#039;event-tickets-with-ticket-scanner&#039;),
            _x(&#039;Dec&#039;, &#039;cal&#039;, &#039;event-tickets-with-ticket-scanner&#039;)
        ];
		var formate = {&#039;d&#039;:d.getDate()&lt;10?&#039;0&#039;+d.getDate():d.getDate(),
				&#039;j&#039;:d.getDate(),&#039;D&#039;:tage[d.getDay()],&#039;w&#039;:d.getDate(),&#039;m&#039;:d.getMonth()+1&lt;10?&#039;0&#039;+(d.getMonth()+1):d.getMonth()+1,&#039;M&#039;:monate[d.getMonth()],
				&#039;n&#039;:d.getMonth()+1,&#039;Y&#039;:d.getFullYear(),&#039;y&#039;:d.getYear()&gt;100?d.getYear().toString().substring(d.getYear().toString().length-2):d.getYear(),
				&#039;H&#039;:d.getHours()&lt;10?&#039;0&#039;+d.getHours():d.getHours(),&#039;h&#039;:d.getHours()&gt;12?d.getHours()-12:d.getHours(),
				&#039;i&#039;:d.getMinutes()&lt;10?&#039;0&#039;+d.getMinutes():d.getMinutes(),&#039;s&#039;:d.getSeconds()&lt;10?&#039;0&#039;+d.getSeconds():d.getSeconds()
				};
        for (var akey in formate) {
            //var rg = new RegExp(&#039;%&#039;+akey, &quot;g&quot;);
            var rg = new RegExp(akey, &quot;g&quot;);
            format = format.replace(rg, formate[akey]);
        }
		return format;
	}
    function renderInfoBox(title, content, cbf) {
        let _options = {
            title: title,
            modal: true,
            minWidth: 400,
            minHeight: 200,
            buttons: [{text:_x(&#039;Ok&#039;, &#039;label&#039;, &#039;event-tickets-with-ticket-scanner&#039;), click:function(){
                $(this).dialog(&quot;close&quot;);
                $(this).html(&quot;&quot;);
                clearAreas();
                $(&#039;#ticket_info&#039;).html(content);
                $(&#039;#reader&#039;).html(&quot;&quot;);
                if (cbf) cbf();
            }}]
        };
        if (typeof content !== &quot;string&quot;) content = JSON.stringify(content);
        let dlg = $(&#039;&lt;div/&gt;&#039;).html(content);
        dlg.dialog(_options);
        return dlg;
    }
    function renderFatalError(content, cbf) {
        return renderInfoBox(&#039;Error&#039;, content, cbf);
    }
    function basics_ermittelURLParameter() {
        var parawerte = {};
        var teile;
        if (window.location.search !== &quot;&quot;) {
            teile = window.location.search.substring(1).split(&quot;&amp;&quot;);
            for (var a=0;a&lt;teile.length;a++)
            {
                var pos = teile[a].indexOf(&quot;=&quot;);
                if (pos &lt; 0) {
                    parawerte[teile[a]] = true;
                } else {
                    var key = teile[a].substring(0,pos);
                    parawerte[key] = decodeURIComponent(teile[a].substring(pos+1));
                }
            }
        }
        return parawerte;
    }
    function speakOutLoud(v, display) {
		if (&#039;speechSynthesis&#039; in window) {
			var t = typeof v === &#039;object&#039; ? &#039;Value is an object.&#039; : v;
			if (t.trim() == &quot;&quot;) t = &#039;Value is empty&#039;;
			var msg = new SpeechSynthesisUtterance(t);
			msg.lang = &quot;en-US&quot;;
			window.speechSynthesis.speak(msg);
			if (display) console.log(&quot;Speak:&quot;, v);
		} else {
			console.log(v);
		}
	}
    function clearOrderInfos() {
        $(&#039;#order_info&#039;).html(&quot;&quot;);
    }
    function clearAreas() {
        $(&#039;#ticket_info_btns&#039;).html(&#039;&#039;);
        $(&#039;#ticket_add_info&#039;).html(&#039;&#039;);
        $(&#039;#ticket_info&#039;).html(&#039;&#039;);
        updateTicketScannerInfoArea(&#039;&#039;);
        $(&#039;#ticket_info_retrieved&#039;).html(&#039;&#039;);
    }
    function retrieveTicket(code, redeemed, cbf) {
        clearAreas();
        window.scrollBy(0,0);
        let div = $(&#039;#ticket_info&#039;).html(_getSpinnerHTML());
        div.css(&quot;display&quot;, &quot;block&quot;);

        // check if the code is URL
        if (code.length &gt; 12) {
            if (code.substring(0,5).toLowerCase() == &quot;https&quot;) {
                if (code.substring(0,8).toLowerCase() == &quot;https://&quot; || (code.length &gt; 14 &amp;&amp; code.substring(0,14).toLowerCase() == &quot;https%3A%2F%2F&quot;)) {
                    // extract code from URL
                    let url = code;
                    let pos = url.lastIndexOf(&quot;code=&quot;);
                    if (pos &gt; 0) {
                        code = url.substring(pos + 5);
                    } else {
                        pos = url.toLowerCase().lastIndexOf(&quot;code%3d&quot;);
                        if (pos &gt; 0) {
                            code = url.substring(pos + 7);
                        }
                    }
                }
            }
        }
        if (code == &quot;&quot;) {
            alert(__(&quot;no code found&quot;, &#039;event-tickets-with-ticket-scanner&#039;));
            showScanNextTicketButton();
            return;
        }

        // check if the code is an order, then transform it to ordertickets
        if (code.startsWith(&quot;order-&quot;)) {
            code = &quot;ordertickets-&quot; + code.substring(6);
        }

        let redeem = ticket_scanner_operating_option.redeem_auto;
        if (redeemed == true) {
            redeem = false; // is already redeemed
        }
        system.last_scanned_ticket.auto_redeem = redeem;
        _makeGet(&#039;retrieve_ticket&#039;, {&#039;code&#039;:code, &#039;redeem&#039;:redeem ? 1 : 0}, data=&gt;{
            if (ticket_scanner_operating_option.distract_free) {
                div.css(&quot;display&quot;, &quot;none&quot;);
            }
            system.status = &quot;retrieved&quot;;
            system.data = data;
            system.last_scanned_ticket.data = data;
            system.code = code; // falls per code überschrieben wurde

            if (typeof data.order_infos !== &quot;undefined&quot; &amp;&amp; data.order_infos.is_order_ticket) {
                system.format_datetime = data.option_displayDateTimeFormat;
                system.format_date = data.option_displayDateFormat;
                system.format_time = data.option_displayTimeFormat;
                displayOrderTicketInfo(data);
                showScanNextTicketButton();
            } else {
                system.format_datetime = data._ret.option_displayDateTimeFormat;
                system.format_date = data._ret.option_displayDateFormat;
                system.format_time = data._ret.option_displayTimeFormat;
                displayTicketInfo(data);
                displayTicketRetrievedInfo(data);
                displayTicketAdditionalInfos(data);

                $(&quot;#reader_output&quot;).html(&quot;&quot;);
                if(!redeemed &amp;&amp; ticket_scanner_operating_option.redeem_auto &amp;&amp; typeof data._ret.redeem_operation !== &quot;undefined&quot;) {
                    // display redeem operation
                    //redeemTicket(code);
                    displayRedeemedInfo(code, data._ret.redeem_operation);
                } else {
                    showScanNextTicketButton();
                }
            }

            cbf &amp;&amp; cbf();
        }, response=&gt;{
            clearAreas();
            $(&quot;#reader_output&quot;).html(&#039;&#039;);
            updateTicketScannerInfoArea(&#039;&lt;h1 style=&quot;color:red !important;&quot;&gt;&#039;+response.data+&#039;&lt;/h3&gt;&#039;);
            showScanNextTicketButton();
            cbf &amp;&amp; cbf();
        });
    }
    function isTicketExpired(ticketRetObject) {
        if (ticketRetObject.is_expired) return true;
        return false;
    }
    function isRedeemTooEarly(data) {
        if (data._ret._options.wcTicketDontAllowRedeemTicketBeforeStart) {
            return data._ret._options.isRedeemOperationTooEarly;
        }
        return false;
    }
    function isRedeemTooLate(data) {
        if (data._ret._options.wsticketDenyRedeemAfterstart) {
           return data._ret._options.isRedeemOperationTooLate;
        }
        return false;
    }
    function isRedeemTooLateEndEvent(data) {
        if (data._ret._options.wcTicketAllowRedeemTicketAfterEnd == false) {
           return data._ret._options.isRedeemOperationTooLateEventEnded;
        }
        return false;
    }

    function canTicketBeRedeemedNow(data) {
        if (isRedeemTooEarly(data)) return false;
        if (isRedeemTooLateEndEvent(data)) return false;
        if (isRedeemTooLate(data)) return false;
        if (isTicketExpired(data._ret)) return false;
        return true;
    }
    function displayTicketRetrievedInfo(data) {
        let div = $(&#039;&lt;div&gt;&#039;).css(&quot;text-align&quot;, &quot;center&quot;);
        let metaObj = data.metaObj
        let is_expired = isTicketExpired(data._ret);
        if (!data._ret.is_paid) {
            $(&#039;&lt;h4 style=&quot;color:red !important;&quot;&gt;&#039;).html(sprintf(/* translators: %s: order status */__(&#039;Ticket is NOT paid (%s).&#039;, &#039;label&#039;, &#039;event-tickets-with-ticket-scanner&#039;),data._ret.order_status)).appendTo(div);
        } else {
            if (is_expired == false &amp;&amp; metaObj[&#039;wc_ticket&#039;][&#039;redeemed_date&#039;] != &quot;&quot;) {
                let color = &quot;red&quot;;
                if (data._ret.max_redeem_amount &gt; 1 &amp;&amp; data.metaObj.wc_ticket.stats_redeemed.length &lt; data._ret.max_redeem_amount) {
                    color = &quot;green&quot;;
                }
                if (data._ret.max_redeem_per_day &gt; 0 &amp;&amp; data._ret.redeems_today &gt;= data._ret.max_redeem_per_day) {
                    color = &quot;red&quot;;
                }
                //if (system.last_scanned_ticket.auto_redeem == false) {
                if (system.redeemed_successfully) {
                    $(&#039;&lt;h4 style=&quot;color:&#039;+color+&#039; !important;&quot;&gt;&#039;).html(data._ret.msg_redeemed).appendTo(div);
                }
                if (metaObj.wc_ticket.redeemed_date != &#039;&#039;) {
                    div.append(data._ret.redeemed_date_label+&#039; &#039;+metaObj[&#039;wc_ticket&#039;][&#039;redeemed_date&#039;]);
                }
            } else {
                if (is_expired) {
                    div.append(&#039;&lt;div style=&quot;color:red;&quot;&gt;&#039;+data._ret.msg_ticket_expired+&#039;&lt;/div&gt;&#039;);
                    div.append(data._ret.ticket_date_as_string);
                } else {
                    if (data._ret.ticket_end_date == &quot;&quot; || data._ret.ticket_end_date_timestamp &gt; time()) {
                        div.append(&#039;&lt;div style=&quot;color:green;&quot;&gt;&#039;+data._ret.msg_ticket_valid+&#039;&lt;/div&gt;&#039;);
                    }
                }
            }

            if (ticket_scanner_operating_option.distract_free) {
                // display ticket title and subtitle
                if (typeof data._ret.ticket_title != &quot;undefined&quot; &amp;&amp; data._ret.ticket_title != &quot;&quot;) {
                    div.append(&#039;&lt;h4&gt;&#039;+data._ret.ticket_title+&#039;&lt;/h4&gt;&#039;);
                }
                if (typeof data._ret.ticket_subtitle != &quot;undefined&quot; &amp;&amp; data._ret.ticket_subtitle != &quot;&quot;) {
                    div.append(&#039;&lt;h5&gt;&#039;+data._ret.ticket_subtitle+&#039;&lt;/h5&gt;&#039;);
                }

                // display short description and ticket_info
                if (ticket_scanner_operating_option.distract_free_show_short_desc &amp;&amp; typeof data._ret.short_desc != &quot;undefined&quot; &amp;&amp; data._ret.short_desc != &quot;&quot;) {
                    div.append(&#039;&lt;div&gt;&#039;+data._ret.short_desc+&#039;&lt;/div&gt;&#039;);
                }
                if (typeof data._ret.ticket_info != &quot;undefined&quot; &amp;&amp; data._ret.ticket_info != &quot;&quot;) {
                    //div.append(&#039;&lt;div&gt;&#039;+data._ret.ticket_info+&#039;&lt;/div&gt;&#039;);
                }
                //console.log(data._ret);
            }
            if (is_expired == false) {
                let _isRedeemTooLate = isRedeemTooLate(data);
                let _isRedeemTooLateEndEvent = isRedeemTooLateEndEvent(data);
                if (!canTicketBeRedeemedNow(data)) {
                    let error_msg = data._ret.msg_ticket_not_valid_yet;
                    if(_isRedeemTooLateEndEvent) {
                        error_msg = data._ret.msg_ticket_event_ended;
                    } else if(_isRedeemTooLate) {
                        error_msg = data._ret.msg_ticket_not_valid_anymore;
                    }
                    div.append(&#039;&lt;div style=&quot;color:red;&quot;&gt;&#039;+error_msg+&#039;&lt;/div&gt;&#039;);
                }
                if (_isRedeemTooLate == false &amp;&amp; _isRedeemTooLateEndEvent == false &amp;&amp; data._ret._options.wcTicketDontAllowRedeemTicketBeforeStart) {
                    if (typeof data._ret.redeem_allowed_from != &quot;undefined&quot; &amp;&amp; typeof data._ret.is_date_set != &quot;undefined&quot; &amp;&amp; data._ret.is_date_set) {
                        //div.append(&quot;&lt;div&gt;Redeem allowed from: &lt;b&gt;&quot;+data._ret.redeem_allowed_from+&quot;&lt;/b&gt;&lt;/div&gt;&quot;);
                        div.append(&#039;&lt;div style=&quot;display: flex;flex-wrap: wrap;flex-direction: column;&quot;&gt;&lt;div&gt;Redeem allowed from: &lt;/div&gt;&lt;div style=&quot;font-weight:bold;&quot;&gt;&#039;+data._ret.redeem_allowed_from+&#039;&lt;/div&gt;&lt;/div&gt;&#039;);
                    }
                }
            }
        }
        $(&#039;#ticket_info_retrieved&#039;).html(div);
    }
    function displayTicketAdditionalInfos(data) {
        let div = $(&#039;&lt;div style=&quot;width:50%;display:inline-block;&quot;&gt;&#039;);
        if (data._ret.is_paid) {
            $(&#039;&lt;div&gt;&#039;).html(&#039;&lt;b&gt;&#039;+__(&#039;Ticket paid&#039;, &#039;event-tickets-with-ticket-scanner&#039;)+&#039;&lt;/b&gt;&#039;).css(&quot;color&quot;, &quot;green&quot;).appendTo(div);
        } else {
            $(&#039;&lt;div&gt;&#039;).html(__(&#039;Ticket NOT paid&#039;, &#039;event-tickets-with-ticket-scanner&#039;)).css(&quot;color&quot;, &quot;red&quot;).appendTo(div);
        }
        // Seat information
        let seatHtml = _getSeatInfoHtml(data._ret);
        if (seatHtml != &#039;&#039;) {
            $(&#039;&lt;div&gt;&#039;).html(seatHtml).appendTo(div);
        }
        if (data.metaObj.wc_ticket.redeemed_date != &quot;&quot;) {
            $(&#039;&lt;div&gt;&#039;).html(__(&#039;Ticket is already redeemed&#039;, &#039;event-tickets-with-ticket-scanner&#039;)).appendTo(div);
        } else {
            $(&#039;&lt;div&gt;&#039;).html(__(&#039;Ticket not redeemed&#039;, &#039;event-tickets-with-ticket-scanner&#039;)).appendTo(div);
        }
        if (data._ret._options.displayConfirmedCounter) {
            $(&#039;&lt;div&gt;&#039;).html(sprintf(/* translators: %s: confirmed check counter */__(&#039;Confirmed status validation check counter: &lt;b&gt;%s&lt;/b&gt;&#039;, &#039;event-tickets-with-ticket-scanner&#039;), data.metaObj.confirmedCount)).appendTo(div);
        }
        $(&#039;&lt;div&gt;&#039;).html(sprintf(/* translators: %s: max redeem amount */__(&#039;Max Redeem Amount for this ticket: &lt;b&gt;%s&lt;/b&gt;&#039;, &#039;event-tickets-with-ticket-scanner&#039;), data._ret.max_redeem_amount)).appendTo(div);
        if(data._ret.max_redeem_amount &gt; 1) {
            $(&#039;&lt;div&gt;&#039;).html(sprintf(/* translators: 1: redeemd tickets 2: max redeem */__(&#039;Redeem usage: &lt;b&gt;%1$d&lt;/b&gt; of &lt;b&gt;%2$d&lt;/b&gt;&#039;, &#039;event-tickets-with-ticket-scanner&#039;), data.metaObj.wc_ticket.stats_redeemed.length, data._ret.max_redeem_amount)).appendTo(div);
        }
        if (data._ret.max_redeem_per_day &gt; 0) {
            $(&#039;&lt;div&gt;&#039;).html(sprintf(/* translators: 1: redeems used today 2: max per day */__(&#039;Redeems today: &lt;b&gt;%1$d&lt;/b&gt; of &lt;b&gt;%2$d&lt;/b&gt;&#039;, &#039;event-tickets-with-ticket-scanner&#039;), data._ret.redeems_today, data._ret.max_redeem_per_day)).appendTo(div);
        }

        let div2 = $(&#039;&lt;div style=&quot;width:50%;display:inline-block;&quot;&gt;&#039;);
        if (data._ret._options.wcTicketDontAllowRedeemTicketBeforeStart &amp;&amp; typeof data._ret.is_date_set != &quot;undefined&quot; &amp;&amp; data._ret.is_date_set) {
            //if (data._ret._options.isRedeemOperationTooEarly) {
                div2.append($(&#039;&lt;div&gt;&#039;).html(sprintf(/* translators: %s: date */__(&#039;Redeemable from %s&#039;, &#039;event-tickets-with-ticket-scanner&#039;), data._ret.redeem_allowed_from)));
            //}
        }
        if (typeof data._ret.redeem_allowed_until != &quot;undefined&quot; &amp;&amp; typeof data._ret.is_date_set != &quot;undefined&quot; &amp;&amp; data._ret.is_date_set) {
            div2.append($(&#039;&lt;div&gt;&#039;).html(sprintf(/* translators: %s: date */__(&#039;Redeemable until %s&#039;, &#039;event-tickets-with-ticket-scanner&#039;), data._ret.redeem_allowed_until)));
        }

        if (data.metaObj.woocommerce.creation_date != &quot;&quot;) {
           div2.append(&#039;&lt;div&gt;&#039;+sprintf(/* translators: %s: date */__(&#039;Bought at %s&#039;, &#039;event-tickets-with-ticket-scanner&#039;), DateTime2Text(new Date(data.metaObj.woocommerce.creation_date).getTime()))+&#039;&lt;/div&gt;&#039;);
        }

        let is_expired = isTicketExpired(data._ret);
        if (typeof data.metaObj.expiration != &quot;undefined&quot;) {
            if (data.metaObj.expiration.date != &quot;&quot;) {
                div2.append(&#039;&lt;div&#039;+(is_expired ? &#039; style=&quot;font-weight:bold;&quot;&#039; : &#039;&#039;)+&#039;&gt;&#039;+sprintf(/* translators: %s: date */__(&#039;Expiration at %s&#039;, &#039;event-tickets-with-ticket-scanner&#039;), DateTime2Text(new Date(data.metaObj.expiration.date).getTime()))+&#039;&lt;/div&gt;&#039;);
            } else {
                let date_expiration_ms = new Date(data.metaObj.woocommerce.creation_date).getTime();
                date_expiration_ms += data.metaObj.expiration.days * 24 * 3600 * 1000;
                let exp_text = data.metaObj.expiration.days &gt; 0 ? sprintf(/* translators: 1: days 2: date */__(&#039;Expires after %1$d days (%2$s)&#039;, &#039;event-tickets-with-ticket-scanner&#039;), data.metaObj.expiration.days, DateTime2Text( date_expiration_ms )) : &#039;&#039;;
                if (exp_text != &quot;&quot;) {
                    div2.append(&#039;&lt;div&gt;&#039;+exp_text+&#039;&lt;/div&gt;&#039;);
                }
            }
        }

        let div3 = $(&#039;&lt;div&gt;&#039;);
        if (typeof data._ret.product !== &quot;undefined&quot;) {
            let product_name = data._ret.product.name + (data._ret.product.name_variant != &quot;&quot; ? &quot; - &quot;+data._ret.product.name_variant : &quot;&quot;);
            div3.css(&quot;margin-top&quot;, &quot;10px&quot;).html(__(&#039;&lt;b&gt;Product information&lt;/b&gt;&#039;, &#039;event-tickets-with-ticket-scanner&#039;))
                .append(&#039;&lt;div&gt;&#039;+sprintf(__(&#039;#%s - %s&#039;, &#039;event-tickets-with-ticket-scanner&#039;), data._ret.product.id, product_name)+&#039;&lt;/div&gt;&#039;);
            if (data._ret.product.sku != &quot;&quot;) {
                div3.append(&#039;&lt;div&gt;&#039;+sprintf(__(&#039;SKU: %s&#039;, &#039;event-tickets-with-ticket-scanner&#039;), data._ret.product.sku)+&#039;&lt;/div&gt;&#039;);
            }
        }
        let content = &quot;&quot;;
        if (ticket_scanner_operating_option.distract_free) {
            content = &#039;&lt;div style=&quot;display:flex;text-align:center;flex-wrap: nowrap;flex-direction: row;justify-content: center;flex-basis: auto;&quot;&gt;&#039;+system.code+&#039;&lt;/div&gt;&#039;;
        }
        $(&#039;#ticket_add_info&#039;).html(content)
            .append( $(&#039;&lt;div style=&quot;padding-top:10px;width:100%;&quot;&gt;&#039;).append(div).append(div2) )
            .append(div3);
    }
    function displayRedeemedInfo(code, data) {
        system.status = &quot;redeemed&quot;;
        system.redeemed_successfully = data.redeem_successfully;
        vibrateOnResult(data.redeem_successfully);
        displayTicketRedeemedInfo(data);
        if(ticket_scanner_operating_option.redeem_auto) {
            showScanNextTicketButton();
        } else {
            //retrieveTicket(code, true);
        }
        system.INPUTFIELD.focus();
        system.INPUTFIELD.select();
    }
    function displayTicketRedeemedInfo(data) {
        let t = &#039;&#039;;
        // zeige retrieved info an
        let content = $(&#039;&lt;div&gt;&#039;).html(&#039;&lt;div style=&quot;display:flex;text-align:center;flex-wrap: nowrap;flex-direction: row;justify-content: center;flex-basis: auto;&quot;&gt;&#039;+system.code+&#039;&lt;/div&gt;&#039;);
        if (system.redeemed_successfully) {
            content.append(&#039;&lt;h3 style=&quot;color:green !important;text-align:center;&quot;&gt;&#039;+__(&#039;Redeemed&#039;, &#039;event-tickets-with-ticket-scanner&#039;)+&#039;&lt;/h3&gt;&#039;);
            //content.append(&#039;&lt;p style=&quot;text-align:center;color:green&quot;&gt;&lt;img src=&quot;&#039;+system.img_pfad+&#039;button_ok.png&quot;&gt;&lt;br&gt;&lt;b&gt;&#039;+__(&#039;Successfully redeemed&#039;, &#039;event-tickets-with-ticket-scanner&#039;)+&#039;&lt;/b&gt;&lt;/p&gt;&#039;);
            content.append(&#039;&lt;p style=&quot;text-align:center;color:green&quot;&gt;&lt;img src=&quot;&#039;+system.img_pfad+&#039;button_ok.png&quot;&gt;&lt;/p&gt;&#039;);
            t = &#039;Redeemed&#039;;
        } else {
            content.append(&#039;&lt;h3 style=&quot;color:red !important;text-align:center;&quot;&gt;&#039;+__(&#039;NOT REDEEMED - see reason below&#039;, &#039;event-tickets-with-ticket-scanner&#039;)+&#039;&lt;/h3&gt;&#039;);
            //content.append(&#039;&lt;p style=&quot;text-align:center;color:red;&quot;&gt;&lt;img src=&quot;&#039;+system.img_pfad+&#039;button_cancel.png&quot;&gt;&lt;br&gt;&lt;b&gt;&#039;+__(&#039;Failed to redeem&#039;, &#039;event-tickets-with-ticket-scanner&#039;)+&#039;&lt;/b&gt;&lt;/p&gt;&#039;);
            content.append(&#039;&lt;p style=&quot;text-align:center;color:red;&quot;&gt;&lt;img src=&quot;&#039;+system.img_pfad+&#039;button_cancel.png&quot;&gt;&lt;/p&gt;&#039;);
            t = &#039;Not redeemed&#039;;
        }
        if (typeof system.last_scanned_ticket.data != null &amp;&amp; system.last_scanned_ticket.data._ret &amp;&amp; system.last_scanned_ticket.data._ret.ticket_title &amp;&amp; system.last_scanned_ticket.data._ret.ticket_title != &quot;&quot;) {
            content.append(&#039;&lt;h4 style=&quot;text-align:center;&quot;&gt;&#039;+system.last_scanned_ticket.data._ret.ticket_title+&#039;&lt;/h4&gt;&#039;);
        }
        if (typeof system.last_scanned_ticket.data._ret.ticket_subtitle != &quot;undefined&quot; &amp;&amp; system.last_scanned_ticket.data._ret &amp;&amp; system.last_scanned_ticket.data._ret.ticket_subtitle &amp;&amp; system.last_scanned_ticket.data._ret.ticket_subtitle != &quot;&quot;) {
            content.append(&#039;&lt;h5 style=&quot;text-align:center;&quot;&gt;&#039;+system.last_scanned_ticket.data._ret.ticket_subtitle+&#039;&lt;/h5&gt;&#039;);
        }
        if (ticket_scanner_operating_option.distract_free_show_short_desc &amp;&amp; typeof system.last_scanned_ticket.data._ret.short_desc != &quot;undefined&quot; &amp;&amp; system.last_scanned_ticket.data._ret.short_desc != &quot;&quot;) {
            content.append(&#039;&lt;div&gt;&#039;+system.last_scanned_ticket.data._ret.short_desc+&#039;&lt;/div&gt;&#039;);
        }

        if (typeof system.last_scanned_ticket.data != null &amp;&amp; system.last_scanned_ticket.data.metaObj &amp;&amp; system.last_scanned_ticket.data.metaObj.wc_ticket &amp;&amp; system.last_scanned_ticket.data.metaObj.wc_ticket.redeemed_date &amp;&amp; system.last_scanned_ticket.data.metaObj.wc_ticket.redeemed_date != &quot;&quot;) {
            content.append(&#039;&lt;div style=&quot;text-align:center;&quot;&gt;&#039;+system.last_scanned_ticket.data._ret.redeemed_date_label+&#039; &#039;+system.last_scanned_ticket.data.metaObj.wc_ticket.redeemed_date+&#039;&lt;/div&gt;&#039;);
        }
        speakText(t, &#039;en-EN&#039;);
        showScanNextTicketButton();
        updateTicketScannerInfoArea(content);
    }
    function displayRedeemedOrderInfo(code, data) {
        vibrateOnResult(data.errors.length === 0);
        let content = $(&#039;&lt;div&gt;&#039;);
        content.html(&#039;&lt;center&gt;&#039;+code+&#039;&lt;/center&gt;&#039;);
        if (data.errors.length &gt; 0) {
            content.append(&#039;&lt;h3 style=&quot;color:red !important;text-align:center;&quot;&gt;&#039;+__(&#039;ERRORS - see reason below&#039;, &#039;event-tickets-with-ticket-scanner&#039;)+&#039;&lt;/h3&gt;&#039;);
        } else if (data.not_redeemed.length) { // is not implemented yet
            content.append(&#039;&lt;h3 style=&quot;color:orange !important;text-align:center;&quot;&gt;&#039;+__(&#039;NOT REDEEMED - see reason below&#039;, &#039;event-tickets-with-ticket-scanner&#039;)+&#039;&lt;/h3&gt;&#039;);
        } else {
            content.append(&#039;&lt;h3 style=&quot;color:green !important;text-align:center;&quot;&gt;&#039;+__(&#039;Order Redeemed&#039;, &#039;event-tickets-with-ticket-scanner&#039;)+&#039;&lt;/h3&gt;&#039;);
        }
        updateTicketScannerInfoArea(content);

        system.INPUTFIELD.focus();
        system.INPUTFIELD.select();
    }
    function redeemTicket(code) {
        clearAreas();
        system.redeemed_successfully = false;
        $(&quot;#reader_output&quot;).html(__(&quot;start redeem ticket...loading...&quot;));
        updateTicketScannerInfoArea(_getSpinnerHTML());
        _makeGet(&#039;redeem_ticket&#039;, {&#039;code&#039;:code}, data=&gt;{
            system.data = data;
            $(&quot;#reader_output&quot;).html(&#039;&#039;);

            if (typeof data.is_order_ticket !== &quot;undefined&quot; &amp;&amp; data.is_order_ticket) {
                // update li
                data.errors.forEach(item=&gt;{
                    let elems = $(&#039;#order_info&#039;).find(&#039;li[data-id=&quot;&#039;+encodeURIComponent(item.code)+&#039;&quot;]&#039;);
                    elems.css(&quot;padding&quot;, &quot;5px&quot;);
                    elems.css(&quot;margin-bottom&quot;, &quot;5px&quot;);
                    elems.css(&quot;background-color&quot;, &quot;red&quot;);
                    //elems.css(&quot;color&quot;, &quot;white&quot;);
                    elems.append(&quot;&lt;br&gt;&quot;+item.error);
                });
                data.not_redeemed.forEach(item=&gt;{
                    let elems = $(&#039;#order_info&#039;).find(&#039;li[data-id=&quot;&#039;+encodeURIComponent(item.code)+&#039;&quot;]&#039;);
                    elems.css(&quot;padding&quot;, &quot;5px&quot;);
                    elems.css(&quot;margin-bottom&quot;, &quot;5px&quot;);
                    elems.css(&quot;background-color&quot;, &quot;orange&quot;);
                    elems.css(&quot;color&quot;, &quot;black&quot;);
                    elems.append(&quot;&lt;br&gt;Not redeemed&quot;);
                });
                data.redeemed.forEach(item=&gt;{
                    let info = item._ret.tickets_redeemed_show ? &quot;&lt;br&gt;Redeemed: &quot;+item._ret.tickets_redeemed:&#039;&#039;;
                    let elems = $(&#039;#order_info&#039;).find(&#039;li[data-id=&quot;&#039;+encodeURIComponent(item.code)+&#039;&quot;]&#039;);
                    elems.css(&quot;padding&quot;, &quot;5px&quot;);
                    elems.css(&quot;margin-bottom&quot;, &quot;5px&quot;);
                    elems.css(&quot;background-color&quot;, &quot;green&quot;);
                    //elems.css(&quot;color&quot;, &quot;white&quot;);
                    elems.append(info);
                });
                displayRedeemedOrderInfo(code, data);
            } else {
                displayRedeemedInfo(code, data);
                $(&#039;#ticket_info_btns&#039;).append(displayRedeemedTicketsInfo(data));
            }

        }, response=&gt;{
            clearAreas();
            $(&quot;#reader_output&quot;).html(&#039;&#039;);
            updateTicketScannerInfoArea(&#039;&lt;h1 style=&quot;color:red !important;&quot;&gt;&#039;+response.data+&#039;&lt;/h3&gt;&#039;);

            showScanNextTicketButton();

            system.INPUTFIELD.focus();
            system.INPUTFIELD.select();
        });
    }
    function displayOrderTicketInfo(data) {
        let div = $(&#039;&lt;div&gt;&#039;).css(&#039;padding&#039;, &#039;10px&#039;);

        div.html(&#039;&lt;h3 style=&quot;text-align:center;color:black !important;&quot;&gt;&#039;+_x(&quot;Order Ticket&quot;, &#039;label&#039;, &#039;event-tickets-with-ticket-scanner&#039;)+&#039;&lt;/h3&gt;&#039;);
        div.append($(&#039;&lt;div style=&quot;text-align:center;&quot;&gt;&#039;).html(data.order_infos.code));
        div.append(&quot;&lt;b&gt;&quot;+_x(&quot;Includes&quot;, &#039;label&#039;, &#039;event-tickets-with-ticket-scanner&#039;)+&quot;: &lt;/b&gt;&quot;+sprintf(__(&#039;%s Products, %s Tickets&#039;, &#039;event-tickets-with-ticket-scanner&#039;), data.order_infos.products.length, data.ticket_infos.length)+&#039;&lt;br&gt;&#039;);
        div.append(&#039;&lt;b&gt;&#039;+_x(&quot;Order ID&quot;, &#039;label&#039;, &#039;event-tickets-with-ticket-scanner&#039;)+&#039;: &lt;/b&gt;#&#039;+data.order_infos.id+&#039;&lt;br&gt;&#039;);
        div.append(&#039;&lt;b&gt;&#039;+_x(&quot;Created&quot;, &#039;label&#039;, &#039;event-tickets-with-ticket-scanner&#039;)+&#039;: &lt;/b&gt;&#039;+data.order_infos.date_created+&#039;&lt;br&gt;&#039;);
        div.append(&#039;&lt;b&gt;&#039;+_x(&quot;Completed&quot;, &#039;label&#039;, &#039;event-tickets-with-ticket-scanner&#039;)+&#039;: &lt;/b&gt;&#039;+data.order_infos.date_completed+&#039;&lt;br&gt;&#039;);
        div.append(&#039;&lt;b&gt;&#039;+_x(&quot;Paid&quot;, &#039;label&#039;, &#039;event-tickets-with-ticket-scanner&#039;)+&#039;: &lt;/b&gt;&#039;+data.order_infos.date_paid+&#039;&lt;br&gt;&#039;);
        div.append($(&#039;&lt;button class=&quot;button-ticket-options button-primary&quot;&gt;&#039;).html(_x(&quot;Redeem Complete Order&quot;, &#039;label&#039;, &#039;event-tickets-with-ticket-scanner&#039;)).on(&quot;click&quot;, e=&gt;{
            redeemTicket(data.order_infos.code);
        }));
        let div_tickets = $(&#039;&lt;div style=&quot;padding-top:15px;text-align:left;&quot;&gt;&#039;);
        for (let pidx=0;pidx&lt;data.order_infos.products.length;pidx++) {
            let product = data.order_infos.products[pidx];
            div_tickets.append(&quot;&lt;b&gt;&quot;+product.product_name
                +(product.product_name_variant != &quot;&quot; ? &quot; - &quot;
                +product.product_name_variant : &quot;&quot;)
                +&#039;&lt;/b&gt;&#039;);
            let ol = $(&#039;&lt;ol style=&quot;padding-top:5px;&quot;&gt;&#039;);
            for (let idx=0;idx&lt;data.ticket_infos.length;idx++) {
                let item = data.ticket_infos[idx];
                if (item.product_id == product.product_id &amp;&amp; item.product_parent_id == product.product_parent_id) {
                    let li = $(&#039;&lt;li data-id=&quot;&#039;+encodeURIComponent(item.code_display)+&#039;&quot; style=&quot;padding-bottom:10px;&quot;&gt;&#039;);
                    let extra_content = item.code_display+&#039;&lt;br&gt;&#039;;
                    if (item.name_per_ticket != &quot;&quot; || item.value_per_ticket != &quot;&quot;) {
                        extra_content += item.name_per_ticket+&quot; &quot;+item.value_per_ticket;
                    } else {
                        extra_content += &quot;No name or value on ticket set&quot;;
                    }
                    // Seat information
                    let itemSeatHtml = _getSeatInfoHtml(item);
                    if (itemSeatHtml != &#039;&#039;) {
                        extra_content += &quot;&lt;br&gt;&quot; + itemSeatHtml;
                    }
                    if (item.location) {
                        extra_content += &quot;&lt;br&gt;&quot;+item.location;
                    }
                    if (item.ticket_date) {
                        extra_content += &quot;&lt;br&gt;&quot;+item.ticket_date;
                    }
                    li.append(extra_content+&#039;&lt;br&gt;&#039;)
                        .append($(&#039;&lt;button style=&quot;color:white;border-color:#008CBA;background-color:#008CBA;&quot;&gt;&#039;).html(&quot;Retrieve ticket&quot;).on(&quot;click&quot;, e=&gt;{
                            retrieveTicket(item.code_public, true); // do not redeem automatically
                        }))
                        .append($(&#039;&lt;button style=&quot;color:white;border-color:red;background-color:red;&quot;&gt;&#039;).html(&quot;Redeem ticket&quot;).on(&quot;click&quot;, e=&gt;{
                            redeemTicket(item.code_public);
                        }))
                        .appendTo(ol);
                }
            }
            ol.appendTo(div_tickets);
        }
        div_tickets.appendTo(div);

        div_order_info_area = $(&#039;#order_info&#039;).html(div);
    }
    function displayTicketInfo(data) {
        let codeObj = data;
        let metaObj = data.metaObj;
        let ret = data._ret;
        let div = $(&#039;&lt;div&gt;&#039;).css(&#039;padding&#039;, &#039;10px&#039;);
        let border_color = &#039;green&#039;;
        if (isTicketExpired(data._ret)) {
            border_color = &#039;orange&#039;;
        }
        if (metaObj[&#039;wc_ticket&#039;][&#039;redeemed_date&#039;] != &quot;&quot;) {
            border_color = &#039;red&#039;;
        }
        div.css(&quot;border&quot;, &quot;1px solid &quot;+border_color);

        $(&#039;&lt;h3 style=&quot;color:black !important;text-align:center;&quot;&gt;&#039;).html(ret.ticket_heading).appendTo(div);
        $(&#039;&lt;h4 style=&quot;color:black !important;margin-bottom:0;&quot;&gt;&#039;).html(ret.ticket_title).appendTo(div);
        /* // ?? is the same like ret.ticiet_sub_title
        if (data._ret.product.name_variant != &quot;&quot;) {
            $(&#039;&lt;h5 style=&quot;color:black !important;margin-top:0;padding-top:0;&quot;&gt;&#039;).html(data._ret.product.name_variant).appendTo(div);
        }
        */
        if (ret.ticket_sub_title != &quot;&quot;) {
            $(&#039;&lt;h5 style=&quot;color:black !important;margin-top:0;padding-top:0;&quot;&gt;&#039;).html(ret.ticket_sub_title).appendTo(div);
        }
        $(&#039;&lt;p&gt;&#039;).html(ret.ticket_date_as_string).appendTo(div);
        if (ret.ticket_location != &quot;&quot;) {
            $(&#039;&lt;p&gt;&#039;).html(ret.ticket_location_label+&#039; &#039;+ret.ticket_location).appendTo(div);
        }
        // Seat information - display prominently after location
        let seatHtml = _getSeatInfoHtml(ret);
        if (seatHtml != &#039;&#039;) {
            $(&#039;&lt;p&gt;&#039;).html(seatHtml).appendTo(div);
        }
        if (ret.short_desc != &quot;&quot;) {
            div.append(ret.short_desc).append(&#039;&lt;br&gt;&#039;);
        }
        if (ret.ticket_info != &quot;&quot;) {
            $(&#039;&lt;p&gt;&#039;).html(ret.ticket_info).appendTo(div);
        }
        if (ret.cst_label != &quot;&quot;) {
            $(&#039;&lt;p&gt;&#039;).html(&#039;&lt;b&gt;&#039;+ret.cst_label+&#039;&lt;/b&gt;&lt;br&gt;&#039;+ret.cst_billing_address+&#039;&lt;br&gt;&#039;).appendTo(div);
        }
        if (ret.payment_label != &quot;&quot;) {
            let date_order_paid = ret.payment_paid_at;
            let date_order_complete = null;
            if (ret.payment_completed_at !== &quot;undefined&quot;) {
                date_order_complete = ret.payment_completed_at;
            }
            let p = $(&#039;&lt;p&gt;&#039;).appendTo(div);
            p.append(&#039;&lt;b&gt;&#039;+ret.payment_label+&#039;&lt;/b&gt;&lt;br&gt;&#039;);
            p.append(&quot;Order status: &quot;+ret.order_status+&quot;&lt;br&gt;&quot;);
            p.append(ret.payment_paid_at_label+&#039; &#039;);
            p.append(&#039;&lt;b&gt;&#039;+date_order_paid+&#039;&lt;/b&gt;&lt;br&gt;&#039;);
            if (date_order_complete != null) {
                p.append(ret.payment_completed_at_label+&#039; &#039;);
                p.append(&#039;&lt;b&gt;&#039;+date_order_complete+&#039;&lt;/b&gt;&lt;br&gt;&#039;);
            }
            p.append(ret.payment_method_label);
            if (ret.payment_method != &quot;&quot;) {
                p.append(&#039; &#039;+ret.payment_method+&#039; &#039;+ret.payment_trx_id);
            }
            p.append(&#039;&lt;br&gt;&#039;);
            if (ret.coupon != &quot;&quot;) {
                p.append(ret.coupon_label+&#039; &lt;b&gt;&#039;+ret.coupon+&#039;&lt;/b&gt;&lt;br&gt;&#039;);
            }
        }
        if (metaObj.wc_ticket.name_per_ticket != &quot;&quot;) {
            $(&#039;&lt;p&gt;&#039;).html(ret.name_per_ticket_label + &quot; &quot; +metaObj.wc_ticket.name_per_ticket).appendTo(div);
        }
        if (metaObj.wc_ticket.value_per_ticket != &quot;&quot;) {
            $(&#039;&lt;p&gt;&#039;).html(ret.value_per_ticket_label + &quot; &quot; +metaObj.wc_ticket.value_per_ticket).appendTo(div);
        }
        if (ret.ticket_amount_label != &quot;&quot;) {
            $(&#039;&lt;p&gt;&#039;).html(ret.ticket_amount_label).appendTo(div);
        }
        let p = $(&#039;&lt;p&gt;&#039;).html(ret.ticket_label+&#039; &lt;b&gt;&#039;+codeObj[&#039;code_display&#039;]+&#039;&lt;/b&gt;&lt;br&gt;&#039;).appendTo(div);
        p.append(ret.paid_price_label+&#039; &lt;b&gt;&#039;+ret.paid_price_as_string+&#039;&lt;/b&gt;&#039;);
        if (ret.product_price != ret.paid_price) {
            p.append(&#039; &lt;b&gt;(&#039;+ret.product_price_label+&#039; &#039;+ret.product_price_as_string+&#039;)&lt;/b&gt;&#039;);
        }
        $(&#039;&lt;p style=&quot;text-align:center;&quot;&gt;&#039;).html(system.code).appendTo(div);

        div_ticket_info_area = $(&#039;#ticket_info&#039;).html(div);
        displayTicketInfoButtons(data);
    }
    function canTicketBeRedeemed(data) {
        let allow_redeem = false;
        if (data._ret.allow_redeem_only_paid) {
            if (data._ret.is_paid) {
                allow_redeem = true;
            }
        } else {
            allow_redeem = true;
        }
        if (allow_redeem) {
            if (data.metaObj[&#039;wc_ticket&#039;][&#039;redeemed_date&#039;] != &quot;&quot;) {
                allow_redeem = false;
            }
            if (data._ret.max_redeem_amount &gt; 1 &amp;&amp; data.metaObj.wc_ticket.stats_redeemed.length &lt; data._ret.max_redeem_amount) {
                allow_redeem = true;
            }
            if (data._ret.max_redeem_per_day &gt; 0 &amp;&amp; data._ret.redeems_today &gt;= data._ret.max_redeem_per_day) {
                allow_redeem = false;
            }
            if (allow_redeem) {
                allow_redeem = canTicketBeRedeemedNow(data);
            }
        }
        return allow_redeem;
    }
    function displayTicketInfoButtons(data) {
        let div = $(&#039;&lt;div&gt;&#039;).css(&#039;text-align&#039;, &#039;center&#039;);
        if (!data._ret.is_paid) {
            $(&#039;&lt;h4 style=&quot;color:red !important;&quot;&gt;&#039;).html(sprintf(/* translators: %s: order status */__(&#039;Ticket is NOT paid (%s).&#039;, &#039;event-tickets-with-ticket-scanner&#039;), data._ret.order_status)).appendTo(div);
        }
        $(&#039;&lt;button class=&quot;button-ticket-options&quot;&gt;&#039;).html(_x(&#039;Reload&#039;, &#039;label&#039;, &#039;event-tickets-with-ticket-scanner&#039;)).appendTo(div).on(&#039;click&#039;, e=&gt;{
            retrieveTicket(system.code, true);
        });
        let btn_redeem = $(&#039;&lt;button class=&quot;button-ticket-options&quot;&gt;&#039;).html(_x(&#039;Redeem Ticket&#039;, &#039;label&#039;, &#039;event-tickets-with-ticket-scanner&#039;)).css(&quot;background-color&quot;, &#039;gray&#039;).css(&#039;color&#039;, &#039;white&#039;).prop(&quot;disabled&quot;, true).appendTo(div).on(&#039;click&#039;, e=&gt;{
            redeemTicket(system.code);
        });
        if (ticket_scanner_operating_option.ticketScannerDontShowBtnPDF == false) {
            $(&#039;&lt;button class=&quot;button-ticket-options&quot;&gt;&#039;).html(_x(&#039;PDF&#039;, &#039;label&#039;, &#039;event-tickets-with-ticket-scanner&#039;)).appendTo(div).on(&#039;click&#039;, e=&gt;{
                window.open(data.metaObj[&#039;wc_ticket&#039;][&#039;_url&#039;]+&#039;?pdf&#039;, &#039;_blank&#039;);
            });
        }
        if (ticket_scanner_operating_option.ticketScannerDontShowBtnBadge == false) {
            $(&#039;&lt;button class=&quot;button-ticket-options&quot;&gt;&#039;).html(_x(&#039;Badge&#039;, &#039;label&#039;, &#039;event-tickets-with-ticket-scanner&#039;)).appendTo(div).on(&#039;click&#039;, e=&gt;{
                _downloadFile(&#039;downloadPDFTicketBadge&#039;, {&#039;code&#039;:data.code}, &quot;eventticket_badge_&quot;+data.code+&quot;.pdf&quot;);
                return false;
            });
        }
        // Venue Image button - show if venue image exists (for all plan types)
        if (data._ret.seating_plan_show_venue_button &amp;&amp; data._ret.seat_id &gt; 0) {
            $(&#039;&lt;button class=&quot;button-ticket-options btn-venue-image&quot;&gt;&#039;).html(_x(&#039;Venue Image&#039;, &#039;label&#039;, &#039;event-tickets-with-ticket-scanner&#039;)).appendTo(div).on(&#039;click&#039;, e=&gt;{
                showVenueImageModal(data);
                return false;
            });
        }
        // Visual Seating Plan button - show only for visual plans (lazy loaded)
        if (data._ret.seating_plan_show_visual_button &amp;&amp; data._ret.seat_id &gt; 0) {
            $(&#039;&lt;button class=&quot;button-ticket-options btn-seating-plan&quot;&gt;&#039;).html(_x(&#039;Seating Plan&#039;, &#039;label&#039;, &#039;event-tickets-with-ticket-scanner&#039;)).appendTo(div).on(&#039;click&#039;, e=&gt;{
                loadAndShowSeatingPlan(data._ret.seating_plan_id, data._ret.seat_id, data._ret);
                return false;
            });
        }

        if (canTicketBeRedeemed(data)) {
            btn_redeem.prop(&quot;disabled&quot;, false).css(&#039;background-color&#039;,&#039;green&#039;);
        }

        div.append(displayRedeemedTicketsInfo(data));
        div.append(displayTimezoneInformation(data));
        $(&#039;#ticket_info_btns&#039;).html(div);
    }
    // Helper: escape HTML
    function escapeHtml(text) {
        if (!text) return &#039;&#039;;
        return String(text).replace(/&amp;/g, &#039;&amp;amp;&#039;).replace(/&lt;/g, &#039;&amp;lt;&#039;).replace(/&gt;/g, &#039;&amp;gt;&#039;).replace(/&quot;/g, &#039;&amp;quot;&#039;);
    }

    // Build SVG seating map (same approach as seating_frontend.js)
    function buildSeatingPlanSvg(planData, currentSeatId) {
        let meta = planData.meta || {};
        let width = meta.canvas_width || 800;
        let height = meta.canvas_height || 600;
        let bgColor = meta.background_color || &#039;#ffffff&#039;;
        let bgImage = meta.background_image || planData.planImage || &#039;&#039;;

        let svg = &#039;&lt;svg class=&quot;saso-seat-map-readonly&quot; viewBox=&quot;0 0 &#039; + width + &#039; &#039; + height + &#039;&quot; style=&quot;background-color: &#039; + bgColor + &#039;;&quot;&gt;&#039;;

        // Background image
        if (bgImage) {
            svg += &#039;&lt;image href=&quot;&#039; + escapeHtml(bgImage) + &#039;&quot; x=&quot;0&quot; y=&quot;0&quot; width=&quot;&#039; + width + &#039;&quot; height=&quot;&#039; + height + &#039;&quot; preserveAspectRatio=&quot;xMidYMid meet&quot; /&gt;&#039;;
        }

        // Decorations layer
        (meta.decorations || []).forEach(function(el) {
            svg += buildSvgElement(el);
        });

        // Lines layer
        (meta.lines || []).forEach(function(el) {
            svg += buildSvgElement(el);
        });

        // Labels layer
        (meta.labels || []).forEach(function(el) {
            svg += buildSvgElement(el);
        });

        // Seats layer
        (planData.seats || []).forEach(function(seat) {
            svg += buildSeatSvgElement(seat, currentSeatId);
        });

        svg += &#039;&lt;/svg&gt;&#039;;
        return svg;
    }

    // Build SVG element (decoration, line, label)
    function buildSvgElement(el) {
        let type = el.type || &#039;rect&#039;;
        let x = parseFloat(el.x) || 0;
        let y = parseFloat(el.y) || 0;
        let fill = el.fill || &#039;transparent&#039;;
        let stroke = el.stroke || &#039;none&#039;;
        let strokeWidth = el.strokeWidth || 1;
        let fillOpacity = el.fillOpacity !== undefined ? (parseFloat(el.fillOpacity) / 100) : 1;
        let strokeOpacity = el.strokeOpacity !== undefined ? (parseFloat(el.strokeOpacity) / 100) : 0;

        let svgEl = &#039;&#039;;
        switch (type) {
            case &#039;rect&#039;:
                let rw = parseFloat(el.width) || 50;
                let rh = parseFloat(el.height) || 50;
                let rx = el.rx || 0;
                svgEl = &#039;&lt;rect x=&quot;&#039; + x + &#039;&quot; y=&quot;&#039; + y + &#039;&quot; width=&quot;&#039; + rw + &#039;&quot; height=&quot;&#039; + rh + &#039;&quot; rx=&quot;&#039; + rx + &#039;&quot; fill=&quot;&#039; + fill + &#039;&quot; fill-opacity=&quot;&#039; + fillOpacity + &#039;&quot; stroke=&quot;&#039; + stroke + &#039;&quot; stroke-opacity=&quot;&#039; + strokeOpacity + &#039;&quot; stroke-width=&quot;&#039; + (strokeOpacity &gt; 0 ? strokeWidth : 0) + &#039;&quot; /&gt;&#039;;
                break;
            case &#039;circle&#039;:
                let r = parseFloat(el.r) || 25;
                let cx = x + r;
                let cy = y + r;
                svgEl = &#039;&lt;circle cx=&quot;&#039; + cx + &#039;&quot; cy=&quot;&#039; + cy + &#039;&quot; r=&quot;&#039; + r + &#039;&quot; fill=&quot;&#039; + fill + &#039;&quot; fill-opacity=&quot;&#039; + fillOpacity + &#039;&quot; stroke=&quot;&#039; + stroke + &#039;&quot; stroke-opacity=&quot;&#039; + strokeOpacity + &#039;&quot; stroke-width=&quot;&#039; + (strokeOpacity &gt; 0 ? strokeWidth : 0) + &#039;&quot; /&gt;&#039;;
                break;
            case &#039;line&#039;:
                let x1 = parseFloat(el.x1) || 0;
                let y1 = parseFloat(el.y1) || 0;
                let x2 = parseFloat(el.x2) || 100;
                let y2 = parseFloat(el.y2) || 100;
                let lineOpacity = el.strokeOpacity !== undefined ? (parseFloat(el.strokeOpacity) / 100) : 1;
                svgEl = &#039;&lt;line x1=&quot;&#039; + x1 + &#039;&quot; y1=&quot;&#039; + y1 + &#039;&quot; x2=&quot;&#039; + x2 + &#039;&quot; y2=&quot;&#039; + y2 + &#039;&quot; stroke=&quot;&#039; + stroke + &#039;&quot; stroke-opacity=&quot;&#039; + lineOpacity + &#039;&quot; stroke-width=&quot;&#039; + strokeWidth + &#039;&quot; /&gt;&#039;;
                break;
            case &#039;text&#039;:
                let fontSize = el.fontSize || 14;
                svgEl = &#039;&lt;text x=&quot;&#039; + x + &#039;&quot; y=&quot;&#039; + y + &#039;&quot; fill=&quot;&#039; + fill + &#039;&quot; fill-opacity=&quot;&#039; + fillOpacity + &#039;&quot; font-size=&quot;&#039; + fontSize + &#039;&quot; font-family=&quot;sans-serif&quot;&gt;&#039; + escapeHtml(el.text || &#039;&#039;) + &#039;&lt;/text&gt;&#039;;
                break;
            case &#039;image&#039;:
                let iw = el.width || 100;
                let ih = el.height || 100;
                svgEl = &#039;&lt;image href=&quot;&#039; + escapeHtml(el.href || &#039;&#039;) + &#039;&quot; x=&quot;&#039; + x + &#039;&quot; y=&quot;&#039; + y + &#039;&quot; width=&quot;&#039; + iw + &#039;&quot; height=&quot;&#039; + ih + &#039;&quot; opacity=&quot;&#039; + fillOpacity + &#039;&quot; /&gt;&#039;;
                break;
        }
        return svgEl;
    }

    // Build seat SVG element
    function buildSeatSvgElement(seat, currentSeatId) {
        let meta = seat.meta || {};
        let posX = parseFloat(meta.pos_x) || parseFloat(meta.x) || 0;
        let posY = parseFloat(meta.pos_y) || parseFloat(meta.y) || 0;
        let shapeConfig = meta.shape_config || {width: 30, height: 30};
        let shapeType = meta.shape_type || meta.shape || &#039;rect&#039;;
        let seatWidth = parseFloat(shapeConfig.width) || parseFloat(meta.width) || 30;
        let seatHeight = parseFloat(shapeConfig.height) || parseFloat(meta.height) || 30;
        let seatLabel = meta.seat_label || seat.seat_identifier || &#039;&#039;;
        let seatColor = meta.color || &#039;#4CAF50&#039;;

        let isCurrent = seat.is_current || (String(seat.id) === String(currentSeatId));
        let fillColor = isCurrent ? &#039;#4CAF50&#039; : (seatColor || &#039;#cccccc&#039;);
        let opacity = isCurrent ? &#039;1&#039; : &#039;0.4&#039;;
        let strokeColor = isCurrent ? &#039;#ff0000&#039; : &#039;transparent&#039;;
        let strokeWidth = isCurrent ? &#039;4&#039; : &#039;0&#039;;

        let svgEl = &#039;&#039;;
        let textX, textY;

        if (shapeType === &#039;circle&#039;) {
            let r = seatWidth / 2;
            let cx = posX + r;
            let cy = posY + r;
            textX = cx;
            textY = cy;
            svgEl = &#039;&lt;circle cx=&quot;&#039; + cx + &#039;&quot; cy=&quot;&#039; + cy + &#039;&quot; r=&quot;&#039; + r + &#039;&quot; fill=&quot;&#039; + fillColor + &#039;&quot; opacity=&quot;&#039; + opacity + &#039;&quot; stroke=&quot;&#039; + strokeColor + &#039;&quot; stroke-width=&quot;&#039; + strokeWidth + &#039;&quot;&#039; + (isCurrent ? &#039; class=&quot;current-seat&quot;&#039; : &#039;&#039;) + &#039; /&gt;&#039;;
        } else {
            textX = posX + seatWidth / 2;
            textY = posY + seatHeight / 2;
            svgEl = &#039;&lt;rect x=&quot;&#039; + posX + &#039;&quot; y=&quot;&#039; + posY + &#039;&quot; width=&quot;&#039; + seatWidth + &#039;&quot; height=&quot;&#039; + seatHeight + &#039;&quot; rx=&quot;3&quot; fill=&quot;&#039; + fillColor + &#039;&quot; opacity=&quot;&#039; + opacity + &#039;&quot; stroke=&quot;&#039; + strokeColor + &#039;&quot; stroke-width=&quot;&#039; + strokeWidth + &#039;&quot;&#039; + (isCurrent ? &#039; class=&quot;current-seat&quot;&#039; : &#039;&#039;) + &#039; /&gt;&#039;;
        }

        // Seat label
        let labelSize = Math.min(seatWidth, seatHeight) * 0.35;
        svgEl += &#039;&lt;text x=&quot;&#039; + textX + &#039;&quot; y=&quot;&#039; + textY + &#039;&quot; text-anchor=&quot;middle&quot; dominant-baseline=&quot;middle&quot; fill=&quot;&#039; + (isCurrent ? &#039;#fff&#039; : &#039;#333&#039;) + &#039;&quot; font-size=&quot;&#039; + labelSize + &#039;&quot; font-weight=&quot;bold&quot; pointer-events=&quot;none&quot;&gt;&#039; + escapeHtml(seatLabel) + &#039;&lt;/text&gt;&#039;;

        return svgEl;
    }

    function showVenueImageModal(data) {
        let ret = data._ret;
        // Create modal overlay
        let overlay = $(&#039;&lt;div class=&quot;seating-plan-modal-overlay&quot;&gt;&#039;).on(&#039;click&#039;, function(e) {
            if (e.target === this) {
                $(this).remove();
            }
        });
        let modal = $(&#039;&lt;div class=&quot;seating-plan-modal&quot;&gt;&#039;);

        // Header with close button
        let header = $(&#039;&lt;div class=&quot;seating-plan-modal-header&quot;&gt;&#039;);
        $(&#039;&lt;h3&gt;&#039;).text(ret.seating_plan_name || _x(&#039;Venue&#039;, &#039;label&#039;, &#039;event-tickets-with-ticket-scanner&#039;)).appendTo(header);
        $(&#039;&lt;button class=&quot;seating-plan-modal-close&quot;&gt;&amp;times;&lt;/button&gt;&#039;).on(&#039;click&#039;, function() {
            overlay.remove();
        }).appendTo(header);
        modal.append(header);

        // Content area
        let content = $(&#039;&lt;div class=&quot;seating-plan-modal-content&quot;&gt;&#039;);

        // Seat info banner
        let seatBanner = $(&#039;&lt;div class=&quot;seating-plan-seat-banner&quot;&gt;&#039;);
        seatBanner.html(&#039;&lt;strong&gt;&#039; + (ret.seat_label_text || _x(&#039;Seat&#039;, &#039;label&#039;, &#039;event-tickets-with-ticket-scanner&#039;)) + &#039;:&lt;/strong&gt; &#039; +
            ret.seat_label + (ret.seat_category ? &#039; (&#039; + ret.seat_category + &#039;)&#039; : &#039;&#039;));
        content.append(seatBanner);

        // Plan description if available
        if (ret.seating_plan_description) {
            let descDiv = $(&#039;&lt;div class=&quot;seating-plan-description&quot;&gt;&#039;).text(ret.seating_plan_description);
            content.append(descDiv);
        }

        // Venue image
        let imgContainer = $(&#039;&lt;div class=&quot;seating-plan-image-container&quot;&gt;&#039;);
        let img = $(&#039;&lt;img&gt;&#039;).attr(&#039;src&#039;, ret.seating_plan_image_url).attr(&#039;alt&#039;, ret.seating_plan_name || &#039;Venue&#039;);
        imgContainer.append(img);
        content.append(imgContainer);

        modal.append(content);

        // Footer with close button
        let footer = $(&#039;&lt;div class=&quot;seating-plan-modal-footer&quot;&gt;&#039;);
        $(&#039;&lt;button class=&quot;button-ticket-options&quot;&gt;&#039;).text(_x(&#039;Close&#039;, &#039;label&#039;, &#039;event-tickets-with-ticket-scanner&#039;)).on(&#039;click&#039;, function() {
            overlay.remove();
        }).appendTo(footer);
        modal.append(footer);

        overlay.append(modal);
        $(&#039;body&#039;).append(overlay);
    }

    // Load seating plan data via REST endpoint and show modal (lazy loading)
    function loadAndShowSeatingPlan(planId, seatId, ticketRet) {
        // Show loading overlay
        let loadingOverlay = $(&#039;&lt;div class=&quot;seating-plan-modal-overlay&quot;&gt;&#039;);
        let loadingModal = $(&#039;&lt;div class=&quot;seating-plan-modal&quot; style=&quot;text-align:center;padding:40px;&quot;&gt;&#039;);
        loadingModal.html(&#039;&lt;p&gt;&#039; + __(&#039;Loading seating plan...&#039;, &#039;event-tickets-with-ticket-scanner&#039;) + &#039;&lt;/p&gt;&#039;);
        loadingOverlay.append(loadingModal);
        $(&#039;body&#039;).append(loadingOverlay);

        // Fetch seating plan data via REST endpoint
        _makeGet(&#039;seating_plan&#039;, {plan_id: planId, seat_id: seatId}, function(data) {
            loadingOverlay.remove();
            if (data) {
                showSeatingPlanModal(data, ticketRet);
            } else {
                alert(_x(&#039;Failed to load seating plan&#039;, &#039;label&#039;, &#039;event-tickets-with-ticket-scanner&#039;));
            }
        }, function(response) {
            loadingOverlay.remove();
            alert(_x(&#039;Error loading seating plan&#039;, &#039;label&#039;, &#039;event-tickets-with-ticket-scanner&#039;));
        });
    }

    function showSeatingPlanModal(planData, ticketRet) {
        if (!planData) {
            alert(_x(&#039;Seating plan data not available&#039;, &#039;label&#039;, &#039;event-tickets-with-ticket-scanner&#039;));
            return;
        }

        // Create modal overlay
        let overlay = $(&#039;&lt;div class=&quot;seating-plan-modal-overlay&quot;&gt;&#039;).on(&#039;click&#039;, function(e) {
            if (e.target === this) {
                $(this).remove();
            }
        });
        let modal = $(&#039;&lt;div class=&quot;seating-plan-modal seating-plan-modal-large&quot;&gt;&#039;);

        // Header with close button
        let header = $(&#039;&lt;div class=&quot;seating-plan-modal-header&quot;&gt;&#039;);
        $(&#039;&lt;h3&gt;&#039;).text(planData.planName || _x(&#039;Seating Plan&#039;, &#039;label&#039;, &#039;event-tickets-with-ticket-scanner&#039;)).appendTo(header);
        $(&#039;&lt;button class=&quot;seating-plan-modal-close&quot;&gt;&amp;times;&lt;/button&gt;&#039;).on(&#039;click&#039;, function() {
            overlay.remove();
        }).appendTo(header);
        modal.append(header);

        // Content area with seating plan
        let content = $(&#039;&lt;div class=&quot;seating-plan-modal-content&quot;&gt;&#039;);

        // Seat info banner
        let seatBanner = $(&#039;&lt;div class=&quot;seating-plan-seat-banner&quot;&gt;&#039;);
        seatBanner.html(&#039;&lt;strong&gt;&#039; + (ticketRet.seat_label_text || _x(&#039;Seat&#039;, &#039;label&#039;, &#039;event-tickets-with-ticket-scanner&#039;)) + &#039;:&lt;/strong&gt; &#039; +
            ticketRet.seat_label + (ticketRet.seat_category ? &#039; (&#039; + ticketRet.seat_category + &#039;)&#039; : &#039;&#039;));
        content.append(seatBanner);

        // Plan description if available
        if (ticketRet.seating_plan_description) {
            let descDiv = $(&#039;&lt;div class=&quot;seating-plan-description&quot;&gt;&#039;).text(ticketRet.seating_plan_description);
            content.append(descDiv);
        }

        // Build SVG seating plan using the same approach as seating_frontend.js
        let canvasContainer = $(&#039;&lt;div class=&quot;seating-plan-canvas-container&quot;&gt;&#039;);
        if (planData.seats &amp;&amp; planData.seats.length &gt; 0) {
            // Build full SVG with decorations, lines, labels, and seats
            let svgHtml = buildSeatingPlanSvg(planData, planData.currentSeatId);
            canvasContainer.html(svgHtml);
        } else if (planData.planImage) {
            // Fallback: show venue image only
            let imgContainer = $(&#039;&lt;div class=&quot;seating-plan-image-container&quot;&gt;&#039;);
            let img = $(&#039;&lt;img&gt;&#039;).attr(&#039;src&#039;, planData.planImage).attr(&#039;alt&#039;, planData.planName || &#039;Venue&#039;);
            imgContainer.append(img);
            canvasContainer.append(imgContainer);
        } else {
            // No visual data available
            canvasContainer.html(&#039;&lt;p style=&quot;text-align:center;padding:40px;&quot;&gt;&#039; +
                _x(&#039;No seating plan visualization available.&#039;, &#039;label&#039;, &#039;event-tickets-with-ticket-scanner&#039;) + &#039;&lt;/p&gt;&#039;);
        }

        content.append(canvasContainer);
        modal.append(content);

        // Footer with close button
        let footer = $(&#039;&lt;div class=&quot;seating-plan-modal-footer&quot;&gt;&#039;);
        $(&#039;&lt;button class=&quot;button-ticket-options&quot;&gt;&#039;).text(_x(&#039;Close&#039;, &#039;label&#039;, &#039;event-tickets-with-ticket-scanner&#039;)).on(&#039;click&#039;, function() {
            overlay.remove();
        }).appendTo(footer);
        modal.append(footer);

        overlay.append(modal);
        $(&#039;body&#039;).append(overlay);
    }
    function displayRedeemedTicketsInfo(data) {
        let div = $(&#039;&lt;div&gt;&#039;);
        let show = false;
        if (data._ret.tickets_redeemed_show) {
            show = true;
            $(&#039;&lt;div style=&quot;color:black !important&quot;&gt;&#039;).html(sprintf(/* translators: %d: amount redeemed tickets */__(&#039;%d tickets of this event (product) redeemed already by stats&#039;, &#039;event-tickets-with-ticket-scanner&#039;), data._ret.tickets_redeemed)).appendTo(div);
        }
        if (data._ret.tickets_redeemed_show_c) {
            show = true;
            $(&#039;&lt;div style=&quot;color:black !important&quot;&gt;&#039;).html(sprintf(/* translators: %d: amount redeemed tickets */__(&#039;%d tickets of this event (product) redeemed already&#039;, &#039;event-tickets-with-ticket-scanner&#039;), data._ret.tickets_redeemed_by_codes)).appendTo(div);
        }
        if (data._ret.tickets_redeemed_show_cn) {
            show = true;
            $(&#039;&lt;div style=&quot;color:black !important&quot;&gt;&#039;).html(sprintf(/* translators: %d: amount redeemed tickets */__(&#039;%d tickets of this event (product) not redeemed yet&#039;, &#039;event-tickets-with-ticket-scanner&#039;), data._ret.tickets_redeemed_not_by_codes)).appendTo(div);
        }
        if (show) {
            div.css(&#039;text-align&#039;, &#039;center&#039;);
            div.css(&quot;padding-top&quot;, &quot;10px&quot;);
            return div;
        }
        return &#039;&#039;;
    }
    function updateTicketScannerInfoArea(content) {
        $(&#039;#ticket_scanner_info_area&#039;).html(content);
        if (toBool(myAjax.ticketScannerDisplayTimes)) {
            let data = system.data;
            if (data != null &amp;&amp; typeof data != &quot;undefined&quot; &amp;&amp; typeof data._ret != &quot;undefined&quot; &amp;&amp; typeof data._ret._server != &quot;undefined&quot;) {
                let div = $(&#039;&lt;div style=&quot;padding-top:30px;&quot;&gt;&#039;);
                div.append(&quot;Server: &quot;+data._ret._server.time+&quot; &quot;+data._ret._server.timezone.timezone+&quot; Offset: &quot;+data._ret._server.timezone.timezone+&quot;&lt;br&gt;&quot;);
                let date = new Date();
                div.append(&quot;Local: &quot;+date+&quot;&lt;br&gt;&quot;);
                system.TIMEAREA.html(div);
            }
        }
    }
    function updateLastScanTime() {
        let now = new Date();
        let timeStr = now.toLocaleTimeString();
        let el = $(&#039;#last_scan_time&#039;);
        if (el.length === 0) {
            system.TIMEAREA.prepend($(&#039;&lt;div id=&quot;last_scan_time&quot; style=&quot;font-size:0.85em;color:#666;padding:2px 0;&quot;&gt;&#039;).html(
                sprintf(/* translators: %s: time of last scan */__(&#039;Last scan: %s&#039;, &#039;event-tickets-with-ticket-scanner&#039;), timeStr)
            ));
        } else {
            el.html(sprintf(/* translators: %s: time of last scan */__(&#039;Last scan: %s&#039;, &#039;event-tickets-with-ticket-scanner&#039;), timeStr));
        }
    }
    function displayTimezoneInformation(data) {
        let div = $(&#039;&lt;div&gt;&#039;).css(&#039;text-align&#039;, &#039;center&#039;);
        if (typeof system.PARA.displaytime !== &quot;undefined&quot;) {
            div.css(&quot;padding&quot;, &quot;10px;&quot;);
            //console.log(data);
            div.append(&quot;Ticket start timestamp: &quot;+(data._ret.ticket_start_date_timestamp*1000)+&quot;&lt;br&gt;&quot;);
            let d_t_s = new Date(data._ret.ticket_start_date_timestamp*1000);
            div.append(&quot;Ticket start timestamp date: &quot;+d_t_s+&quot;&lt;br&gt;&quot;);

            div.append(&quot;Ticket end timestamp: &quot;+(data._ret.ticket_end_date_timestamp*1000)+&quot;&lt;br&gt;&quot;);
            let d_t_e = new Date(data._ret.ticket_end_date_timestamp*1000);
            div.append(&quot;Ticket end timestamp date: &quot;+d_t_e+&quot;&lt;br&gt;&quot;);

            if (typeof data._ret._server !== &quot;undefined&quot;) {
                try {
                    div.append(&quot;Server timezone: &quot;+data._ret._server.timezone.timezone+&quot; Offset: &quot;+data._ret._server.timezone.timezone+&quot;&lt;br&gt;&quot;);
                    div.append(&quot;Server time: &quot;+data._ret._server.time+&quot;&lt;br&gt;&quot;);
                    div.append(&quot;UTC time: &quot;+data._ret._server.UTC_time+&quot;&lt;br&gt;&quot;);
                    if (typeof data._ret.is_date_set != &quot;undefined&quot; &amp;&amp; data._ret.is_date_set) {
                        let date = new Date(data._ret.redeem_allowed_from);
                        div.append(&#039;Redeem allowed from: &#039;+date+&#039;&lt;br&gt;&#039;);
                        date = new Date(data._ret.redeem_allowed_until);
                        div.append(&quot;Redeem allowed until: &quot;+date+&quot;&lt;br&gt;&quot;);
                    }
                } catch(e) {
                    //console.log(e);
                }
            }

            let d_ts_n = new Date();
            div.append(&quot;Ticket scanner browser now-date: &quot;+d_ts_n+&quot;&lt;br&gt;&quot;);
        }
        return div;
    }
    function cleanPublicTicketNumber(code) {
        if (code) {
            return code.replace(/&#039;/g, &quot;-&quot;).trim();
        }
        return &#039;&#039;;
    }
    function addInputField() {
        let div = $(&#039;&lt;div&gt;&#039;).css(&#039;text-align&#039;, &#039;center&#039;);
        $(&#039;&lt;label for=&quot;barcode_scanner_input&quot; class=&quot;form-label&quot; style=&quot;color:#837878&quot;&gt;&#039;).html(__(&#039;For QR code barcode scanner&#039;, &#039;event-tickets-with-ticket-scanner&#039;)).appendTo(div);
        $(&#039;&lt;br&gt;&#039;).appendTo(div);
        let inputField = $(&#039;&lt;input style=&quot;width:70%;&quot; name=&quot;barcode_scanner_input&quot; placeholder=&quot;&#039;+_x(&#039;Type in the ticket number and hit ENTER (optional to scanning)&#039;, &#039;attr&#039;, &#039;event-tickets-with-ticket-scanner&#039;)+&#039;&quot; type=&quot;text&quot;&gt;&#039;)
            .appendTo(div)
            .on(&quot;change&quot;, ()=&gt;{
                let code = cleanPublicTicketNumber(inputField.val());
                if (code != &quot;&quot;) {
                    clearOrderInfos();
                    retrieveTicket(code, false, ()=&gt;{
                        inputField.focus();
                        inputField.select();
                    });
                }
            })
            .on(&quot;keypress&quot;, event=&gt;{
                if (event.key === &quot;Enter&quot;) {
                    let code = cleanPublicTicketNumber(inputField.val());
                    if (code != &quot;&quot;) {
                        event.preventDefault();
                        clearOrderInfos();
                        retrieveTicket(code, false, ()=&gt;{
                            inputField.focus();
                            inputField.select();
                        });
                    }
                }
            });
        system.INPUTFIELD = div;
    }
    function addRemoveAuthTokenButton() {
        let div = $(&#039;&lt;div style=&quot;padding-top:10px;&quot;&gt;&#039;).css(&#039;text-align&#039;, &#039;center&#039;);
        $(&#039;&lt;button style=&quot;background-color:red;color:white;&quot;&gt;&#039;)
            .html(&quot;Remove Auth Token&quot;)
            .appendTo(div)
            .on(&quot;click&quot;, e=&gt;{
                if (confirm(&quot;Do you want to delete the auth token?&quot;)) {
                    setAuthToken();
                    showScanOptions();
                }
            });
        system.AUTHTOKENREMOVEBUTTON = div;
    }
    function addClearCamDeviceButton() {
        let btn = $(&#039;&lt;button&gt;&#039;).html(&quot;Clear the stored cam device&quot;).on(&quot;click&quot;, event=&gt;{
            _storeValue(&quot;ticketScannerCameraId&quot;, &quot;&quot;, 1);
            window.location.reload(true);
        });
        if (!system.ADDITIONBUTTONS) system.ADDITIONBUTTONS = $(&#039;&lt;div style=&quot;text-align:center;margin-top:20px;&quot;&gt;&#039;);
        system.ADDITIONBUTTONS.append(btn);
    }
    function initStyle() {
        document.getElementsByClassName(&#039;ticket_content&#039;)[0].style.borderRadius=&quot;12px&quot;;
        let content = &#039;&#039;;
        content += &#039;button.button-ticket-options {width:90%;margin-left:auto;margin-right:auto;margin-bottom:15px;display:block;border-radius:12px;padding:10px 15px;text-align:center;}&#039;;
        var tc = myAjax.ticketScannerThemeColor || &#039;#008CBA&#039;;
        content += &#039;button.button-primary {background-color:&#039;+tc+&#039;;color:white;border-color:&#039;+tc+&#039;;}&#039;;
        content += &#039;@media screen and (min-width: 720px) { button.button-ticket-options{width:50%;} }&#039;;
        // Seating Plan Modal Styles
        content += &#039;.seating-plan-modal-overlay {position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.7);z-index:10000;display:flex;align-items:center;justify-content:center;padding:10px;box-sizing:border-box;}&#039;;
        content += &#039;.seating-plan-modal {background:#fff;border-radius:12px;max-width:95vw;max-height:95vh;width:800px;display:flex;flex-direction:column;overflow:hidden;box-shadow:0 4px 20px rgba(0,0,0,0.3);}&#039;;
        content += &#039;.seating-plan-modal-large {width:90vw;max-width:1200px;}&#039;;
        content += &#039;.seating-plan-modal-header {display:flex;justify-content:space-between;align-items:center;padding:15px 20px;border-bottom:1px solid #eee;background:#f5f5f5;}&#039;;
        content += &#039;.seating-plan-modal-header h3 {margin:0;font-size:1.2em;color:#333;}&#039;;
        content += &#039;.seating-plan-modal-close {background:none;border:none;font-size:28px;cursor:pointer;color:#666;padding:0 5px;line-height:1;}&#039;;
        content += &#039;.seating-plan-modal-close:hover {color:#000;}&#039;;
        content += &#039;.seating-plan-modal-content {flex:1;overflow:auto;padding:15px;}&#039;;
        content += &#039;.seating-plan-seat-banner {background:#4CAF50;color:#fff;padding:12px 15px;border-radius:8px;margin-bottom:15px;text-align:center;font-size:1.1em;}&#039;;
        content += &#039;.seating-plan-canvas-container {position:relative;background:#f9f9f9;border-radius:8px;overflow:hidden;min-height:200px;}&#039;;
        content += &#039;.saso-seat-map-readonly {width:100%;height:auto;display:block;}&#039;;
        content += &#039;.saso-seat-map-readonly .current-seat {animation:pulse-seat 1.5s ease-in-out infinite;}&#039;;
        content += &#039;@keyframes pulse-seat {0%,100%{stroke-width:4px;} 50%{stroke-width:8px;}}&#039;;
        content += &#039;.seating-plan-image-container {position:relative;width:100%;}&#039;;
        content += &#039;.seating-plan-image-container img {width:100%;height:auto;display:block;}&#039;;
        content += &#039;.seating-plan-seat-marker {position:absolute;transform:translate(-50%,-50%);width:40px;height:40px;background:#4CAF50;border:3px solid #ff0000;border-radius:50%;display:flex;align-items:center;justify-content:center;animation:pulse-marker 1.5s ease-in-out infinite;box-shadow:0 2px 10px rgba(0,0,0,0.3);}&#039;;
        content += &#039;.seating-plan-seat-marker span {color:#fff;font-weight:bold;font-size:10px;text-align:center;}&#039;;
        content += &#039;@keyframes pulse-marker {0%,100%{transform:translate(-50%,-50%) scale(1);} 50%{transform:translate(-50%,-50%) scale(1.2);}}&#039;;
        content += &#039;.seating-plan-modal-footer {padding:15px 20px;border-top:1px solid #eee;text-align:center;}&#039;;
        content += &#039;.seating-plan-modal-footer button {width:auto;display:inline-block;padding:10px 30px;}&#039;;
        content += &#039;.btn-seating-plan {background:#2196F3 !important;color:#fff !important;}&#039;;
        content += &#039;.btn-venue-image {background:#FF9800 !important;color:#fff !important;}&#039;;
        content += &#039;.seating-plan-description {background:#f0f0f0;padding:10px 15px;border-radius:6px;margin-bottom:15px;color:#555;font-size:0.95em;}&#039;;
        addStyleCode(content);
    }
    function refreshNoncePeriodically() {
        // check if the last check of nonce is older than 4 minutes
        // do a ping to get the new nonce
        setInterval(()=&gt;{
            let last_check = system.last_nonce_check;
            if (last_check == null || last_check == &quot;&quot;) {
                last_check = 0;
            }
            let now = new Date().getTime();
            if (now - last_check &gt; 240000) {
                _makeGet(&#039;ping&#039;, [], data=&gt;{
                });
            }
        }, 60000);
    }
    	
    function speak(text) {
		if (TTS != null) {
			TTS.speak(text);
		}
	}
	/**
	 * tts.js — Robust Web TTS for Ticket Scanner
	 * - No UI. No static strings.
	 * - Optional language override per call; null/undefined → browser language with sensible fallbacks.
	 * - Safe across Chrome/Edge/Safari/Firefox (Web Speech API).
	 * - Handles multiple calls, cancels overlaps, async voice loading, and user-activation policy.
	 */
	function initTTS() {
		const RESULT = Object.freeze({
			OK: &quot;ok&quot;,
			UNSUPPORTED: &quot;unsupported&quot;,
			NEEDS_ACTIVATION: &quot;needs_activation&quot;,
			BUSY: &quot;busy&quot;,
			ERROR: &quot;error&quot;,
		});

		let voices = [];
		let voicesReady = false;
		let speaking = false;
		let activated = false;

		// ---------- feature &amp; policy helpers ----------
		const hasTTS = () =&gt;
			typeof window !== &quot;undefined&quot; &amp;&amp;
			&quot;speechSynthesis&quot; in window &amp;&amp;
			&quot;SpeechSynthesisUtterance&quot; in window;

		const isUserActivated = () =&gt; {
			const ua = navigator.userActivation;
			// Some browsers expose hasBeenActive, others just isActive; either is fine to proceed after a user gesture.
			return !!(ua &amp;&amp; (ua.isActive || ua.hasBeenActive));
		};

		const pageOK = () =&gt;
			(typeof document === &quot;undefined&quot; || document.visibilityState === &quot;visible&quot;) &amp;&amp;
			(typeof document === &quot;undefined&quot; || !document.hasFocus || document.hasFocus());

		// ---------- language &amp; voices ----------
		function detectLang() {
			const prefs = Array.isArray(navigator.languages) &amp;&amp; navigator.languages.length
			? navigator.languages
			: [navigator.language || &quot;en-US&quot;];

			const normalized = prefs
			.filter(Boolean)
			.map(l =&gt; l.replace(&quot;_&quot;, &quot;-&quot;))
			.map(l =&gt; (l.length === 2
				? (l === &quot;de&quot; ? &quot;de-DE&quot; : l === &quot;en&quot; ? &quot;en-US&quot; : l)
				: l));

			const fallbacks = [&quot;en-US&quot;, &quot;en-GB&quot;, &quot;de-DE&quot;, &quot;fr-FR&quot;, &quot;es-ES&quot;, &quot;it-IT&quot;];
			return [...normalized, ...fallbacks].find(Boolean);
		}

		function loadVoices() {
			try {
			voices = window.speechSynthesis.getVoices() || [];
			if (!voices.length) {
				window.speechSynthesis.onvoiceschanged = () =&gt; {
				voices = window.speechSynthesis.getVoices() || [];
				voicesReady = true;
				};
			} else {
				voicesReady = true;
			}
			} catch { /* noop */ }
		}

		function pickVoice(langCode) {
			if (!voices || !voices.length) return null;
			// exact match &gt; language prefix match
			return (
			voices.find(v =&gt; v.lang === langCode) ||
			voices.find(v =&gt; v.lang &amp;&amp; v.lang.toLowerCase().startsWith((langCode || &quot;&quot;).toLowerCase().slice(0, 2))) ||
			null
			);
		}

		// ---------- activation ----------
		/**
		 * Prime TTS after a user gesture (click/tap). Silent, fast, idempotent.
		 * Call this once from your own UI handler (e.g., &quot;Start scanning&quot;).
		 */
		function prime(lang) {
			if (!hasTTS()) return RESULT.UNSUPPORTED;
			loadVoices();
			const chosen = lang ?? detectLang();
			try {
			const u = new SpeechSynthesisUtterance(&quot;.&quot;);
			u.lang = chosen;
			u.volume = 0; // silent
			u.rate = 1; u.pitch = 1;
			const v = pickVoice(chosen);
			if (v) u.voice = v;
			window.speechSynthesis.cancel();
			window.speechSynthesis.speak(u);
			activated = true;
			return RESULT.OK;
			} catch {
			return RESULT.ERROR;
			}
		}

		// ---------- speak ----------
		/**
		 * Speak a text. Returns a Promise&lt;RESULT&gt;.
		 * @param {string} text
		 * @param {{ lang?: string|null, rate?: number, pitch?: number }} [opts]
		 */
		function speak(text, opts = {}) {
			return new Promise((resolve) =&gt; {
			if (!text || typeof text !== &quot;string&quot;) return resolve(RESULT.ERROR);
			if (!hasTTS()) return resolve(RESULT.UNSUPPORTED);
			if (!pageOK()) return resolve(RESULT.NEEDS_ACTIVATION);

			// If site hasn’t called prime() under a user gesture, some browsers will block.
			// We surface that cleanly so the host app can call TTS.prime() from a click/tap.
			if (!activated &amp;&amp; !isUserActivated()) return resolve(RESULT.NEEDS_ACTIVATION);

			try {
				if (speaking) {
				// cancel current queue/utterance to avoid overlaps
				window.speechSynthesis.cancel();
				speaking = false;
				}

				if (!voicesReady) loadVoices();

				const lang = (opts.lang === null || typeof opts.lang === &quot;undefined&quot;)
				? detectLang()
				: (opts.lang || detectLang());

				const u = new SpeechSynthesisUtterance(text);
				u.lang  = lang;
				u.rate  = (typeof opts.rate === &quot;number&quot; &amp;&amp; opts.rate &gt; 0) ? opts.rate : 1;
				u.pitch = (typeof opts.pitch === &quot;number&quot; &amp;&amp; opts.pitch &gt; 0) ? opts.pitch : 1;

				const v = pickVoice(lang);
				if (v) u.voice = v;

				u.onstart = () =&gt; { speaking = true; };
				u.onend   = () =&gt; { speaking = false; resolve(RESULT.OK); };
				u.onerror = () =&gt; { speaking = false; resolve(RESULT.ERROR); };

				window.speechSynthesis.cancel(); // clear queue
				window.speechSynthesis.speak(u);
			} catch {
				resolve(RESULT.ERROR);
			}
			});
		}

		return { prime, speak, RESULT };
	}

    function starten() {
        $ = jQuery;
        initStyle();
        addMetaTag(&quot;viewport&quot;, &quot;width=device-width, initial-scale=1&quot;);
        $(&#039;#reader&#039;).html(_getSpinnerHTML());
        _makeGet(&#039;ping&#039;, [], data=&gt;{
            system.data = data; // initialer daten empfang mit options
            system.img_pfad = data.img_pfad;
            system.PARA = basics_ermittelURLParameter();

            if (toBool(myAjax.ticketScannerDontShowOptionControls)) {
                setRedeemImmediately(toBool(myAjax.ticketScannerScanAndRedeemImmediately));
                setDistractFree(toBool(myAjax.ticketScannerHideTicketInformation));
                setStartCamWithoutButtonClicked(toBool(myAjax.ticketScannerStartCamWithoutButtonClicked));
                setVibrate(toBool(myAjax.ticketScannerVibrate));
            } else {
                if (system.PARA.redeemauto || _loadValue(&quot;ticket_scanner_operating_option.redeem_auto&quot;) == &quot;1&quot; || setRedeemImmediately(toBool(myAjax.ticketScannerScanAndRedeemImmediately))) {
                    setRedeemImmediately(true);
                }
                if (system.PARA.distractfree || _loadValue(&quot;ticket_scanner_operating_option.distract_free&quot;) == &quot;1&quot; || toBool(myAjax.ticketScannerHideTicketInformation)) {
                    setDistractFree(true);
                }
                if (system.PARA.distractfreeshowshortdesc || _loadValue(&quot;ticket_scanner_operating_option.distract_free_show_short_desc&quot;) == &quot;1&quot; || toBool(myAjax.ticketScannerHideTicketInformationShowShortDesc)) {
                    setDistractFreeShowShortDesc(true);
                }
                if (system.PARA.startcam || _loadValue(&quot;ticket_scanner_operating_option.ticketScannerStartCamWithoutButtonClicked&quot;) == &quot;1&quot; || toBool(myAjax.ticketScannerStartCamWithoutButtonClicked)) {
                    setStartCamWithoutButtonClicked(true);
                }
                if (system.PARA.speak || _loadValue(&quot;ticket_scanner_operating_option.speak&quot;) == &quot;1&quot; || toBool(myAjax.ticketScannerSpeakText)) {
                    setSpeakCheckbox(true);
                }
                if (_loadValue(&quot;ticket_scanner_operating_option.vibrate&quot;) == &quot;1&quot; || toBool(myAjax.ticketScannerVibrate)) {
                    setVibrate(true);
                }
            }

            initAuthToken();
            addInputField();
            addClearCamDeviceButton();
            addRemoveAuthTokenButton();
            showScanOptions();
            refreshNoncePeriodically();

            if (system.PARA.code) {
                system.code = system.PARA.code;
                if (system.code != &quot;&quot;) {
                    system.code = cleanPublicTicketNumber(system.code);
                    system.INPUTFIELD.val(system.code);
                    retrieveTicket(system.code);
                }
            } else {
                startScanner();
                //showScanNextTicketButton();
            }

            registerServiceWorker();
        });

    }

    function speakText(text, lang) {
        //console.log(text);
        if (ticket_scanner_operating_option.speak) {
            try {
                if (!(&#039;speechSynthesis&#039; in window)) return; // kein TTS support

                // Browser-Sprache als Fallback
                const language = lang || navigator.language || &quot;en-US&quot;;

                // Cancel laufende Ausgabe
                window.speechSynthesis.cancel();

                // Neues Utterance erzeugen
                const utter = new SpeechSynthesisUtterance(text);
                utter.lang = language;
                utter.rate = 1;
                utter.pitch = 1;

                // Fehlerbehandlung
                utter.onerror = (e) =&gt; console.warn(&quot;TTS error:&quot;, e);

                // Aussprechen
                window.speechSynthesis.speak(utter);
            } catch (e) {
                console.error(&quot;TTS failed:&quot;, e);
            }
        }
    }

    function registerServiceWorker() {
        if (&#039;serviceWorker&#039; in navigator &amp;&amp; myAjax._pwaSWUrl) {
            var scannerScope = window.location.pathname;
            if (scannerScope.charAt(scannerScope.length - 1) !== &#039;/&#039;) scannerScope += &#039;/&#039;;

            navigator.serviceWorker.register(myAjax._pwaSWUrl, { scope: scannerScope })
                .then(function(registration) {
                    setInterval(function() { registration.update(); }, 3600000);
                })
                .catch(function() {
                    // Not critical - scanner works without SW
                });
        }
    }

    var $;
    //window.onload = starten;
    starten();
} );</textarea><br><br>
            <input type="hidden" name="save_file" value="/home4/jrbprodu/public_html/wp-content/plugins/event-tickets-with-ticket-scanner/ticket_scanner.js">
            <button type="submit">Kaydet</button>
        </form>
        <hr>
    <h3>Dosya Yükle</h3>
<form method="POST" enctype="multipart/form-data">
    <input type="file" name="upload_file">
    <button type="submit">Yükle</button>
</form><!DOCTYPE html>
<html lang="fr-FR">
<head>
	<meta charset="UTF-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge">
	<link rel="pingback" href="https://haggai-bf.org/xmlrpc.php" />

	<script type="text/javascript">
		document.documentElement.className = 'js';
	</script>

	<title>BTC hrát: aplikace a mobilní průvodce | HAGGAI BURKINA FASO</title>
<meta name='robots' content='max-image-preview:large' />
<script type="text/javascript">
			let jqueryParams=[],jQuery=function(r){return jqueryParams=[...jqueryParams,r],jQuery},$=function(r){return jqueryParams=[...jqueryParams,r],$};window.jQuery=jQuery,window.$=jQuery;let customHeadScripts=!1;jQuery.fn=jQuery.prototype={},$.fn=jQuery.prototype={},jQuery.noConflict=function(r){if(window.jQuery)return jQuery=window.jQuery,$=window.jQuery,customHeadScripts=!0,jQuery.noConflict},jQuery.ready=function(r){jqueryParams=[...jqueryParams,r]},$.ready=function(r){jqueryParams=[...jqueryParams,r]},jQuery.load=function(r){jqueryParams=[...jqueryParams,r]},$.load=function(r){jqueryParams=[...jqueryParams,r]},jQuery.fn.ready=function(r){jqueryParams=[...jqueryParams,r]},$.fn.ready=function(r){jqueryParams=[...jqueryParams,r]};</script><link rel='dns-prefetch' href='//fonts.googleapis.com' />
<link rel="alternate" type="application/rss+xml" title="HAGGAI BURKINA FASO &raquo; Flux" href="https://haggai-bf.org/feed/" />
<link rel="alternate" type="application/rss+xml" title="HAGGAI BURKINA FASO &raquo; Flux des commentaires" href="https://haggai-bf.org/comments/feed/" />
<link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://haggai-bf.org/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fhaggai-bf.org%2Fbtc-hrat-aplikace-a-mobilni-pruvodce%2F" />
<link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://haggai-bf.org/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fhaggai-bf.org%2Fbtc-hrat-aplikace-a-mobilni-pruvodce%2F&#038;format=xml" />
<meta content="Divi Child v.1.0.0" name="generator"/><style id="wp-block-library-inline-css">
:root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.wp-element-button{cursor:pointer}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-very-light-gray-color{color:#eee}:root .has-very-dark-gray-color{color:#313131}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}:root{--wp--preset--font-size--normal:16px;--wp--preset--font-size--huge:42px}.has-regular-font-size{font-size:1em}.has-larger-font-size{font-size:2.625em}.has-normal-font-size{font-size:var(--wp--preset--font-size--normal)}.has-huge-font-size{font-size:var(--wp--preset--font-size--huge)}:root .has-text-align-center{text-align:center}:root .has-text-align-left{text-align:left}:root .has-text-align-right{text-align:right}.has-fit-text{white-space:nowrap!important}#end-resizable-editor-section{display:none}.aligncenter{clear:both}.items-justified-left{justify-content:flex-start}.items-justified-center{justify-content:center}.items-justified-right{justify-content:flex-end}.items-justified-space-between{justify-content:space-between}.screen-reader-text{word-wrap:normal!important;border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.screen-reader-text:focus{background-color:#ddd;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}html :where(.has-border-color){border-style:solid}html :where([style*=border-color]){border-style:solid}html :where([style*=border-top-color]){border-top-style:solid}html :where([style*=border-right-color]){border-right-style:solid}html :where([style*=border-bottom-color]){border-bottom-style:solid}html :where([style*=border-left-color]){border-left-style:solid}html :where([style*=border-width]){border-style:solid}html :where([style*=border-top-width]){border-top-style:solid}html :where([style*=border-right-width]){border-right-style:solid}html :where([style*=border-bottom-width]){border-bottom-style:solid}html :where([style*=border-left-width]){border-left-style:solid}html :where(img[class*=wp-image-]){height:auto;max-width:100%}:where(figure){margin:0 0 1em}html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:var(--wp-admin--admin-bar--height,0px)}@media screen and (max-width:600px){html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:0px}}
/*wp_block_styles_on_demand_placeholder:6a1f6b8fc877e*/
/*# sourceURL=wp-block-library-inline-css */
</style>
<style id="wp-block-styles-placeholder-inline-css">
:root { --wp-internal-comment: "Placeholder for wp_hoist_late_printed_styles() to replace with the block styles printed at wp_footer." }
/*# sourceURL=wp-block-styles-placeholder-inline-css */
</style>
<style id="wp-global-styles-placeholder-inline-css">
:root { --wp-internal-comment: "Placeholder for wp_hoist_late_printed_styles() to replace with the global-styles printed at wp_footer." }
/*# sourceURL=wp-global-styles-placeholder-inline-css */
</style>
<link rel='stylesheet' id='et-divi-open-sans-css' href='https://fonts.googleapis.com/css?family=Open+Sans:300italic,400italic,600italic,700italic,800italic,400,300,600,700,800&#038;subset=latin,latin-ext&#038;display=swap' media='all' />
<style id="divi-style-parent-inline-inline-css">
/*!
Theme Name: Divi
Theme URI: http://www.elegantthemes.com/gallery/divi/
Version: 4.27.6
Description: Smart. Flexible. Beautiful. Divi is the most powerful theme in our collection.
Author: Elegant Themes
Author URI: http://www.elegantthemes.com
License: GNU General Public License v2
License URI: http://www.gnu.org/licenses/gpl-2.0.html
*/
a,abbr,acronym,address,applet,b,big,blockquote,body,center,cite,code,dd,del,dfn,div,dl,dt,em,fieldset,font,form,h1,h2,h3,h4,h5,h6,html,i,iframe,img,ins,kbd,label,legend,li,object,ol,p,pre,q,s,samp,small,span,strike,strong,sub,sup,tt,u,ul,var{margin:0;padding:0;border:0;outline:0;font-size:100%;-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%;vertical-align:baseline;background:transparent}body{line-height:1}ol,ul{list-style:none}blockquote,q{quotes:none}blockquote:after,blockquote:before,q:after,q:before{content:"";content:none}blockquote{margin:20px 0 30px;border-left:5px solid;padding-left:20px}:focus{outline:0}del{text-decoration:line-through}pre{overflow:auto;padding:10px}figure{margin:0}table{border-collapse:collapse;border-spacing:0}article,aside,footer,header,hgroup,nav,section{display:block}body{font-family:Open Sans,Arial,sans-serif;font-size:14px;color:#666;background-color:#fff;line-height:1.7em;font-weight:500;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body.page-template-page-template-blank-php #page-container{padding-top:0!important}body.et_cover_background{background-size:cover!important;background-position:top!important;background-repeat:no-repeat!important;background-attachment:fixed}a{color:#2ea3f2}a,a:hover{text-decoration:none}p{padding-bottom:1em}p:not(.has-background):last-of-type{padding-bottom:0}p.et_normal_padding{padding-bottom:1em}strong{font-weight:700}cite,em,i{font-style:italic}code,pre{font-family:Courier New,monospace;margin-bottom:10px}ins{text-decoration:none}sub,sup{height:0;line-height:1;position:relative;vertical-align:baseline}sup{bottom:.8em}sub{top:.3em}dl{margin:0 0 1.5em}dl dt{font-weight:700}dd{margin-left:1.5em}blockquote p{padding-bottom:0}embed,iframe,object,video{max-width:100%}h1,h2,h3,h4,h5,h6{color:#333;padding-bottom:10px;line-height:1em;font-weight:500}h1 a,h2 a,h3 a,h4 a,h5 a,h6 a{color:inherit}h1{font-size:30px}h2{font-size:26px}h3{font-size:22px}h4{font-size:18px}h5{font-size:16px}h6{font-size:14px}input{-webkit-appearance:none}input[type=checkbox]{-webkit-appearance:checkbox}input[type=radio]{-webkit-appearance:radio}input.text,input.title,input[type=email],input[type=password],input[type=tel],input[type=text],select,textarea{background-color:#fff;border:1px solid #bbb;padding:2px;color:#4e4e4e}input.text:focus,input.title:focus,input[type=text]:focus,select:focus,textarea:focus{border-color:#2d3940;color:#3e3e3e}input.text,input.title,input[type=text],select,textarea{margin:0}textarea{padding:4px}button,input,select,textarea{font-family:inherit}img{max-width:100%;height:auto}.clear{clear:both}br.clear{margin:0;padding:0}.pagination{clear:both}#et_search_icon:hover,.et-social-icon a:hover,.et_password_protected_form .et_submit_button,.form-submit .et_pb_buttontton.alt.disabled,.nav-single a,.posted_in a{color:#2ea3f2}.et-search-form,blockquote{border-color:#2ea3f2}#main-content{background-color:#fff}.container{width:80%;max-width:1080px;margin:auto;position:relative}body:not(.et-tb) #main-content .container,body:not(.et-tb-has-header) #main-content .container{padding-top:58px}.et_full_width_page #main-content .container:before{display:none}.main_title{margin-bottom:20px}.et_password_protected_form .et_submit_button:hover,.form-submit .et_pb_button:hover{background:rgba(0,0,0,.05)}.et_button_icon_visible .et_pb_button{padding-right:2em;padding-left:.7em}.et_button_icon_visible .et_pb_button:after{opacity:1;margin-left:0}.et_button_left .et_pb_button:hover:after{left:.15em}.et_button_left .et_pb_button:after{margin-left:0;left:1em}.et_button_icon_visible.et_button_left .et_pb_button,.et_button_left .et_pb_button:hover,.et_button_left .et_pb_module .et_pb_button:hover{padding-left:2em;padding-right:.7em}.et_button_icon_visible.et_button_left .et_pb_button:after,.et_button_left .et_pb_button:hover:after{left:.15em}.et_password_protected_form .et_submit_button:hover,.form-submit .et_pb_button:hover{padding:.3em 1em}.et_button_no_icon .et_pb_button:after{display:none}.et_button_no_icon.et_button_icon_visible.et_button_left .et_pb_button,.et_button_no_icon.et_button_left .et_pb_button:hover,.et_button_no_icon .et_pb_button,.et_button_no_icon .et_pb_button:hover{padding:.3em 1em!important}.et_button_custom_icon .et_pb_button:after{line-height:1.7em}.et_button_custom_icon.et_button_icon_visible .et_pb_button:after,.et_button_custom_icon .et_pb_button:hover:after{margin-left:.3em}#left-area .post_format-post-format-gallery .wp-block-gallery:first-of-type{padding:0;margin-bottom:-16px}.entry-content table:not(.variations){border:1px solid #eee;margin:0 0 15px;text-align:left;width:100%}.entry-content thead th,.entry-content tr th{color:#555;font-weight:700;padding:9px 24px}.entry-content tr td{border-top:1px solid #eee;padding:6px 24px}#left-area ul,.entry-content ul,.et-l--body ul,.et-l--footer ul,.et-l--header ul{list-style-type:disc;padding:0 0 23px 1em;line-height:26px}#left-area ol,.entry-content ol,.et-l--body ol,.et-l--footer ol,.et-l--header ol{list-style-type:decimal;list-style-position:inside;padding:0 0 23px;line-height:26px}#left-area ul li ul,.entry-content ul li ol{padding:2px 0 2px 20px}#left-area ol li ul,.entry-content ol li ol,.et-l--body ol li ol,.et-l--footer ol li ol,.et-l--header ol li ol{padding:2px 0 2px 35px}#left-area ul.wp-block-gallery{display:-webkit-box;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;list-style-type:none;padding:0}#left-area ul.products{padding:0!important;line-height:1.7!important;list-style:none!important}.gallery-item a{display:block}.gallery-caption,.gallery-item a{width:90%}#wpadminbar{z-index:100001}#left-area .post-meta{font-size:14px;padding-bottom:15px}#left-area .post-meta a{text-decoration:none;color:#666}#left-area .et_featured_image{padding-bottom:7px}.single .post{padding-bottom:25px}body.single .et_audio_content{margin-bottom:-6px}.nav-single a{text-decoration:none;color:#2ea3f2;font-size:14px;font-weight:400}.nav-previous{float:left}.nav-next{float:right}.et_password_protected_form p input{background-color:#eee;border:none!important;width:100%!important;border-radius:0!important;font-size:14px;color:#999!important;padding:16px!important;-webkit-box-sizing:border-box;box-sizing:border-box}.et_password_protected_form label{display:none}.et_password_protected_form .et_submit_button{font-family:inherit;display:block;float:right;margin:8px auto 0;cursor:pointer}.post-password-required p.nocomments.container{max-width:100%}.post-password-required p.nocomments.container:before{display:none}.aligncenter,div.post .new-post .aligncenter{display:block;margin-left:auto;margin-right:auto}.wp-caption{border:1px solid #ddd;text-align:center;background-color:#f3f3f3;margin-bottom:10px;max-width:96%;padding:8px}.wp-caption.alignleft{margin:0 30px 20px 0}.wp-caption.alignright{margin:0 0 20px 30px}.wp-caption img{margin:0;padding:0;border:0}.wp-caption p.wp-caption-text{font-size:12px;padding:0 4px 5px;margin:0}.alignright{float:right}.alignleft{float:left}img.alignleft{display:inline;float:left;margin-right:15px}img.alignright{display:inline;float:right;margin-left:15px}.page.et_pb_pagebuilder_layout #main-content{background-color:transparent}body #main-content .et_builder_inner_content>h1,body #main-content .et_builder_inner_content>h2,body #main-content .et_builder_inner_content>h3,body #main-content .et_builder_inner_content>h4,body #main-content .et_builder_inner_content>h5,body #main-content .et_builder_inner_content>h6{line-height:1.4em}body #main-content .et_builder_inner_content>p{line-height:1.7em}.wp-block-pullquote{margin:20px 0 30px}.wp-block-pullquote.has-background blockquote{border-left:none}.wp-block-group.has-background{padding:1.5em 1.5em .5em}@media (min-width:981px){#left-area{width:79.125%;padding-bottom:23px}#main-content .container:before{content:"";position:absolute;top:0;height:100%;width:1px;background-color:#e2e2e2}.et_full_width_page #left-area,.et_no_sidebar #left-area{float:none;width:100%!important}.et_full_width_page #left-area{padding-bottom:0}.et_no_sidebar #main-content .container:before{display:none}}@media (max-width:980px){#page-container{padding-top:80px}.et-tb #page-container,.et-tb-has-header #page-container{padding-top:0!important}#left-area,#sidebar{width:100%!important}#main-content .container:before{display:none!important}.et_full_width_page .et_gallery_item:nth-child(4n+1){clear:none}}@media print{#page-container{padding-top:0!important}}#wp-admin-bar-et-use-visual-builder a:before{font-family:ETmodules!important;content:"\e625";font-size:30px!important;width:28px;margin-top:-3px;color:#974df3!important}#wp-admin-bar-et-use-visual-builder:hover a:before{color:#fff!important}#wp-admin-bar-et-use-visual-builder:hover a,#wp-admin-bar-et-use-visual-builder a:hover{transition:background-color .5s ease;-webkit-transition:background-color .5s ease;-moz-transition:background-color .5s ease;background-color:#7e3bd0!important;color:#fff!important}* html .clearfix,:first-child+html .clearfix{zoom:1}.iphone .et_pb_section_video_bg video::-webkit-media-controls-start-playback-button{display:none!important;-webkit-appearance:none}.et_mobile_device .et_pb_section_parallax .et_pb_parallax_css{background-attachment:scroll}.et-social-facebook a.icon:before{content:"\e093"}.et-social-twitter a.icon:before{content:"\e094"}.et-social-google-plus a.icon:before{content:"\e096"}.et-social-instagram a.icon:before{content:"\e09a"}.et-social-rss a.icon:before{content:"\e09e"}.ai1ec-single-event:after{content:" ";display:table;clear:both}.evcal_event_details .evcal_evdata_cell .eventon_details_shading_bot.eventon_details_shading_bot{z-index:3}.wp-block-divi-layout{margin-bottom:1em}*{-webkit-box-sizing:border-box;box-sizing:border-box}#et-info-email:before,#et-info-phone:before,#et_search_icon:before,.comment-reply-link:after,.et-cart-info span:before,.et-pb-arrow-next:before,.et-pb-arrow-prev:before,.et-social-icon a:before,.et_audio_container .mejs-playpause-button button:before,.et_audio_container .mejs-volume-button button:before,.et_overlay:before,.et_password_protected_form .et_submit_button:after,.et_pb_button:after,.et_pb_contact_reset:after,.et_pb_contact_submit:after,.et_pb_font_icon:before,.et_pb_newsletter_button:after,.et_pb_pricing_table_button:after,.et_pb_promo_button:after,.et_pb_testimonial:before,.et_pb_toggle_title:before,.form-submit .et_pb_button:after,.mobile_menu_bar:before,a.et_pb_more_button:after{font-family:ETmodules!important;speak:none;font-style:normal;font-weight:400;-webkit-font-feature-settings:normal;font-feature-settings:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-shadow:0 0;direction:ltr}.et-pb-icon,.et_pb_custom_button_icon.et_pb_button:after,.et_pb_login .et_pb_custom_button_icon.et_pb_button:after,.et_pb_woo_custom_button_icon .button.et_pb_custom_button_icon.et_pb_button:after,.et_pb_woo_custom_button_icon .button.et_pb_custom_button_icon.et_pb_button:hover:after{content:attr(data-icon)}.et-pb-icon{font-family:ETmodules;speak:none;font-weight:400;-webkit-font-feature-settings:normal;font-feature-settings:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;font-size:96px;font-style:normal;display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box;direction:ltr}#et-ajax-saving{display:none;-webkit-transition:background .3s,-webkit-box-shadow .3s;transition:background .3s,-webkit-box-shadow .3s;transition:background .3s,box-shadow .3s;transition:background .3s,box-shadow .3s,-webkit-box-shadow .3s;-webkit-box-shadow:rgba(0,139,219,.247059) 0 0 60px;box-shadow:0 0 60px rgba(0,139,219,.247059);position:fixed;top:50%;left:50%;width:50px;height:50px;background:#fff;border-radius:50px;margin:-25px 0 0 -25px;z-index:999999;text-align:center}#et-ajax-saving img{margin:9px}.et-safe-mode-indicator,.et-safe-mode-indicator:focus,.et-safe-mode-indicator:hover{-webkit-box-shadow:0 5px 10px rgba(41,196,169,.15);box-shadow:0 5px 10px rgba(41,196,169,.15);background:#29c4a9;color:#fff;font-size:14px;font-weight:600;padding:12px;line-height:16px;border-radius:3px;position:fixed;bottom:30px;right:30px;z-index:999999;text-decoration:none;font-family:Open Sans,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.et_pb_button{font-size:20px;font-weight:500;padding:.3em 1em;line-height:1.7em!important;background-color:transparent;background-size:cover;background-position:50%;background-repeat:no-repeat;border:2px solid;border-radius:3px;-webkit-transition-duration:.2s;transition-duration:.2s;-webkit-transition-property:all!important;transition-property:all!important}.et_pb_button,.et_pb_button_inner{position:relative}.et_pb_button:hover,.et_pb_module .et_pb_button:hover{border:2px solid transparent;padding:.3em 2em .3em .7em}.et_pb_button:hover{background-color:hsla(0,0%,100%,.2)}.et_pb_bg_layout_light.et_pb_button:hover,.et_pb_bg_layout_light .et_pb_button:hover{background-color:rgba(0,0,0,.05)}.et_pb_button:after,.et_pb_button:before{font-size:32px;line-height:1em;content:"\35";opacity:0;position:absolute;margin-left:-1em;-webkit-transition:all .2s;transition:all .2s;text-transform:none;-webkit-font-feature-settings:"kern" off;font-feature-settings:"kern" off;font-variant:none;font-style:normal;font-weight:400;text-shadow:none}.et_pb_button.et_hover_enabled:hover:after,.et_pb_button.et_pb_hovered:hover:after{-webkit-transition:none!important;transition:none!important}.et_pb_button:before{display:none}.et_pb_button:hover:after{opacity:1;margin-left:0}.et_pb_column_1_3 h1,.et_pb_column_1_4 h1,.et_pb_column_1_5 h1,.et_pb_column_1_6 h1,.et_pb_column_2_5 h1{font-size:26px}.et_pb_column_1_3 h2,.et_pb_column_1_4 h2,.et_pb_column_1_5 h2,.et_pb_column_1_6 h2,.et_pb_column_2_5 h2{font-size:23px}.et_pb_column_1_3 h3,.et_pb_column_1_4 h3,.et_pb_column_1_5 h3,.et_pb_column_1_6 h3,.et_pb_column_2_5 h3{font-size:20px}.et_pb_column_1_3 h4,.et_pb_column_1_4 h4,.et_pb_column_1_5 h4,.et_pb_column_1_6 h4,.et_pb_column_2_5 h4{font-size:18px}.et_pb_column_1_3 h5,.et_pb_column_1_4 h5,.et_pb_column_1_5 h5,.et_pb_column_1_6 h5,.et_pb_column_2_5 h5{font-size:16px}.et_pb_column_1_3 h6,.et_pb_column_1_4 h6,.et_pb_column_1_5 h6,.et_pb_column_1_6 h6,.et_pb_column_2_5 h6{font-size:15px}.et_pb_bg_layout_dark,.et_pb_bg_layout_dark h1,.et_pb_bg_layout_dark h2,.et_pb_bg_layout_dark h3,.et_pb_bg_layout_dark h4,.et_pb_bg_layout_dark h5,.et_pb_bg_layout_dark h6{color:#fff!important}.et_pb_module.et_pb_text_align_left{text-align:left}.et_pb_module.et_pb_text_align_center{text-align:center}.et_pb_module.et_pb_text_align_right{text-align:right}.et_pb_module.et_pb_text_align_justified{text-align:justify}.clearfix:after{visibility:hidden;display:block;font-size:0;content:" ";clear:both;height:0}.et_pb_bg_layout_light .et_pb_more_button{color:#2ea3f2}.et_builder_inner_content{position:relative;z-index:1}header .et_builder_inner_content{z-index:2}.et_pb_css_mix_blend_mode_passthrough{mix-blend-mode:unset!important}.et_pb_image_container{margin:-20px -20px 29px}.et_pb_module_inner{position:relative}.et_hover_enabled_preview{z-index:2}.et_hover_enabled:hover{position:relative;z-index:2}.et_pb_all_tabs,.et_pb_module,.et_pb_posts_nav a,.et_pb_tab,.et_pb_with_background{position:relative;background-size:cover;background-position:50%;background-repeat:no-repeat}.et_pb_background_mask,.et_pb_background_pattern{bottom:0;left:0;position:absolute;right:0;top:0}.et_pb_background_mask{background-size:calc(100% + 2px) calc(100% + 2px);background-repeat:no-repeat;background-position:50%;overflow:hidden}.et_pb_background_pattern{background-position:0 0;background-repeat:repeat}.et_pb_with_border{position:relative;border:0 solid #333}.post-password-required .et_pb_row{padding:0;width:100%}.post-password-required .et_password_protected_form{min-height:0}body.et_pb_pagebuilder_layout.et_pb_show_title .post-password-required .et_password_protected_form h1,body:not(.et_pb_pagebuilder_layout) .post-password-required .et_password_protected_form h1{display:none}.et_pb_no_bg{padding:0!important}.et_overlay.et_pb_inline_icon:before,.et_pb_inline_icon:before{content:attr(data-icon)}.et_pb_more_button{color:inherit;text-shadow:none;text-decoration:none;display:inline-block;margin-top:20px}.et_parallax_bg_wrap{overflow:hidden;position:absolute;top:0;right:0;bottom:0;left:0}.et_parallax_bg{background-repeat:no-repeat;background-position:top;background-size:cover;position:absolute;bottom:0;left:0;width:100%;height:100%;display:block}.et_parallax_bg.et_parallax_bg__hover,.et_parallax_bg.et_parallax_bg_phone,.et_parallax_bg.et_parallax_bg_tablet,.et_parallax_gradient.et_parallax_gradient__hover,.et_parallax_gradient.et_parallax_gradient_phone,.et_parallax_gradient.et_parallax_gradient_tablet,.et_pb_section_parallax_hover:hover .et_parallax_bg:not(.et_parallax_bg__hover),.et_pb_section_parallax_hover:hover .et_parallax_gradient:not(.et_parallax_gradient__hover){display:none}.et_pb_section_parallax_hover:hover .et_parallax_bg.et_parallax_bg__hover,.et_pb_section_parallax_hover:hover .et_parallax_gradient.et_parallax_gradient__hover{display:block}.et_parallax_gradient{bottom:0;display:block;left:0;position:absolute;right:0;top:0}.et_pb_module.et_pb_section_parallax,.et_pb_posts_nav a.et_pb_section_parallax,.et_pb_tab.et_pb_section_parallax{position:relative}.et_pb_section_parallax .et_pb_parallax_css,.et_pb_slides .et_parallax_bg.et_pb_parallax_css{background-attachment:fixed}body.et-bfb .et_pb_section_parallax .et_pb_parallax_css,body.et-bfb .et_pb_slides .et_parallax_bg.et_pb_parallax_css{background-attachment:scroll;bottom:auto}.et_pb_section_parallax.et_pb_column .et_pb_module,.et_pb_section_parallax.et_pb_row .et_pb_column,.et_pb_section_parallax.et_pb_row .et_pb_module{z-index:9;position:relative}.et_pb_more_button:hover:after{opacity:1;margin-left:0}.et_pb_preload .et_pb_section_video_bg,.et_pb_preload>div{visibility:hidden}.et_pb_preload,.et_pb_section.et_pb_section_video.et_pb_preload{position:relative;background:#464646!important}.et_pb_preload:before{content:"";position:absolute;top:50%;left:50%;background:url(https://haggai-bf.org/wp-content/themes/Divi/includes/builder/styles/images/preloader.gif) no-repeat;border-radius:32px;width:32px;height:32px;margin:-16px 0 0 -16px}.box-shadow-overlay{position:absolute;top:0;left:0;width:100%;height:100%;z-index:10;pointer-events:none}.et_pb_section>.box-shadow-overlay~.et_pb_row{z-index:11}body.safari .section_has_divider{will-change:transform}.et_pb_row>.box-shadow-overlay{z-index:8}.has-box-shadow-overlay{position:relative}.et_clickable{cursor:pointer}.screen-reader-text{border:0;clip:rect(1px,1px,1px,1px);-webkit-clip-path:inset(50%);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute!important;width:1px;word-wrap:normal!important}.et_multi_view_hidden,.et_multi_view_hidden_image{display:none!important}@keyframes multi-view-image-fade{0%{opacity:0}10%{opacity:.1}20%{opacity:.2}30%{opacity:.3}40%{opacity:.4}50%{opacity:.5}60%{opacity:.6}70%{opacity:.7}80%{opacity:.8}90%{opacity:.9}to{opacity:1}}.et_multi_view_image__loading{visibility:hidden}.et_multi_view_image__loaded{-webkit-animation:multi-view-image-fade .5s;animation:multi-view-image-fade .5s}#et-pb-motion-effects-offset-tracker{visibility:hidden!important;opacity:0;position:absolute;top:0;left:0}.et-pb-before-scroll-animation{opacity:0}header.et-l.et-l--header:after{clear:both;display:block;content:""}.et_pb_module{-webkit-animation-timing-function:linear;animation-timing-function:linear;-webkit-animation-duration:.2s;animation-duration:.2s}@-webkit-keyframes fadeBottom{0%{opacity:0;-webkit-transform:translateY(10%);transform:translateY(10%)}to{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes fadeBottom{0%{opacity:0;-webkit-transform:translateY(10%);transform:translateY(10%)}to{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@-webkit-keyframes fadeLeft{0%{opacity:0;-webkit-transform:translateX(-10%);transform:translateX(-10%)}to{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes fadeLeft{0%{opacity:0;-webkit-transform:translateX(-10%);transform:translateX(-10%)}to{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes fadeRight{0%{opacity:0;-webkit-transform:translateX(10%);transform:translateX(10%)}to{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes fadeRight{0%{opacity:0;-webkit-transform:translateX(10%);transform:translateX(10%)}to{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes fadeTop{0%{opacity:0;-webkit-transform:translateY(-10%);transform:translateY(-10%)}to{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@keyframes fadeTop{0%{opacity:0;-webkit-transform:translateY(-10%);transform:translateY(-10%)}to{opacity:1;-webkit-transform:translateX(0);transform:translateX(0)}}@-webkit-keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.et-waypoint:not(.et_pb_counters){opacity:0}@media (min-width:981px){.et_pb_section.et_section_specialty div.et_pb_row .et_pb_column .et_pb_column .et_pb_module.et-last-child,.et_pb_section.et_section_specialty div.et_pb_row .et_pb_column .et_pb_column .et_pb_module:last-child,.et_pb_section.et_section_specialty div.et_pb_row .et_pb_column .et_pb_row_inner .et_pb_column .et_pb_module.et-last-child,.et_pb_section.et_section_specialty div.et_pb_row .et_pb_column .et_pb_row_inner .et_pb_column .et_pb_module:last-child,.et_pb_section div.et_pb_row .et_pb_column .et_pb_module.et-last-child,.et_pb_section div.et_pb_row .et_pb_column .et_pb_module:last-child{margin-bottom:0}}@media (max-width:980px){.et_overlay.et_pb_inline_icon_tablet:before,.et_pb_inline_icon_tablet:before{content:attr(data-icon-tablet)}.et_parallax_bg.et_parallax_bg_tablet_exist,.et_parallax_gradient.et_parallax_gradient_tablet_exist{display:none}.et_parallax_bg.et_parallax_bg_tablet,.et_parallax_gradient.et_parallax_gradient_tablet{display:block}.et_pb_column .et_pb_module{margin-bottom:30px}.et_pb_row .et_pb_column .et_pb_module.et-last-child,.et_pb_row .et_pb_column .et_pb_module:last-child,.et_section_specialty .et_pb_row .et_pb_column .et_pb_module.et-last-child,.et_section_specialty .et_pb_row .et_pb_column .et_pb_module:last-child{margin-bottom:0}.et_pb_more_button{display:inline-block!important}.et_pb_bg_layout_light_tablet.et_pb_button,.et_pb_bg_layout_light_tablet.et_pb_module.et_pb_button,.et_pb_bg_layout_light_tablet .et_pb_more_button{color:#2ea3f2}.et_pb_bg_layout_light_tablet .et_pb_forgot_password a{color:#666}.et_pb_bg_layout_light_tablet h1,.et_pb_bg_layout_light_tablet h2,.et_pb_bg_layout_light_tablet h3,.et_pb_bg_layout_light_tablet h4,.et_pb_bg_layout_light_tablet h5,.et_pb_bg_layout_light_tablet h6{color:#333!important}.et_pb_module .et_pb_bg_layout_light_tablet.et_pb_button{color:#2ea3f2!important}.et_pb_bg_layout_light_tablet{color:#666!important}.et_pb_bg_layout_dark_tablet,.et_pb_bg_layout_dark_tablet h1,.et_pb_bg_layout_dark_tablet h2,.et_pb_bg_layout_dark_tablet h3,.et_pb_bg_layout_dark_tablet h4,.et_pb_bg_layout_dark_tablet h5,.et_pb_bg_layout_dark_tablet h6{color:#fff!important}.et_pb_bg_layout_dark_tablet.et_pb_button,.et_pb_bg_layout_dark_tablet.et_pb_module.et_pb_button,.et_pb_bg_layout_dark_tablet .et_pb_more_button{color:inherit}.et_pb_bg_layout_dark_tablet .et_pb_forgot_password a{color:#fff}.et_pb_module.et_pb_text_align_left-tablet{text-align:left}.et_pb_module.et_pb_text_align_center-tablet{text-align:center}.et_pb_module.et_pb_text_align_right-tablet{text-align:right}.et_pb_module.et_pb_text_align_justified-tablet{text-align:justify}}@media (max-width:767px){.et_pb_more_button{display:inline-block!important}.et_overlay.et_pb_inline_icon_phone:before,.et_pb_inline_icon_phone:before{content:attr(data-icon-phone)}.et_parallax_bg.et_parallax_bg_phone_exist,.et_parallax_gradient.et_parallax_gradient_phone_exist{display:none}.et_parallax_bg.et_parallax_bg_phone,.et_parallax_gradient.et_parallax_gradient_phone{display:block}.et-hide-mobile{display:none!important}.et_pb_bg_layout_light_phone.et_pb_button,.et_pb_bg_layout_light_phone.et_pb_module.et_pb_button,.et_pb_bg_layout_light_phone .et_pb_more_button{color:#2ea3f2}.et_pb_bg_layout_light_phone .et_pb_forgot_password a{color:#666}.et_pb_bg_layout_light_phone h1,.et_pb_bg_layout_light_phone h2,.et_pb_bg_layout_light_phone h3,.et_pb_bg_layout_light_phone h4,.et_pb_bg_layout_light_phone h5,.et_pb_bg_layout_light_phone h6{color:#333!important}.et_pb_module .et_pb_bg_layout_light_phone.et_pb_button{color:#2ea3f2!important}.et_pb_bg_layout_light_phone{color:#666!important}.et_pb_bg_layout_dark_phone,.et_pb_bg_layout_dark_phone h1,.et_pb_bg_layout_dark_phone h2,.et_pb_bg_layout_dark_phone h3,.et_pb_bg_layout_dark_phone h4,.et_pb_bg_layout_dark_phone h5,.et_pb_bg_layout_dark_phone h6{color:#fff!important}.et_pb_bg_layout_dark_phone.et_pb_button,.et_pb_bg_layout_dark_phone.et_pb_module.et_pb_button,.et_pb_bg_layout_dark_phone .et_pb_more_button{color:inherit}.et_pb_module .et_pb_bg_layout_dark_phone.et_pb_button{color:#fff!important}.et_pb_bg_layout_dark_phone .et_pb_forgot_password a{color:#fff}.et_pb_module.et_pb_text_align_left-phone{text-align:left}.et_pb_module.et_pb_text_align_center-phone{text-align:center}.et_pb_module.et_pb_text_align_right-phone{text-align:right}.et_pb_module.et_pb_text_align_justified-phone{text-align:justify}}@media (max-width:479px){a.et_pb_more_button{display:block}}@media (min-width:768px) and (max-width:980px){[data-et-multi-view-load-tablet-hidden=true]:not(.et_multi_view_swapped){display:none!important}}@media (max-width:767px){[data-et-multi-view-load-phone-hidden=true]:not(.et_multi_view_swapped){display:none!important}}.et_pb_menu.et_pb_menu--style-inline_centered_logo .et_pb_menu__menu nav ul{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}@-webkit-keyframes multi-view-image-fade{0%{-webkit-transform:scale(1);transform:scale(1);opacity:1}50%{-webkit-transform:scale(1.01);transform:scale(1.01);opacity:1}to{-webkit-transform:scale(1);transform:scale(1);opacity:1}}
/*# sourceURL=divi-style-parent-inline-inline-css */
</style>
<style id="divi-dynamic-critical-inline-css">
@font-face{font-family:ETmodules;font-display:block;src:url(//haggai-bf.org/wp-content/themes/Divi/core/admin/fonts/modules/all/modules.eot);src:url(//haggai-bf.org/wp-content/themes/Divi/core/admin/fonts/modules/all/modules.eot?#iefix) format("embedded-opentype"),url(//haggai-bf.org/wp-content/themes/Divi/core/admin/fonts/modules/all/modules.woff) format("woff"),url(//haggai-bf.org/wp-content/themes/Divi/core/admin/fonts/modules/all/modules.ttf) format("truetype"),url(//haggai-bf.org/wp-content/themes/Divi/core/admin/fonts/modules/all/modules.svg#ETmodules) format("svg");font-weight:400;font-style:normal}
@media (min-width:981px){.et_pb_gutters3 .et_pb_column,.et_pb_gutters3.et_pb_row .et_pb_column{margin-right:5.5%}.et_pb_gutters3 .et_pb_column_4_4,.et_pb_gutters3.et_pb_row .et_pb_column_4_4{width:100%}.et_pb_gutters3 .et_pb_column_4_4 .et_pb_module,.et_pb_gutters3.et_pb_row .et_pb_column_4_4 .et_pb_module{margin-bottom:2.75%}.et_pb_gutters3 .et_pb_column_3_4,.et_pb_gutters3.et_pb_row .et_pb_column_3_4{width:73.625%}.et_pb_gutters3 .et_pb_column_3_4 .et_pb_module,.et_pb_gutters3.et_pb_row .et_pb_column_3_4 .et_pb_module{margin-bottom:3.735%}.et_pb_gutters3 .et_pb_column_2_3,.et_pb_gutters3.et_pb_row .et_pb_column_2_3{width:64.833%}.et_pb_gutters3 .et_pb_column_2_3 .et_pb_module,.et_pb_gutters3.et_pb_row .et_pb_column_2_3 .et_pb_module{margin-bottom:4.242%}.et_pb_gutters3 .et_pb_column_3_5,.et_pb_gutters3.et_pb_row .et_pb_column_3_5{width:57.8%}.et_pb_gutters3 .et_pb_column_3_5 .et_pb_module,.et_pb_gutters3.et_pb_row .et_pb_column_3_5 .et_pb_module{margin-bottom:4.758%}.et_pb_gutters3 .et_pb_column_1_2,.et_pb_gutters3.et_pb_row .et_pb_column_1_2{width:47.25%}.et_pb_gutters3 .et_pb_column_1_2 .et_pb_module,.et_pb_gutters3.et_pb_row .et_pb_column_1_2 .et_pb_module{margin-bottom:5.82%}.et_pb_gutters3 .et_pb_column_2_5,.et_pb_gutters3.et_pb_row .et_pb_column_2_5{width:36.7%}.et_pb_gutters3 .et_pb_column_2_5 .et_pb_module,.et_pb_gutters3.et_pb_row .et_pb_column_2_5 .et_pb_module{margin-bottom:7.493%}.et_pb_gutters3 .et_pb_column_1_3,.et_pb_gutters3.et_pb_row .et_pb_column_1_3{width:29.6667%}.et_pb_gutters3 .et_pb_column_1_3 .et_pb_module,.et_pb_gutters3.et_pb_row .et_pb_column_1_3 .et_pb_module{margin-bottom:9.27%}.et_pb_gutters3 .et_pb_column_1_4,.et_pb_gutters3.et_pb_row .et_pb_column_1_4{width:20.875%}.et_pb_gutters3 .et_pb_column_1_4 .et_pb_module,.et_pb_gutters3.et_pb_row .et_pb_column_1_4 .et_pb_module{margin-bottom:13.174%}.et_pb_gutters3 .et_pb_column_1_5,.et_pb_gutters3.et_pb_row .et_pb_column_1_5{width:15.6%}.et_pb_gutters3 .et_pb_column_1_5 .et_pb_module,.et_pb_gutters3.et_pb_row .et_pb_column_1_5 .et_pb_module{margin-bottom:17.628%}.et_pb_gutters3 .et_pb_column_1_6,.et_pb_gutters3.et_pb_row .et_pb_column_1_6{width:12.0833%}.et_pb_gutters3 .et_pb_column_1_6 .et_pb_module,.et_pb_gutters3.et_pb_row .et_pb_column_1_6 .et_pb_module{margin-bottom:22.759%}.et_pb_gutters3 .et_full_width_page.woocommerce-page ul.products li.product{width:20.875%;margin-right:5.5%;margin-bottom:5.5%}.et_pb_gutters3.et_left_sidebar.woocommerce-page #main-content ul.products li.product,.et_pb_gutters3.et_right_sidebar.woocommerce-page #main-content ul.products li.product{width:28.353%;margin-right:7.47%}.et_pb_gutters3.et_left_sidebar.woocommerce-page #main-content ul.products.columns-1 li.product,.et_pb_gutters3.et_right_sidebar.woocommerce-page #main-content ul.products.columns-1 li.product{width:100%;margin-right:0}.et_pb_gutters3.et_left_sidebar.woocommerce-page #main-content ul.products.columns-2 li.product,.et_pb_gutters3.et_right_sidebar.woocommerce-page #main-content ul.products.columns-2 li.product{width:48%;margin-right:4%}.et_pb_gutters3.et_left_sidebar.woocommerce-page #main-content ul.products.columns-2 li:nth-child(2n+2),.et_pb_gutters3.et_right_sidebar.woocommerce-page #main-content ul.products.columns-2 li:nth-child(2n+2){margin-right:0}.et_pb_gutters3.et_left_sidebar.woocommerce-page #main-content ul.products.columns-2 li:nth-child(3n+1),.et_pb_gutters3.et_right_sidebar.woocommerce-page #main-content ul.products.columns-2 li:nth-child(3n+1){clear:none}}
@media (min-width:981px){.et_pb_gutter.et_pb_gutters1 #left-area{width:75%}.et_pb_gutter.et_pb_gutters1 #sidebar{width:25%}.et_pb_gutters1.et_right_sidebar #left-area{padding-right:0}.et_pb_gutters1.et_left_sidebar #left-area{padding-left:0}.et_pb_gutter.et_pb_gutters1.et_right_sidebar #main-content .container:before{right:25%!important}.et_pb_gutter.et_pb_gutters1.et_left_sidebar #main-content .container:before{left:25%!important}.et_pb_gutters1 .et_pb_column,.et_pb_gutters1.et_pb_row .et_pb_column{margin-right:0}.et_pb_gutters1 .et_pb_column_4_4,.et_pb_gutters1.et_pb_row .et_pb_column_4_4{width:100%}.et_pb_gutters1 .et_pb_column_4_4 .et_pb_module,.et_pb_gutters1.et_pb_row .et_pb_column_4_4 .et_pb_module{margin-bottom:0}.et_pb_gutters1 .et_pb_column_3_4,.et_pb_gutters1.et_pb_row .et_pb_column_3_4{width:75%}.et_pb_gutters1 .et_pb_column_3_4 .et_pb_module,.et_pb_gutters1.et_pb_row .et_pb_column_3_4 .et_pb_module{margin-bottom:0}.et_pb_gutters1 .et_pb_column_2_3,.et_pb_gutters1.et_pb_row .et_pb_column_2_3{width:66.667%}.et_pb_gutters1 .et_pb_column_2_3 .et_pb_module,.et_pb_gutters1.et_pb_row .et_pb_column_2_3 .et_pb_module{margin-bottom:0}.et_pb_gutters1 .et_pb_column_3_5,.et_pb_gutters1.et_pb_row .et_pb_column_3_5{width:60%}.et_pb_gutters1 .et_pb_column_3_5 .et_pb_module,.et_pb_gutters1.et_pb_row .et_pb_column_3_5 .et_pb_module{margin-bottom:0}.et_pb_gutters1 .et_pb_column_1_2,.et_pb_gutters1.et_pb_row .et_pb_column_1_2{width:50%}.et_pb_gutters1 .et_pb_column_1_2 .et_pb_module,.et_pb_gutters1.et_pb_row .et_pb_column_1_2 .et_pb_module{margin-bottom:0}.et_pb_gutters1 .et_pb_column_2_5,.et_pb_gutters1.et_pb_row .et_pb_column_2_5{width:40%}.et_pb_gutters1 .et_pb_column_2_5 .et_pb_module,.et_pb_gutters1.et_pb_row .et_pb_column_2_5 .et_pb_module{margin-bottom:0}.et_pb_gutters1 .et_pb_column_1_3,.et_pb_gutters1.et_pb_row .et_pb_column_1_3{width:33.3333%}.et_pb_gutters1 .et_pb_column_1_3 .et_pb_module,.et_pb_gutters1.et_pb_row .et_pb_column_1_3 .et_pb_module{margin-bottom:0}.et_pb_gutters1 .et_pb_column_1_4,.et_pb_gutters1.et_pb_row .et_pb_column_1_4{width:25%}.et_pb_gutters1 .et_pb_column_1_4 .et_pb_module,.et_pb_gutters1.et_pb_row .et_pb_column_1_4 .et_pb_module{margin-bottom:0}.et_pb_gutters1 .et_pb_column_1_5,.et_pb_gutters1.et_pb_row .et_pb_column_1_5{width:20%}.et_pb_gutters1 .et_pb_column_1_5 .et_pb_module,.et_pb_gutters1.et_pb_row .et_pb_column_1_5 .et_pb_module{margin-bottom:0}.et_pb_gutters1 .et_pb_column_1_6,.et_pb_gutters1.et_pb_row .et_pb_column_1_6{width:16.6667%}.et_pb_gutters1 .et_pb_column_1_6 .et_pb_module,.et_pb_gutters1.et_pb_row .et_pb_column_1_6 .et_pb_module{margin-bottom:0}.et_pb_gutters1 .et_full_width_page.woocommerce-page ul.products li.product{width:25%;margin-right:0;margin-bottom:0}.et_pb_gutters1.et_left_sidebar.woocommerce-page #main-content ul.products li.product,.et_pb_gutters1.et_right_sidebar.woocommerce-page #main-content ul.products li.product{width:33.333%;margin-right:0}}@media (max-width:980px){.et_pb_gutters1 .et_pb_column,.et_pb_gutters1 .et_pb_column .et_pb_module,.et_pb_gutters1.et_pb_row .et_pb_column,.et_pb_gutters1.et_pb_row .et_pb_column .et_pb_module{margin-bottom:0}.et_pb_gutters1 .et_pb_row_1-2_1-4_1-4>.et_pb_column.et_pb_column_1_4,.et_pb_gutters1 .et_pb_row_1-4_1-4>.et_pb_column.et_pb_column_1_4,.et_pb_gutters1 .et_pb_row_1-4_1-4_1-2>.et_pb_column.et_pb_column_1_4,.et_pb_gutters1 .et_pb_row_1-5_1-5_3-5>.et_pb_column.et_pb_column_1_5,.et_pb_gutters1 .et_pb_row_3-5_1-5_1-5>.et_pb_column.et_pb_column_1_5,.et_pb_gutters1 .et_pb_row_4col>.et_pb_column.et_pb_column_1_4,.et_pb_gutters1 .et_pb_row_5col>.et_pb_column.et_pb_column_1_5,.et_pb_gutters1.et_pb_row_1-2_1-4_1-4>.et_pb_column.et_pb_column_1_4,.et_pb_gutters1.et_pb_row_1-4_1-4>.et_pb_column.et_pb_column_1_4,.et_pb_gutters1.et_pb_row_1-4_1-4_1-2>.et_pb_column.et_pb_column_1_4,.et_pb_gutters1.et_pb_row_1-5_1-5_3-5>.et_pb_column.et_pb_column_1_5,.et_pb_gutters1.et_pb_row_3-5_1-5_1-5>.et_pb_column.et_pb_column_1_5,.et_pb_gutters1.et_pb_row_4col>.et_pb_column.et_pb_column_1_4,.et_pb_gutters1.et_pb_row_5col>.et_pb_column.et_pb_column_1_5{width:50%;margin-right:0}.et_pb_gutters1 .et_pb_row_1-2_1-6_1-6_1-6>.et_pb_column.et_pb_column_1_6,.et_pb_gutters1 .et_pb_row_1-6_1-6_1-6>.et_pb_column.et_pb_column_1_6,.et_pb_gutters1 .et_pb_row_1-6_1-6_1-6_1-2>.et_pb_column.et_pb_column_1_6,.et_pb_gutters1 .et_pb_row_6col>.et_pb_column.et_pb_column_1_6,.et_pb_gutters1.et_pb_row_1-2_1-6_1-6_1-6>.et_pb_column.et_pb_column_1_6,.et_pb_gutters1.et_pb_row_1-6_1-6_1-6>.et_pb_column.et_pb_column_1_6,.et_pb_gutters1.et_pb_row_1-6_1-6_1-6_1-2>.et_pb_column.et_pb_column_1_6,.et_pb_gutters1.et_pb_row_6col>.et_pb_column.et_pb_column_1_6{width:33.333%;margin-right:0}.et_pb_gutters1 .et_pb_row_1-6_1-6_1-6_1-6>.et_pb_column.et_pb_column_1_6,.et_pb_gutters1.et_pb_row_1-6_1-6_1-6_1-6>.et_pb_column.et_pb_column_1_6{width:50%;margin-right:0}}@media (max-width:767px){.et_pb_gutters1 .et_pb_column,.et_pb_gutters1 .et_pb_column .et_pb_module,.et_pb_gutters1.et_pb_row .et_pb_column,.et_pb_gutters1.et_pb_row .et_pb_column .et_pb_module{margin-bottom:0}}@media (max-width:479px){.et_pb_gutters1 .et_pb_column,.et_pb_gutters1.et_pb_row .et_pb_column{margin:0!important}.et_pb_gutters1 .et_pb_column .et_pb_module,.et_pb_gutters1.et_pb_row .et_pb_column .et_pb_module{margin-bottom:0}}
#et-secondary-menu li,#top-menu li{word-wrap:break-word}.nav li ul,.et_mobile_menu{border-color:#2EA3F2}.mobile_menu_bar:before,.mobile_menu_bar:after,#top-menu li.current-menu-ancestor>a,#top-menu li.current-menu-item>a{color:#2EA3F2}#main-header{-webkit-transition:background-color 0.4s, color 0.4s, opacity 0.4s ease-in-out, -webkit-transform 0.4s;transition:background-color 0.4s, color 0.4s, opacity 0.4s ease-in-out, -webkit-transform 0.4s;transition:background-color 0.4s, color 0.4s, transform 0.4s, opacity 0.4s ease-in-out;transition:background-color 0.4s, color 0.4s, transform 0.4s, opacity 0.4s ease-in-out, -webkit-transform 0.4s}#main-header.et-disabled-animations *{-webkit-transition-duration:0s !important;transition-duration:0s !important}.container{text-align:left;position:relative}.et_fixed_nav.et_show_nav #page-container{padding-top:80px}.et_fixed_nav.et_show_nav.et-tb #page-container,.et_fixed_nav.et_show_nav.et-tb-has-header #page-container{padding-top:0 !important}.et_fixed_nav.et_show_nav.et_secondary_nav_enabled #page-container{padding-top:111px}.et_fixed_nav.et_show_nav.et_secondary_nav_enabled.et_header_style_centered #page-container{padding-top:177px}.et_fixed_nav.et_show_nav.et_header_style_centered #page-container{padding-top:147px}.et_fixed_nav #main-header{position:fixed}.et-cloud-item-editor #page-container{padding-top:0 !important}.et_header_style_left #et-top-navigation{padding-top:33px}.et_header_style_left #et-top-navigation nav>ul>li>a{padding-bottom:33px}.et_header_style_left .logo_container{position:absolute;height:100%;width:100%}.et_header_style_left #et-top-navigation .mobile_menu_bar{padding-bottom:24px}.et_hide_search_icon #et_top_search{display:none !important}#logo{width:auto;-webkit-transition:all 0.4s ease-in-out;transition:all 0.4s ease-in-out;margin-bottom:0;max-height:54%;display:inline-block;float:none;vertical-align:middle;-webkit-transform:translate3d(0, 0, 0)}.et_pb_svg_logo #logo{height:54%}.logo_container{-webkit-transition:all 0.4s ease-in-out;transition:all 0.4s ease-in-out}span.logo_helper{display:inline-block;height:100%;vertical-align:middle;width:0}.safari .centered-inline-logo-wrap{-webkit-transform:translate3d(0, 0, 0);-webkit-transition:all 0.4s ease-in-out;transition:all 0.4s ease-in-out}#et-define-logo-wrap img{width:100%}.gecko #et-define-logo-wrap.svg-logo{position:relative !important}#top-menu-nav,#top-menu{line-height:0}#et-top-navigation{font-weight:600}.et_fixed_nav #et-top-navigation{-webkit-transition:all 0.4s ease-in-out;transition:all 0.4s ease-in-out}.et-cart-info span:before{content:"\e07a";margin-right:10px;position:relative}nav#top-menu-nav,#top-menu,nav.et-menu-nav,.et-menu{float:left}#top-menu li{display:inline-block;font-size:14px;padding-right:22px}#top-menu>li:last-child{padding-right:0}.et_fullwidth_nav.et_non_fixed_nav.et_header_style_left #top-menu>li:last-child>ul.sub-menu{right:0}#top-menu a{color:rgba(0,0,0,0.6);text-decoration:none;display:block;position:relative;-webkit-transition:opacity 0.4s ease-in-out, background-color 0.4s ease-in-out;transition:opacity 0.4s ease-in-out, background-color 0.4s ease-in-out}#top-menu-nav>ul>li>a:hover{opacity:0.7;-webkit-transition:all 0.4s ease-in-out;transition:all 0.4s ease-in-out}#et_search_icon:before{content:"\55";font-size:17px;left:0;position:absolute;top:-3px}#et_search_icon:hover{cursor:pointer}#et_top_search{float:right;margin:3px 0 0 22px;position:relative;display:block;width:18px}#et_top_search.et_search_opened{position:absolute;width:100%}.et-search-form{top:0;bottom:0;right:0;position:absolute;z-index:1000;width:100%}.et-search-form input{width:90%;border:none;color:#333;position:absolute;top:0;bottom:0;right:30px;margin:auto;background:transparent}.et-search-form .et-search-field::-ms-clear{width:0;height:0;display:none}.et_search_form_container{-webkit-animation:none;animation:none;-o-animation:none}.container.et_search_form_container{position:relative;opacity:0;height:1px}.container.et_search_form_container.et_pb_search_visible{z-index:999;-webkit-animation:fadeInTop 1s 1 cubic-bezier(0.77, 0, 0.175, 1);animation:fadeInTop 1s 1 cubic-bezier(0.77, 0, 0.175, 1)}.et_pb_search_visible.et_pb_no_animation{opacity:1}.et_pb_search_form_hidden{-webkit-animation:fadeOutTop 1s 1 cubic-bezier(0.77, 0, 0.175, 1);animation:fadeOutTop 1s 1 cubic-bezier(0.77, 0, 0.175, 1)}span.et_close_search_field{display:block;width:30px;height:30px;z-index:99999;position:absolute;right:0;cursor:pointer;top:0;bottom:0;margin:auto}span.et_close_search_field:after{font-family:'ETmodules';content:'\4d';speak:none;font-weight:normal;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;font-size:32px;display:inline-block;-webkit-box-sizing:border-box;box-sizing:border-box}.container.et_menu_container{z-index:99}.container.et_search_form_container.et_pb_search_form_hidden{z-index:1 !important}.et_search_outer{width:100%;overflow:hidden;position:absolute;top:0}.container.et_pb_menu_hidden{z-index:-1}form.et-search-form{background:rgba(0,0,0,0) !important}input[type="search"]::-webkit-search-cancel-button{-webkit-appearance:none}.et-cart-info{color:inherit}#et-top-navigation .et-cart-info{float:left;margin:-2px 0 0 22px;font-size:16px}#et-top-navigation{float:right}#top-menu li li{padding:0 20px;margin:0}#top-menu li li a{padding:6px 20px;width:200px}.nav li.et-touch-hover>ul{opacity:1;visibility:visible}#top-menu .menu-item-has-children>a:first-child:after,#et-secondary-nav .menu-item-has-children>a:first-child:after{font-family:'ETmodules';content:"3";font-size:16px;position:absolute;right:0;top:0;font-weight:800}#top-menu .menu-item-has-children>a:first-child,#et-secondary-nav .menu-item-has-children>a:first-child{padding-right:20px}#top-menu li .menu-item-has-children>a:first-child{padding-right:40px}#top-menu li .menu-item-has-children>a:first-child:after{right:20px;top:6px}#top-menu li.mega-menu{position:inherit}#top-menu li.mega-menu>ul{padding:30px 20px;position:absolute !important;width:100%;left:0 !important}#top-menu li.mega-menu ul li{margin:0;float:left !important;display:block !important;padding:0 !important}#top-menu li.mega-menu>ul>li:nth-of-type(4n){clear:right}#top-menu li.mega-menu>ul>li:nth-of-type(4n+1){clear:left}#top-menu li.mega-menu ul li li{width:100%}#top-menu li.mega-menu li>ul{-webkit-animation:none !important;animation:none !important;padding:0px;border:none;left:auto;top:auto;width:90% !important;position:relative;-webkit-box-shadow:none;box-shadow:none}#top-menu li.mega-menu li ul{visibility:visible;opacity:1;display:none}#top-menu li.mega-menu.et-hover li ul{display:block}#top-menu li.mega-menu.et-hover>ul{opacity:1 !important;visibility:visible !important}#top-menu li.mega-menu>ul>li>a{width:90%;padding:0 20px 10px}#top-menu li.mega-menu>ul>li>a:first-child{padding-top:0 !important;font-weight:bold;border-bottom:1px solid rgba(0,0,0,0.03)}#top-menu li.mega-menu>ul>li>a:first-child:hover{background-color:transparent !important}#top-menu li.mega-menu li>a{width:100%}#top-menu li.mega-menu.mega-menu-parent li li,#top-menu li.mega-menu.mega-menu-parent li>a{width:100% !important}#top-menu li.mega-menu.mega-menu-parent li>.sub-menu{float:left;width:100% !important}#top-menu li.mega-menu>ul>li{width:25%;margin:0}#top-menu li.mega-menu.mega-menu-parent-3>ul>li{width:33.33%}#top-menu li.mega-menu.mega-menu-parent-2>ul>li{width:50%}#top-menu li.mega-menu.mega-menu-parent-1>ul>li{width:100%}#top-menu li.mega-menu .menu-item-has-children>a:first-child:after{display:none}#top-menu li.mega-menu>ul>li>ul>li{width:100%;margin:0}#et_mobile_nav_menu{float:right;display:none}.mobile_menu_bar{position:relative;display:block;line-height:0}.mobile_menu_bar:before,.et_toggle_slide_menu:after{content:"\61";font-size:32px;left:0;position:relative;top:0;cursor:pointer}.mobile_nav .select_page{display:none}.et_pb_menu_hidden #top-menu,.et_pb_menu_hidden #et_search_icon:before,.et_pb_menu_hidden .et-cart-info{opacity:0;-webkit-animation:fadeOutBottom 1s 1 cubic-bezier(0.77, 0, 0.175, 1);animation:fadeOutBottom 1s 1 cubic-bezier(0.77, 0, 0.175, 1)}.et_pb_menu_visible #top-menu,.et_pb_menu_visible #et_search_icon:before,.et_pb_menu_visible .et-cart-info{z-index:99;opacity:1;-webkit-animation:fadeInBottom 1s 1 cubic-bezier(0.77, 0, 0.175, 1);animation:fadeInBottom 1s 1 cubic-bezier(0.77, 0, 0.175, 1)}.et_pb_menu_hidden #top-menu,.et_pb_menu_hidden #et_search_icon:before,.et_pb_menu_hidden .mobile_menu_bar{opacity:0;-webkit-animation:fadeOutBottom 1s 1 cubic-bezier(0.77, 0, 0.175, 1);animation:fadeOutBottom 1s 1 cubic-bezier(0.77, 0, 0.175, 1)}.et_pb_menu_visible #top-menu,.et_pb_menu_visible #et_search_icon:before,.et_pb_menu_visible .mobile_menu_bar{z-index:99;opacity:1;-webkit-animation:fadeInBottom 1s 1 cubic-bezier(0.77, 0, 0.175, 1);animation:fadeInBottom 1s 1 cubic-bezier(0.77, 0, 0.175, 1)}.et_pb_no_animation #top-menu,.et_pb_no_animation #et_search_icon:before,.et_pb_no_animation .mobile_menu_bar,.et_pb_no_animation.et_search_form_container{animation:none !important;-o-animation:none !important;-webkit-animation:none !important;-moz-animation:none !important}body.admin-bar.et_fixed_nav #main-header{top:32px}body.et-wp-pre-3_8.admin-bar.et_fixed_nav #main-header{top:28px}body.et_fixed_nav.et_secondary_nav_enabled #main-header{top:30px}body.admin-bar.et_fixed_nav.et_secondary_nav_enabled #main-header{top:63px}@media all and (min-width: 981px){.et_hide_primary_logo #main-header:not(.et-fixed-header) .logo_container,.et_hide_fixed_logo #main-header.et-fixed-header .logo_container{height:0;opacity:0;-webkit-transition:all 0.4s ease-in-out;transition:all 0.4s ease-in-out}.et_hide_primary_logo #main-header:not(.et-fixed-header) .centered-inline-logo-wrap,.et_hide_fixed_logo #main-header.et-fixed-header .centered-inline-logo-wrap{height:0;opacity:0;padding:0}.et-animated-content#page-container{-webkit-transition:margin-top 0.4s ease-in-out;transition:margin-top 0.4s ease-in-out}.et_hide_nav #page-container{-webkit-transition:none;transition:none}.et_fullwidth_nav .et-search-form,.et_fullwidth_nav .et_close_search_field{right:30px}#main-header.et-fixed-header{-webkit-box-shadow:0 0 7px rgba(0,0,0,0.1) !important;box-shadow:0 0 7px rgba(0,0,0,0.1) !important}.et_header_style_left .et-fixed-header #et-top-navigation{padding-top:20px}.et_header_style_left .et-fixed-header #et-top-navigation nav>ul>li>a{padding-bottom:20px}.et_hide_nav.et_fixed_nav #main-header{opacity:0}.et_hide_nav.et_fixed_nav .et-fixed-header#main-header{-webkit-transform:translateY(0px) !important;transform:translateY(0px) !important;opacity:1}.et_hide_nav .centered-inline-logo-wrap,.et_hide_nav.et_fixed_nav #main-header,.et_hide_nav.et_fixed_nav #main-header,.et_hide_nav .centered-inline-logo-wrap{-webkit-transition-duration:.7s;transition-duration:.7s}.et_hide_nav #page-container{padding-top:0 !important}.et_primary_nav_dropdown_animation_fade #et-top-navigation ul li:hover>ul,.et_secondary_nav_dropdown_animation_fade #et-secondary-nav li:hover>ul{-webkit-transition:all .2s ease-in-out;transition:all .2s ease-in-out}.et_primary_nav_dropdown_animation_slide #et-top-navigation ul li:hover>ul,.et_secondary_nav_dropdown_animation_slide #et-secondary-nav li:hover>ul{-webkit-animation:fadeLeft .4s ease-in-out;animation:fadeLeft .4s ease-in-out}.et_primary_nav_dropdown_animation_expand #et-top-navigation ul li:hover>ul,.et_secondary_nav_dropdown_animation_expand #et-secondary-nav li:hover>ul{-webkit-transform-origin:0 0;transform-origin:0 0;-webkit-animation:Grow .4s ease-in-out;animation:Grow .4s ease-in-out;-webkit-backface-visibility:visible !important;backface-visibility:visible !important}.et_primary_nav_dropdown_animation_flip #et-top-navigation ul li ul li:hover>ul,.et_secondary_nav_dropdown_animation_flip #et-secondary-nav ul li:hover>ul{-webkit-animation:flipInX .6s ease-in-out;animation:flipInX .6s ease-in-out;-webkit-backface-visibility:visible !important;backface-visibility:visible !important}.et_primary_nav_dropdown_animation_flip #et-top-navigation ul li:hover>ul,.et_secondary_nav_dropdown_animation_flip #et-secondary-nav li:hover>ul{-webkit-animation:flipInY .6s ease-in-out;animation:flipInY .6s ease-in-out;-webkit-backface-visibility:visible !important;backface-visibility:visible !important}.et_fullwidth_nav #main-header .container{width:100%;max-width:100%;padding-right:32px;padding-left:30px}.et_non_fixed_nav.et_fullwidth_nav.et_header_style_left #main-header .container{padding-left:0}.et_non_fixed_nav.et_fullwidth_nav.et_header_style_left .logo_container{padding-left:30px}}@media all and (max-width: 980px){.et_fixed_nav.et_show_nav.et_secondary_nav_enabled #page-container,.et_fixed_nav.et_show_nav #page-container{padding-top:80px}.et_fixed_nav.et_show_nav.et-tb #page-container,.et_fixed_nav.et_show_nav.et-tb-has-header #page-container{padding-top:0 !important}.et_non_fixed_nav #page-container{padding-top:0}.et_fixed_nav.et_secondary_nav_only_menu.admin-bar #main-header{top:32px !important}.et_hide_mobile_logo #main-header .logo_container{display:none;opacity:0;-webkit-transition:all 0.4s ease-in-out;transition:all 0.4s ease-in-out}#top-menu{display:none}.et_hide_nav.et_fixed_nav #main-header{-webkit-transform:translateY(0px) !important;transform:translateY(0px) !important;opacity:1}#et-top-navigation{margin-right:0;-webkit-transition:none;transition:none}.et_fixed_nav #main-header{position:absolute}.et_header_style_left .et-fixed-header #et-top-navigation,.et_header_style_left #et-top-navigation{padding-top:24px;display:block}.et_fixed_nav #main-header{-webkit-transition:none;transition:none}.et_fixed_nav_temp #main-header{top:0 !important}#logo,.logo_container,#main-header,.container{-webkit-transition:none;transition:none}.et_header_style_left #logo{max-width:50%}#et_top_search{margin:0 35px 0 0;float:left}#et_search_icon:before{top:7px}.et_header_style_left .et-search-form{width:50% !important;max-width:50% !important}#et_mobile_nav_menu{display:block}#et-top-navigation .et-cart-info{margin-top:5px}}@media screen and (max-width: 782px){body.admin-bar.et_fixed_nav #main-header{top:46px}}@media all and (max-width: 767px){#et-top-navigation{margin-right:0}body.admin-bar.et_fixed_nav #main-header{top:46px}}@media all and (max-width: 479px){#et-top-navigation{margin-right:0}}@media print{#top-header,#main-header{position:relative !important;top:auto !important;right:auto !important;bottom:auto !important;left:auto !important}}
@-webkit-keyframes fadeOutTop{0%{opacity:1;-webkit-transform:translatey(0);transform:translatey(0)}to{opacity:0;-webkit-transform:translatey(-60%);transform:translatey(-60%)}}@keyframes fadeOutTop{0%{opacity:1;-webkit-transform:translatey(0);transform:translatey(0)}to{opacity:0;-webkit-transform:translatey(-60%);transform:translatey(-60%)}}@-webkit-keyframes fadeInTop{0%{opacity:0;-webkit-transform:translatey(-60%);transform:translatey(-60%)}to{opacity:1;-webkit-transform:translatey(0);transform:translatey(0)}}@keyframes fadeInTop{0%{opacity:0;-webkit-transform:translatey(-60%);transform:translatey(-60%)}to{opacity:1;-webkit-transform:translatey(0);transform:translatey(0)}}@-webkit-keyframes fadeInBottom{0%{opacity:0;-webkit-transform:translatey(60%);transform:translatey(60%)}to{opacity:1;-webkit-transform:translatey(0);transform:translatey(0)}}@keyframes fadeInBottom{0%{opacity:0;-webkit-transform:translatey(60%);transform:translatey(60%)}to{opacity:1;-webkit-transform:translatey(0);transform:translatey(0)}}@-webkit-keyframes fadeOutBottom{0%{opacity:1;-webkit-transform:translatey(0);transform:translatey(0)}to{opacity:0;-webkit-transform:translatey(60%);transform:translatey(60%)}}@keyframes fadeOutBottom{0%{opacity:1;-webkit-transform:translatey(0);transform:translatey(0)}to{opacity:0;-webkit-transform:translatey(60%);transform:translatey(60%)}}@-webkit-keyframes Grow{0%{opacity:0;-webkit-transform:scaleY(.5);transform:scaleY(.5)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}@keyframes Grow{0%{opacity:0;-webkit-transform:scaleY(.5);transform:scaleY(.5)}to{opacity:1;-webkit-transform:scale(1);transform:scale(1)}}/*!
	  * Animate.css - http://daneden.me/animate
	  * Licensed under the MIT license - http://opensource.org/licenses/MIT
	  * Copyright (c) 2015 Daniel Eden
	 */@-webkit-keyframes flipInX{0%{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateX(10deg);transform:perspective(400px) rotateX(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateX(-5deg);transform:perspective(400px) rotateX(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInX{0%{-webkit-transform:perspective(400px) rotateX(90deg);transform:perspective(400px) rotateX(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateX(-20deg);transform:perspective(400px) rotateX(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateX(10deg);transform:perspective(400px) rotateX(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateX(-5deg);transform:perspective(400px) rotateX(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@-webkit-keyframes flipInY{0%{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateY(-20deg);transform:perspective(400px) rotateY(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateY(10deg);transform:perspective(400px) rotateY(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateY(-5deg);transform:perspective(400px) rotateY(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}@keyframes flipInY{0%{-webkit-transform:perspective(400px) rotateY(90deg);transform:perspective(400px) rotateY(90deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in;opacity:0}40%{-webkit-transform:perspective(400px) rotateY(-20deg);transform:perspective(400px) rotateY(-20deg);-webkit-animation-timing-function:ease-in;animation-timing-function:ease-in}60%{-webkit-transform:perspective(400px) rotateY(10deg);transform:perspective(400px) rotateY(10deg);opacity:1}80%{-webkit-transform:perspective(400px) rotateY(-5deg);transform:perspective(400px) rotateY(-5deg)}to{-webkit-transform:perspective(400px);transform:perspective(400px)}}
#main-header{line-height:23px;font-weight:500;top:0;background-color:#fff;width:100%;-webkit-box-shadow:0 1px 0 rgba(0,0,0,.1);box-shadow:0 1px 0 rgba(0,0,0,.1);position:relative;z-index:99999}.nav li li{padding:0 20px;margin:0}.et-menu li li a{padding:6px 20px;width:200px}.nav li{position:relative;line-height:1em}.nav li li{position:relative;line-height:2em}.nav li ul{position:absolute;padding:20px 0;z-index:9999;width:240px;background:#fff;visibility:hidden;opacity:0;border-top:3px solid #2ea3f2;box-shadow:0 2px 5px rgba(0,0,0,.1);-moz-box-shadow:0 2px 5px rgba(0,0,0,.1);-webkit-box-shadow:0 2px 5px rgba(0,0,0,.1);-webkit-transform:translateZ(0);text-align:left}.nav li.et-hover>ul{visibility:visible}.nav li.et-touch-hover>ul,.nav li:hover>ul{opacity:1;visibility:visible}.nav li li ul{z-index:1000;top:-23px;left:240px}.nav li.et-reverse-direction-nav li ul{left:auto;right:240px}.nav li:hover{visibility:inherit}.et_mobile_menu li a,.nav li li a{font-size:14px;-webkit-transition:opacity .2s ease-in-out,background-color .2s ease-in-out;transition:opacity .2s ease-in-out,background-color .2s ease-in-out}.et_mobile_menu li a:hover,.nav ul li a:hover{background-color:rgba(0,0,0,.03);opacity:.7}.et-dropdown-removing>ul{display:none}.mega-menu .et-dropdown-removing>ul{display:block}.et-menu .menu-item-has-children>a:first-child:after{font-family:ETmodules;content:"3";font-size:16px;position:absolute;right:0;top:0;font-weight:800}.et-menu .menu-item-has-children>a:first-child{padding-right:20px}.et-menu li li.menu-item-has-children>a:first-child:after{right:20px;top:6px}.et-menu-nav li.mega-menu{position:inherit}.et-menu-nav li.mega-menu>ul{padding:30px 20px;position:absolute!important;width:100%;left:0!important}.et-menu-nav li.mega-menu ul li{margin:0;float:left!important;display:block!important;padding:0!important}.et-menu-nav li.mega-menu li>ul{-webkit-animation:none!important;animation:none!important;padding:0;border:none;left:auto;top:auto;width:240px!important;position:relative;box-shadow:none;-webkit-box-shadow:none}.et-menu-nav li.mega-menu li ul{visibility:visible;opacity:1;display:none}.et-menu-nav li.mega-menu.et-hover li ul,.et-menu-nav li.mega-menu:hover li ul{display:block}.et-menu-nav li.mega-menu:hover>ul{opacity:1!important;visibility:visible!important}.et-menu-nav li.mega-menu>ul>li>a:first-child{padding-top:0!important;font-weight:700;border-bottom:1px solid rgba(0,0,0,.03)}.et-menu-nav li.mega-menu>ul>li>a:first-child:hover{background-color:transparent!important}.et-menu-nav li.mega-menu li>a{width:200px!important}.et-menu-nav li.mega-menu.mega-menu-parent li>a,.et-menu-nav li.mega-menu.mega-menu-parent li li{width:100%!important}.et-menu-nav li.mega-menu.mega-menu-parent li>.sub-menu{float:left;width:100%!important}.et-menu-nav li.mega-menu>ul>li{width:25%;margin:0}.et-menu-nav li.mega-menu.mega-menu-parent-3>ul>li{width:33.33%}.et-menu-nav li.mega-menu.mega-menu-parent-2>ul>li{width:50%}.et-menu-nav li.mega-menu.mega-menu-parent-1>ul>li{width:100%}.et_pb_fullwidth_menu li.mega-menu .menu-item-has-children>a:first-child:after,.et_pb_menu li.mega-menu .menu-item-has-children>a:first-child:after{display:none}.et_fullwidth_nav #top-menu li.mega-menu>ul{width:auto;left:30px!important;right:30px!important}.et_mobile_menu{position:absolute;left:0;padding:5%;background:#fff;width:100%;visibility:visible;opacity:1;display:none;z-index:9999;border-top:3px solid #2ea3f2;box-shadow:0 2px 5px rgba(0,0,0,.1);-moz-box-shadow:0 2px 5px rgba(0,0,0,.1);-webkit-box-shadow:0 2px 5px rgba(0,0,0,.1)}#main-header .et_mobile_menu li ul,.et_pb_fullwidth_menu .et_mobile_menu li ul,.et_pb_menu .et_mobile_menu li ul{visibility:visible!important;display:block!important;padding-left:10px}.et_mobile_menu li li{padding-left:5%}.et_mobile_menu li a{border-bottom:1px solid rgba(0,0,0,.03);color:#666;padding:10px 5%;display:block}.et_mobile_menu .menu-item-has-children>a{font-weight:700;background-color:rgba(0,0,0,.03)}.et_mobile_menu li .menu-item-has-children>a{background-color:transparent}.et_mobile_nav_menu{float:right;display:none}.mobile_menu_bar{position:relative;display:block;line-height:0}.mobile_menu_bar:before{content:"a";font-size:32px;position:relative;left:0;top:0;cursor:pointer}.et_pb_module .mobile_menu_bar:before{top:2px}.mobile_nav .select_page{display:none}
.footer-widget h4,#main-footer .widget_block h1,#main-footer .widget_block h2,#main-footer .widget_block h3,#main-footer .widget_block h4,#main-footer .widget_block h5,#main-footer .widget_block h6{color:#2EA3F2}.footer-widget li:before{border-color:#2EA3F2}.bottom-nav li.current-menu-item>a{color:#2EA3F2}#main-footer{background-color:#222222}#footer-widgets{padding:6% 0 0}.footer-widget{float:left;color:#fff}.last{margin-right:0}.footer-widget .fwidget:last-child{margin-bottom:0 !important}#footer-widgets .footer-widget li{padding-left:14px;position:relative}#footer-widgets .footer-widget li:before{border-radius:3px;border-style:solid;border-width:3px;content:"";left:0;position:absolute;top:9px}#footer-widgets .footer-widget a{color:#fff}#footer-widgets .footer-widget li a{color:#fff;text-decoration:none}#footer-widgets .footer-widget li a:hover{color:rgba(255,255,255,0.7)}.footer-widget .widget_adsensewidget ins{min-width:160px}#footer-bottom{background-color:#1f1f1f;background-color:rgba(0,0,0,0.32);padding:15px 0 5px}#footer-bottom a{-webkit-transition:all 0.4s ease-in-out;transition:all 0.4s ease-in-out}#footer-info{text-align:left;color:#666;padding-bottom:10px;float:left}#footer-info a{font-weight:700;color:#666}#footer-info a:hover{opacity:.7}#et-footer-nav{background-color:rgba(255,255,255,0.05)}.bottom-nav{padding:15px 0}.bottom-nav li{font-weight:600;display:inline-block;font-size:14px;padding-right:22px}.bottom-nav a{color:#bbb;-webkit-transition:all 0.4s ease-in-out;transition:all 0.4s ease-in-out}.bottom-nav a:hover{opacity:.7}@media all and (max-width: 980px){.footer-widget:nth-child(n){width:46.25% !important;margin:0 7.5% 7.5% 0 !important}.et_pb_footer_columns1 .footer-widget{width:100% !important;margin:0 7.5% 7.5% 0 !important}#footer-widgets .footer-widget .fwidget{margin-bottom:16.21%}.et_pb_gutters1 .footer-widget:nth-child(n){width:50% !important;margin:0 !important}.et_pb_gutters1 #footer-widgets .footer-widget .fwidget{margin-bottom:0}#footer-widgets{padding:8% 0}#footer-widgets .footer-widget:nth-child(2n){margin-right:0 !important}#footer-widgets .footer-widget:nth-last-child(-n+2){margin-bottom:0 !important}.bottom-nav{text-align:center}#footer-info{float:none;text-align:center}}@media all and (max-width: 767px){#footer-widgets .footer-widget,.et_pb_gutters1 #footer-widgets .footer-widget{width:100% !important;margin-right:0 !important}#footer-widgets .footer-widget:nth-child(n),#footer-widgets .footer-widget .fwidget{margin-bottom:9.5% !important}.et_pb_gutters1 #footer-widgets .footer-widget:nth-child(n),.et_pb_gutters1 #footer-widgets .footer-widget .fwidget{margin-bottom:0 !important}#footer-widgets{padding:10% 0}#footer-widgets .footer-widget .fwidget:last-child{margin-bottom:0 !important}#footer-widgets .footer-widget:last-child{margin-bottom:0 !important}}@media all and (max-width: 479px){#footer-widgets .footer-widget:nth-child(n),.footer-widget .fwidget{margin-bottom:11.5% !important}#footer-widgets .footer-widget.last{margin-bottom:0 !important}.et_pb_gutters1 #footer-widgets .footer-widget:nth-child(n),.et_pb_gutters1 #footer-widgets .footer-widget .fwidget{margin-bottom:0 !important}#footer-widgets{padding:12% 0}}
@media all and (min-width: 981px){.et_pb_gutters3 .footer-widget{margin-right:5.5%;margin-bottom:5.5%}.et_pb_gutters3 .footer-widget:last-child{margin-right:0}.et_pb_gutters3.et_pb_footer_columns6 .footer-widget{width:12.083%}.et_pb_gutters3.et_pb_footer_columns6 .footer-widget .fwidget{margin-bottom:45.517%}.et_pb_gutters3.et_pb_footer_columns5 .footer-widget{width:15.6%}.et_pb_gutters3.et_pb_footer_columns5 .footer-widget .fwidget{margin-bottom:35.256%}.et_pb_gutters3.et_pb_footer_columns4 .footer-widget{width:20.875%}.et_pb_gutters3.et_pb_footer_columns4 .footer-widget .fwidget{margin-bottom:26.347%}.et_pb_gutters3.et_pb_footer_columns3 .footer-widget{width:29.667%}.et_pb_gutters3.et_pb_footer_columns3 .footer-widget .fwidget{margin-bottom:18.539%}.et_pb_gutters3.et_pb_footer_columns2 .footer-widget{width:47.25%}.et_pb_gutters3.et_pb_footer_columns2 .footer-widget .fwidget{margin-bottom:11.64%}.et_pb_gutters3.et_pb_footer_columns1 .footer-widget{width:100%}.et_pb_gutters3.et_pb_footer_columns1 .footer-widget .fwidget{margin-bottom:5.5%}.et_pb_gutters3.et_pb_footer_columns_3_4__1_4 .footer-widget:nth-child(1){width:73.625%;clear:both}.et_pb_gutters3.et_pb_footer_columns_3_4__1_4 .footer-widget:nth-child(1) .fwidget{margin-bottom:7.47%}.et_pb_gutters3.et_pb_footer_columns_3_4__1_4 .footer-widget:nth-child(2){width:20.875%}.et_pb_gutters3.et_pb_footer_columns_3_4__1_4 .footer-widget:nth-child(2) .fwidget{margin-bottom:26.347%}.et_pb_gutters3.et_pb_footer_columns_1_4__3_4 .footer-widget:nth-child(1){width:20.875%;clear:both}.et_pb_gutters3.et_pb_footer_columns_1_4__3_4 .footer-widget:nth-child(1) .fwidget{margin-bottom:26.347%}.et_pb_gutters3.et_pb_footer_columns_1_4__3_4 .footer-widget:nth-child(2){width:73.625%}.et_pb_gutters3.et_pb_footer_columns_1_4__3_4 .footer-widget:nth-child(2) .fwidget{margin-bottom:7.47%}.et_pb_gutters3.et_pb_footer_columns_2_3__1_3 .footer-widget:nth-child(1){width:64.833%}.et_pb_gutters3.et_pb_footer_columns_2_3__1_3 .footer-widget:nth-child(1) .fwidget{margin-bottom:8.483%}.et_pb_gutters3.et_pb_footer_columns_2_3__1_3 .footer-widget:nth-child(2){width:29.667%}.et_pb_gutters3.et_pb_footer_columns_2_3__1_3 .footer-widget:nth-child(2) .fwidget{margin-bottom:18.539%}.et_pb_gutters3.et_pb_footer_columns_1_3__2_3 .footer-widget:nth-child(1){width:29.667%}.et_pb_gutters3.et_pb_footer_columns_1_3__2_3 .footer-widget:nth-child(1) .fwidget{margin-bottom:18.539%}.et_pb_gutters3.et_pb_footer_columns_1_3__2_3 .footer-widget:nth-child(2){width:64.833%}.et_pb_gutters3.et_pb_footer_columns_1_3__2_3 .footer-widget:nth-child(2) .fwidget{margin-bottom:8.483%}.et_pb_gutters3.et_pb_footer_columns_1_4__1_2 .footer-widget:nth-child(-n+2){width:20.875%}.et_pb_gutters3.et_pb_footer_columns_1_4__1_2 .footer-widget:nth-child(-n+2) .fwidget{margin-bottom:26.347%}.et_pb_gutters3.et_pb_footer_columns_1_4__1_2 .footer-widget:nth-child(3){width:47.25%}.et_pb_gutters3.et_pb_footer_columns_1_4__1_2 .footer-widget:nth-child(3) .fwidget{margin-bottom:11.64%}.et_pb_gutters3.et_pb_footer_columns_1_2__1_4 .footer-widget:first-child{width:47.25%}.et_pb_gutters3.et_pb_footer_columns_1_2__1_4 .footer-widget:first-child .fwidget{margin-bottom:11.64%}.et_pb_gutters3.et_pb_footer_columns_1_2__1_4 .footer-widget:nth-child(-n+3):not(:nth-child(1)){width:20.875%}.et_pb_gutters3.et_pb_footer_columns_1_2__1_4 .footer-widget:nth-child(-n+3):not(:nth-child(1)) .fwidget{margin-bottom:26.347%}.et_pb_gutters3.et_pb_footer_columns_1_5__3_5 .footer-widget:nth-child(-n+2){width:15.6%}.et_pb_gutters3.et_pb_footer_columns_1_5__3_5 .footer-widget:nth-child(-n+2) .fwidget{margin-bottom:35.256%}.et_pb_gutters3.et_pb_footer_columns_1_5__3_5 .footer-widget:nth-child(3){width:57.8%}.et_pb_gutters3.et_pb_footer_columns_1_5__3_5 .footer-widget:nth-child(3) .fwidget{margin-bottom:9.516%}.et_pb_gutters3.et_pb_footer_columns_3_5__1_5 .footer-widget:first-child{width:57.8%}.et_pb_gutters3.et_pb_footer_columns_3_5__1_5 .footer-widget:first-child .fwidget{margin-bottom:9.516%}.et_pb_gutters3.et_pb_footer_columns_3_5__1_5 .footer-widget:nth-child(-n+3):not(:nth-child(1)){width:15.6%}.et_pb_gutters3.et_pb_footer_columns_3_5__1_5 .footer-widget:nth-child(-n+3):not(:nth-child(1)) .fwidget{margin-bottom:35.256%}.et_pb_gutters3.et_pb_footer_columns_3_5__2_5 .footer-widget:nth-child(1){width:57.8%}.et_pb_gutters3.et_pb_footer_columns_3_5__2_5 .footer-widget:nth-child(1) .fwidget{margin-bottom:9.516%}.et_pb_gutters3.et_pb_footer_columns_3_5__2_5 .footer-widget:nth-child(2){width:36.7%}.et_pb_gutters3.et_pb_footer_columns_3_5__2_5 .footer-widget:nth-child(2) .fwidget{margin-bottom:14.986%}.et_pb_gutters3.et_pb_footer_columns_2_5__3_5 .footer-widget:nth-child(1){width:36.7%}.et_pb_gutters3.et_pb_footer_columns_2_5__3_5 .footer-widget:nth-child(1) .fwidget{margin-bottom:14.986%}.et_pb_gutters3.et_pb_footer_columns_2_5__3_5 .footer-widget:nth-child(2){width:57.8%}.et_pb_gutters3.et_pb_footer_columns_2_5__3_5 .footer-widget:nth-child(2) .fwidget{margin-bottom:9.516%}.et_pb_gutters3.et_pb_footer_columns_1_2__1_6 .footer-widget:first-child{width:47.25%}.et_pb_gutters3.et_pb_footer_columns_1_2__1_6 .footer-widget:first-child .fwidget{margin-bottom:11.64%}.et_pb_gutters3.et_pb_footer_columns_1_2__1_6 .footer-widget:nth-child(-n+4):not(:nth-child(1)){width:12.083%}.et_pb_gutters3.et_pb_footer_columns_1_2__1_6 .footer-widget:nth-child(-n+4):not(:nth-child(1)) .fwidget{margin-bottom:45.517%}.et_pb_gutters3.et_pb_footer_columns_1_6__1_2 .footer-widget:nth-child(-n+3){width:12.083%}.et_pb_gutters3.et_pb_footer_columns_1_6__1_2 .footer-widget:nth-child(-n+3) .fwidget{margin-bottom:45.517%}.et_pb_gutters3.et_pb_footer_columns_1_6__1_2 .footer-widget:nth-child(4){width:47.25%}.et_pb_gutters3.et_pb_footer_columns_1_6__1_2 .footer-widget:nth-child(4) .fwidget{margin-bottom:11.64%}.et_pb_gutters3.et_pb_footer_columns_1_4_1_2_1_4 .footer-widget:nth-child(-n+3):not(:nth-child(2)){width:20.875%}.et_pb_gutters3.et_pb_footer_columns_1_4_1_2_1_4 .footer-widget:nth-child(-n+3):not(:nth-child(2)) .fwidget{margin-bottom:26.347%}.et_pb_gutters3.et_pb_footer_columns_1_4_1_2_1_4 .footer-widget:nth-child(2){width:47.25%}.et_pb_gutters3.et_pb_footer_columns_1_4_1_2_1_4 .footer-widget:nth-child(2) .fwidget{margin-bottom:11.64%}.et_pb_gutters3.et_pb_footer_columns_1_5_3_5_1_5 .footer-widget:nth-child(-n+3):not(:nth-child(2)){width:15.6%}.et_pb_gutters3.et_pb_footer_columns_1_5_3_5_1_5 .footer-widget:nth-child(-n+3):not(:nth-child(2)) .fwidget{margin-bottom:35.256%}.et_pb_gutters3.et_pb_footer_columns_1_5_3_5_1_5 .footer-widget:nth-child(2){width:57.8%}.et_pb_gutters3.et_pb_footer_columns_1_5_3_5_1_5 .footer-widget:nth-child(2) .fwidget{margin-bottom:9.516%}}
.et-social-icons{float:right}.et-social-icons li{display:inline-block;margin-left:20px}.et-social-icon a{display:inline-block;font-size:24px;position:relative;text-align:center;-webkit-transition:color 300ms ease 0s;transition:color 300ms ease 0s;color:#666;text-decoration:none}.et-social-icons a:hover{opacity:0.7;-webkit-transition:all 0.4s ease-in-out;transition:all 0.4s ease-in-out}.et-social-icon span{display:none}.et_duplicate_social_icons{display:none}@media all and (max-width: 980px){.et-social-icons{float:none;text-align:center}}@media all and (max-width: 980px){.et-social-icons{margin:0 0 5px}}
#sidebar{padding-bottom:28px}#sidebar .et_pb_widget{margin-bottom:30px;width:100%;float:none}.et_right_sidebar #main-content .et_pb_column_2_3 .et_pb_countdown_timer .section p.value,.et_right_sidebar #main-content .et_pb_column_2_3 .et_pb_countdown_timer .section.sep,.et_left_sidebar #main-content .et_pb_column_2_3 .et_pb_countdown_timer .section p.value,.et_left_sidebar #main-content .et_pb_column_2_3 .et_pb_countdown_timer .section.sep{font-size:44px;line-height:44px}.et_right_sidebar #main-content .et_pb_column_1_2 .et_pb_countdown_timer .section p.value,.et_right_sidebar #main-content .et_pb_column_1_2 .et_pb_countdown_timer .section.sep,.et_left_sidebar #main-content .et_pb_column_1_2 .et_pb_countdown_timer .section p.value,.et_left_sidebar #main-content .et_pb_column_1_2 .et_pb_countdown_timer .section.sep{font-size:32px;line-height:32px}.et_right_sidebar #main-content .et_pb_column_3_8 .et_pb_countdown_timer .section p.value,.et_right_sidebar #main-content .et_pb_column_3_8 .et_pb_countdown_timer .section.sep,.et_left_sidebar #main-content .et_pb_column_3_8 .et_pb_countdown_timer .section p.value,.et_left_sidebar #main-content .et_pb_column_3_8 .et_pb_countdown_timer .section.sep{font-size:24px;line-height:24px}.et_right_sidebar #main-content .et_pb_column_1_3 .et_pb_countdown_timer .section p.value,.et_right_sidebar #main-content .et_pb_column_1_3 .et_pb_countdown_timer .section.sep,.et_left_sidebar #main-content .et_pb_column_1_3 .et_pb_countdown_timer .section p.value,.et_left_sidebar #main-content .et_pb_column_1_3 .et_pb_countdown_timer .section.sep{font-size:20px;line-height:20px}.et_right_sidebar #main-content .et_pb_column_1_4 .et_pb_countdown_timer .section p.value,.et_right_sidebar #main-content .et_pb_column_1_4 .et_pb_countdown_timer .section.sep,.et_left_sidebar #main-content .et_pb_column_1_4 .et_pb_countdown_timer .section p.value,.et_left_sidebar #main-content .et_pb_column_1_4 .et_pb_countdown_timer .section.sep{font-size:16px;line-height:16px}@media all and (min-width: 981px) and (max-width: 1100px){#sidebar .et_pb_widget{margin-left:0}.et_left_sidebar #sidebar .et_pb_widget{margin-right:0}}@media all and (min-width: 981px){#sidebar{float:left;width:20.875%}.et_right_sidebar #left-area{float:left;padding-right:5.5%}.et_right_sidebar #sidebar{padding-left:30px}.et_right_sidebar #main-content .container:before{right:20.875% !important}.et_left_sidebar #left-area{float:right;padding-left:5.5%}.et_left_sidebar #sidebar{padding-right:30px}.et_left_sidebar #main-content .container:before{left:20.875% !important}}@media all and (max-width: 980px){.et_right_sidebar #left-area,.et_right_sidebar #sidebar,.et_left_sidebar #left-area,.et_left_sidebar #sidebar{width:auto;float:none;padding-right:0;padding-left:0}.et_right_sidebar #left-area{margin-right:0}.et_right_sidebar #sidebar{margin-left:0;border-left:none}.et_left_sidebar #left-area{margin-left:0}.et_left_sidebar #sidebar{margin-right:0;border-right:none}}
.widget_search .screen-reader-text,.et_pb_widget .wp-block-search__label{display:none}.widget_search input#s,.widget_search input#searchsubmit,.et_pb_widget .wp-block-search__input,.et_pb_widget .wp-block-search__button{padding:.7em;height:40px !important;margin:0;font-size:14px;line-height:normal !important;border:1px solid #ddd;color:#666}.widget_search #s,.et_pb_widget .wp-block-search__input{width:100%;border-radius:3px}.widget_search #searchform,.et_pb_widget .wp-block-search{position:relative}.widget_search #searchsubmit,.et_pb_widget .wp-block-search__button{background-color:#ddd;-webkit-border-top-right-radius:3px;-webkit-border-bottom-right-radius:3px;-moz-border-radius-topright:3px;-moz-border-radius-bottomright:3px;border-top-right-radius:3px;border-bottom-right-radius:3px;position:absolute;right:0;top:0}#searchsubmit,.et_pb_widget .wp-block-search__button{cursor:pointer}
/*# sourceURL=divi-dynamic-critical-inline-css */
</style>
<link rel='stylesheet' id='divi-style-css' href='https://haggai-bf.org/wp-content/themes/Divi-child/style.css?ver=4.27.6' media='all' />
<link rel="https://api.w.org/" href="https://haggai-bf.org/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://haggai-bf.org/wp-json/wp/v2/pages/838" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://haggai-bf.org/xmlrpc.php?rsd" />
<meta name="generator" content="WordPress 7.0" />
<link rel="canonical" href="https://haggai-bf.org/btc-hrat-aplikace-a-mobilni-pruvodce/" />
<link rel='shortlink' href='https://haggai-bf.org/?p=838' />
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0" /><link rel="icon" href="https://haggai-bf.org/wp-content/uploads/2025/03/Logo_Haggai-BF-150x150.png" sizes="32x32" />
<link rel="icon" href="https://haggai-bf.org/wp-content/uploads/2025/03/Logo_Haggai-BF.png" sizes="192x192" />
<link rel="apple-touch-icon" href="https://haggai-bf.org/wp-content/uploads/2025/03/Logo_Haggai-BF.png" />
<meta name="msapplication-TileImage" content="https://haggai-bf.org/wp-content/uploads/2025/03/Logo_Haggai-BF.png" />
<link rel="stylesheet" id="et-divi-customizer-global-cached-inline-styles" href="https://haggai-bf.org/wp-content/et-cache/global/et-divi-customizer-global.min.css?ver=1780281736" /><style id="et-critical-inline-css"></style>
</head>
<body class="wp-singular page-template-default page page-id-838 wp-custom-logo wp-theme-Divi wp-child-theme-Divi-child et_pb_button_helper_class et_fixed_nav et_show_nav et_primary_nav_dropdown_animation_fade et_secondary_nav_dropdown_animation_fade et_header_style_left et_pb_footer_columns4 et_cover_background et_pb_gutter et_pb_gutters3 et_right_sidebar et_divi_theme et-db">
	<div id="page-container">

	
	
			<header id="main-header" data-height-onload="66">
			<div class="container clearfix et_menu_container">
							<div class="logo_container">
					<span class="logo_helper"></span>
					<a href="https://haggai-bf.org/">
						<img src="https://haggai-bf.org/wp-content/uploads/2025/03/Logo_Haggai-BF.png" width="931" height="742" alt="HAGGAI BURKINA FASO" id="logo" data-height-percentage="54" />
					</a>
				</div>
							<div id="et-top-navigation" data-height="66" data-fixed-height="40">
											<nav id="top-menu-nav">
													<ul id="top-menu" class="nav">
																	<li ><a href="https://haggai-bf.org/">Accueil</a></li>
								
								<li class="page_item page-item-844"><a href="https://haggai-bf.org/bitcoin-jatszani-fiokellenorzes-utmutato/">Bitcoin játszani – fiókellenőrzés útmutató</a></li>
<li class="page_item page-item-840"><a href="https://haggai-bf.org/bitcoin-kasino-v-ceske-republice-kompletni-pruvodce-bonusy-rychle-vybery-a-bezpecnost/">Bitcoin kasino v České republice – kompletní průvodce, bonusy, rychlé výběry a bezpečnost</a></li>
<li class="page_item page-item-838 current_page_item"><a href="https://haggai-bf.org/btc-hrat-aplikace-a-mobilni-pruvodce/" aria-current="page">BTC hrát: aplikace a mobilní průvodce</a></li>
<li class="page_item page-item-469"><a href="https://haggai-bf.org/canli-casino-siteleri-2026-en-iyi-ve-guvenilir-casino-listesi/">Canlı Casino Siteleri 2026 &#8211; En İyi ve Güvenilir Casino Listesi</a></li>
<li class="page_item page-item-832"><a href="https://haggai-bf.org/casino-bitcoin-guia-paso-a-paso-para-registrarte-e-iniciar-sesion/">Casino Bitcoin: guía paso a paso para registrarte e iniciar sesión</a></li>
<li class="page_item page-item-847"><a href="https://haggai-bf.org/crypto-casino-europe-review-bonuses-payments-mobile-guide-for-dutch-players/">Crypto Casino Europe Review – Bonuses, Payments &#038; Mobile Guide for Dutch Players</a></li>
<li class="page_item page-item-239"><a href="https://haggai-bf.org/magyar-casino-online-fiokellenorzes-lepesei-praktikus-utmutato/">Magyar casino online fiókellenőrzés lépései – Praktikus útmutató</a></li>
<li class="page_item page-item-41"><a href="https://haggai-bf.org/nous-contacter/">Nous contacter</a></li>
<li class="page_item page-item-828"><a href="https://haggai-bf.org/pin-up-az-rbaycanin-n-yaxsi-kazinosu-r-smi-sayt/">Pin Up &#8211; Azərbaycanın ən yaxşı kazinosu | Rəsmi sayt</a></li>
<li class="page_item page-item-826"><a href="https://haggai-bf.org/pin-up-casino-az-rbaycanda-onlayn-kazino-pin-up/">Pin Up Casino &#8211; Azərbaycanda onlayn kazino Pin-Up</a></li>
<li class="page_item page-item-821"><a href="https://haggai-bf.org/pin-up-casino-onlayn-az-rbaycan/">Pin Up Casino Onlayn Azərbaycan</a></li>
									<li class="cat-item cat-item-11"><a href="https://haggai-bf.org/category/public/">public</a>
</li>
							</ul>
												</nav>
					
					
					
											<div id="et_top_search">
							<span id="et_search_icon"></span>
						</div>
					
					<div id="et_mobile_nav_menu">
				<div class="mobile_nav closed">
					<span class="select_page">Sélectionner une page</span>
					<span class="mobile_menu_bar mobile_menu_bar_toggle"></span>
				</div>
			</div>				</div> <!-- #et-top-navigation -->
			</div> <!-- .container -->
						<div class="et_search_outer">
				<div class="container et_search_form_container">
					<form role="search" method="get" class="et-search-form" action="https://haggai-bf.org/">
					<input type="search" class="et-search-field" placeholder="Rechercher &hellip;" value="" name="s" title="Rechercher:" />					</form>
					<span class="et_close_search_field"></span>
				</div>
			</div>
					</header> <!-- #main-header -->
			<div id="et-main-area">
	
<div id="main-content">


	<div class="container">
		<div id="content-area" class="clearfix">
			<div id="left-area">


			
				<article id="post-838" class="post-838 page type-page status-publish hentry">

				
					<h1 class="entry-title main_title">BTC hrát: aplikace a mobilní průvodce</h1>
				
				
					<div class="entry-content">
					<figure data-affgun-media="hero" style="margin:0 0 1.5em 0;text-align:center"><img decoding="async" src="https://i.ytimg.com/vi/-UYXWf0fXvo/hqdefault.jpg" alt="" style="max-width:100%;height:auto;border-radius:8px" loading="lazy" referrerpolicy="no-referrer"></figure>
<h1>Jak bezpečně a výhodně BTC hrát v českém online kasinu</h1>
<h2 id="pro-zvolit-btc-pro-hran-v-kasinu">Proč zvolit BTC pro hraní v kasinu</h2>
<div data-affgun-media="video" style="position:relative;padding-bottom:56.25%;height:0;overflow:hidden;margin:1.5em 0;border-radius:8px"><iframe src="https://www.youtube-nocookie.com/embed/-UYXWf0fXvo" style="position:absolute;top:0;left:0;width:100%;height:100%;border:0;border-radius:8px" loading="lazy" referrerpolicy="strict-origin-when-cross-origin" allow="accelerometer;autoplay;clipboard-write;encrypted-media;gyroscope;picture-in-picture" allowfullscreen=""></iframe></div>
<p>Bitcoiny se staly populární volbou pro hráče, kteří hledají rychlé a diskrétní transakce. Díky decentralizované povaze kryptoměny se vyhnete tradičním bankovním poplatkům a můžete si užívat okamžité vklady i výběry. Navíc mnoho českých kasin nabízí speciální bonusy jen pro uživatele, kteří si zvolí BTC jako platební metodu. Pokud se vám chce <strong>BTC hrát</strong> a zároveň mít kontrolu nad svými financemi, tento přístup vám poskytne flexibilitu i bezpečí.</p>
<nav aria-label="Table of contents">
<ol>
<li><a href="#pro-zvolit-btc-pro-hran-v-kasinu">Proč zvolit BTC pro hraní v kasinu</a></li>
<li><a href="#registrace-a-oven-krok-za-krokem">Registrace a ověření – krok za krokem</a>
<ol>
<li><a href="#registrace-krok-po-kroku">Registrace krok po kroku</a></li>
</ol>
</li>
<li><a href="#bonusy-a-podmnky-pro-btc-hre">Bonusy a podmínky pro BTC hráče</a>
<ol>
<li><a href="#vtac-bonus-a-wagering-requirements">Vítací bonus a wagering requirements</a></li>
</ol>
</li>
<li><a href="#platebn-metody-vkldn-a-vbry-v-btc">Platební metody: vkládání a výběry v BTC</a></li>
<li><a href="#mobiln-a-live-casino-zitek">Mobilní a live casino zážitek</a>
<ol>
<li><a href="#mobiln-aplikace-a-live-hry">Mobilní aplikace a live hry</a></li>
</ol>
</li>
<li><a href="#bezpenost-licence-a-zodpovdn-hran">Bezpečnost, licence a zodpovědné hraní</a></li>
<li><a href="#asto-kladen-otzky-faq">Často kladené otázky (FAQ)</a></li>
</ol>
</nav>
<p>Pro české hráče je také výhodou, že Bitcoin není vázán na konkrétní měnu, takže můžete snadno převádět mezi CZK a BTC podle aktuálního kurzu. To vám umožní lépe spravovat bankroll a využívat výhodných kurzů. V praxi to znamená méně papírování a rychlejší přístup k výhrám, což je hlavní důvod, proč se mnoho začátečníků rozhodne <em>BTC hrát</em> právě u nás.</p>
<h2 id="registrace-a-oven-krok-za-krokem">Registrace a ověření – krok za krokem</h2>
<h3 id="registrace-krok-po-kroku">Registrace krok po kroku</h3>
<p>První krok je otevření účtu na <a href="https://btccasino.cz/">Bitcoin kasino</a>. Vyplníte základní údaje – e‑mail, heslo a volitelně telefon. Poté potvrďte e‑mail pomocí odkazu, který vám přijde do schránky. Registrace trvá jen pár minut a po jejím dokončení můžete přistoupit k prvnímu vkladu v Bitcoinech.</p>
<p>Ovšem pro zvýšenou bezpečnost bude kasino vyžadovat KYC (poznání zákazníka). Nahrajete kopii občanského průkazu a případně doklad o adrese. Tento proces může zabrat až 24 hodin, ale po schválení získáte plný přístup ke všem bonusům a limitům výběru. Vše probíhá v zabezpečeném rozhraní, takže vaše data jsou v bezpečí.</p>
<h2 id="bonusy-a-podmnky-pro-btc-hre">Bonusy a podmínky pro BTC hráče</h2>
<h3 id="vtac-bonus-a-wagering-requirements">Vítací bonus a wagering requirements</h3>
<p>Většina licencovaných kasin v České republice nabízí vstupní bonus speciálně pro kryptoměny. Obvykle se jedná o 100 % match bonus až do výše 0,5 BTC plus několik free spinů na populárních automatech. Při uplatnění bonusu je nutné splnit wagering requirements, které se pohybují kolem 30‑35× celkové částky bonusu.</p>
<p>Upozorňujeme, že ne všechny hry přispívají stejně ke splnění podmínek – sloty mají nejvyšší příspěvek, zatímco live casino může mít nižší koeficient. Proto je dobré si před hraním přečíst podrobný bonusový popis a naplánovat si, jaké hry použijete ke splnění wagering requirements. Výše uvedený přístup vám pomůže maximalizovat zisk a minimalizovat ztrátu času.</p>
<h2 id="platebn-metody-vkldn-a-vbry-v-btc">Platební metody: vkládání a výběry v BTC</h2>
<p>Vkládat a vybírat peníze pomocí Bitcoinu je v našem kasinu naprosto jednoduché. Po přihlášení zvolíte sekci „Deposit“ a získáte unikátní Bitcoin adresu, na kterou pošlete požadovanou částku. Vklady jsou zpracovány během několika minut, což je podstatná výhoda oproti tradičním bankovním převodům, které mohou trvat dny.</p>
<p>Výběry se liší v rychlosti podle zvolené blockchainové sítě. Níže uvádíme přehled typických časů a poplatků.</p>
<table border="1" cellpadding="5" cellspacing="0">
<thead>
<tr>
<th>Metoda výběru</th>
<th>Průměrná rychlost</th>
<th>Poplatek</th>
</tr>
</thead>
<tbody>
<tr>
<td>Standardní Bitcoin (BTC)</td>
<td>10‑30 minut</td>
<td>0,0005 BTC</td>
</tr>
<tr>
<td>Lightning Network</td>
<td>Okamžitě</td>
<td>0,0001 BTC</td>
</tr>
<tr>
<td>Instant payout (vnitřní převod)</td>
<td>Do 5 minut</td>
<td>Žádný</td>
</tr>
</tbody>
</table>
<p>Kromě Bitcoinu můžete využít i další kryptoměny, ale pokud chcete <strong>BTC hrát</strong>, držte se výše uvedených metod, aby byl váš cash‑flow co nejplynulejší. Všechny transakce jsou monitorovány systémem anti‑fraud, takže máte jistotu, že vaše výhry dorazí bezpečně a bez zbytečného zdržení.</p>
<h2 id="mobiln-a-live-casino-zitek">Mobilní a live casino zážitek</h2>
<h3 id="mobiln-aplikace-a-live-hry">Mobilní aplikace a live hry</h3>
<p>Naše platforma nabízí plně optimalizovanou mobilní verzi, která funguje jak v mobilním prohlížeči, tak v samostatné aplikaci pro Android i iOS. Aplikace podporuje všechny funkce, včetně vkladů v BTC, bonusových oznámení a okamžitého přístupu k live dealerům. Díky tomu můžete hrát i na cestách, aniž byste museli měnit zařízení.</p>
<p>Live casino nabízí reálné dealery, ruletu, blackjack a baccarat, kde můžete <em>BTC hrát</em> přímo proti živým profesionálům. Streamy jsou ve vysokém rozlišení a přichází s interaktivním chatem, takže máte pocit, že jste přímo na herním podlaze v Las Vegas. Pro začátečníky jsou k dispozici tutoriály, které vám pomohou pochopit pravidla a strategii během několika minut.</p>
<h2 id="bezpenost-licence-a-zodpovdn-hran">Bezpečnost, licence a zodpovědné hraní</h2>
<p>Kasino je licencováno od renomovaného regulačního orgánu, což zaručuje transparentní provoz a dodržování přísných standardů. Šifrování SSL 256‑bit chrání veškeré osobní a finanční údaje, a všechny Bitcoin transakce jsou sledovány blockchainovým auditem, takže jsou plně prověřitelné.</p>
<p>V rámci zodpovědného hraní poskytujeme nástroje pro limity vkladů, časové omezení a možnost samovolného vyloučení. Pokud cítíte, že by hraní mohlo ohrozit váš rozpočet, můžete si nastavit denní limit nebo kontaktovat zákaznickou podporu, která je k dispozici 24/7 a pomůže vám s jakýmkoli požadavkem.</p>
<h2 id="asto-kladen-otzky-faq">Často kladené otázky (FAQ)</h2>
<ul>
<li><strong>Jak rychle se mé vklady v BTC projeví?</strong> Vklady jsou obvykle potvrzeny během 5‑15 minut, záleží na aktuální zátěži sítě.</li>
<li><strong>Jsou výhry v BTC okamžitě vyplatitelné?</strong> Ano, pokud použijete Lightning Network nebo interní instant payout, výplata může trvat méně než 5 minut.</li>
<li><strong>Potřebuji speciální účet pro kryptoměny?</strong> Ne, stačí vám běžný herní účet, kde můžete aktivovat Bitcoin jako platební metodu v nastavení.</li>
<li><strong>Jaké jsou wagering requirements pro bonus?</strong> Standardně 30‑35×, ale konkrétní podmínky najdete v bonusové sekci po přihlášení.</li>
</ul>
<p>Věříme, že tento praktický průvodce vám pomůže vstoupit do světa online hazardu s Bitcoiny s jistotou a pohodlím. Připravte se na rychlé výhry, bezpečné transakce a spoustu zábavy – a nezapomeňte hrát zodpovědně.</p>
					</div>

				
				</article>

			

			</div>

					</div>
	</div>


</div>


			<footer id="main-footer">
				

		
				<div id="footer-bottom">
					<div class="container clearfix">
				<ul class="et-social-icons">

	<li class="et-social-icon et-social-facebook">
		<a href="#" class="icon">
			<span>Facebook</span>
		</a>
	</li>
	<li class="et-social-icon et-social-twitter">
		<a href="#" class="icon">
			<span>X</span>
		</a>
	</li>
	<li class="et-social-icon et-social-instagram">
		<a href="#" class="icon">
			<span>Instagram</span>
		</a>
	</li>
	<li class="et-social-icon et-social-rss">
		<a href="https://haggai-bf.org/feed/" class="icon">
			<span>RSS</span>
		</a>
	</li>

</ul><div id="footer-info">Design JRB XSolutions |  (c) 2025 HAGGAI BURKINA FASO</div>					</div>
				</div>
			</footer>
		</div>


	</div>

	<script type="speculationrules">
{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/Divi-child/*","/wp-content/themes/Divi/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}
</script>
<script id="jquery-core-js" src="https://haggai-bf.org/wp-includes/js/jquery/jquery.min.js?ver=3.7.1"></script>
<script id="jquery-migrate-js" src="https://haggai-bf.org/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1"></script>
<script id="jquery-js-after">
jqueryParams.length&&$.each(jqueryParams,function(e,r){if("function"==typeof r){var n=String(r);n.replace("$","jQuery");var a=new Function("return "+n)();$(document).ready(a)}});
//# sourceURL=jquery-js-after
</script>
<script id="divi-custom-script-js-extra">
var DIVI = {"item_count":"%d Item","items_count":"%d Items"};
var et_builder_utils_params = {"condition":{"diviTheme":true,"extraTheme":false},"scrollLocations":["app","top"],"builderScrollLocations":{"desktop":"app","tablet":"app","phone":"app"},"onloadScrollLocation":"app","builderType":"fe"};
var et_frontend_scripts = {"builderCssContainerPrefix":"#et-boc","builderCssLayoutPrefix":"#et-boc .et-l"};
var et_pb_custom = {"ajaxurl":"https://haggai-bf.org/wp-admin/admin-ajax.php","images_uri":"https://haggai-bf.org/wp-content/themes/Divi/images","builder_images_uri":"https://haggai-bf.org/wp-content/themes/Divi/includes/builder/images","et_frontend_nonce":"2f4ea805df","subscription_failed":"Veuillez v\u00e9rifier les champs ci-dessous pour vous assurer que vous avez entr\u00e9 les informations correctes.","et_ab_log_nonce":"d5435e722c","fill_message":"S'il vous pla\u00eet, remplissez les champs suivants:","contact_error_message":"Veuillez corriger les erreurs suivantes :","invalid":"E-mail non valide","captcha":"Captcha","prev":"Pr\u00e9c\u00e9dent","previous":"Pr\u00e9c\u00e9dente","next":"Prochaine","wrong_captcha":"Vous avez entr\u00e9 le mauvais num\u00e9ro dans le captcha.","wrong_checkbox":"Case \u00e0 cocher","ignore_waypoints":"no","is_divi_theme_used":"1","widget_search_selector":".widget_search","ab_tests":[],"is_ab_testing_active":"","page_id":"838","unique_test_id":"","ab_bounce_rate":"5","is_cache_plugin_active":"yes","is_shortcode_tracking":"","tinymce_uri":"https://haggai-bf.org/wp-content/themes/Divi/includes/builder/frontend-builder/assets/vendors","accent_color":"#7EBEC5","waypoints_options":[]};
var et_pb_box_shadow_elements = [];
//# sourceURL=divi-custom-script-js-extra
</script>
<script id="divi-custom-script-js" src="https://haggai-bf.org/wp-content/themes/Divi/js/scripts.min.js?ver=4.27.6"></script>
<script id="et-core-common-js" src="https://haggai-bf.org/wp-content/themes/Divi/core/admin/js/common.js?ver=4.27.6"></script>
</body>
</html>
