{"id":1606,"date":"2024-04-28T07:27:22","date_gmt":"2024-04-28T00:27:22","guid":{"rendered":"https:\/\/tokuteigino.vn\/?page_id=1606"},"modified":"2026-02-27T12:01:46","modified_gmt":"2026-02-27T05:01:46","slug":"video-bai-giang-nha-hang-gino1","status":"publish","type":"page","link":"https:\/\/tokuteigino.vn\/ja\/video-bai-giang-nha-hang-gino1\/","title":{"rendered":"\u8b1b\u7fa9\u306e\u30d3\u30c7\u30aa"},"content":{"rendered":"\n<!DOCTYPE html>\n<html lang=\"vi\">\n<head>\n  <meta charset=\"UTF-8\" \/>\n  <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"\/>\n  <title>Kh\u00f3a h\u1ecdc Video tokutei gino 1 ngh\u00e0nh nh\u00e0 h\u00e0ng<\/title>\n\n  <link href=\"https:\/\/fonts.googleapis.com\/css2?familyInter:wght@300;400;600&#038;display=swap\" rel=\"stylesheet\">\n  <link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/4.7.0\/css\/font-awesome.min.css\"\/>\n\n<style>\n\/* ======= GI\u1eee NGUY\u00caN CSS G\u1ed0C \u2013 KH\u00d4NG \u0110\u1ed8NG ======= *\/\n\/* (to\u00e0n b\u1ed9 CSS c\u1ee7a b\u1ea1n \u0111\u01b0\u1ee3c gi\u1eef nguy\u00ean 100%) *\/\n\n\/* ========== SCOPED ONLY TO #ltt-app ========== *\/\n#ltt-app{\n  --brand:#0f2819;\n  --brand-2:#800000;\n  --muted:#f3f3f3;\n  --card:#0b1e16;\n  font-family: Inter, system-ui, -apple-system, Segoe UI, Roboto, Arial, sans-serif;\n  color:#111;\n  overflow-x:hidden;\n  display: none; \n}\n#ltt-app *{ box-sizing:border-box; }\n\n\/* ================== LAYOUT: VIDEO + SIDEBAR ================== *\/\n#ltt-app .video-container-wrapper{\n  display:flex;\n  min-height:100vh;\n  background:var(--muted);\n}\n#ltt-app .video-content{\n  flex:3;\n  display:flex;\n  flex-direction:column;\n  gap:16px;\n  padding:16px;\n  background:#fff;\n}\n\n\/* ===== Section wrapper (video wrapper) ===== *\/\n#ltt-app .section{\n  position: relative;\n  overflow: visible;\n  background:#fff;\n  border:1px solid #eee;\n  border-radius:14px;\n  padding:16px;\n  box-shadow:0 2px 10px rgba(0,0,0,.06);\n}\n\n\/* ================== VIDEO PLAYER ================== *\/\n#ltt-app .video-frame{\n  display:block;\n  width:100%;\n  height:62vh; min-height:320px;\n  border:none; border-radius:12px;\n  background:#000;\n  box-shadow:0 2px 18px rgba(0,0,0,.12);\n}\n#ltt-app #ytContainer{\n  display: none;\n}\n\n\/* ================== NAVIGATION ================== *\/\n#ltt-app .video-navigation{\n  position: relative;\n  display:flex;\n  justify-content:center;\n  gap:14px;\n  margin:12px auto 0;\n  padding:0 12px;\n}\n#ltt-app .video-nav-button{\n  padding:5px 12px;\n  border:2px solid var(--brand);\n  border-radius:999px;\n  font-size:16px;\n  cursor:pointer;\n  transition:.2s;\n  background:#fff; color:var(--brand);\n  white-space:nowrap;\n}\n#ltt-app .video-nav-button:hover{ transform:translateY(-1px); }\n#ltt-app .video-next{ background:var(--brand); color:#fff; }\n\n\/* ================== SIDEBAR ================== *\/\n#ltt-app .video-course-list{\n  flex:1.1; background:#fff; padding:16px;\n  overflow-y:auto; border-left:3px solid #eee;\n}\n#ltt-app .video-course-list h3{ margin:0 0 12px; font-size:18px; color:#004080; }\n#ltt-app .video-course-item{\n  position:relative;\n  padding:12px 14px; margin-bottom:8px;\n  background:#fafafa; border:1px solid #eee; border-radius:10px;\n  cursor:pointer; color:#333; transition:.15s;\n}\n#ltt-app .video-course-item:hover{ background:#e9f6ff; transform:translateY(-1px); }\n#ltt-app .video-course-item.active{\n  background:var(--brand); color:#fff; font-weight:600;\n  border-left:5px solid #ffcc00; box-shadow:0 4px 10px rgba(0,64,128,.2);\n}\n#ltt-app .video-course-item.completed::after{\n  content:\"\u2714\"; color:#4CAF50; font-size:16px;\n  position:absolute; right:10px; top:50%; transform:translateY(-50%);\n}\n#ltt-app .start-popup-content {\n            background: white;\n            padding: 30px;\n            border-radius: 10px;\n            text-align: center;\n            max-width: 400px;\n        }\n.popup {\n            position: fixed;\n            top: 0;\n            left: 0;\n            width: 100%;\n            height: 100%;\n            background: rgba(0, 0, 0, 0.7);\n            display: flex;\n            justify-content: center;\n            align-items: center;\n            z-index: 1000;\n        }\n        \n.popup-content {\n            background: white;\n            padding: 25px;\n            border-radius: 10px;\n            width: 90%;\n            max-width: 500px;\n            box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);\n        }\n        \n.popup-content h3 {\n            color: #10291a;\n            margin-bottom: 20px;\n            text-align: center;\n        }\n        \n.popup-content input {\n            width: 100%;\n            padding: 12px;\n            margin-bottom: 15px;\n            border: 1px solid #ddd;\n            border-radius: 5px;\n            font-size: 16px;\n        }\n        \n.popup-content button {\n            width: 100%;\n            padding: 12px;\n            background-color: #10291a;\n            color: white;\n            border: none;\n            border-radius: 5px;\n            font-size: 16px;\n            cursor: pointer;\n            transition: background-color 0.3s;\n        }\n        \n.popup-content button:hover {\n            background-color: #003366;\n        }\n\/* ================== MOBILE \/ TABLET (GI\u1eee NGUY\u00caN) ================== *\/\n#ltt-app .mobile-menu-button{ display:none; }\n#ltt-app .mobile-course-list{ display:none; }\n\n\/* Tablet *\/\n@media (max-width: 1024px){\n  #ltt-app .video-container-wrapper{ flex-direction: column; }\n  #ltt-app .video-course-list{ display:none !important; }\n\n  #ltt-app .mobile-menu-button{\n    display:block; background:var(--brand);\n    color:#fff; padding:12px; cursor:pointer;\n  }\n  #ltt-app .mobile-course-list{\n  position: absolute; \n  top: 45px;\n  left: 0;\n  right: 0;\n  background: #fff;\n  z-index: 999;\n  max-height: 60vh;\n  overflow-y: auto;\n  display: none;\n  box-shadow: 0 4px 12px rgba(0,0,0,.15);\n}\n#ltt-app .mobile-course-list.show{\n  display: block;\n}\n\n\n  #ltt-app .video-frame{ height:32vh; min-height:220px; }\n}\n\n\/* Phone *\/\n@media (max-width:768px){\n  #ltt-app .video-content{\n    padding:0;\n  }\n  #ltt-app .video-frame{\n    width:100%;\n    margin-left:0;\n    height:48vh;\n    border-radius:0;\n  }\n}\n.empty-video-msg {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n  height: 62vh;\n  min-height: 320px;\n  background: #f9f9f9;\n  border: 2px dashed #ccc;\n  border-radius: 12px;\n  color: #10291a;\n  font-size: 1.2rem;\n  font-weight: 600;\n  text-align: center;\n  padding: 20px;\n  line-height: 1.6;\n}\n<\/style>\n<\/head>\n\n<body>\n<div id=\"loginPopup\" class=\"popup\" style=\"display:none;\">\n      <div class=\"popup-content\">\n        <h3>\u0110\u0102NG NH\u1eacP H\u1ec6 TH\u1ed0NG<\/h3>\n        <input id=\"loginUserId\" placeholder=\"Email\" \/>\n        <div style=\"position:relative;\">\n        <input id=\"loginPassword\" type=\"password\" placeholder=\"M\u1eadt kh\u1ea9u\" \/>\n        <span id=\"togglePwd\"\n          onclick=\"togglePassword()\"\n          style=\"\n            position:absolute;\n            right:12px;\n            top:50%;\n            transform:translateY(-50%);\n            cursor:pointer;\n            user-select:none;\n          \">\n      <!-- Eye (\u1ea9n m\u1eadt kh\u1ea9u) -->\n      <svg id=\"eyeIcon\"\n          width=\"22\" height=\"22\"\n          viewBox=\"0 0 24 24\"\n          fill=\"none\"\n          stroke=\"#000\"\n          stroke-width=\"2\"\n          stroke-linecap=\"round\"\n          stroke-linejoin=\"round\">\n        <path d=\"M1 12s4-7 11-7 11 7 11 7-4 7-11 7-11-7-11-7z\"><\/path>\n        <circle cx=\"12\" cy=\"12\" r=\"3\"><\/circle>\n      <\/svg>\n     <\/span>\n      <\/div>\n        <button id=\"loginButton\" onclick=\"loginUser()\">\u0110\u0103ng nh\u1eadp<\/button>\n      <\/div>\n    <\/div>\n<div id=\"ltt-app\" style=\"display:none;\">\n  <div class=\"mobile-menu-button\" onclick=\"toggleMobileMenu()\">\u2630 Danh s\u00e1ch b\u00e0i gi\u1ea3ng<\/div>\n  <div class=\"mobile-course-list\" id=\"mobileCourseList\"><\/div>\n  <div class=\"video-container-wrapper\">\n    <div class=\"video-content\">\n      <video id=\"html5Video\" class=\"video-frame\" controls controlsList=\"nodownload\" playsinline><\/video>\n      <div id=\"ytContainer\" class=\"video-frame\"><div id=\"ytPlayer\"><\/div><\/div>\n      <div class=\"video-navigation\">\n        <button class=\"video-nav-button\" onclick=\"prevVideo()\">\u276e B\u00e0i tr\u01b0\u1edbc<\/button>\n        <button class=\"video-nav-button video-next\" onclick=\"nextVideo()\">B\u00e0i ti\u1ebfp theo \u276f<\/button>\n      <\/div>\n    <\/div>\n    <aside class=\"video-course-list\">\n      <h3>\ud83d\udcd6 Danh s\u00e1ch b\u00e0i gi\u1ea3ng<\/h3>\n      <div id=\"desktopCourseList\"><\/div>\n    <\/aside>\n  <\/div>\n<\/div>\n\n<script>\nlet sessionInterval = null;\n\/* ================= C\u1ea4U H\u00ccNH ================= *\/\nconst scriptUrl = 'https:\/\/script.google.com\/macros\/s\/AKfycbybc3H2T2Y9v_1g2G4pV2gcpIFLm4IDTxh1MmM6bs1O0MR8HXwYqyhPNioOhhjBEKDX\/exec';\nconst TARGET_COURSE = 'nh\u00e0 h\u00e0ng gino1'; \nconst LS_LAST_INDEX = 'nhahanggino1Index';\nconst LS_DONE_PREFIX = 'nhahanggino1Completed_';\nfunction startSessionMonitor() {\n            if (sessionInterval) clearInterval(sessionInterval);\n\n            \/*sessionInterval = setInterval(() => {\n                checkSessionAlive();\n            }, 60000); \/\/ 30 gi\u00e2y (c\u00f3 th\u1ec3 t\u0103ng 60s)*\/\n            }\nfunction checkSessionAlive() {\n            return;\n            const tmy_userId = localStorage.getItem(\"tmy_userId\");\n            const deviceId = localStorage.getItem(\"deviceId\");\n\n            if (!tmy_userId || !deviceId) return;\n\n            fetch(\n                `${scriptUrl}?action=checkSession`\n                + `&tmy_userId=${encodeURIComponent(tmy_userId)}`\n                + `&deviceId=${encodeURIComponent(deviceId)}`\n            )\n                .then(res => res.json())\n                .then(result => {\n                if (!result.valid) {\n                    alert(\"T\u00e0i kho\u1ea3n c\u1ee7a b\u1ea1n s\u1ebd b\u1ecb \u0111\u0103ng xu\u1ea5t v\u00ec \u0111\u00e3 \u0111\u0103ng nh\u1eadp tr\u00ean thi\u1ebft b\u1ecb kh\u00e1c.\\n \u0110\u0103ng nh\u1eadp tr\u00ean nhi\u1ec1u thi\u1ebft b\u1ecb s\u1ebd khi\u1ebfn t\u00e0i kho\u1ea3n c\u1ee7a b\u1ea1n b\u1ecb kh\u00f3a!\");\n\n                    \/\/ clear session\n                    localStorage.removeItem(\"tmy_userId\");\n                    localStorage.removeItem(\"tmy_userName\");\n                    localStorage.removeItem(\"tmy_classIds\");\n                    localStorage.removeItem(\"tmy_classId\");\n                    location.reload();\n                }\n                })\n                .catch(() => {\n                \/\/ im l\u1eb7ng \u2013 kh\u00f4ng ph\u00e1 flow thi\n                });\n            }\n\/* ======================================================\n        DOM READY\n        ====================================================== *\/\ndocument.addEventListener('DOMContentLoaded', () => {\n  const tmy_userId = localStorage.getItem('tmy_userId');\n  const tmy_userName = (localStorage.getItem('tmy_userName') || \"\").toLowerCase();\n  const tmy_classIds = JSON.parse(localStorage.getItem('tmy_classIds') || \"[]\");\n\n  const isAdmin = tmy_userName === \"admin\";\n\n  \/\/ \ud83d\udea9 1. CH\u01afA \u0110\u0102NG NH\u1eacP \u2192 CH\u1ec8 HI\u1ec6N LOGIN, KH\u00d4NG C\u1ea2NH B\u00c1O\n  if (!tmy_userId || !tmy_userName) {\n    document.getElementById('loginPopup').style.display = 'flex';\n    document.getElementById('ltt-app').style.display = 'none';\n    return;\n  }\n\n  \/\/ chu\u1ea9n h\u00f3a classIds\n  const normalizedClassIds = tmy_classIds.map(c => c.toLowerCase());\n\n  \/\/ \ud83d\udeab 2. \u0110\u00c3 \u0110\u0102NG NH\u1eacP NH\u01afNG KH\u00d4NG C\u00d3 QUY\u1ec0N COURSE\n  if (!isAdmin && !normalizedClassIds.includes(TARGET_COURSE)) {\n    alert(\"B\u1ea1n kh\u00f4ng th\u1ec3 m\u1edf video c\u1ee7a kh\u00f3a h\u1ecdc n\u00e0y\");\n    document.getElementById('ltt-app').style.display = 'none';\n    return;\n  }\n\n  \/\/ \u2705 3. H\u1ee2P L\u1ec6 \u2192 LOAD VIDEO\n  document.getElementById('loginPopup').style.display = 'none';\n  document.getElementById('ltt-app').style.display = 'block';\n  loadVideosFromSheet();\n  \/\/startSessionMonitor();\n});\n\n\n\nfunction loginUser() {\n            const tmy_userId = document.getElementById('loginUserId').value.trim();\n            const password  = document.getElementById('loginPassword').value.trim();\n            const btn = document.getElementById('loginButton');\n\n            if (!tmy_userId || !password) {\n                alert('Vui l\u00f2ng nh\u1eadp email v\u00e0 m\u1eadt kh\u1ea9u!');\n                return;\n            }\n\n            btn.disabled = true;\n            btn.textContent = '\u0110ang ki\u1ec3m tra...';\n\n            \/\/ \ud83d\udd11 T\u1ea0O DEVICE ID M\u1edaI KHI LOGIN L\u1ea0I\n            const newDeviceId = generateRandomID();\n            localStorage.setItem('deviceId', newDeviceId);\n\n            const url =\n                `${scriptUrl}?action=checkUserId`\n                + `&tmy_userId=${encodeURIComponent(tmy_userId)}`\n                + `&password=${encodeURIComponent(password)}`\n                + `&deviceId=${encodeURIComponent(newDeviceId)}`;\n\n            fetch(url)\n                .then(res => res.json())\n                .then(result => {\n                if (!result.exists) {\n                    alert('Sai t\u00e0i kho\u1ea3n ho\u1eb7c m\u1eadt kh\u1ea9u!');\n                    return;\n                }\n\n                \/\/ \u2705 L\u01afU SESSION\n                localStorage.setItem('tmy_userId', tmy_userId);\n                localStorage.setItem('tmy_userName', result.tmy_userName || \"\");\n                localStorage.setItem('tmy_classIds', JSON.stringify(result.tmy_classIds || []));\n                localStorage.setItem('tmy_classId', result.tmy_classIds?.[0] || \"\");\n\n                const classIds = (result.tmy_classIds || []).map(c => c.toLowerCase());\n                const isAdmin = (result.tmy_userName || \"\").toLowerCase() === \"admin\";\n\n                if (!isAdmin && !classIds.includes(TARGET_COURSE)) {\n                  alert(\"T\u00e0i kho\u1ea3n c\u1ee7a b\u1ea1n kh\u00f4ng th\u1ec3 m\u1edf video c\u1ee7a kh\u00f3a h\u1ecdc n\u00e0y\");\n                  localStorage.clear();\n                  location.reload();\n                  return;\n                }\n                \/\/ \u2705 \u1ea8N POPUP \u2192 LOAD L\u1ea0I \u0110\u1ec0\n                document.getElementById('loginPopup').style.display = 'none';\n                document.getElementById('ltt-app').style.display = 'block';\n\n                \/\/startSessionMonitor();\n                loadVideosFromSheet();\n                })\n                .catch(err => {\n                alert('L\u1ed7i \u0111\u0103ng nh\u1eadp: ' + err.message);\n                })\n                .finally(() => {\n                btn.disabled = false;\n                btn.textContent = '\u0110\u0103ng nh\u1eadp';\n                });\n            }\n\n\n\/* ================= STATE ================= *\/\nlet videoData = [], videoUrls = [], titles = [];\nlet currentVideoIndex = 0;\n\nconst html5Video = document.getElementById('html5Video');\nconst ytContainer = document.getElementById('ytContainer');\n\n\/* ================= COMPLETED ================= *\/\nfunction markVideoAsCompleted(index){\n  document.querySelectorAll('.video-course-item').forEach(item=>{\n    if(parseInt(item.dataset.index,10) === index){\n      item.classList.add('completed');\n    }\n  });\n  localStorage.setItem(LS_DONE_PREFIX + index, 'true');\n}\n\n\/* ================= ACTIVE ================= *\/\nfunction setActiveItem(index){\n  document.querySelectorAll('.video-course-item')\n    .forEach(item => item.classList.remove('active'));\n  document.querySelectorAll(`[data-index=\"${index}\"]`)\n    .forEach(item => item.classList.add('active'));\n}\n\n\/* ================= PLAYER ================= *\/\nfunction changeVideo(index){\n  if(!videoUrls[index]) return;\n\n  html5Video.pause();\n  ytContainer.style.display = 'none';\n  html5Video.style.display = 'block';\n\n  html5Video.src = videoUrls[index];\n  html5Video.load();\n  html5Video.play().catch(()=>{});\n\n  currentVideoIndex = index;\n  setActiveItem(index);\n  localStorage.setItem(LS_LAST_INDEX, index);\n\n  if(localStorage.getItem(LS_DONE_PREFIX + index) === 'true'){\n    markVideoAsCompleted(index);\n  }\n}\n\nfunction prevVideo(){ if(currentVideoIndex > 0) changeVideo(currentVideoIndex - 1); }\nfunction nextVideo(){ if(currentVideoIndex < videoUrls.length - 1) changeVideo(currentVideoIndex + 1); }\n\n\/* ===== Khi xem xong video ===== *\/\nhtml5Video.addEventListener('ended', ()=>{\n  markVideoAsCompleted(currentVideoIndex);\n});\n\n\n\/* ================= RENDER LIST ================= *\/\nfunction renderCourseLists(){\n  const d = document.getElementById('desktopCourseList');\n  const m = document.getElementById('mobileCourseList');\n  d.innerHTML = ''; m.innerHTML = '';\n\n  titles.forEach((title, idx)=>{\n    const el = document.createElement('div');\n    el.className = 'video-course-item';\n    el.dataset.index = idx;\n    el.textContent = title;\n    el.onclick = ()=> changeVideo(idx);\n\n    if(localStorage.getItem(LS_DONE_PREFIX + idx) === 'true'){\n      el.classList.add('completed');\n    }\n\n    d.appendChild(el);\n\n    const el2 = el.cloneNode(true);\n    el2.onclick = ()=>{ changeVideo(idx); toggleMobileMenu(); };\n    m.appendChild(el2);\n  });\n}\n\nfunction toggleMobileMenu(){\n  document.getElementById('mobileCourseList').classList.toggle('show');\n\n}\n\n\/* ================= LOAD ================= *\/\nasync function loadVideosFromSheet(){\n    \/\/ G\u1ecdi v\u1ec1 WordPress action: get_cached_bg_nh1\n    const ajaxUrl = \"\/wp-admin\/admin-ajax.php?action=get_cached_bg_nh1\";\n\n    try {\n        const res = await fetch(ajaxUrl);\n        const data = await res.json();\n\n        videoData = Array.isArray(data.videos) ? data.videos : [];\n        \n        \/\/ --- KI\u1ec2M TRA TR\u1ed0NG ---\n        if (videoData.length === 0) {\n            const videoArea = document.querySelector('.video-content');\n            if (videoArea) {\n                videoArea.innerHTML = `\n                    <div class=\"empty-video-msg\">\n                        <i class=\"fa fa-video-camera\" style=\"font-size: 40px; margin-bottom: 15px; color: #ccc;\"><\/i>\n                        <div>Hi\u1ec7n ch\u01b0a c\u00f3 b\u00e0i gi\u1ea3ng n\u00e0o cho kh\u00f3a Nh\u00e0 h\u00e0ng 1.<br>Vui l\u00f2ng quay l\u1ea1i sau!<\/div>\n                    <\/div>\n                `;\n            }\n            document.getElementById('desktopCourseList').innerHTML = '';\n            return;\n        }\n\n        videoUrls = videoData.map(v => String(v.videoUrl || ''));\n        titles = videoData.map((v, i) => String(v.title || `Bu\u1ed5i ${i + 1}`));\n\n        renderCourseLists();\n\n        \/\/ M\u1edf l\u1ea1i video t\u1ea1i v\u1ecb tr\u00ed \u0111\u00e3 l\u01b0u\n        const saved = parseInt(localStorage.getItem(LS_LAST_INDEX), 10);\n        const startIndex = Number.isFinite(saved) && saved >= 0 && saved < videoUrls.length ? saved : 0;\n\n        changeVideo(startIndex);\n    } catch (error) {\n        console.error(\"L\u1ed7i t\u1ea3i d\u1eef li\u1ec7u Nh\u00e0 h\u00e0ng 1:\", error);\n    }\n}\n\n\/* ================= INIT ================= *\/\n\nfunction generateRandomID() {\n        return Math.random().toString(36).substr(2, 9);\n        }\n        function togglePassword() {\n        const input = document.getElementById(\"loginPassword\");\n        const iconWrap = document.getElementById(\"togglePwd\");\n\n        if (input.type === \"password\") {\n            input.type = \"text\";\n            iconWrap.innerHTML = `\n            <svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\"\n                fill=\"none\" stroke=\"#000\" stroke-width=\"2\"\n                stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                <path d=\"M17.94 17.94A10.94 10.94 0 0 1 12 19\n                        c-7 0-11-7-11-7a21.81 21.81 0 0 1 5.06-5.94\"><\/path>\n                <path d=\"M1 1l22 22\"><\/path>\n                <path d=\"M9.53 9.53A3 3 0 0 0 12 15\n                        a3 3 0 0 0 2.47-5.47\"><\/path>\n            <\/svg>\n            `;\n        } else {\n            input.type = \"password\";\n            iconWrap.innerHTML = `\n            <svg width=\"22\" height=\"22\" viewBox=\"0 0 24 24\"\n                fill=\"none\" stroke=\"#000\" stroke-width=\"2\"\n                stroke-linecap=\"round\" stroke-linejoin=\"round\">\n                <path d=\"M1 12s4-7 11-7 11 7 11 7-4 7-11 7-11-7-11-7z\"><\/path>\n                <circle cx=\"12\" cy=\"12\" r=\"3\"><\/circle>\n            <\/svg>\n            `;\n        }\n        }\n        function validateEmail(email) {\n        const re = \/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/;\n        return re.test(String(email).toLowerCase());\n        }\n<\/script>\n\n<\/body>\n<\/html>\n\n","protected":false},"excerpt":{"rendered":"<p>Kh\u00f3a h\u1ecdc Video tokutei gino 1 ngh\u00e0nh nh\u00e0 h\u00e0ng \u0110\u0102NG NH\u1eacP H\u1ec6 TH\u1ed0NG \u0110\u0103ng nh\u1eadp \u2630 Danh s\u00e1ch b\u00e0i gi\u1ea3ng \u276e B\u00e0i tr\u01b0\u1edbc B\u00e0i ti\u1ebfp theo \u276f \ud83d\udcd6 Danh s\u00e1ch b\u00e0i gi\u1ea3ng<\/p>","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"class_list":["post-1606","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/tokuteigino.vn\/ja\/wp-json\/wp\/v2\/pages\/1606","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tokuteigino.vn\/ja\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/tokuteigino.vn\/ja\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/tokuteigino.vn\/ja\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/tokuteigino.vn\/ja\/wp-json\/wp\/v2\/comments?post=1606"}],"version-history":[{"count":47,"href":"https:\/\/tokuteigino.vn\/ja\/wp-json\/wp\/v2\/pages\/1606\/revisions"}],"predecessor-version":[{"id":8267,"href":"https:\/\/tokuteigino.vn\/ja\/wp-json\/wp\/v2\/pages\/1606\/revisions\/8267"}],"wp:attachment":[{"href":"https:\/\/tokuteigino.vn\/ja\/wp-json\/wp\/v2\/media?parent=1606"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}