{"id":4350,"date":"2024-06-04T23:11:24","date_gmt":"2024-06-04T20:11:24","guid":{"rendered":"https:\/\/digitalrise.art\/?page_id=4350"},"modified":"2024-06-20T14:48:10","modified_gmt":"2024-06-20T11:48:10","slug":"%d7%91%d7%95%d7%98-p","status":"publish","type":"page","link":"https:\/\/digitalrise.art\/?page_id=4350","title":{"rendered":"\u05d1\u05d5\u05d8 (P)"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"4350\" class=\"elementor elementor-4350\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-c8f9f34 e-flex e-con-boxed e-con e-parent\" data-id=\"c8f9f34\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-4f86b99 elementor-widget elementor-widget-html\" data-id=\"4f86b99\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"he\">\r\n<head>\r\n    <meta charset=\"UTF-8\">\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n    <title>Interactive Character Chatbot<\/title>\r\n    <style>\r\n        body {\r\n            font-family: Arial, sans-serif;\r\n            display: flex;\r\n            justify-content: center;\r\n            align-items: flex-start;\r\n            height: 100vh;\r\n            margin: center;\r\n            padding-top: 20px;\r\n            background: url('https:\/\/digitalrise.art\/wp-content\/uploads\/2024\/04\/\u05e2\u05d9\u05e6\u05d5\u05d1-\u05dc\u05dc\u05d0-\u05e9\u05dd-17.png') no-repeat center center fixed;\r\n            background-size: cover;\r\n            overflow: auto;\r\n        }\r\n\r\n        .container {\r\n            text-align: center;\r\n            background: rgba(255, 255, 255, 0.5);\r\n            padding: 20px;\r\n            border-radius: 100px;\r\n            box-shadow: 0 0 30px rgba(0, 0, 0, 0.5);\r\n            backdrop-filter: blur(0px);\r\n            width: 100%;\r\n            max-width: 600px;\r\n            transition: height 0.3s ease;\r\n        }\r\n\r\n        #character-canvas {\r\n            width: 100%;\r\n            height: auto;\r\n            border-radius: 10px;\r\n        }\r\n\r\n        .chat-history {\r\n            max-height: 200px;\r\n            overflow-y: auto;\r\n            border: 1px solid #ccc;\r\n            padding: 10px;\r\n            margin-bottom: 20px;\r\n            background: rgba(255, 255, 255, 0.1);\r\n            border-radius: 10px;\r\n            box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.5);\r\n            color: black;\r\n            transition: max-height 0.3s ease;\r\n        }\r\n\r\n        .input-container {\r\n            display: flex;\r\n            flex-direction: column;\r\n            gap: 10px;\r\n            margin-bottom: 10px;\r\n        }\r\n\r\n        #message-input {\r\n            width: 100%;\r\n            padding: 10px;\r\n            border: 1px solid #ccc;\r\n            border-radius: 10px;\r\n            background: rgba(255, 255, 255, 0.1);\r\n            box-shadow: inset 0 0 10px rgba(0, 0, 0, 0.5);\r\n            color: black;\r\n            font-size: 16px;\r\n            transition: height 0.2s ease;\r\n        }\r\n\r\n        .styled-button, #file-label {\r\n            padding: 10px 20px;\r\n            border: none;\r\n            border-radius: 10px;\r\n            background: linear-gradient(45deg, #6b23e0, #a855f7, #d946ef, #f472b6);\r\n            color: white;\r\n            cursor: pointer;\r\n            box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);\r\n            transition: transform 0.2s, box-shadow 0.2s;\r\n            font-size: 16px;\r\n            text-shadow: 1px 1px 2px black;\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: center;\r\n        }\r\n\r\n        .styled-button:hover, #file-label:hover {\r\n            transform: translateY(-2px);\r\n            box-shadow: 0 8px 20px rgba(0, 0, 0, 0.4);\r\n        }\r\n\r\n        #status-message {\r\n            display: none;\r\n            font-style: italic;\r\n            margin-top: 10px;\r\n            color: green;\r\n            font-weight: bold;\r\n            animation: pulse 1s infinite;\r\n            text-align: center;\r\n        }\r\n\r\n        @keyframes pulse {\r\n            0% {\r\n                transform: scale(1);\r\n            }\r\n            50% {\r\n                transform: scale(1.1);\r\n            }\r\n            100% {\r\n                transform: scale(1);\r\n            }\r\n        }\r\n\r\n        #file-input {\r\n            display: none;\r\n        }\r\n\r\n        .history-container {\r\n            position: fixed;\r\n            top: 20px;\r\n            left: 20px;\r\n            background: rgba(255, 255, 255, 0.9);\r\n            padding: 20px;\r\n            border-radius: 10px;\r\n            box-shadow: 0 0 30px rgba(0, 0, 0, 0.5);\r\n            max-height: 90vh;\r\n            overflow-y: auto;\r\n            display: none;\r\n            z-index: 100;\r\n        }\r\n\r\n        .history-entry {\r\n            display: flex;\r\n            justify-content: space-between;\r\n            align-items: center;\r\n            margin-bottom: 10px;\r\n        }\r\n\r\n        .history-entry button {\r\n            margin-left: 10px;\r\n        }\r\n\r\n        #history-button {\r\n            position: fixed;\r\n            top: 20px;\r\n            left: 20px;\r\n            padding: 10px 20px;\r\n            border: none;\r\n            border-radius: 10px;\r\n            background: linear-gradient(45deg, #6b23e0, #a855f7, #d946ef, #f472b6);\r\n            color: white;\r\n            cursor: pointer;\r\n            box-shadow: 0 5px 15px rgba(0, 0, 0, 0.3);\r\n            transition: transform 0.2s, box-shadow 0.2s;\r\n            font-size: 16px;\r\n            text-shadow: 1px 1px 2px black;\r\n            z-index: 101;\r\n        }\r\n    <\/style>\r\n<\/head>\r\n<body>\r\n    <button id=\"history-button\" class=\"styled-button\">\u05d4\u05d9\u05e1\u05d8\u05d5\u05e8\u05d9\u05d9\u05ea \u05e9\u05d9\u05d7\u05d4<\/button>\r\n    <div class=\"history-container\" id=\"history-container\"><\/div>\r\n    <div class=\"container\">\r\n        <canvas id=\"character-canvas\" width=\"400\" height=\"500\"><\/canvas>\r\n        <div id=\"chat-history\" class=\"chat-history\"><\/div>\r\n        <div id=\"status-message\">\u05de\u05de\u05ea\u05d9\u05df \u05dc\u05e4\u05e2\u05d5\u05dc\u05d4...<\/div>\r\n        <div class=\"input-container\">\r\n            <button id=\"record-button\" class=\"styled-button\">\u05d4\u05e7\u05dc\u05d8<\/button>\r\n            <textarea id=\"message-input\" class=\"styled-input\" placeholder=\"\u05db\u05ea\u05d5\u05d1 \u05d0\u05ea \u05d4\u05d4\u05d5\u05d3\u05e2\u05d4 \u05db\u05d0\u05df...\"><\/textarea>\r\n            <label for=\"file-input\" id=\"file-label\" class=\"styled-button\">\u05d1\u05d7\u05e8 \u05e7\u05d5\u05d1\u05e5<\/label>\r\n            <input type=\"file\" id=\"file-input\" class=\"styled-input\">\r\n            <div id=\"file-name\"><\/div>\r\n            <button id=\"send-button\" class=\"styled-button\">\u05e9\u05dc\u05d7<\/button>\r\n        <\/div>\r\n        <button id=\"stop-speaking-button\" class=\"styled-button\">\u05d4\u05e4\u05e1\u05e7 \u05d3\u05d9\u05d1\u05d5\u05e8<\/button>\r\n        <button id=\"continue-speaking-button\" class=\"styled-button\" style=\"display:none;\">\u05d4\u05de\u05e9\u05da \u05d3\u05d9\u05d1\u05d5\u05e8<\/button>\r\n    <\/div>\r\n    <script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/three.js\/r128\/three.min.js\"><\/script>\r\n    <script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/animejs\/3.2.1\/anime.min.js\"><\/script>\r\n    <script>\r\n        let isRecording = false;\r\n        let recognition;\r\n        let audio = null;\r\n        let pausedAudioTime = 0;\r\n        let pausedUtterance = null;\r\n        let hologram;\r\n\r\n        const characterCanvas = document.getElementById('character-canvas');\r\n        const context = characterCanvas.getContext('2d');\r\n        const characterImage = new Image();\r\n        characterImage.src = 'https:\/\/digitalrise.art\/wp-content\/uploads\/2024\/06\/\u05e2\u05d9\u05e6\u05d5\u05d1-\u05dc\u05dc\u05d0-\u05e9\u05dd-30.png';\r\n\r\n        characterImage.onload = () => {\r\n            characterCanvas.width = characterImage.width;\r\n            characterCanvas.height = characterImage.height;\r\n            context.drawImage(characterImage, 0, 0, characterCanvas.width, characterCanvas.height);\r\n        };\r\n\r\n        const chatHistory = document.getElementById('chat-history');\r\n        const messageInput = document.getElementById('message-input');\r\n        const fileInput = document.getElementById('file-input');\r\n        const sendButton = document.getElementById('send-button');\r\n        const recordButton = document.getElementById('record-button');\r\n        const stopSpeakingButton = document.getElementById('stop-speaking-button');\r\n        const continueSpeakingButton = document.getElementById('continue-speaking-button');\r\n        const statusMessage = document.getElementById('status-message');\r\n        const historyButton = document.getElementById('history-button');\r\n        const historyContainer = document.getElementById('history-container');\r\n        const fileName = document.getElementById('file-name');\r\n\r\n        sendButton.addEventListener('click', sendMessage);\r\n        recordButton.addEventListener('click', toggleRecording);\r\n        stopSpeakingButton.addEventListener('click', pauseSpeaking);\r\n        continueSpeakingButton.addEventListener('click', resumeSpeaking);\r\n        historyButton.addEventListener('click', toggleHistory);\r\n        fileInput.addEventListener('change', updateFileName);\r\n\r\n        function isWebGLAvailable() {\r\n            try {\r\n                const canvas = document.createElement('canvas');\r\n                return !!window.WebGLRenderingContext && (canvas.getContext('webgl') || canvas.getContext('experimental-webgl'));\r\n            } catch (e) {\r\n                return false;\r\n            }\r\n        }\r\n\r\n        if (!isWebGLAvailable()) {\r\n            alert('WebGL is not supported on your browser or device.');\r\n        } else {\r\n            try {\r\n                let scene = new THREE.Scene();\r\n                let camera = new THREE.PerspectiveCamera(75, window.innerWidth \/ window.innerHeight, 0.1, 1000);\r\n                let renderer = new THREE.WebGLRenderer({ canvas: characterCanvas, alpha: true });\r\n                renderer.setSize(window.innerWidth, window.innerHeight);\r\n                camera.position.z = 5;\r\n                console.log(\"WebGL context created successfully.\");\r\n\r\n                function animate() {\r\n                    requestAnimationFrame(animate);\r\n                    if (renderer) {\r\n                        renderer.render(scene, camera);\r\n                    }\r\n                }\r\n\r\n                function loadHologram(modelUrl) {\r\n                    const loader = new THREE.GLTFLoader();\r\n                    loader.load(modelUrl, function(gltf) {\r\n                        if (scene && hologram) {\r\n                            scene.remove(hologram);\r\n                        }\r\n                        hologram = gltf.scene;\r\n                        scene.add(hologram);\r\n                        animate();\r\n                    });\r\n                }\r\n\r\n                animate();\r\n            } catch (e) {\r\n                console.error(\"Error creating WebGL context:\", e);\r\n            }\r\n        }\r\n\r\n        function sendMessage() {\r\n            const message = messageInput.value.trim();\r\n            const file = fileInput.files[0];\r\n            if (message || file) {\r\n                if (message) {\r\n                    displayMessage(message, 'user');\r\n                    setStatusMessage('\u05de\u05e0\u05ea\u05d7 \u05e0\u05ea\u05d5\u05e0\u05d9\u05dd...');\r\n                }\r\n                if (file) {\r\n                    setStatusMessage('\u05e7\u05d5\u05e8\u05d0 \u05e7\u05d5\u05d1\u05e5...');\r\n                }\r\n\r\n                const formData = new FormData();\r\n                formData.append('message', message);\r\n                if (file) {\r\n                    formData.append('file', file);\r\n                }\r\n\r\n                messageInput.value = '';\r\n                fileInput.value = '';\r\n                fileName.textContent = '';\r\n                \r\n                fetch('https:\/\/digitalrise.art\/bot-p\/api.php', {\r\n                    method: 'POST',\r\n                    body: formData\r\n                })\r\n                .then(response => {\r\n                    if (!response.ok) {\r\n                        throw new Error(`Network response was not ok: ${response.statusText}`);\r\n                    }\r\n                    return response.json();\r\n                })\r\n                .then(data => {\r\n                    setStatusMessage('');\r\n                    if (data.response) {\r\n                        const filteredResponse = data.response.replace(\/[\\*\\#]\/g, ''); \/\/ Remove asterisks and hashes\r\n                        displayMessage(filteredResponse, 'bot');\r\n                        if (data.audioContent) {\r\n                            playAudio(data.audioContent);\r\n                        } else {\r\n                            speakMessage(filteredResponse);\r\n                        }\r\n                    } else if (data.modelUrl) {\r\n                        loadHologram(data.modelUrl);\r\n                    } else if (data.error) {\r\n                        console.error('Error:', data.error);\r\n                        displayMessage('Error: ' + data.error, 'bot');\r\n                    }\r\n                    saveChatHistory();\r\n                })\r\n                .catch(error => {\r\n                    setStatusMessage('');\r\n                    console.error('Fetch error:', error);\r\n                    displayMessage('Error: ' + error.message, 'bot');\r\n                });\r\n            }\r\n        }\r\n\r\n        function setStatusMessage(message) {\r\n            statusMessage.textContent = message;\r\n            statusMessage.style.display = message ? 'block' : 'none';\r\n        }\r\n\r\n        function toggleRecording() {\r\n            if (isRecording) {\r\n                stopRecording();\r\n            } else {\r\n                startRecording();\r\n            }\r\n        }\r\n\r\n        function startRecording() {\r\n            if (!('webkitSpeechRecognition' in window)) {\r\n                alert('\u05d3\u05e4\u05d3\u05e4\u05df \u05d6\u05d4 \u05d0\u05d9\u05e0\u05d5 \u05ea\u05d5\u05de\u05da \u05d1\u05d4\u05e7\u05dc\u05d8\u05ea \u05e7\u05d5\u05dc.');\r\n                return;\r\n            }\r\n            recognition = new webkitSpeechRecognition();\r\n            recognition.lang = 'he-IL';\r\n            recognition.continuous = true; \/\/ Continuous recording\r\n            recognition.interimResults = true; \/\/ Show interim results\r\n\r\n            recognition.onresult = (event) => {\r\n                const transcript = Array.from(event.results)\r\n                    .map(result => result[0])\r\n                    .map(result => result.transcript)\r\n                    .join('');\r\n\r\n                document.getElementById('message-input').value = transcript;\r\n            };\r\n\r\n            recognition.onerror = (event) => {\r\n                console.error('Error during speech recognition:', event.error);\r\n                alert(`Error during speech recognition: ${event.error}`);\r\n                isRecording = false;\r\n                recordButton.textContent = '\u05d4\u05e7\u05dc\u05d8';\r\n            };\r\n\r\n            recognition.onend = () => {\r\n                isRecording = false;\r\n                recordButton.textContent = '\u05d4\u05e7\u05dc\u05d8';\r\n            };\r\n\r\n            recognition.start();\r\n            isRecording = true;\r\n            recordButton.textContent = '\u05e2\u05e6\u05d5\u05e8 \u05d4\u05e7\u05dc\u05d8\u05d4';\r\n        }\r\n\r\n        function stopRecording() {\r\n            if (recognition) {\r\n                recognition.stop();\r\n            }\r\n            isRecording = false;\r\n            recordButton.textContent = '\u05d4\u05e7\u05dc\u05d8';\r\n        }\r\n\r\n        function displayMessage(message, sender) {\r\n            const messageElement = document.createElement('div');\r\n            messageElement.textContent = `${sender === 'user' ? '\u05d0\u05ea\/\u05d4' : '\u05d1\u05d5\u05d8'}: ${message}`;\r\n            chatHistory.appendChild(messageElement);\r\n            chatHistory.scrollTop = chatHistory.scrollHeight;\r\n        }\r\n\r\n        function displayResponseMessage(message, sender) {\r\n            const messageElement = document.createElement('div');\r\n            messageElement.textContent = `${sender === 'user' ? '\u05d0\u05ea\/\u05d4' : '\u05d1\u05d5\u05d8'}: `;\r\n            chatHistory.appendChild(messageElement);\r\n\r\n            const updateMessage = (text) => {\r\n                messageElement.textContent += text;\r\n                chatHistory.scrollTop = chatHistory.scrollHeight;\r\n            };\r\n\r\n            let i = 0;\r\n            const interval = setInterval(() => {\r\n                if (i < message.length) {\r\n                    updateMessage(message.charAt(i));\r\n                    i++;\r\n                } else {\r\n                    clearInterval(interval);\r\n                }\r\n            }, 50);\r\n        }\r\n\r\n        function speakMessage(message) {\r\n            stopSpeaking(); \/\/ Ensure any ongoing speech is stopped before starting a new one\r\n            const filteredMessage = message.replace(\/[\\*\\#]\/g, ''); \/\/ Remove asterisks and hashes\r\n            const utterance = new SpeechSynthesisUtterance(filteredMessage);\r\n            utterance.lang = 'he-IL'; \/\/ Set default language to Hebrew\r\n            if (!message.match(\/[\\u0590-\\u05FF]\/)) {\r\n                utterance.lang = 'en-US'; \/\/ Set language to English if no Hebrew characters are found\r\n            }\r\n            utterance.voice = speechSynthesis.getVoices().find(voice => voice.lang === utterance.lang && voice.name.includes('Wavenet') && voice.gender === 'female');\r\n            speechSynthesis.speak(utterance);\r\n            utterance.onpause = () => pausedUtterance = utterance; \/\/ Store the paused utterance\r\n        }\r\n\r\n        function playAudio(base64Audio) {\r\n            if (audio) {\r\n                audio.pause(); \/\/ Stop any currently playing audio\r\n                audio.currentTime = 0;\r\n            }\r\n            audio = new Audio(`data:audio\/mp3;base64,${base64Audio}`);\r\n            audio.play().catch(error => {\r\n                console.error('Audio playback error:', error);\r\n            });\r\n            audio.onpause = () => pausedAudioTime = audio.currentTime; \/\/ Store the paused time\r\n        }\r\n\r\n        function pauseSpeaking() {\r\n            speechSynthesis.pause(); \/\/ Pause speech synthesis\r\n            if (audio) {\r\n                audio.pause(); \/\/ Pause any currently playing audio\r\n            }\r\n            stopSpeakingButton.style.display = 'none';\r\n            continueSpeakingButton.style.display = 'inline-block';\r\n        }\r\n\r\n        function resumeSpeaking() {\r\n            speechSynthesis.resume(); \/\/ Resume speech synthesis\r\n            if (audio && pausedAudioTime) {\r\n                audio.currentTime = pausedAudioTime; \/\/ Resume audio from the paused time\r\n                audio.play().catch(error => {\r\n                    console.error('Audio playback error:', error);\r\n                });\r\n            }\r\n            continueSpeakingButton.style.display = 'none';\r\n            stopSpeakingButton.style.display = 'inline-block';\r\n        }\r\n\r\n        function stopSpeaking() {\r\n            speechSynthesis.cancel(); \/\/ Stop any ongoing speech synthesis\r\n            if (audio) {\r\n                audio.pause(); \/\/ Stop any currently playing audio\r\n                audio.currentTime = 0;\r\n            }\r\n            pausedAudioTime = 0;\r\n            pausedUtterance = null;\r\n            continueSpeakingButton.style.display = 'none';\r\n            stopSpeakingButton.style.display = 'inline-block';\r\n        }\r\n\r\n        function toggleHistory() {\r\n            const isVisible = historyContainer.style.display === 'block';\r\n            historyContainer.style.display = isVisible ? 'none' : 'block';\r\n            if (!isVisible) {\r\n                loadChatHistory();\r\n            }\r\n        }\r\n\r\n        function saveChatHistory() {\r\n            const messages = Array.from(chatHistory.children).map(child => child.textContent);\r\n            const history = JSON.parse(localStorage.getItem('chatHistory')) || [];\r\n            history.push({ id: Date.now(), messages });\r\n            localStorage.setItem('chatHistory', JSON.stringify(history));\r\n        }\r\n\r\n        function loadChatHistory() {\r\n            historyContainer.innerHTML = '';\r\n            const history = JSON.parse(localStorage.getItem('chatHistory')) || [];\r\n            history.forEach(entry => {\r\n                const div = document.createElement('div');\r\n                div.classList.add('history-entry');\r\n                const nameInput = document.createElement('input');\r\n                nameInput.type = 'text';\r\n                nameInput.value = `\u05e9\u05d9\u05d7\u05d4 ${new Date(entry.id).toLocaleString()}`;\r\n                const loadButton = document.createElement('button');\r\n                loadButton.textContent = '\u05e4\u05ea\u05d7';\r\n                loadButton.addEventListener('click', () => loadChat(entry.id));\r\n                const deleteButton = document.createElement('button');\r\n                deleteButton.textContent = '\u05de\u05d7\u05e7';\r\n                deleteButton.addEventListener('click', () => deleteChat(entry.id));\r\n                div.appendChild(nameInput);\r\n                div.appendChild(loadButton);\r\n                div.appendChild(deleteButton);\r\n                historyContainer.appendChild(div);\r\n            });\r\n        }\r\n\r\n        function loadChat(id) {\r\n            const history = JSON.parse(localStorage.getItem('chatHistory')) || [];\r\n            const entry = history.find(h => h.id === id);\r\n            if (entry) {\r\n                chatHistory.innerHTML = '';\r\n                entry.messages.forEach(message => {\r\n                    const div = document.createElement('div');\r\n                    div.textContent = message;\r\n                    chatHistory.appendChild(div);\r\n                });\r\n            }\r\n        }\r\n\r\n        function deleteChat(id) {\r\n            let history = JSON.parse(localStorage.getItem('chatHistory')) || [];\r\n            history = history.filter(h => h.id !== id);\r\n            localStorage.setItem('chatHistory', JSON.stringify(history));\r\n            loadChatHistory();\r\n        }\r\n\r\n        function updateFileName() {\r\n            const file = fileInput.files[0];\r\n            if (file) {\r\n                fileName.textContent = `\u05e7\u05d5\u05d1\u05e5 \u05e0\u05d1\u05d7\u05e8: ${file.name}`;\r\n                displayMessage(`\u05e0\u05d1\u05d7\u05e8 \u05e7\u05d5\u05d1\u05e5: ${file.name}`, 'user');\r\n            } else {\r\n                fileName.textContent = '';\r\n            }\r\n        }\r\n\r\n        messageInput.addEventListener('input', () => {\r\n            messageInput.style.height = 'auto';\r\n            messageInput.style.height = `${messageInput.scrollHeight}px`;\r\n        });\r\n\r\n        messageInput.addEventListener('focus', () => {\r\n            messageInput.style.height = 'auto';\r\n            messageInput.style.height = `${messageInput.scrollHeight}px`;\r\n        });\r\n    <\/script>\r\n<\/body>\r\n<\/html>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Interactive Character Chatbot \u05d4\u05d9\u05e1\u05d8\u05d5\u05e8\u05d9\u05d9\u05ea \u05e9\u05d9\u05d7\u05d4 \u05de\u05de\u05ea\u05d9\u05df \u05dc\u05e4\u05e2\u05d5\u05dc\u05d4&#8230; \u05d4\u05e7\u05dc\u05d8 \u05d1\u05d7\u05e8 \u05e7\u05d5\u05d1\u05e5 \u05e9\u05dc\u05d7 \u05d4\u05e4\u05e1\u05e7 \u05d3\u05d9\u05d1\u05d5\u05e8 \u05d4\u05de\u05e9\u05da \u05d3\u05d9\u05d1\u05d5\u05e8<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"_eb_attr":"","content-type":"","site-sidebar-layout":"no-sidebar","site-content-layout":"page-builder","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-4350","page","type-page","status-publish","hentry"],"ams_acf":[],"_links":{"self":[{"href":"https:\/\/digitalrise.art\/index.php?rest_route=\/wp\/v2\/pages\/4350","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/digitalrise.art\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/digitalrise.art\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/digitalrise.art\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/digitalrise.art\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4350"}],"version-history":[{"count":1133,"href":"https:\/\/digitalrise.art\/index.php?rest_route=\/wp\/v2\/pages\/4350\/revisions"}],"predecessor-version":[{"id":7323,"href":"https:\/\/digitalrise.art\/index.php?rest_route=\/wp\/v2\/pages\/4350\/revisions\/7323"}],"wp:attachment":[{"href":"https:\/\/digitalrise.art\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4350"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}