Snippets Collections
myLists = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]

def to_one_list(myLists):
    myList = []
    for _list in myLists:
        for l in _list:
            myList.append(l)

    return myList

print(to_one_list(myLists = myLists))
import React, { useState, useEffect, useRef } from 'react';
import { NavLink, useNavigate } from 'react-router-dom';

import NavList from '../NavList';
import jsPDF from 'jspdf';
import html2canvas from 'html2canvas';
import { Chart, CategoryScale, LinearScale, LineController, PointElement, LineElement, Title } from 'chart.js/auto';
import { PersianNumber } from "persian-number-converter";
import FindingComponent from './finding_box'; 
import TableComponent from './table';

import LalezarFont from '../../../../fonts/Lalezar-Regular.ttf'; // Adjust the path accordingly
import Top1 from "../../../../assets/top1.png"
import Top2 from "../../../../assets/top2.png"
import Down1 from "../../../../assets/down1.png"
import Down2 from "../../../../assets/down2.png"


Chart.register(CategoryScale, LinearScale, LineController, PointElement, LineElement, Title); // Register necessary components


const englishToPersianNumber = (number) => {
  const persianDigits = '۰۱۲۳۴۵۶۷۸۹';
  return String(number).replace(/[0-9]/g, (match) => persianDigits[parseInt(match)]);
};

const FirstReport = () => {
  const [reportData, setReportData] = useState(null);
  const [editableData, setEditableData] = useState(null);
  const [isEditing, setIsEditing] = useState(false);
  const [editedData, setEditedData] = useState({});
  const [isLoading, setIsLoading] = useState(true);
  const [chartInstance, setChartInstance] = useState(null);
  const chartCanvasRef = useRef(null);
  const pieChart1CanvasRef = useRef(null);
  const pieChart2CanvasRef = useRef(null);
  const navigate = useNavigate(); // Use useNavigate hook



  useEffect(() => {
    fetchReportData();
  }, []);
  
  useEffect(() => {
    if (reportData) {
      createChart(); // Call createChart when reportData is available
    }
    
  }, [reportData]);

  


  const fetchReportData = async () => {
    try {
      const response = await fetch("http://188.121.99.245:8080/api/report/fake_data", {
       // headers: {
        //  Authorization: `Bearer ${localStorage.getItem('accessToken')}`
       // }
      });
      if (response.ok) {
        const data = await response.json();
        setReportData(data);
        setEditableData(data);
        setEditedData(data); // Initialize editedData with fetched data
      } else {
        console.error('Failed to fetch report data:', response.statusText);
      }
    } catch (error) {
      console.error('Error fetching report data:', error);
    } finally {
      setIsLoading(false); // Update loading state after fetching data
    }
  };



  const createChart = () => {
    const ctx = chartCanvasRef.current.getContext('2d');
    const persianLabels = reportData.Chart_1.x_axis_labels.map(label => englishToPersianNumber(label));
    const persianPerformanceData = reportData.Chart_1.data.map(item => englishToPersianNumber(item.performance));
    const persianBudgetData = reportData.Chart_1.data.map(item => englishToPersianNumber(item.premium_budget));
    const performanceDataEnglish = reportData.Chart_1.data.map(item => item.performance); // Keep data in English
    const BudgetDataEnglish = reportData.Chart_1.data.map(item => item.premium_budget); // Keep data in English

    console.log('Persian Labels:', persianLabels);
    console.log('Persian Performance Data:', persianPerformanceData);
    console.log('Persian Budget Data:', persianBudgetData);

    Chart.defaults.font.size = 20;
    Chart.defaults.font.family = "Lalezar"
    new Chart(ctx, {
      type: 'bar',
      data: {
        labels: reportData.Chart_1.x_axis_labels,
        datasets: [
          {
            label: 'کارایی',
            data: performanceDataEnglish,
            backgroundColor: 'rgba(255, 99, 132, 0.5)',
            borderColor: 'rgba(255, 99, 132, 1)',
            borderWidth: 1
          },
          {
            label: 'بودجه ممتاز',
            data: BudgetDataEnglish,
            backgroundColor: 'rgba(54, 162, 235, 0.5)',
            borderColor: 'rgba(54, 162, 235, 1)',
            borderWidth: 1
          }
        ]
      },
      options: {
        maintainAspectRatio: false,
        scales: {
          x: {
            type: 'category',

            font: {
              size: 25 // Larger font size for x-axis labels
            },
            
            grid: {
              display: false
            }
          },
          y: {
            type: 'linear',
            beginAtZero: true,
            ticks: {
              callback: function(value, index, values) {
                return englishToPersianNumber(value);
              },
              font: {
                size: 25 // Larger font size for y-axis ticks
              }
            }
          }
        },
        plugins: {
          tooltip: {
            callbacks: {
              label: function(context) {
                let label = context.dataset.label || '';
                if (label) {
                  label += ': ';
                }
                label += englishToPersianNumber(context.parsed.y);
                return label;
              }
            },
            title: {
              font: {
                size: 25 // Larger font size for tooltip title
              }
            },
            body: {
              font: {
                size: 25 // Larger font size for tooltip body
              }
            }
          },
          legend: {
            display: true,
            labels: {
              fontSize: 25 // Larger font size for legend labels
            },
            title: {
              font: {
                size: 25 // Larger font size for legend labels
              }
            }
          }
        },
        animation: {
          duration: 2000,
          easing: 'easeInOutQuart'
        },
        legend: {
          display: true,
          labels: {
            font: {
              size: 25 // Larger font size for legend labels
            }
          }
        }
      }
      
    });
    
    

    // Next, create the first pie chart
    const pieChart1Ctx = pieChart1CanvasRef.current.getContext('2d');
    const pieChart1 = new Chart(pieChart1Ctx, {
        type: 'pie',
        data: {
            labels: reportData.Chart_2.x_axis_labels,
            datasets: [{
                label: reportData.Chart_2.caption,
                data: reportData.Chart_2.data.map(item => item.value),
                backgroundColor:  [
                  '#FF5252', // Color for خودرو شخص ثالث
                  '#FFC352', // Color for عمر گروهی
                  '#EFFF52', // Color for آتش سوزی
                  '#89FF52', // Color for بدنه اتومبیل
                  '#52FFB8', // Color for باربری
                  '#52CDFF', // Color for درمان
                  '#5C52FF', // Color for حوادث
                  '#A352FF', // Color for مسئولیت
                  '#E552FF', // Color for مهندسی
                  '#FF52D0', // Color for سایر (کشتی)
                  '#52FF77', // Color for عمر و سرمایه گذاری
                 
              ],
                borderColor: 'rgba(255, 255, 255)',
                borderWidth: 1
            }]
        },
        options: {
            // Options for the first pie chart...
        }
    });

    // Finally, create the second pie chart
    const pieChart2Ctx = pieChart2CanvasRef.current.getContext('2d');
    const pieChart2 = new Chart(pieChart2Ctx, {
        type: 'pie',
        data: {
            labels: reportData.Chart_3.x_axis_labels,
            datasets: [{
                label: reportData.Chart_3.caption,
                data: reportData.Chart_3.data.map(item => item.value),
                backgroundColor: [
                  '#FF5252', // Color for خودرو شخص ثالث
                  '#FFC352', // Color for عمر گروهی
                  '#EFFF52', // Color for آتش سوزی
                  '#89FF52', // Color for بدنه اتومبیل
                  '#52FFB8', // Color for باربری
                  '#52CDFF', // Color for درمان
                  '#5C52FF', // Color for حوادث
                  '#A352FF', // Color for مسئولیت
                  '#E552FF', // Color for مهندسی
                  '#FF52D0', // Color for سایر (کشتی)
                  '#52FF77', // Color for عمر و سرمایه گذاری
                 
              ],
                borderWidth: 1
            }]
        },
        options: {
            // Options for the second pie chart...
        }
    });
};


  const handleEdit = () => {
    setIsEditing(true);
  };

  const handleSave = () => {
    setEditableData(editedData); // Update editableData with edited data
    setIsEditing(false);
  };

  const handleDownloadPDF = () => {
    const input = document.getElementById('reportContent');
    const pdf = new jsPDF('p', 'mm', 'a4');
    const pdfWidth = 210;
    const pdfHeight = 200;

    html2canvas(input, { scrollY: -window.scrollY }).then((canvas) => {
      const imgData = canvas.toDataURL('image/png');
      const imageHeight = (canvas.height * pdfWidth) / canvas.width;
  
      const Top1ImageUrl = Top1;
      const Top1ImageWidth = 210;
      const Top1ImageHeight = 100;
  
      const Top2ImageUrl = Top2;
      const Top2ImageWidth = 210;
      const Top2ImageHeight = 20;
  
      pdf.addImage(Top1ImageUrl, 'PNG', 0, 0, Top1ImageWidth, Top1ImageHeight, undefined, 'FAST');
  
      const down1ImageUrl = Down1;
      const down1Width = 210;
      const down1Height = 100;
  
      const down2ImageUrl = Down2;
      const down2Width = 210;
      const down2Height = 20;
  
      pdf.addImage(down1ImageUrl, 'PNG', 0, pdfHeight, down1Width, down1Height, undefined, 'FAST');
  
      const remainingHeight = pdfHeight - imageHeight;
  
      if (remainingHeight >= 0) {
        if (imageHeight > pdfHeight) {
          const ratio = pdfHeight / imageHeight;
          pdf.addImage(imgData, 'PNG', 0, 100, pdfWidth, 80, undefined, 'FAST');
        } else {
          pdf.addImage(imgData, 'PNG', 0, 100, pdfWidth, 80, undefined, 'FAST');
        }
      } else {
        pdf.addPage();
        pdf.addImage(imgData, 'PNG', 0,100, pdfWidth, 80, undefined, 'FAST');
      }
  
      pdf.addFileToVFS('Lalezar-Regular.ttf', LalezarFont);
      pdf.addFont('Lalezar-Regular.ttf', 'Lalezar', 'normal');
      pdf.setFont('Lalezar');
  
      const introHeader = document.querySelector('.new_page2 h4');
      if (introHeader) {
        const introHeaderPos = introHeader.getBoundingClientRect().top;
        if (introHeaderPos > pdfHeight) {
          pdf.addPage();
        }
      }
  
      // Render content for the second page
      const secondPageDiv = document.getElementById('page2');
      html2canvas(secondPageDiv, { scrollY: -window.scrollY }).then((secondCanvas) => {
        const secondDataUrl = secondCanvas.toDataURL('image/png');
        const secondImageHeight = (secondCanvas.height * pdfWidth) / secondCanvas.width;
        pdf.addPage();
        pdf.addImage(secondDataUrl, 'PNG', 0, 10, pdfWidth, secondImageHeight, undefined, 'FAST');
  
        // Render content for the third page
        if (reportData && reportData.personnel) {
          const thirdPageDiv = document.getElementById('page3');
          html2canvas(thirdPageDiv, { scrollY: -window.scrollY }).then((thirdCanvas) => {
            const thirdDataUrl = thirdCanvas.toDataURL('image/png');
            const thirdImageHeight = (thirdCanvas.height * pdfWidth) / thirdCanvas.width;
            pdf.addPage();
            pdf.addImage(thirdDataUrl, 'PNG', 0, 10, pdfWidth, 230, undefined, 'FAST');
  
            // Render content for the fourth page
            const fourthPageDiv = document.getElementById('page4');
            console.log("Fourth Page Div:", fourthPageDiv); // Debugging statement
            html2canvas(fourthPageDiv, { scrollY: -window.scrollY }).then((fourthCanvas) => {
              console.log("Fourth Canvas Dimensions:", fourthCanvas.width, fourthCanvas.height); // Debugging statement
              const fourthDataUrl = fourthCanvas.toDataURL('image/png');
              const fourthImageHeight = (fourthCanvas.height * pdfWidth) / fourthCanvas.width;
              console.log("fourthCanvas:", fourthCanvas); // Debugging statement
              pdf.addPage();
              pdf.addImage(fourthDataUrl, 'PNG', 3, 20, 190,200, undefined, 'FAST');
  

                // Add fifth page content
              const fifthPageDiv = document.getElementById('page5');
              html2canvas(fifthPageDiv, { scrollY: -window.scrollY }).then((fifthCanvas) => {
              const fifthDataUrl = fifthCanvas.toDataURL('image/png');
              const fifthImageHeight = (fifthCanvas.height * pdfWidth) / fifthCanvas.width;
          
              pdf.addPage();
              
              pdf.addImage(fifthDataUrl, 'PNG', 10, 20, 190, fifthImageHeight, undefined, 'FAST');
/*
            // Render content for the sixth page
            const sixthPageDiv = document.getElementById('page6');
            html2canvas(sixthPageDiv, { scrollY: -window.scrollY }).then((sixthCanvas) => {
              const sixthDataUrl = sixthCanvas.toDataURL('image/png');
              const sixthImageHeight = (sixthCanvas.height * pdfWidth) / sixthCanvas.width;
              pdf.addPage();
              pdf.addImage(sixthDataUrl, 'PNG', 10, 20, 190, sixthImageHeight, undefined, 'FAST');
            
            // Render content for the seventh page
            const seventhPageDiv = document.getElementById('page7');
            html2canvas(seventhPageDiv, { scrollY: -window.scrollY }).then((seventhCanvas) => {
              const seventhDataUrl = seventhCanvas.toDataURL('image/png');
              const seventhImageHeight = (seventhCanvas.height * pdfWidth) / seventhCanvas.width;
              pdf.addPage();
              pdf.addImage(seventhDataUrl, 'PNG', 10, 20, 190, seventhImageHeight, undefined, 'FAST');
           
           
              // Render content for the eighthpage
            const eighthPageDiv = document.getElementById('page8');
            html2canvas(eighthPageDiv, { scrollY: -window.scrollY }).then((eighthCanvas) => {
              const eighthDataUrl = eighthCanvas.toDataURL('image/png');
              const eighthImageHeight = (eighthCanvas.height * pdfWidth) / eighthCanvas.width;
              pdf.addPage();
              pdf.addImage(eighthDataUrl, 'PNG', 10, 20, 190, eighthImageHeight, undefined, 'FAST');
            
              
              const ninethPageDiv = document.getElementById('page9');
            html2canvas(ninethPageDiv, { scrollY: -window.scrollY }).then((ninethCanvas) => {
              const ninethDataUrl = ninethCanvas.toDataURL('image/png');
              const ninethImageHeight = (ninethCanvas.height * pdfWidth) / ninethCanvas.width;
              pdf.addPage();
              pdf.addImage(ninethDataUrl, 'PNG', 10, 20, 190, ninethImageHeight, undefined, 'FAST');
              

              const tenthPageDiv = document.getElementById('page10');
            html2canvas(tenthPageDiv, { scrollY: -window.scrollY }).then((tenthCanvas) => {
              const tenthDataUrl = tenthCanvas.toDataURL('image/png');
              const tenthImageHeight = (tenthCanvas.height * pdfWidth) / tenthCanvas.width;
              pdf.addPage();
              pdf.addImage(tenthDataUrl, 'PNG', 10, 20, 190, tenthImageHeight, undefined, 'FAST');
                
              const eleventhPageDiv = document.getElementById('page11');
            html2canvas(eleventhPageDiv, { scrollY: -window.scrollY }).then((eleventhCanvas) => {
              const eleventhDataUrl = eleventhCanvas.toDataURL('image/png');
              const eleventhImageHeight = (eleventhCanvas.height * pdfWidth) / eleventhCanvas.width;
              pdf.addPage();
              pdf.addImage(eleventhDataUrl, 'PNG', 10, 20, 190, eleventhImageHeight, undefined, 'FAST');

              const twelvethPageDiv = document.getElementById('page12');
            html2canvas(twelvethPageDiv, { scrollY: -window.scrollY }).then((twelvethCanvas) => {
              const twelvethDataUrl = twelvethCanvas.toDataURL('image/png');
              const twelvethImageHeight = (twelvethCanvas.height * pdfWidth) / twelvethCanvas.width;
              pdf.addPage();
              pdf.addImage(twelvethDataUrl, 'PNG', 10, 20, 190, twelvethImageHeight, undefined, 'FAST');

              */
              // Add image to the top of every page except the first one
              const totalPages = pdf.internal.getNumberOfPages();
              for (let i = 2; i <= totalPages; i++) {
                pdf.setPage(i);
                pdf.addImage(Top2ImageUrl, 'PNG', 0, 0, Top2ImageWidth, Top2ImageHeight, undefined, 'FAST');
                pdf.addImage(down2ImageUrl, 'PNG', 0, 280, down2Width, down2Height, undefined, 'FAST');
              }
            
              pdf.save('report.pdf');
            });
          });
        });
            //});
          //});
          
            
           
           
            } else {
            pdf.save('report.pdf');
            }
            });
            });
            };
  
const handleInputChange = (e, key) => {
  const value = e.target.value;
  setEditedData(prevState => {
    const newState = { ...prevState };
    let currentState = newState;
    const keys = key.split('.');
    keys.forEach((key, index) => {
      if (index === keys.length - 1) {
        currentState[key] = value;
      } else {
        currentState[key] = { ...currentState[key] };
        currentState = currentState[key];
      }
    });
    return newState;
  });
};




console.log('editedData', editedData);
console.log('reportData', reportData);


const handleGoBack = () => {
  navigate('/Reporttable'); // Navigate back to the OngoingFiles component
};


  return (
    <>
      <NavList />

     


      <div className="container mx-auto p-6" dir='rtl'>
      <button
                            onClick={handleGoBack}
                            className="bg-[color:var(--color-primary-variant-02)] py-1 px-3 rounded-lg"
                        >
                            بازگشت به گزارش
                        </button>
        {isLoading ? (
          <p>Loading...</p>
        ) : (
          <>
          <br/>
          <div className='flex mt-5 mb-5'>
              <button
                className="mt-8 bg-[color:var(--color-bg-variant)]  hover:bg-[color:var(--color-primary)] text-white font-bold py-2 px-4 mx-2 rounded"
                onClick={handleDownloadPDF}
              >
                دانلود 
              </button>
              {isEditing ? (
                <button
                  className="mt-8 bg-[color:var(--color-bg-variant)]  hover:bg-[color:var(--color-primary)] text-white font-bold py-2 px-4 mx-2 rounded"
                  onClick={handleSave}
                >
                  ذخیره
                </button>
              ) : (
                <button
                  className="mt-8 bg-[color:var(--color-bg-variant)]  hover:bg-[color:var(--color-primary)] text-white font-bold py-2 px-4 mx-2 rounded"
                  onClick={handleEdit}
                >
                  ویرایش
                </button>
              )}
            </div>

            <div id="reportContent" className="text-center" style={{ fontSize: '16px', lineHeight: '1.5' }}>
  {/* Content for the first page */}

  <h1 className=" text-5xl font-bold my-9 mb-[200px] text-center">
  {isEditing ? (
    <textarea
      className="w-full p-2 rounded-lg border border-gray-300"
      rows={6}
      value={editedData.first_page?.branch_name}
      onChange={(e) => handleInputChange(e, 'first_page.branch_name')}
    />
  ) : (
    editableData.first_page?.branch_name
  )}
</h1>
<h2 className="text-xl my-[200px] text-center ">
  {isEditing ? (
    <textarea
      className="w-full p-2 rounded-lg border border-gray-300"
      rows={6}
      value={editedData.first_page?.report_period}
      onChange={(e) => handleInputChange(e, 'first_page.report_period')}
    />
  ) : (
    editableData.first_page?.report_period
  )}
</h2>
<h3 className="text-lg my-4 text-center">
  {isEditing ? (
    <textarea
      className="w-full p-2 rounded-lg border border-gray-300"
      rows={6}
      value={editedData.first_page?.date_title}
      onChange={(e) => handleInputChange(e, 'first_page.date_title')}
    />
  ) : (
    editableData.first_page?.date_title
  )}
</h3>
  <br/>
    
</div>

{/* Content for the second page */}

<div id="page2" className="new_page2 p-[60px] ">
<h4 className="text-2xl font-bold my-10">مقدمه:</h4>
{isEditing ? (
  <textarea
    className="w-full p-[60px] rounded-lg border border-gray-300"
    rows={12}
    value={editedData.introduction?.content}
    onChange={(e) => handleInputChange(e, 'introduction.content')}
  />
) : (
  <div>
    <p>{editableData.introduction?.content}</p>
  </div>
)}
<h4 className="text-2xl font-bold my-10">اهداف ارزیابی:</h4>
{isEditing ? (
  <textarea
    className="w-full p-[60px] rounded-lg border border-gray-300"
    rows={12}
    value={editedData.evaluation_goals?.content}
    onChange={(e) => handleInputChange(e, 'evaluation_goals.content')}
  />
) : (
  <div>
    <p>{editableData.evaluation_goals?.content}</p>
  </div>
)}
<h4 className="text-2xl font-bold my-10">دامنه رسیدگی:</h4>
{isEditing ? (
  <textarea
    className="w-full p-[60px] rounded-lg border border-gray-300"
    rows={12}
    value={editedData.domain?.content}
    onChange={(e) => handleInputChange(e, 'domain.content')}
  />
) : (
  <div>
    <p>{editableData.domain?.content}</p>
  </div>
)}
<h4 className="text-2xl font-bold my-10">اهداف:</h4>

<br/>
</div>
    
 {/* Content for the third page */}
 {reportData && reportData.personnel && reportData.personnel.table && (
  <div id="page3" className="personnel_page p-[60px] ">
    <h4 className="text-2xl font-bold my-10">{reportData.personnel.title}</h4>
    {isEditing ? (
      <textarea
        className="w-full p-[60px] rounded-lg border border-gray-300"
        rows={12}
        value={editedData.introduction?.content}
        onChange={(e) => handleInputChange(e, 'introduction.content')}
      />
      
    ) : (
      <div>
        <p>{editableData.introduction?.content}</p>
      </div>
    )}
    <br/>
    {reportData.personnel.table && (
      <table className="table-auto w-full mt-8">
        <caption className="text-lg font-semibold mb-12">{reportData.personnel.table.caption}</caption>
        <thead>
          <tr className="bg-gray-200">
            {Object.values(reportData.personnel.table.column_names).map((columnName, index) => (
              <th key={index} className="px-4 py-2">{columnName}</th>
            ))}
          </tr>
        </thead>
        <tbody>
          {isEditing ? (
  reportData.personnel?.table?.data.map((rowData, rowIndex) => (
    <tr key={rowIndex} className="bg-white">
      <td className="px-4 py-2">
        <input
          type="text"
          className="w-full p-2 rounded-lg border border-gray-300"
          value={editedData.personnel.table.data[rowIndex].first_name
          }
          onChange={(e) =>
            handleInputChange(e, `personnel.table.data[${rowIndex}].first_name`)
          }
        />
      </td>
      <td className="px-4 py-2">
        <input
          type="text"
          className="w-full p-2 rounded-lg border border-gray-300"
          value={editedData.personnel?.table?.data[rowIndex]?.last_name}
          onChange={(e) =>
            handleInputChange(e, `personnel.table.data[${rowIndex}].last_name`)
          }
        />
        
      </td>
      <td className="px-4 py-2">
        <input
          type="text"
          className="w-full p-2 rounded-lg border border-gray-300"
          value={editedData.personnel?.table?.data[rowIndex]?.degree}
          onChange={(e) =>
            handleInputChange(e, `personnel.table.data[${rowIndex}].degree`)
          }
        />
      </td>
      <td className="px-4 py-2">
        <input
          type="text"
          className="w-full p-2 rounded-lg border border-gray-300"
          value={editedData.personnel?.table?.data[rowIndex]?.major}
          onChange={(e) =>
            handleInputChange(e, `personnel.table.data[${rowIndex}].major`)
          }
        />
      </td>
      <td className="px-4 py-2">
        <input
          type="text"
          className="w-full p-2 rounded-lg border border-gray-300"
          value={editedData.personnel?.table?.data[rowIndex]?.hiring_date_jalali}
          onChange={(e) =>
            handleInputChange(e, `personnel.table.data[${rowIndex}].hiring_date_jalali`)
          }
        />
      </td>
      <td className="px-4 py-2">
        <input
          type="text"
          className="w-full p-2 rounded-lg border border-gray-300"
          value={editedData.personnel?.table?.data[rowIndex]?.position}
          onChange={(e) =>
            handleInputChange(e, `personnel.table.data[${rowIndex}].position`)
          }
        />
      </td>
      <td className="px-4 py-2">
        <input
          type="text"
          className="w-full p-2 rounded-lg border border-gray-300"
          value={editedData.personnel?.table?.data[rowIndex]?.experience_relative}
          onChange={(e) =>
            handleInputChange(e, `personnel.table.data[${rowIndex}].experience_relative`)
          }
        />
      </td>
      <td className="px-4 py-2">
        <input
          type="text"
          className="w-full p-2 rounded-lg border border-gray-300"
          value={editedData.personnel?.table?.data[rowIndex]?.experience_semi_relative}
          onChange={(e) =>
            handleInputChange(e, `personnel.table.data[${rowIndex}].experience_semi_relative`)
          }
        />
      </td>
      <td className="px-4 py-2">
        <input
          type="text"
          className="w-full p-2 rounded-lg border border-gray-300"
          value={editedData.personnel?.table?.data[rowIndex]?.experience_not_relative}
          onChange={(e) =>
            handleInputChange(e, `personnel.table.data[${rowIndex}].experience_not_relative`)
          }
        />
      </td>
    </tr>
  ))
) : (
  // Render plain text for non-editing mode
  reportData.personnel?.table?.data.map((rowData, rowIndex) => (
    <tr key={rowIndex} className={rowIndex % 2 === 0 ? "bg-gray-100" : "bg-white"}>
      <td className="px-4 py-2 text-center">{rowData.first_name}</td>
      <td className="px-4 py-2 text-center">{rowData.last_name}</td>
      <td className="px-4 py-2 text-center">{rowData.degree}</td>
      <td className="px-4 py-2 text-center">{rowData.major}</td>
      <td className="px-4 py-2 text-center">{rowData.hiring_date_jalali}</td>
      <td className="px-4 py-2 text-center">{rowData.position}</td>
      <td className="px-4 py-2 text-center">{rowData.experience_relative}</td>
      <td className="px-4 py-2 text-center">{rowData.experience_semi_relative}</td>
      <td className="px-4 py-2 text-center">{rowData.experience_not_relative}</td>
    </tr>
  ))
)}
                </tbody>
              </table>
              
            )}
             <h4 className="text-2xl font-bold my-10">{reportData.performance_control.title}</h4>
    <p className="mb-6">{reportData.performance_control.description}</p>
    <table className="table-auto w-full">
      <caption className="text-lg font-semibold mb-6">{reportData.performance_control.table.caption}</caption>
      <thead>
        <tr className="bg-gray-200 ">
          {Object.values(reportData.performance_control.table.column_names).map((columnName, index) => (
            <th key={index} className="px-4 py-2">{columnName}</th>
          ))}
        </tr>
      </thead>
      <tbody> 
      {isEditing ? (
          reportData.performance_control.table.data.map((rowData, rowIndex) => (
            <tr key={rowIndex} className="bg-white  ">
              <td className="px-4 py-2  ">
                <input
                  type="number"
                  className="w-full p-2 rounded-lg border border-gray-300 "
                  value={editedData.performance_control.table.data[rowIndex].insurance_revenue}
                  onChange={(e) => handleInputChange(e, `performance_control.table.data[${rowIndex}].insurance_revenue`)}
                />
              </td>
              <td className="px-4 py-2 ">
                <input
                  type="number"
                  className="w-full p-2 rounded-lg border border-gray-300"
                  value={editedData.performance_control.table.data[rowIndex].loss}
                  onChange={(e) => handleInputChange(e, `performance_control.table.data[${rowIndex}].losse`)}
                />
              </td>
              <td className="px-4 py-2">
                <input
                  type="number"
                  className="w-full p-2 rounded-lg border border-gray-300"
                  value={editedData.performance_control.table.data[rowIndex].commission_cost}
                  onChange={(e) => handleInputChange(e, `performance_control.table.data[${rowIndex}].commission_cost`)}
                />
              </td>
              <td className="px-4 py-2">
                <input
                  type="number"
                  className="w-full p-2 rounded-lg border border-gray-300"
                  value={editedData.performance_control.table.data[rowIndex].administrative_costs}
                  onChange={(e) => handleInputChange(e, `performance_control.table.data[${rowIndex}].administrative_costs`)}
                />
              </td>
              <td className="px-4 py-2">
                <input
                  type="number"
                  className="w-full p-2 rounded-lg border border-gray-300"
                  value={editedData.performance_control.table.data[rowIndex].other_operational_costs}
                  onChange={(e) => handleInputChange(e, `performance_control.table.data[${rowIndex}].other_operational_costs`)}
                />
              </td>
              <td className="px-4 py-2">
                <input
                  type="number"
                  className="w-full p-2 rounded-lg border border-gray-300"
                  value={editedData.performance_control.table.data[rowIndex].non_operational_costs}
                  onChange={(e) => handleInputChange(e, `performance_control.table.data[${rowIndex}].non_operational_costs`)}
                />
              </td>
              <td className="px-4 py-2">
                <input
                  type="number"
                  className="w-full p-2 rounded-lg border border-gray-300"
                  value={editedData.performance_control.table.data[rowIndex].personnel_costs}
                  onChange={(e) => handleInputChange(e, `performance_control.table.data[${rowIndex}].personnel_costs`)}
                />
              </td>
              <td className="px-4 py-2">
                <input
                  type="number"
                  className="w-full p-2 rounded-lg border border-gray-300"
                  value={editedData.performance_control.table.data[rowIndex].depreciation_costs}
                  onChange={(e) => handleInputChange(e, `performance_control.table.data[${rowIndex}].depreciation_costs`)}
                />
              </td>
              <td className="px-4 py-2">
                <input
                  type="number"
                  className="w-full p-2 rounded-lg border border-gray-300"
                  value={editedData.performance_control.table.data[rowIndex].cost_ratio}
                  onChange={(e) => handleInputChange(e, `performance_control.table.data[${rowIndex}].cost_ratio`)}
                />
              </td>
              <td className="px-4 py-2">
                <input
                  type="number"
                  className="w-full p-2 rounded-lg border border-gray-300"
                  value={editedData.performance_control.table.data[rowIndex].profit_lost}
                  onChange={(e) => handleInputChange(e, `performance_control.table.data[${rowIndex}].profit_lost`)}
                />
              </td>
              
            </tr>
          ))
        ) : (
        reportData.performance_control.table.data.map((rowData, rowIndex) => (
          <tr key={rowIndex} className={rowIndex % 2 === 0 ? "bg-gray-100 item" : "bg-white"}>
            <td className={`px-4 py-2 text-center ${rowData.insurance_revenue < 0 ? 'text-red-500' : ''}`}>{PersianNumber(rowData.insurance_revenue)}</td>
            <td className={`px-4 py-2 text-center ${rowData.loss < 0 ? 'text-red-500' : ''}`}>{rowData.loss}</td>
            <td className={`px-4 py-2 text-center ${rowData.commission_cost < 0 ? 'text-red-500' : ''}`}>{PersianNumber(rowData.commission_cost)}</td>
            <td className={`px-4 py-2 text-center ${rowData.administrative_costs < 0 ? 'text-red-500' : ''}`}>{PersianNumber(rowData.administrative_costs)}</td>
            <td className={`px-4 py-2 text-center ${rowData.other_operational_costs< 0 ? 'text-red-500' : ''}`}>{PersianNumber(rowData.other_operational_costs)}</td>
            <td className={`px-4 py-2 text-center ${rowData.non_operational_costs < 0 ? 'text-red-500' : ''}`}>{PersianNumber(rowData.non_operational_costs)}</td>
            <td className={`px-4 py-2 text-center ${rowData.personnel_costs < 0 ? 'text-red-500' : ''}`}>{PersianNumber(rowData.personnel_costs)}</td>
            <td className={`px-4 py-2 text-center ${rowData.depreciation_costs < 0 ? 'text-red-500' : ''}`}>{PersianNumber(rowData.depreciation_costs)}</td>
            <td className={`px-4 py-2 text-center ${rowData.cost_ratio < 0 ? 'text-red-500' : ''}`}>{PersianNumber(rowData.cost_ratio)}</td>
            <td className={`px-4 py-2 text-center ${rowData.profit_lost < 0 ? 'text-red-500' : ''}`}>{PersianNumber(rowData.profit_lost)}</td>
            </tr>
          ))
        )}
        
      </tbody>
    </table>

    {reportData.FinancialPerformanceIssueLossCompareBudget && (
  <div id="page3" className="financial_performance_page p-[60px] mx-[-60px] " dir='rtl'>
    <h4 className="text-2xl font-bold my-10 ">{reportData.FinancialPerformanceIssueLossCompareBudget.title}</h4>
    <p className="mb-6">{reportData.FinancialPerformanceIssueLossCompareBudget.description}</p>
    <table className="table-auto w-full">
      <caption className="text-lg font-semibold mb-6">{englishToPersianNumber(reportData.FinancialPerformanceIssueLossCompareBudget.table.caption)}</caption>
      <thead>
        <tr className="bg-gray-200">
          {Object.values(reportData.FinancialPerformanceIssueLossCompareBudget.table.column_names).map((columnName, index) => (
            <th key={index} className="px-4 py-2">{columnName}</th>
          ))}
        </tr>
      </thead>
      <tbody>
        {isEditing ? (
          editedData.FinancialPerformanceIssueLossCompareBudget.table.data.map((rowData, rowIndex) => (
            <tr key={rowIndex} className="bg-white">
              {Object.keys(rowData).map((key, index) => (
                <td key={index} className="px-4 py-2">
                  <input
                    type="text"
                    className="w-full p-2 rounded-lg border border-gray-300"
                    value={rowData[key]}
                    onChange={(e) => handleInputChange(e, `FinancialPerformanceIssueLossCompareBudget.table.data[${rowIndex}].${key}`)}
                  />
                </td>
              ))}
            </tr>
          ))
        ) : (
          reportData.FinancialPerformanceIssueLossCompareBudget.table.data.map((rowData, rowIndex) => (
            <tr key={rowIndex} className={rowIndex % 2 === 0 ? "bg-gray-100" : "bg-white"}>
              {Object.values(rowData).map((value, index) => (
                <td key={index} className={`px-4 py-2 text-center ${value < 0 ? 'text-red-500' : ''}`}>{PersianNumber(value)}</td>
              ))}
            </tr>
          ))
        )}
      </tbody>
    </table>
  </div>
)}


          </div>
        )}

 {/* Content for the four page */}
 
 <div id="page4" className="">
  
 <caption className="text-lg font-semibold my-6 w-[800px]">{reportData.Chart_1.caption}</caption>

  <div className=" text-lg " style={{ width: '1350px', height: '690px' }}>

    <canvas className=' text-5x' ref={chartCanvasRef}></canvas>
  </div>
  <caption className="text-lg font-semibold my-6 w-[800px] ">{reportData.Chart_2.caption}</caption>

  <div className=" mr-[400px]" style={{ width: '600px', height: '450px' }}>
      <canvas ref={pieChart1CanvasRef}></canvas>
    </div>
    <caption className="text-lg font-semibold my-6 w-[800px]">{reportData.Chart_3.caption}</caption>

    <div className="mr-[400px]" style={{ width: '600px', height: '450px' }}>
      <canvas ref={pieChart2CanvasRef}></canvas>
    </div>
 
</div>

 {/* Content for the five page */}
 <div id="page5" className="">

 <FindingComponent
  finding="Finding_1"
  editedData={editedData}
  isEditing={isEditing}
  handleInputChange={handleInputChange}
/>

<div className=''>
        <h4 className="text-2xl font-bold my-10  p-5">{reportData.SalesPerformance.title}</h4>
        <p className='px-5 pb-5'>{reportData.SalesPerformance.description}</p>
        <table className="table-auto w-full">
  <caption className="text-lg font-semibold mb-6">{englishToPersianNumber(reportData.SalesPerformance.table.caption)}</caption>
  <thead>
    <tr className="bg-gray-200">
      {Object.values(reportData.SalesPerformance.table.column_names).map((columnName, index) => (
        <th key={index} className="px-4 py-2">{columnName}</th>
      ))}
    </tr>
  </thead>
  <tbody>
    {isEditing ? (
      editedData.SalesPerformance.table.data.map((rowData, rowIndex) => (
        <tr key={rowIndex} className="bg-white">
          {Object.keys(rowData).map((key, cellIndex) => (
            <td key={cellIndex} className="px-4 py-2">
              <input
                type="text"
                className="w-full p-2 rounded-lg border border-gray-300"
                value={rowData[key]}
                onChange={(e) => handleInputChange(e, `SalesPerformance.table.data[${rowIndex}].${key}`)}
              />
            </td>
          ))}
        </tr>
      ))
    ) : (
      reportData.SalesPerformance.table.data.map((rowData, rowIndex) => (
        <tr key={rowIndex} className={rowIndex % 2 === 0 ? "bg-gray-100" : "bg-white"}>
        {Object.keys(rowData).map((key, cellIndex) => (
  <td key={cellIndex} className={`px-4 py-2 text-center ${rowData[key] < 0 ? 'text-red-500' : ''}`}>
    {typeof rowData[key] === 'number' ? PersianNumber(rowData[key]) : rowData[key]}
  </td>
))}
        </tr>
      ))
    )}
  </tbody>
</table>
    </div>
</div>


{/* Content for the sixth page */}
<div id="page6" className="page-content" style={{ width: '420mm', height: '594mm', fontSize: '16px', lineHeight: '1.5' , padding: '30px', marginTop: '50px'}}>
    <FindingComponent finding="Finding_2" editedData={editedData} isEditing={isEditing} handleInputChange={handleInputChange} />
    <div className="my-8 px-5">
        <table className="table-auto w-full">
            <caption className="text-lg font-semibold mb-6">{editedData.AgentsSales.table.caption}</caption>
            <thead>
                <tr className="bg-gray-200">
                    {Object.values(editedData.AgentsSales.table.column_names).map((columnName, index) => (
                        <th key={index} className="px-4 py-2">{columnName}</th>
                    ))}
                </tr>
            </thead>
            <tbody>
                {editedData.AgentsSales.table.data.map((rowData, rowIndex) => (
                    <tr key={rowIndex} className={rowIndex % 2 === 0 ? "bg-gray-100" : "bg-white"}>
                        {Object.values(rowData).map((cellData, cellIndex) => (
                            <td key={cellIndex} className={`px-4 py-2 text-center ${cellData < 0 ? 'text-red-500' : ''}`}>
                                {typeof cellData === 'number' ? PersianNumber(cellData) : cellData}
                            </td>
                        ))}
                    </tr>
                ))}
            </tbody>
        </table>
    </div>
    <div className="my-8 px-5">
        <table className="table-auto w-full">
            <caption className="text-lg font-semibold mb-6">{editedData.AgentsLoss.table.caption}</caption>
            <thead>
                <tr className="bg-gray-200">
                    {Object.values(editedData.AgentsLoss.table.column_names).map((columnName, index) => (
                        <th key={index} className="px-4 py-2">{columnName}</th>
                    ))}
                </tr>
            </thead>
            <tbody>
                {editedData.AgentsLoss.table.data.map((rowData, rowIndex) => (
                    <tr key={rowIndex} className={rowIndex % 2 === 0 ? "bg-gray-100" : "bg-white"}>
                        {Object.values(rowData).map((cellData, cellIndex) => (
                            <td key={cellIndex} className={`px-4 py-2 text-center ${cellData < 0 ? 'text-red-500' : ''}`}>
                                {typeof cellData === 'number' ? PersianNumber(cellData) : cellData}
                            </td>
                        ))}
                    </tr>
                ))}
            </tbody>
        </table>
    </div>
</div>

{/* Content for the seventh page */}
<div id="page7" className="text-center" style={{ width: '420mm', height: '594mm', fontSize: '16px', lineHeight: '1.5' , padding: '30px', marginTop: '50px'}}>
    <h4 className="text-2xl font-bold my-8 p-2">{editedData.OperationalPlan.title}</h4>
    <div className="px-5 pb-2">
        <p>{editedData.OperationalPlan.content}</p>
    </div>
    <FindingComponent finding="Finding_3" editedData={editedData} isEditing={isEditing} handleInputChange={handleInputChange} />
    <div>
        <h4 className="text-2xl font-bold my-6 p-2">{editedData.Claims.title}</h4>
        <p className="px-5 pb-2">{editedData.Claims.content}</p>
    </div>
    <table className="table-auto w-full my-8">
        <caption className="text-lg font-semibold mb-6">{editedData.ClaimRemain.table.caption}</caption>
        <thead>
            <tr className="bg-gray-200">
                {Object.values(editedData.ClaimRemain.table.column_names).map((columnName, index) => (
                    <th key={index} className="px-4 py-2">{columnName}</th>
                ))}
            </tr>
        </thead>
        <tbody>
            {editedData.ClaimRemain.table.data.map((rowData, rowIndex) => (
                <tr key={rowIndex} className={rowIndex % 2 === 0 ? "bg-gray-100" : "bg-white"}>
                    {Object.values(rowData).map((cellData, cellIndex) => (
                        <td key={cellIndex} className="px-4 py-2 text-center">
                            {typeof cellData === 'number' ? cellData.toLocaleString() : cellData}
                        </td>
                    ))}
                </tr>
            ))}
        </tbody>
    </table>
    <table className="table-auto w-full my-8">
        <caption className="text-lg font-semibold mb-6">{editedData.ClaimsDecomByAge.table.caption}</caption>
        <thead>
            <tr className="bg-gray-200">
                {Object.values(editedData.ClaimsDecomByAge.table.column_names).map((columnName, index) => (
                    <th key={index} className="px-4 py-2">{columnName}</th>
                ))}
            </tr>
        </thead>
        <tbody>
            {editedData.ClaimsDecomByAge.table.data.map((rowData, rowIndex) => (
                <tr key={rowIndex} className={rowIndex % 2 === 0 ? "bg-gray-100" : "bg-white"}>
                    {Object.values(rowData).map((cellData, cellIndex) => (
                        <td key={cellIndex} className="px-4 py-2 text-center">
                            {typeof cellData === 'number' ? cellData.toLocaleString() : cellData}
                        </td>
                    ))}
                </tr>
            ))}
        </tbody>
    </table>
</div>

{/* Content for the eighth page */}
<div id="page8" className="text-center" style={{ width: '420mm', height: '594mm', fontSize: '16px', lineHeight: '1.5', padding: '30px', marginTop: '50px' }}>
    <table className="table-auto w-full my-8">
        <caption className="text-lg font-semibold mb-6">{editedData.ClaimsDecomByInsuranceType.table.caption}</caption>
        <thead>
            <tr className="bg-gray-200">
                {Object.values(editedData.ClaimsDecomByInsuranceType.table.column_names).map((columnName, index) => (
                    <th key={index} className="px-4 py-2">{columnName}</th>
                ))}
            </tr>
        </thead>
        <tbody>
            {editedData.ClaimsDecomByInsuranceType.table.data.map((rowData, rowIndex) => (
                <tr key={rowIndex} className={rowIndex % 2 === 0 ? "bg-gray-100" : "bg-white"}>
                    {Object.values(rowData).map((cellData, cellIndex) => (
                        <td key={cellIndex} className="px-4 py-2 text-center">
                            {typeof cellData === 'number' ? cellData.toLocaleString() : cellData}
                        </td>
                    ))}
                </tr>
            ))}
        </tbody>
    </table>
    <FindingComponent finding="Finding_4" editedData={editedData} isEditing={isEditing} handleInputChange={handleInputChange} />
</div>


<div id="page9" className="">
<h4 className="text-2xl font-bold my-8 p-2">{editedData.SalesNetwork.title}</h4>
<div className='px-5 pb-2'>
    <p></p>
  </div>

  <h5 className="text-2xl font-bold my-8 p-2">{editedData.AgentsRevenue.title}</h5>
<div className='px-5 pb-2'>
    <p></p>
  </div>


  {/* AgentsRevenueMonthlyTable */}
  <div>
    <table className="table-auto w-full my-8">
      <caption className="text-lg font-semibold mb-6">{editedData.AgentsRevenueMonthlyTable.table.caption}</caption>
      <thead>
        <tr className="bg-gray-200">
          {Object.values(editedData.AgentsRevenueMonthlyTable.table.column_names).map((columnName, index) => (
            <th key={index} className="px-4 py-2">{columnName}</th>
          ))}
        </tr>
      </thead>
      <tbody>
        {editedData.AgentsRevenueMonthlyTable.table.data.map((rowData, rowIndex) => (
          <tr key={rowIndex} className={rowIndex % 2 === 0 ? "bg-gray-100" : "bg-white"}>
            {Object.values(rowData).map((cellData, cellIndex) => (
              <td key={cellIndex} className="px-4 py-2 text-center">
                {typeof cellData === 'number' ? cellData.toLocaleString() : cellData}
              </td>
            ))}
          </tr>
        ))}
      </tbody>
    </table>
  </div>


</div>

<div id="page10" className="">

  <FindingComponent
  finding="Finding_6"
  editedData={editedData}
  isEditing={isEditing}
  handleInputChange={handleInputChange}
/>

<div id="page11" className="">
<h4 className="text-2xl font-bold my-8 p-2">{editedData.PerformanceControlOfBranch.title}</h4>
<div className='px-2 pb-1'>
   
  </div>

  <h5 className="text-2xl font-bold my-8 p-2">{editedData.PerformanceControlOfBranch_CarThird.title}</h5>
<div className='px-5 pb-2'>
    <p></p>
  </div>


  {/* PerformanceControlOfBranch_CarThirdTable */}
  <div>
    <table className="table-auto w-full my-8">
      <caption className="text-lg font-semibold mb-6">{editedData.PerformanceControlOfBranch_CarThirdTable.table.caption}</caption>
      <thead>
        <tr className="bg-gray-200">
          {Object.values(editedData.PerformanceControlOfBranch_CarThirdTable.table.column_names).map((columnName, index) => (
            <th key={index} className="px-4 py-2">{columnName}</th>
          ))}
        </tr>
      </thead>
      <tbody>
        {editedData.PerformanceControlOfBranch_CarThirdTable.table.data.map((rowData, rowIndex) => (
          <tr key={rowIndex} className={rowIndex % 2 === 0 ? "bg-gray-100" : "bg-white"}>
            {Object.values(rowData).map((cellData, cellIndex) => (
              <td key={cellIndex} className="px-4 py-2 text-center">
                {typeof cellData === 'number' ? cellData.toLocaleString() : cellData}
              </td>
            ))}
          </tr>
        ))}
      </tbody>
    </table>
  </div>

  <div>
    <table className="table-auto w-full my-8">
      <caption className="text-lg font-semibold mb-6">{editedData.PerformanceControlOfBranch_CarThirdTableOther.table.caption}</caption>
      <thead>
        <tr className="bg-gray-200">
          {Object.values(editedData.PerformanceControlOfBranch_CarThirdTableOther.table.column_names).map((columnName, index) => (
            <th key={index} className="px-4 py-2">{columnName}</th>
          ))}
        </tr>
      </thead>
      <tbody>
        {editedData.PerformanceControlOfBranch_CarThirdTableOther.table.data.map((rowData, rowIndex) => (
          <tr key={rowIndex} className={rowIndex % 2 === 0 ? "bg-gray-100" : "bg-white"}>
            {Object.values(rowData).map((cellData, cellIndex) => (
              <td key={cellIndex} className="px-4 py-2 text-center">
                {typeof cellData === 'number' ? cellData.toLocaleString() : cellData}
              </td>
            ))}
          </tr>
        ))}
      </tbody>
    </table>
  </div>
</div>

</div>

             <div className='flex mt-5 mb-5'>
              <button
                className="mt-8 bg-[color:var(--color-bg-variant)]  hover:bg-[color:var(--color-primary)] text-white font-bold py-2 px-4 mx-2 rounded"
                onClick={handleDownloadPDF}
              >
                دانلود 
              </button>
              {isEditing ? (
                <button
                  className="mt-8 bg-[color:var(--color-bg-variant)]  hover:bg-[color:var(--color-primary)] text-white font-bold py-2 px-4 mx-2 rounded"
                  onClick={handleSave}
                >
                  ذخیره
                </button>
              ) : (
                <button
                  className="mt-8 bg-[color:var(--color-bg-variant)]  hover:bg-[color:var(--color-primary)] text-white font-bold py-2 px-4 mx-2 rounded"
                  onClick={handleEdit}
                >
                  ویرایش
                </button>
              )}
            </div>


 <br/>  <br/>  <br/>  <br/>  <br/>  <br/>  <br/>  <br/>
          </>
        )}
         <br/>  <br/>  <br/>  <br/>  <br/>  <br/>  <br/>  <br/>
      </div>
      <br/>  <br/>  <br/>  <br/>  <br/>  <br/>  <br/>  <br/>
    </>
  );
};

export default FirstReport;
<html lang="en">

<head>
    <meta charset="utf-8" />
    <meta http-equiv="x-ua-compatible" content="ie=edge" />
    <title>Furstore - Furniture Home Decor Shopify 2.0 Theme</title>
    <meta name="keywords" content="shopify, shopify theme, single product shopify, POD tshirt shopify, shopify drop shipping, dropshipping, best shopify theme, amazon dropshipping, ebay dropshipping, alibaba dropshipping, teemate, mate shopify, shopify 2.0"
    />
    <meta name="description" content="Furstore - High Converting eCommerce Shopify 2.0 Theme includes over 09 Unique Pre-Made Homepages with great attention to details, flexibility and performance" />

    <meta property="og:url" content="https://vinovathemes.com/" />
    <meta property="fb:app_id" content="1471668526185306" />
    <meta property="og:type" content="website" />
    <meta property="og:title" content="Furstore - Furniture Home Decor Shopify 2.0 Theme" />
    <meta property="og:image" content="https://vinovathemes.com/shopify/furstore/assets/img/preview.png" />
    <meta property="og:image:type" content="image/png" />
    <meta property="og:description" content="Furstore - High Converting eCommerce Shopify 2.0 Theme includes over 09 Unique Pre-Made Homepages with great attention to details, flexibility and performance" />
    <link rel="canonical" target="_blank" href="https://vinovathemes.com/" />
    <meta name="og:image:alt" content="Furstore - Furniture Home Decor Shopify 2.0 Theme" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    <link rel="icon" type="image/image/png" href="assets/img/favicon.png" />
    <link rel="shortcut icon" type="image/png" href="assets/img/favicon.png" />

    <link rel="preconnect" href="https://fonts.googleapis.com" />
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
    <link href="https://fonts.googleapis.com/css2?family=Bai+Jamjuree:wght@400;500;600;700&display=swap" rel="stylesheet" />
    <link rel="stylesheet" href="assets/css/animate.css" type="text/css" media="all" />
    <link rel="stylesheet" href="assets/css/slick.css" type="text/css" media="all" />
    <link rel="stylesheet" href="assets/css/tailwind.css" type="text/css" media="all" />
    <link rel="stylesheet" href="assets/css/style.css" type="text/css" media="all" />
    <link rel="stylesheet" href="assets/css/style-icon.css" type="text/css" media="all">

    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/material-design-iconic-font/2.2.0/css/material-design-iconic-font.min.css" />


    <script type="text/javascript" async="" src="https://www.google-analytics.com/analytics.js"></script>

    <script src="assets/js/jquery-3.2.1.min.js"></script>
    <script src="assets/js/jquery.lazy.min.js"></script>
    <script src="assets/js/wow.min.js"></script>
    <script src="assets/js/isotope.js"></script>
    <script src="assets/js/slick.min.js"></script>
    <script src="assets/js/parallax.js"></script>
    <script src="assets/js/global.js"></script>

    <!-- Google tag (gtag.js) -->
    <script async src="https://www.googletagmanager.com/gtag/js?id=UA-169364993-1"></script>
    <script>
        window.dataLayer = window.dataLayer || [];

        function gtag() {
            dataLayer.push(arguments);
        }
        gtag("js", new Date());

        gtag("config", "UA-169364993-1");
    </script>
</head>

<body>
    <!-- Header -->
    <header class="header sticky-menu relative">
        <div class="container mx-auto header_top header_content text-center">
            <div class="site_header md:h-[80px] h-[auto] flex justify-center md:justify-start items-center flex-wrap md:flex-nowrap">
                <div class="xl:block inline-block md:mt-0 md:mb-0 mt-5 mb-2">
                    <a href="#">
                  <img src="assets/img/logo.png" alt="Logo" />
               </a>
                </div>
                <div class="xl:ml-56 md:ml-14 overflow-hidden mt-2 mb-4 md:mt-0 md:mb-0">
                    <div class="header_nav text-center">
                        <ul class="md:flex justify-center font-bold text-[#000000] text-sm">
                            <li class="2xl:pr-[40px] pr-6">
                                <a href="#">Demos</a>
                            </li>
                            <li class="2xl:pr-[40px] pr-6">
                                <a href="#">Features</a>
                            </li>
                            <li class="2xl:pr-[40px] pr-6">
                                <a href="#">Testimonial</a>
                            </li>
                            <li class="2xl:pr-[40px] pr-6"><a href="#">FAQs</a>
                            </li>
                            <li class="2xl:pr-[40px] pr-6"><a href="https://documents.vinovathemes.com/furstore-documentation">Online Documentation</a>
                            </li>
                        </ul>
                    </div>
                </div>
            </div>
            <div class="header-sticky bg-white">
                <div class="site_header h-[50px] leading-[50px] items-center flex container mx-auto">
                    <div class="2xl:px-[94] px-7">
                        <div class="flex flex-nowrap items-center">
                            <div class="block">
                                <a href="#">
                           <img src="assets/img/logo.png" alt="Logo" />
                        </a>
                            </div>
                            <div class="xl:ml-56 ml-12">
                                <div class="header_nav text-center">
                                    <ul class="flex font-bold text-sm">
                                        <li class="2xl:pr-[40px] pr-6">
                                            <a href="#">Demos</a>
                                        </li>
                                        <li class="2xl:pr-[40px] pr-6">
                                            <a href="#">Features</a>
                                        </li>
                                        <li class="2xl:pr-[40px] pr-6">
                                            <a href="#">Testimonial</a>
                                        </li>
                                        <li class="2xl:pr-[40px] pr-6">
                                            <a href="#">FAQs</a>
                                        </li>
                                        <li class="2xl:pr-[40px] pr-6">
                                            <a href="https://documents.vinovathemes.com/furstore-documentation">Online Documentation</a>
                                        </li>
                                    </ul>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </header>
    <!-- End Header -->
    <!-- Main Content -->
    <main class="main">
        <div class="banner-top md:overflow-hidden relative bg-[#eff4f0]">
            <div class="container mx-auto grid lg:grid-cols-12 md:grid-cols-12 grid-cols-1 lg:gap-[30px] gap-[10px]">
                <div class="lg:col-span-5 md:col-span-6 col-span-12 text-[#082e21]">
                    <div class="content-left 2xl:py-[297px] lg:py-[200px] md:py-[80px] pt-[50px] pb-[40px] ">
                        <h2 class="xl:text-[36px] text-[20px] font-bold md:text-left text-center 2xl:leading-[60px] leading-9 text-[#082e21] wow fadeInBottomLeft" data-wow-delay="0.2s"><span class="text-[#082e21]">Furniture</span> & <span class="text-[#082e21]">Home Decor</span> <br>Shopify Theme</h2>
                        <ul class="md:block hidden text-[#082e21] font-bold lg:pt-10 pt-8">
                            <li class="flex wow fadeInBottomLeft" data-wow-delay="0.4s">
                                <i class="rbb-icon-check-9 title text-base md:pr-[25px] pr-[15px] text-[#082e21]"></i><span class="text-[13px]">Shopify OS 2.0</span>
                            </li>
                            <li class="flex wow fadeInBottomLeft" data-wow-delay="0.5s">
                                <i class="rbb-icon-check-9 title text-base md:pr-[25px] pr-[15px] text-[#082e21]"></i><span class="text-[13px]">NO coding knowledge required</span>
                            </li>
                            <li class="flex wow fadeInBottomLeft" data-wow-delay="0.6s">
                                <i class="rbb-icon-check-9 title text-base md:pr-[25px] pr-[15px] text-[#082e21]"></i><span class="text-[13px]">NO Monthly charge</span>
                            </li>
                            <li class="flex wow fadeInBottomLeft" data-wow-delay="0.7s">
                                <i class="rbb-icon-check-9 title text-base md:pr-[25px] pr-[15px] text-[#082e21]"></i><span class="text-[13px]">High Converting Shopify Theme</span>
                            </li>
                            <li class="flex wow fadeInBottomLeft" data-wow-delay="0.8s">
                                <i class="rbb-icon-check-9 title text-base md:pr-[25px] pr-[15px] text-[#082e21]"></i><span class="text-[13px]">Maximum Customizability</span>
                            </li>
                            <li class="flex wow fadeInBottomLeft" data-wow-delay="0.9s">
                                <i class="rbb-icon-check-9 title text-base md:pr-[25px] pr-[15px] text-[#082e21]"></i><span class="text-[13px]">Premium Support</span>
                            </li>
                        </ul>
                        <div class="flex items-center md:justify-start justify-center md:flex-nowrap flex-wrap mt-[55px] wow fadeInBottomLeft" data-wow-delay="1s">
                            <button>
                        <a class="button-home md:w-[166px] w-[130px] h-[50] leading-[50px] rounded-[3px] bg-white text-[#000000] inline-block text-xs font-bold mr-[10px] hover:bg-[#010d16] hover:text-white transition-all shadow-[7px_7px_15px_0_rgba(0,0,0,0.2)]"
                           href="#">View Demos</a>
                     </button>
                            <button class="button-top">
                        <a class="md:w-[166px] w-[130px] h-[50] leading-[50px] rounded-[3px] bg-white text-[#000000] inline-block text-xs font-bold hover:bg-[#010d16] hover:text-white transition-all shadow-[7px_7px_15px_0_rgba(0,0,0,0.2)]"
                           href="https://1.envato.market/vinovathemes">Our Portfolio</a>
                     </button>
                        </div>
                    </div>
                </div>
                <div class="slide-content lg:col-span-7 md:col-span-6 col-span-12 md:h-full h-[300px]">
                    <div class="item-background relative w-full h-full">
                        <div class="img-slider img-slide-1 absolute z-30 left-0 bottom-0 shadow-[22px_21px_35px_0px_rgba(0,0,0,0.20)] xl:max-w-[536px] lg:max-w-[420px] md:max-w-[260px] wow fadeInUp" data-wow-delay="1.3s">
                            <img class="" src="assets/img/banner1-1.jpg" alt="slide2">
                        </div>
                        <div class="img-slider img-slide-2 absolute z-20 top-0 right-0 shadow-[22px_21px_35px_0px_rgba(0,0,0,0.20)] xl:max-w-[410px] lg:max-w-[240px] md:max-w-[180px] wow fadeInDown" data-wow-delay="1.3s">
                            <img src="assets/img/banner1-2.jpg" alt="slide2">
                        </div>
                    </div>
                </div>
            </div>
        </div>
        </div>
        <!--  Project -->
        <div class="project bg-[#091017] md:pt-[140px] pt-20 text-center item overflow-hidden">
            <div class="container mx-auto px-[15px]">
                <p class="text-white font-semibold text-lg pb-4 wow fadeInUp" data-wow-delay="0.3s">
                    Choosing a Furstore Theme for
                </p>
                <h2 class="text-white font-extrabold md:text-4xl text-2xl pb-5 wow fadeInUp" data-wow-delay="0.4s">
                    Your Next Project?
                </h2>
                <p class="text-white text-sm text-[0.9375] pb-12 leading-[25px] max-w-[895px] inline-block wow fadeInUp" data-wow-delay="0.5s">
                    Furstore Shopify Theme is a clean and minimalistic style design, perfect for various types of stores, such as Furniture, Home Decor, Fashion, Gardening Supplies, Gifts, Canvas Painting, Jewelry Stores and more. It covers multiple categories and products
                    and has 09 different homepage layouts to meet all your requirements.
                </p>
                <div class="project-center text-[0.9375rem] pb-14 mt-1 md:flex grid justify-center text-white font-bold wow fadeInUp" data-wow-delay="0.5s">
                    <span class="flex items-center lg:mr-[70px] mr-8">
                  <span class="icon"><i class="zmdi zmdi-check"></i></span>Sections On Every Page
                    </span>
                    <span class="flex items-center lg:mr-[70px] mr-8 md:py-0 py-5">
                  <span class="icon"><i class="zmdi zmdi-check"></i></span> Drag & Drop Shopify Theme Sections
                    </span>
                    <span class="flex items-center">
                  <span class="icon"><i class="zmdi zmdi-check"></i></span> Support Filter Collection ver 2.0
                    </span>
                </div>
                <div class="text-center wow fadeInUp" data-wow-delay="0.5s">
                    <img class="inline-block lazyload" data-src="assets/img/project.png" alt="project" />
                </div>
            </div>
        </div>
        <!-- Pre-Build Demos  --->
        <div class="tab-homepage bg-[#e8eef1] xl:pt-[195px] pt-[100px] xl:pb-[180px] pb-[100px] 2xl:px-20 lg:pl-12 lg:pr-10 px-[15px] grid grid-cols-1 gap-0 relative" id="homepage-demo">
            <div class="col-span-1 tab-right main-tab-homepage lg:mt-0 mt-12">
                <h2 class="px-[15px] font-extrabold uppercase md:text-3xl text-xl text-[#010101] wow fadeInUp text-center" data-wow-delay="0.4s">
                    <span class="text-[#082e21]">09</span> Pre-Build Demos
                </h2>
                <p class="px-[15px] text-[0.9375rem] pt-6 pb-10 text-[#424242] wow fadeInUp text-center" data-wow-delay="0.4s">
                    Comes with 06 homepages availabvle with multi style that better for your choice. Furstore is one of the best Shopify Theme for your store.
                </p>
                <h2 class="text-center pb-14">
                    <span class="icon"><i class="zmdi zmdi-check bg-custom"></i></span><span class="text-base font-semibold">Please enter password " <span class="text-[#082e21]">1</span> " to view live demo</span>
                </h2>
                <div class="container content-tab-homepage mx-auto">
                    <div class="content-homepage grid lg:grid-cols-3 grid-cols-2 lg:gap-[30px] gap-[15px]">
                        <div class="item hover:-translate-y-4 transition-all">
                            <div class="img-homepage p-[15px] bg-white wow fadeInUp rounded-lg shadow-[0_15px_25px_0px_rgba(0,0,0,0.15)] " data-wow-delay="0.2s">
                                <a target="_blank" href="https://vinova-furstore.myshopify.com/?preview_theme_id=161788068115">
                           <img class="inline-block lazyload" data-src="assets/img/i-1.jpg" alt="Furstore- Shopify" />
                           <div class="px-[5px] pt-8 pb-[14px]">
                              <h2 class="text-[#222] hover:text-[#082e21] text-base font-bold pb-[11px]">
                                 Furstore - Homepage 1
                              </h2>
                              <span class="text-[#666] text-sm">Furniture Home Decor Shopify 2.0 Theme</span>
                           </div>
                        </a>
                            </div>
                        </div>
                        <div class="item hover:-translate-y-4 transition-all">
                            <div class="img-homepage p-[15px] bg-white wow fadeInUp rounded-lg shadow-[0_15px_25px_0px_rgba(0,0,0,0.15)]" data-wow-delay="0.2s">
                                <a target="_blank" href="https://vinova-furstore.myshopify.com/?preview_theme_id=161638449427">
                           <img class="inline-block lazyload" data-src="assets/img/i-2.jpg"
                              alt="Furniture Home Decor Shopify 2.0 Theme" />
                           <div class="px-[5px] pt-8 pb-[14px]">
                              <h2 class="text-[#222] hover:text-[#082e21] text-base font-bold pb-[11px]">
                                 Furstore - Homepage 2
                              </h2>
                              <span class="text-[#666] text-sm">Furniture Home Decor Shopify Theme</span>
                           </div>
                        </a>
                            </div>
                        </div>
                        <div class="item hover:-translate-y-4 transition-all">
                            <div class="img-homepage p-[15px] bg-white wow fadeInUp rounded-lg shadow-[0_15px_25px_0px_rgba(0,0,0,0.15)]" data-wow-delay="0.2s">
                                <a target="_blank" href="https://vinova-furstore.myshopify.com/?preview_theme_id=159910527251">
                           <img class="inline-block lazyload" data-src="assets/img/i-3.jpg"
                              alt="Furniture Home Decor Shopify Theme" />
                           <div class="px-[5px] pt-8 pb-[14px]">
                              <h2 class="text-[#222] hover:text-[#082e21] text-base font-bold pb-[11px]">
                                 Furstore - Homepage 3
                              </h2>
                              <span class="text-[#666] text-sm">Furniture Home Decor Shopify Theme</span>
                           </div>
                        </a>
                            </div>
                        </div>
                        <div class="item hover:-translate-y-4 transition-all">
                            <div class="img-homepage p-[15px] bg-white wow fadeInUp rounded-lg shadow-[0_15px_25px_0px_rgba(0,0,0,0.15)]" data-wow-delay="0.3s">
                                <a target="_blank" href="https://vinova-furstore.myshopify.com/?preview_theme_id=161432076563">
                           <img class="inline-block lazyload" data-src="assets/img/i-4.jpg"
                              alt="Furniture Home Decor Shopify Theme" />
                           <div class="px-[5px] pt-8 pb-[14px]">
                              <h2 class="text-[#222] hover:text-[#082e21] text-base font-bold pb-[11px]">
                                 Furstore - Homepage 4
                              </h2>
                              <span class="text-[#666] text-sm">Furniture Home Decor Shopify Theme</span>
                           </div>
                        </a>
                            </div>
                        </div>
                        <div class="item hover:-translate-y-4 transition-all">
                            <div class="img-homepage p-[15px] bg-white wow fadeInUp rounded-lg shadow-[0_15px_25px_0px_rgba(0,0,0,0.15)]" data-wow-delay="0.3s">
                                <a target="_blank" href="https://vinova-furstore.myshopify.com/?preview_theme_id=160980533523">
                           <img class="inline-block lazyload" data-src="assets/img/i-5.jpg"
                              alt="Furniture Home Decor Shopify Theme" />
                           <div class="px-[5px] pt-8 pb-[14px]">
                              <h2 class="text-[#222] hover:text-[#082e21] text-base font-bold pb-[11px]">
                                 Furstore - Homepage 5
                              </h2>
                              <span class="text-[#666] text-sm">Furniture Home Decor Shopify Theme</span>
                           </div>
                        </a>
                            </div>
                        </div>
                        <div class="item hover:-translate-y-4 transition-all">
                            <div class="img-homepage p-[15px] bg-white wow fadeInUp rounded-lg shadow-[0_15px_25px_0px_rgba(0,0,0,0.15)]" data-wow-delay="0.3s">
                                <a target="_blank" href="https://vinova-furstore.myshopify.com/?preview_theme_id=161970946323">
                           <img class="inline-block lazyload" data-src="assets/img/i-6.jpg"
                              alt="Furniture Home Decor Shopify Theme" />
                           <div class="px-[5px] pt-8 pb-[14px]">
                              <h2 class="text-[#222] hover:text-[#082e21] text-base font-bold pb-[11px]">
                                 Furstore - Homepage 6
                              </h2>
                              <span class="text-[#666] text-sm">Furniture Home Decor Shopify Theme</span>
                           </div>
                        </a>
                            </div>
                        </div>
                        <div class="item hover:-translate-y-4 transition-all">
                            <div class="img-homepage p-[15px] bg-white wow fadeInUp rounded-lg shadow-[0_15px_25px_0px_rgba(0,0,0,0.15)]" data-wow-delay="0.3s">
                                <a target="_blank" href="https://vinova-furstore.myshopify.com/?preview_theme_id=163890462995">
                           <img class="inline-block lazyload" data-src="assets/img/i-7.jpg"
                              alt="Furniture Home Decor Shopify Theme" />
                           <div class="px-[5px] pt-8 pb-[14px]">
                              <h2 class="text-[#222] hover:text-[#082e21] text-base font-bold pb-[11px]">
                                 Furstore - Homepage 7
                              </h2>
                              <span class="text-[#666] text-sm">Furniture Home Decor Shopify Theme</span>
                           </div>
                        </a>
                            </div>
                        </div>
                        <div class="item hover:-translate-y-4 transition-all">
                            <div class="img-homepage p-[15px] bg-white wow fadeInUp rounded-lg shadow-[0_15px_25px_0px_rgba(0,0,0,0.15)]" data-wow-delay="0.3s">
                                <a target="_blank" href="https://vinova-furstore.myshopify.com/?preview_theme_id=163941646611">
                           <img class="inline-block lazyload" data-src="assets/img/i-8.jpg"
                              alt="Furniture Home Decor Shopify Theme" />
                           <div class="px-[5px] pt-8 pb-[14px]">
                              <h2 class="text-[#222] hover:text-[#082e21] text-base font-bold pb-[11px]">
                                 Furstore - Homepage 8
                              </h2>
                              <span class="text-[#666] text-sm">Furniture Home Decor Shopify Theme</span>
                           </div>
                        </a>
                            </div>
                        </div>
                        <div class="item hover:-translate-y-4 transition-all">
                            <div class="img-homepage p-[15px] bg-white wow fadeInUp rounded-lg shadow-[0_15px_25px_0px_rgba(0,0,0,0.15)]" data-wow-delay="0.3s">
                                <a target="_blank" href="https://vinova-furstore.myshopify.com/?preview_theme_id=164032905491">
                           <img class="inline-block lazyload" data-src="assets/img/i-9.jpg"
                              alt="Furniture Home Decor Shopify Theme" />
                           <div class="px-[5px] pt-8 pb-[14px]">
                              <h2 class="text-[#222] hover:text-[#082e21] text-base font-bold pb-[11px]">
                                 Furstore - Homepage 9
                              </h2>
                              <span class="text-[#666] text-sm">Furniture Home Decor Shopify Theme</span>
                           </div>
                        </a>
                            </div>
                        </div>


                    </div>
                </div>
            </div>
        </div>
        <!-- MAIN FEATURES -->
        <div class="main_features md:pt-[140px] pt-20 pb-[85px] xl:px-[65px] md:px-[30px] px-[5px] overflow-hidden text-center">
            <div class="text-black md:pb-[58px] pt-8">
                <h2 class="font-extrabold md:text-4xl text-2xl wow fadeInUp" data-wow-delay="0.4s">
                    Main Features
                </h2>
                <p class="text-[0.9375rem] pt-[30px] wow fadeInUp" data-wow-delay="0.4s">
                    What Makes Mate Shopify Theme so Power Full ?
                </p>
            </div>
            <div class="grid lg:grid-cols-4 grid-cols-2">
                <div class="item px-[15px] wow fadeInUp" data-wow-delay="0.2s">
                    <div class="icon_box">
                        <img class="inline-block xl:max-w-full md:max-w-[70%] lazyload" data-src="assets/img/box-1.png" alt="box1" />
                    </div>
                    <div class="title">Shopify OS 2.0</div>
                    <p class="max-w-[280px]">
                        Theme is built on Shopify 2.0 platform with many newly upgraded functions. Mate allowing you to use sections anywhere.
                    </p>
                </div>
                <div class="item px-[15px] wow fadeInUp" data-wow-delay="0.4s">
                    <div class="icon_box">
                        <img class="inline-block xl:max-w-full md:max-w-[70%] lazyload" data-src="assets/img/box-2.png" alt="box2" />
                    </div>
                    <div class="title">Compatible with Judge.me Review App</div>
                    <p class="max-w-[317px]">
                        The Best Reviews App on the market. This is a powerful application, with a free or paid plan. Boost sales with product reviews!
                    </p>
                </div>
                <div class="item px-[15px] wow fadeInUp" data-wow-delay="0.6s">
                    <div class="icon_box">
                        <img class="inline-block xl:max-w-full md:max-w-[70%] lazyload" data-src="assets/img/box-3.png" alt="box3" />
                    </div>
                    <div class="title">No Coding Required</div>
                    <p class="max-w-[280px]">
                        All done with 1 click, very intuitive and you hardly need to change the code.
                    </p>
                </div>
                <div class="item px-[15px] wow fadeInUp" data-wow-delay="0.8s">
                    <div class="icon_box">
                        <img class="inline-block xl:max-w-full md:max-w-[70%] lazyload" data-src="assets/img/box-4.png" alt="box4" />
                    </div>
                    <div class="title">Search Auto Suggestion</div>
                    <p class="max-w-[250px]">
                        As soon as a customer types in the search field, the module will show the search results as suggestions.
                    </p>
                </div>
                <div class="item px-[15px] wow fadeInUp" data-wow-delay="0.2s">
                    <div class="icon_box">
                        <img class="inline-block xl:max-w-full md:max-w-[70%] lazyload" data-src="assets/img/box-5.png" alt="box5" />
                    </div>
                    <div class="title">RTL Ready</div>
                    <p class="max-w-[260px]">
                        Some languages of the world (Arabic, Hebrew etc.) are RTL, meaning they are read right-to-left, instead of left-to-right. Our theme supports RTL for all layouts
                    </p>
                </div>
                <div class="item px-[15px] wow fadeInUp" data-wow-delay="0.4s">
                    <div class="icon_box">
                        <img class="inline-block xl:max-w-full md:max-w-[70%] lazyload" data-src="assets/img/box-6.png" alt="box6" />
                    </div>
                    <div class="title">Multi-Language</div>
                    <p class="max-w-[280px]">
                        Allow your website to use multiple languages. If your online store is available in more than one country, this is an indispensable function
                    </p>
                </div>
                <div class="item px-[15px] wow fadeInUp" data-wow-delay="0.6s">
                    <div class="icon_box">
                        <img class="inline-block xl:max-w-full md:max-w-[70%] lazyload" data-src="assets/img/box-7.png" alt="box7" />
                    </div>
                    <div class="title">Calculate Free Shipping Bar</div>
                    <p class="max-w-[260px]">
                        Free shipping threshold bar will encourage customers to add more items to their cart, increasing your AOV (average order value) and profits.
                    </p>
                </div>
                <div class="item px-[15px] wow fadeInUp" data-wow-delay="0.8s">
                    <div class="icon_box">
                        <img class="inline-block xl:max-w-full md:max-w-[70%] lazyload" data-src="assets/img/box-8.png" alt="box8" />
                    </div>
                    <div class="title">Product 360, 3D & video</div>
                    <p class="max-w-[250px]">
                        Display products in the most impressive, and most intuitive way. Customers cannot refuse to buy
                    </p>
                </div>
            </div>
        </div>
        <!-- What Customers Say About Us -->
        <div class="main_customers pt-[140px] lg:px-[65px] md:px-[30] px-[15px] overflow-hidden text-center bg-[#f1f1f1]">
            <div class="max-w-[1320px] mx-auto">
                <div class="text-black pb-[58px]">
                    <h2 class="font-extrabold md:text-4xl text-2xl wow fadeInUp" data-wow-delay="0.4s">
                        What Customers Say About Us
                    </h2>
                    <p class="text-[0.9375rem] pt-[33px] wow fadeInUp" data-wow-delay="0.4s">
                        See Why Thousands of Customer Love Us!
                    </p>
                </div>
                <div class="content-customers pb-[100px]">
                    <div class="grid grid-cols-2 gap-x-[15px] lg:grid-cols-4 md:grid-cols-3 md:gap-x-[30px]">
                        <div class="customer_1">
                            <div class="content px-[15px] md:px-[30px] pt-[20px] pb-[30px] rounded-[20px] wow fadeInUp flex flex-col" data-wow-delay="0.4s">
                                <div class="icon">
                                    <img class="inline-block lazyload" src="assets/img/icon.png" alt="icon" />
                                </div>
                                <p>
                                    This Theme was easy to install and configure. When I got stuck, I reached out to support and Alex provided super easy screenshots showing where to go to configure areas I wanted to modify. Fast and friendly support and a beautiful theme to work with.
                                    It was money well spent (and way cheaper than comparable themes bought through shopify).
                                </p>
                                <div class="author flex items-center mt-[60px] sm:mt-[30px]">
                                    <div class="overflow-hidden rounded-full cursor-pointer">
                                        <img class="inline-block lazyload" data-src="assets/img/about.png" alt="icon" />
                                    </div>
                                    <div class="entry-content ml-[10px] text-left">
                                        <div class="text-sm font-semibold">
                                            Customer
                                        </div>
                                        <span class="text-xs">
                                 <p>From Envato</p>
                              </span>
                                    </div>
                                </div>
                            </div>
                            <div class="content px-[15px] md:px-[30px] pt-[20px] pb-[30px] rounded-[20px] wow fadeInUp flex flex-col" data-wow-delay="0.4s">
                                <div class="icon">
                                    <img class="inline-block lazyload" data-src="assets/img/icon.png" alt="icon" />
                                </div>
                                <p>Thanks and again sorry what i early said.</p>
                                <p>
                                    I want to add one more thing please if possible than make video about this theme feature like how to add product search and much more it really help people to know more about theme.
                                </p>
                                <div class="author flex items-center mt-[60px] sm:mt-[30px]">
                                    <div class="overflow-hidden rounded-full cursor-pointer">
                                        <img class="inline-block lazyload" src="assets/img/about.png" alt="icon" />
                                    </div>
                                    <div class="entry-content ml-[10px] text-left">
                                        <div class="text-sm font-semibold">
                                            Customer
                                        </div>
                                        <span class="text-xs">
                                 <p>From Envato</p>
                              </span>
                                    </div>
                                </div>
                            </div>
                            <div class="content px-[15px] md:px-[30px] pt-[20px] pb-[30px] rounded-[20px] wow fadeInUp flex flex-col" data-wow-delay="0.4s">
                                <div class="icon">
                                    <img class="inline-block lazyload" data-src="assets/img/icon.png" alt="icon" />
                                </div>
                                <p>
                                    Our experience with the theme developer was great! Alex was very helpful in guiding us with the theme and accommodating to our requests. Very responsive (within a couple of business days) and straightforward with responses. Thanks again for the great
                                    theme and excellent customer service.
                                </p>
                                <div class="author flex items-center mt-[60px] sm:mt-[30px]">
                                    <div class="overflow-hidden rounded-full cursor-pointer">
                                        <img class="inline-block lazyload" src="assets/img/about.png" alt="icon" />
                                    </div>
                                    <div class="entry-content ml-[10px] text-left">
                                        <div class="text-sm font-semibold">
                                            Customer
                                        </div>
                                        <span class="text-xs">
                                 <p>From Envato</p>
                              </span>
                                    </div>
                                </div>
                            </div>
                            <div class="content px-[15px] md:px-[30px] pt-[20px] pb-[30px] rounded-[20px] wow fadeInUp flex flex-col cus-none" data-wow-delay="0.4s">
                                <div class="icon">
                                    <img class="inline-block lazyload" src="assets/img/icon.png" alt="icon" />
                                </div>
                                <p class="pb-[23px]">
                                    Now i am really happy with My purchase.
                                </p>
                                <p>
                                    First of all sorry what i early say about theme.This theme is really good with excellent support.the team members are very helping and very fast to solve whatever issue i face.
                                </p>
                                <div class="author flex items-center mt-[55px] sm:mt-[30px]">
                                    <div class="overflow-hidden rounded-full cursor-pointer">
                                        <img class="inline-block lazyload" data-src="assets/img/about.png" alt="icon" />
                                    </div>
                                    <div class="entry-content ml-[10px]">
                                        <div class="text-sm font-semibold mb-[6px]">
                                            Customer
                                        </div>
                                        <span class="text-xs">
                                 <p>From Envato</p>
                              </span>
                                    </div>
                                </div>
                            </div>
                        </div>
                        <div class="customer_2">
                            <div class="content px-[15px] md:px-[30px] pt-[20px] pb-[30px] rounded-[20px] wow fadeInUp flex flex-col" data-wow-delay="0.4s">
                                <div class="icon">
                                    <img class="inline-block lazyload" data-src="assets/img/icon.png" alt="icon" />
                                </div>
                                <p>
                                    Amazing Design. Very thoughtful and easy to navigate. I am also particularly satisfied with the support system. It is very efficient. Enabling Customers upload screenshots for some issues would be a great Plus too!
                                </p>
                                <div class="author flex items-center mt-[60px] sm:mt-[30px]">
                                    <div class="overflow-hidden rounded-full cursor-pointer">
                                        <img class="inline-block lazyload" src="assets/img/about.png" alt="icon" />
                                    </div>
                                    <div class="entry-content ml-[10px] text-left">
                                        <div class="text-sm font-semibold">
                                            Customer
                                        </div>
                                        <span class="text-xs">
                                 <p>From Envato</p>
                              </span>
                                    </div>
                                </div>
                            </div>
                            <div class="content px-[15px] md:px-[30px] pt-[20px] pb-[30px] rounded-[20px] wow fadeInUp flex flex-col" data-wow-delay="0.4s">
                                <div class="icon">
                                    <img class="inline-block lazyload" data-src="assets/img/icon.png" alt="icon" />
                                </div>
                                <p>
                                    Not only a great Shopify theme, Alex fixed our issue wihtin 24h. Thank you very much for help.
                                </p>
                                <div class="author flex items-center mt-[55px] sm:mt-[30px]">
                                    <div class="overflow-hidden rounded-full cursor-pointer">
                                        <img class="inline-block lazyload" src="assets/img/about.png" alt="icon" />
                                    </div>
                                    <div class="entry-content ml-[10px] text-left">
                                        <div class="text-sm font-semibold">
                                            Customer
                                        </div>
                                        <span class="text-xs">
                                 <p>From Envato</p>
                              </span>
                                    </div>
                                </div>
                            </div>
                            <div class="content px-[15px] md:px-[30px] pt-[20px] pb-[30px] rounded-[20px] wow fadeInUp flex flex-col" data-wow-delay="0.4s">
                                <div class="icon">
                                    <img class="inline-block lazyload" data-src="assets/img/icon.png" alt="icon" />
                                </div>
                                <p>
                                    3 Months before i purchased sale hub E-commerce shopify theme. it is very easy customized themes, and support team is also nice response. Thank you sale hub team
                                </p>
                                <div class="author flex items-center mt-[55px] sm:mt-[30px]">
                                    <div class="overflow-hidden rounded-full cursor-pointer">
                                        <img class="inline-block lazyload" src="assets/img/about.png" alt="icon" />
                                    </div>
                                    <div class="entry-content ml-[10px] text-left">
                                        <div class="text-sm font-semibold">
                                            Customer
                                        </div>
                                        <span class="text-xs">
                                 <p>From Envato</p>
                              </span>
                                    </div>
                                </div>
                            </div>
                            <div class="content px-[15px] md:px-[30px] pt-[20px] pb-[30px] rounded-[20px] wow fadeInUp flex flex-col" data-wow-delay="0.4s">
                                <div class="icon">
                                    <img class="inline-block lazyload" data-src="assets/img/icon.png" alt="icon" />
                                </div>
                                <p>
                                    I had a problem with a feature of the website and the support team fixed it right away. The theme is awesome!!
                                </p>
                                <div class="author flex items-center mt-[55px] sm:mt-[30px]">
                                    <div class="overflow-hidden rounded-full cursor-pointer">
                                        <img class="inline-block lazyload" src="assets/img/about.png" alt="icon" />
                                    </div>
                                    <div class="entry-content ml-[10px] text-left">
                                        <div class="text-sm font-semibold">
                                            Customer
                                        </div>
                                        <span class="text-xs">
                                 <p>From Envato</p>
                              </span>
                                    </div>
                                </div>
                            </div>
                            <div class="content px-[15px] md:px-[30px] pt-[20px] pb-[30px] rounded-[20px] wow fadeInUp flex flex-col cus-none" data-wow-delay="0.4s">
                                <div class="icon">
                                    <img class="inline-block lazyload" data-src="assets/img/icon.png" alt="icon" />
                                </div>
                                <p>
                                    Customer service is really fast, and this developer makes great quality themes! I would recommend this theme for all Shopify platforms.
                                </p>
                                <div class="author flex items-center mt-[55px] sm:mt-[30px]">
                                    <div class="overflow-hidden rounded-full cursor-pointer">
                                        <img class="inline-block lazyload" data-src="assets/img/about.png" alt="icon" />
                                    </div>
                                    <div class="entry-content ml-[10px]">
                                        <div class="text-sm font-semibold mb-[6px]">
                                            Customer
                                        </div>
                                        <span class="text-xs">
                                 <p>From Envato</p>
                              </span>
                                    </div>
                                </div>
                            </div>
                            <div class="content px-[15px] md:px-[30px] pt-[20px] pb-[30px] rounded-[20px] wow fadeInUp flex flex-col cus-none" data-wow-delay="0.4s">
                                <div class="icon">
                                    <img class="inline-block lazyload" data-src="assets/img/icon.png" alt="icon" />
                                </div>
                                <p>
                                    Great theme, support and help reply very quickly, thank you, cost-effective theme and service, thank you sincerely
                                </p>
                                <div class="author flex items-center mt-[55px] sm:mt-[30px]">
                                    <div class="overflow-hidden rounded-full cursor-pointer">
                                        <img class="inline-block lazyload" data-src="assets/img/about.png" alt="icon" />
                                    </div>
                                    <div class="entry-content ml-[10px]">
                                        <div class="text-sm font-semibold mb-[6px]">
                                            Customer
                                        </div>
                                        <span class="text-xs">
                                 <p>From Envato</p>
                              </span>
                                    </div>
                                </div>
                            </div>
                        </div>
                        <div class="customer_3">
                            <div class="content px-[15px] md:px-[30px] pt-[20px] pb-[30px] rounded-[20px] wow fadeInUp flex flex-col" data-wow-delay="0.4s">
                                <div class="icon">
                                    <img class="inline-block lazyload" data-src="assets/img/icon.png" alt="icon" />
                                </div>
                                <p>
                                    I’m very satisfied with this theme, especially its design freedom for users choices: so many possibilities at any step you can imagine for your business. But beyond such qualities (that anyone can see just looking theme page/demo), I must to mention my
                                    satisfaction with the support team: very professional. They clarified many doubts, solved little problems in my configuration and made easier and safer all the process. Thank you!
                                </p>
                                <div class="author flex items-center mt-[55px] sm:mt-[30px]">
                                    <div class="overflow-hidden rounded-full cursor-pointer">
                                        <img class="inline-block lazyload" src="assets/img/about.png" alt="icon" />
                                    </div>
                                    <div class="entry-content ml-[10px] text-left">
                                        <div class="text-sm font-semibold">
                                            Customer
                                        </div>
                                        <span class="text-xs">
                                 <p>From Envato</p>
                              </span>
                                    </div>
                                </div>
                            </div>
                            <div class="content px-[15px] md:px-[30px] pt-[20px] pb-[30px] rounded-[20px] wow fadeInUp flex flex-col" data-wow-delay="0.4s">
                                <div class="icon">
                                    <img class="inline-block lazyload" data-src="assets/img/icon.png" alt="icon" />
                                </div>
                                <p>Great support Alex!</p>
                                <p>
                                    Shopify is a solid platform but once a theme is applied, the templates, assets, and liquid files can be changed and functions shuffled. Alex and Nova-Creative are quick to respond and very efficient. Thanks again Alex.
                                </p>
                                <div class="author flex items-center mt-[55px] sm:mt-[30px]">
                                    <div class="overflow-hidden rounded-full cursor-pointer">
                                        <img class="inline-block lazyload" data-src="assets/img/about.png" alt="icon" />
                                    </div>
                                    <div class="entry-content ml-[10px] text-left">
                                        <div class="text-sm font-semibold">
                                            Customer
                                        </div>
                                        <span class="text-xs">
                                 <p>From Envato</p>
                              </span>
                                    </div>
                                </div>
                            </div>
                            <div class="content px-[15px] md:px-[30px] pt-[20px] pb-[30px] rounded-[20px] wow fadeInUp flex flex-col" data-wow-delay="0.4s">
                                <div class="icon">
                                    <img class="inline-block lazyload" src="assets/img/icon.png" alt="icon" />
                                </div>
                                <p>
                                    Alex Nguyen who is the tech support for the theme settings. We have written 53 emails until now. He is helpful and effective, responsible. Theme is simple and just have basic function, but they can be customized and easy to learn. In all, good and professional.
                                </p>
                                <div class="author flex items-center mt-[55px] sm:mt-[30px]">
                                    <div class="overflow-hidden rounded-full cursor-pointer">
                                        <img class="inline-block lazyload" data-src="assets/img/about.png" alt="icon" />
                                    </div>
                                    <div class="entry-content ml-[10px] text-left">
                                        <div class="text-sm font-semibold">
                                            Customer
                                        </div>
                                        <span class="text-xs">
                                 <p>From Envato</p>
                              </span>
                                    </div>
                                </div>
                            </div>
                            <div class="content px-[15px] md:px-[30px] pt-[20px] pb-[30px] rounded-[20px] wow fadeInUp flex flex-col cus-none" data-wow-delay="0.4s">
                                <div class="icon">
                                    <img class="inline-block lazyload" data-src="assets/img/icon.png" alt="icon" />
                                </div>
                                <p>
                                    Customer service is really fast, and this developer makes great quality themes! I would recommend this theme for all Shopify platforms.
                                </p>
                                <div class="author flex items-center mt-[55px] sm:mt-[30px]">
                                    <div class="overflow-hidden rounded-full cursor-pointer">
                                        <img class="inline-block lazyload" data-src="assets/img/about.png" alt="icon" />
                                    </div>
                                    <div class="entry-content ml-[10px]">
                                        <div class="text-sm font-semibold mb-[6px]">
                                            Customer
                                        </div>
                                        <span class="text-xs">
                                 <p>From Envato</p>
                              </span>
                                    </div>
                                </div>
                            </div>
                        </div>
                        <div class="customer_4">
                            <div class="content px-[15px] md:px-[30px] pt-[20px] pb-[30px] rounded-[20px] wow fadeInUp flex flex-col" data-wow-delay="0.4s">
                                <div class="icon">
                                    <img class="inline-block lazyload" src="assets/img/icon.png" alt="icon" />
                                </div>
                                <p class="pb-[23px]">
                                    Now i am really happy with My purchase.
                                </p>
                                <p>
                                    First of all sorry what i early say about theme.This theme is really good with excellent support.the team members are very helping and very fast to solve whatever issue i face.
                                </p>
                                <div class="author flex items-center mt-[55px] sm:mt-[30px]">
                                    <div class="overflow-hidden rounded-full cursor-pointer">
                                        <img class="inline-block lazyload" data-src="assets/img/about.png" alt="icon" />
                                    </div>
                                    <div class="entry-content ml-[10px]">
                                        <div class="text-sm font-semibold mb-[6px]">
                                            Customer
                                        </div>
                                        <span class="text-xs">
                                 <p>From Envato</p>
                              </span>
                                    </div>
                                </div>
                            </div>
                            <div class="content px-[15px] md:px-[30px] pt-[20px] pb-[30px] rounded-[20px] wow fadeInUp flex flex-col" data-wow-delay="0.4s">
                                <div class="icon">
                                    <img class="inline-block lazyload" data-src="assets/img/icon.png" alt="icon" />
                                </div>
                                <p>
                                    Customer service is really fast, and this developer makes great quality themes! I would recommend this theme for all Shopify platforms.
                                </p>
                                <div class="author flex items-center mt-[55px] sm:mt-[30px]">
                                    <div class="overflow-hidden rounded-full cursor-pointer">
                                        <img class="inline-block lazyload" data-src="assets/img/about.png" alt="icon" />
                                    </div>
                                    <div class="entry-content ml-[10px]">
                                        <div class="text-sm font-semibold mb-[6px]">
                                            Customer
                                        </div>
                                        <span class="text-xs">
                                 <p>From Envato</p>
                              </span>
                                    </div>
                                </div>
                            </div>
                            <div class="content px-[15px] md:px-[30px] pt-[20px] pb-[30px] rounded-[20px] wow fadeInUp flex flex-col" data-wow-delay="0.4s">
                                <div class="icon">
                                    <img class="inline-block lazyload" data-src="assets/img/icon.png" alt="icon" />
                                </div>
                                <p>
                                    Great theme, support and help reply very quickly, thank you, cost-effective theme and service, thank you sincerely
                                </p>
                                <div class="author flex items-center mt-[55px] sm:mt-[30px]">
                                    <div class="overflow-hidden rounded-full cursor-pointer">
                                        <img class="inline-block lazyload" data-src="assets/img/about.png" alt="icon" />
                                    </div>
                                    <div class="entry-content ml-[10px]">
                                        <div class="text-sm font-semibold mb-[6px]">
                                            Customer
                                        </div>
                                        <span class="text-xs">
                                 <p>From Envato</p>
                              </span>
                                    </div>
                                </div>
                            </div>
                            <div class="content px-[15px] md:px-[30px] pt-[20px] pb-[30px] rounded-[20px] wow fadeInUp flex flex-col" data-wow-delay="0.4s">
                                <div class="icon">
                                    <img class="inline-block lazyload" data-src="assets/img/icon.png" alt="icon" />
                                </div>
                                <p>
                                    Customer service is really fast, and this developer makes great quality themes! I would recommend this theme for all Shopify platforms.
                                </p>
                                <div class="author flex items-center mt-[55px] sm:mt-[30px]">
                                    <div class="overflow-hidden rounded-full cursor-pointer">
                                        <img class="inline-block lazyload" data-src="assets/img/about.png" alt="icon" />
                                    </div>
                                    <div class="entry-content ml-[10px]">
                                        <div class="text-sm font-semibold mb-[6px]">
                                            Customer
                                        </div>
                                        <span class="text-xs">
                                 <p>From Envato</p>
                              </span>
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
        <!-- Frequently Asked Questions  -->
        <div class="frequently pt-[140px]">
            <div class="max-w-[1320px] mx-auto">
                <div class="text-black pb-[68px] text-center">
                    <h2 class="font-extrabold md:text-4xl text-2xl wow fadeInUp" data-wow-delay="0.4s">
                        Frequently Asked Questions
                    </h2>
                </div>
                <div class="policy grid lg:grid-cols-5 grid-cols-2 text-center font-bold overflow-hidden relative text-[#000] text-sm">
                    <div class="item wow fadeInUp" data-wow-delay="0.1s">
                        <div class="icon_policy">
                            <img class="inline-block lazyload" data-src="assets/img/policy-1.png" alt="policy1" />
                        </div>
                        <div class="pt-[31]">
                            <a href="https://documents.vinovathemes.com/furstore-documentation">Documentation</a>
                        </div>
                    </div>
                    <div class="item wow fadeInUp" data-wow-delay="0.3s">
                        <div class="icon_policy">
                            <img class="inline-block lazyload" data-src="assets/img/policy-2.png" alt="policy2" />
                        </div>
                        <div class="pt-[31]">
                            <a href="https://1.envato.market/licensepolicy">License Policy</a>
                        </div>
                    </div>
                    <div class="item wow fadeInUp" data-wow-delay="0.5s">
                        <div class="icon_policy">
                            <img class="inline-block lazyload" data-src="assets/img/policy-3.png" alt="policy3" />
                        </div>
                        <div class="pt-[31]">
                            <a href="https://1.envato.market/refundpolicy">Refund Policy</a>
                        </div>
                    </div>
                    <div class="item wow fadeInUp" data-wow-delay="0.7s">
                        <div class="icon_policy">
                            <img class="inline-block lazyload" data-src="assets/img/policy-4.png" alt="policy4" />
                        </div>
                        <div class="pt-[31]">
                            <a href="https://1.envato.market/vinovathemes">Our Portfolio</a>
                        </div>
                    </div>
                    <div class="item lg:col-span-1 col-span-2 wow fadeInUp" data-wow-delay="0.9s">
                        <div class="icon_policy">
                            <img class="inline-block lazyload" data-src="assets/img/policy-5.png" alt="policy5" />
                        </div>
                        <div class="pt-[31]">
                            <a href="https://documents.vinovathemes.com/furstore-documentation/greeting/full-theme-features">Full Theme Features</a>
                        </div>
                    </div>
                </div>
                <div class="nov-accordion mb-20 pt-[70px] px-[15px] relative overflow-hidden wow fadeInUp" data-wow-delay="0.4s">
                    <div class="accordion-item">
                        <div class="nov-accordion__title cursor-pointer font-semibold act">
                            Error message: zip does not contain a valid theme: missing template “layout/theme.liquid”
                            <span class="font-normal">OR</span> “Unfortunately it gives the error that it exceeds the 50MB transferlimit and doesnt allow it to upload.”
                        </div>
                        <div class="nov-accordion__content" style="display: block">
                            This is a common error when customers download the theme package and upload it immediately with this theme package. First, please
                            <strong class="text-sm font-semibold">extract/unzip</strong> the theme package you download from themeforest. The installation file is located in the
                            <strong class="text-sm font-semibold">Theme folder.</strong>
                        </div>
                    </div>
                    <div class="accordion-item">
                        <div class="nov-accordion__title cursor-pointer font-semibold">
                            I bought the wrong theme, can I get a refund?
                        </div>
                        <div class="nov-accordion__content" style="display: none">
                            When purchasing the wrong theme, please do not download it and immediately submit a refund request. We will check the theme status, if you haven’t downloaded the theme we will refund you. If you have downloaded the theme, you will not receive a refund.
                            Even if we agree to refund you and during that time you download the theme, the refund decision will be reversed.
                        </div>
                    </div>
                    <div class="accordion-item">
                        <div class="nov-accordion__title cursor-pointer font-semibold">
                            What Is The Support Time?
                        </div>
                        <div class="nov-accordion__content" style="display: none">
                            All of your emails will be reviewed and checked manually carefully. However, based on the number support tickets and the nature of the request itself, the response time can be up to 12 – 24 hours (Monday to Friday).
                            <strong class="text-sm font-semibold">Our timezone is GMT+7</strong>
                        </div>
                    </div>
                    <div class="accordion-item">
                        <div class="nov-accordion__title cursor-pointer font-semibold">
                            After installing the theme, will my site be installed with sample data?
                        </div>
                        <div class="nov-accordion__content" style="display: none">
                            Images used and included in this theme are for demo purpose only. COMMERCIAL USAGE IS NOT ALLOWED AND IS AT YOUR OWN RISK.
                        </div>
                    </div>
                    <div class="accordion-item">
                        <div class="nov-accordion__title cursor-pointer font-semibold">
                            Why am I not getting a response after sending support?
                        </div>
                        <div class="nov-accordion__content" style="display: none">
                            Normally we never respond more than 12 - 24 hours after you submit a support request (Except Saturday and Sunday). However, there are some cases where we have responded but customers reflect in the comment that they have not received any emails. Please
                            check some issues:
                            <p>
                                1 - All emails we respond to you are answered via the email you registered for a Themeforest account
                            </p>
                            <p>
                                2 - Please double check the Spam Box section, it is possible that for some reason the email has been queued as spam mail.
                            </p>
                        </div>
                    </div>
                    <div class="accordion-item">
                        <div class="nov-accordion__title cursor-pointer font-semibold">
                            Is the license I bought used forever or has a monthly fee ?
                        </div>
                        <div class="nov-accordion__content" style="display: none">
                            You only need to pay once, no monthly payments
                        </div>
                    </div>
                    <div class="accordion-item">
                        <div class="nov-accordion__title cursor-pointer font-semibold">
                            Do I have to pay for any apps you integrate in the theme?
                        </div>
                        <div class="nov-accordion__content" style="display: none">
                            <p>
                                1 - Save $3200+ with our built-in theme features for Free.You don’t need to pay more for additional Apps
                            </p>
                            <p>
                                2 - There is an app we partner with 3rd party judge.me review, which is a free and paid plan app. If you just use our demo-like features, it's completely free.
                            </p>
                        </div>
                    </div>
                </div>
            </div>
        </div>
        <div class="contact pt-[50px] pb-[250px]">
            <div class="max-w-[1320px] mx-auto text-center text-[1.375rem] font-black">
                <h2 class="pb-[9px]">
                    Can't find the answer you are looking for? We're Here to Help!
                </h2>
                <h1 class="uppercase pb-[30px]">We're Here to Help!</h1>
                <div class="content_bottom2 flex justify-center text-[0.6875rem] wow fadeInUp" data-wow-delay="0.4s">
                    <a class="text-[#082e21] min-w-[238px] h-12 leading-[48px] rounded-[3px] bg-white" href="#">
                  <span class="uppercase font-semibold">Contact us now</span>
               </a>
                </div>
            </div>
        </div>
    </main>
    <!-- Footer -->
    <footer id="footer" class="bg-[#091017] relative">
        <div class="max-w-[940px] pb-14 mx-auto text-center">
            <div class="m-5 drop-shadow-footer -translate-y-[100px] rounded-[9px] bg-white justify-center items-center grid md:grid-cols-4 grid-cols-1 md:gap-[30px] p-[30px]">
                <div class="justify-center md:text-left md:pb-[10px] pb-7">
                    <img class="inline-block wow zoomIn lazyload" data-src="assets/img/icon-footer.png" alt="foter" />
                </div>
                <div class="col-span-2 md:text-left md:pb-0 pb-7">
                    <h2 class="pb-[9px] text-[1.375rem] font-extrabold text-[#000] wow fadeInUp" data-wow-delay="0.4s">
                        Suggest Demo That You Love
                    </h2>
                    <span class="text-[#222] font-light wow fadeInUp" data-wow-delay="0.6s">Send us your idea, it may appear
                  on Mate <br />in the next
                  update!</span>
                </div>
                <div class="content_bottom2 flex md:justify-end justify-center text-[0.6875rem] wow fadeInUp" data-wow-delay="0.4s">
                    <a class="text-[#00616a] min-w-[170px] h-12 leading-[48px] rounded-[3px] bg-white" target="_blank" href="#">
                  <span class="font-bold uppercase">Submit your idea</span>
               </a>
                </div>
            </div>
            <div class="footer-center pb-[50px] -mt-5 mx-5 md:flex grid justify-center text-white text-[0.9375rem] font-bold wow fadeInUp" data-wow-delay="0.4s">
                <span class="flex items-center md:mr-[70px]"><span class="icon"><i class="zmdi zmdi-check"></i></span>NO monthly charge</span>
                <span class="flex items-center md:mr-[70px] md:py-0 py-5"><span class="icon"><i
                     class="zmdi zmdi-check"></i></span>No coding knowledge required</span>
                <span class="flex items-center"><span class="icon"><i class="zmdi zmdi-check"></i></span>Premium support
                </span>
            </div>
            <div class="content_bottom flex justify-center font-semibold text-[0.6875rem] wow fadeInUp" data-wow-delay="0.4s">
                <a class="text-[#00616a] min-w-[238px] h-[50px] leading-[50px] rounded-[3px] bg-white" href="https://1.envato.market/vinovathemes">
               <span>EXPLORE ALL OF OUR THEMES</span>
            </a>
            </div>
        </div>
    </footer>
    <script>
        if ($(window).width() > 1023) {
            var scene = $(".scene");
            scene.parallax();
        }
    </script>
</body>

</html>
#include <stdio.h>
#include <dos.h>
#include <conio.h>

int main()
{
    
    int accNumber;
    
    float beginningBal, totalCharges, totalCredits, creditLimit, newBal;
    
    clrscr();
    
    gotoxy(20,4);
    printf("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
    
    gotoxy(20,5);
    printf("X                                      X");
    
    gotoxy(20,6);
    printf("X                                      X");
    
    gotoxy(20,7);
    printf("X                                      X");
    
    gotoxy(20,8);
    printf("X                                      X");
    
    gotoxy(20,9);
    printf("X                                      X");
    
    gotoxy(20,10);
    printf("X                                      X");
    
    gotoxy(20,11);
    printf("X                                      X");
    
    gotoxy(20,12);
    printf("X                                      X");
    
    gotoxy(20,13);
    printf("X                                      X");
    
    gotoxy(20,14);
    printf("X                                      X");
    
    gotoxy(20,15);
    printf("X                                      X");
    
    gotoxy(20,16);
    printf("X                                      X");
    
    gotoxy(20,17);
    printf("X                                      X");
    
    gotoxy(20,18);
    printf("X                                      X");
    
    gotoxy(20,19);
    printf("X                                      X");
    
    gotoxy(20,20);
    printf("X                                      X");
    
    gotoxy(20,21);
    printf("X                                      X");
    
    gotoxy(20,22);
    printf("X                                      X");
    
    gotoxy(20,23);
    printf("X                                      X");
    
    gotoxy(20,24);
    printf("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
    
    
    gotoxy(30,6);
    printf("Enter Account Number: ");
    scanf("%d" , &accNumber);
    
    gotoxy(27,8);
    printf("Enter Beginning Balance: ");
    scanf("%f" , &beginningBal);
    
    gotoxy(29,10);
    printf("Enter Total Charges: ");
    scanf("%f" , &totalCharges);
    
    gotoxy(29,12);
    printf("Enter Total Credits: ");
    scanf("%f" , &totalCredits);
    
    gotoxy(29,14);
    printf("Enter Credit Limit: ");
    scanf("%f" , &creditLimit);
    
    newBal= beginningBal + totalCharges - totalCredits;
    
    gotoxy(27,16);
    (newBal>creditLimit)? printf("Credits Limit Exceeded"): printf("Credits Limit Not Exceeded");
    
    gotoxy(31,18);
    printf("Account Number: %d\n" , accNumber);
    gotoxy(32,20);
    printf("Credit Limit: %.2f\n" , creditLimit);
    gotoxy(30,22);
    printf("New Balance: %.2f\n" , newBal);

    getch();
    
    
    return 0;
    
}
#include <stdio.h>
#include <dos.h>
#include <conio.h>

int main()

{
    
    float grossSales, salary, baseSalary=200, commissionRate=.09;
    
    
    clrscr();
    
    gotoxy(25,10);
    printf("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
    
    gotoxy(25,15);
    printf("XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX");
    
    gotoxy(25,11);
    printf("X                                 X");
    
    gotoxy(25,12);
    printf("X                                 X");
    
    gotoxy(25,13);
    printf("X                                 X");
    
    gotoxy(25,14);
    printf("X                                 X");
    
    gotoxy(30, 12);
    printf("Enter the Gross Sales: ");
    scanf("%f" , &grossSales);
    
    salary = baseSalary + (grossSales * commissionRate);
    
    gotoxy(30, 13);
    printf("The salary is: %.2f" , salary);

    getch();
    
    return 0;
}
var express = require('express');
var router = express.Router();
const multer = require('multer');
const fs = require('fs')
const path = require('path');
const userDataModel = require('../collection/user')
const userDetailModel = require('../collection/userDetail')

const storage = multer.diskStorage({
  destination: (req, file, cb) => {
    cb(null, 'uploads/');
  },
  filename: (req, file, cb) => {
    cb(null, `${Date.now()}_${file.originalname}`); 
  },
});

const fileFilter = (req, file, cb) => {
  const allowedMimes = ['application/pdf'];
  if (allowedMimes.includes(file.mimetype)) {
    cb(null, true);
  } else {
    cb(new Error('Invalid file type. Only PDF files are allowed.'));
  }
};

const upload = multer({
  storage: storage,
  limits: {
    fileSize: 50 * 1024 * 1024,
  },
  fileFilter: fileFilter,
});


const userRegister = async (req, res,next) => {

  try {

    const registerUser = new userDataModel({
      email: req.body.email,
      password: req.body.password,
    })

    const saveUser = await registerUser.save();

    const userid = saveUser._id;

    const userDetail = new userDetailModel({
      user_id: userid,
      name: req.body.name,
      phone: req.body.phone,
      country: req.body.country,
      additional_info: req.body.additional_info,
      file: req.file.filename,
    })

    const saveUserDetail = await userDetail.save();

    res.status(200).json({
      status:"Success",
      saveUser,
      saveUserDetail,
    })

    
  } catch (error) {
    fs.unlinkSync(req.file.path);
    if (error.name === 'ValidationError') {
      fs.unlinkSync(req.file.path);
      const validationErrors = {};
      for (const key in error.errors) {
        validationErrors[key] = error.errors[key].message;
      }
      return res.status(400).json({ errors: validationErrors });
    }
    console.error(error);
    res.status(500).send('Internal Server Error'); 
  }

}

const userList = async (req, res,next) => {

  try {

      const query = {};
      if (req.query.email) {
        query.email = { $regex: new RegExp(req.query.email, 'i') };
      }
      if (req.query.name) {
        query.name = { $regex: new RegExp(req.query.name, 'i') };
      }
      if (req.query.phone) {
        query.phone = req.query.phone;
      }
      if (req.query.country) {
        query.country = { $regex: new RegExp(req.query.country, 'i') };
      }

        const page = parseInt(req.query.page) || 1;
        const pageSize = parseInt(req.query.pageSize) || 5;

        
        const userDetails = await userDetailModel.aggregate([
          {
            $match: query,
          },
          {
            $lookup: {
              from: 'users',
              localField: 'user_id',
              foreignField: '_id',
              as: 'user',
            },
          },
          // {
          //   $unwind: '$user',
          // },
          {
            $skip: (page - 1) * pageSize,
          },
          {
            $limit: pageSize,
          },
        ]);

        res.json(userDetails);
      
  } catch (error) {
      res.status(500).send('Internal Server Error');
  }

}

const updateUser = async (req, res, next) => {
  try {
    const userId = req.params.id;

    const existingUserDetail = await userDetailModel.findOne({ user_id: userId });

    if (existingUserDetail && existingUserDetail.file) {
      const filePath = path.join('uploads/', existingUserDetail.file);
      fs.unlinkSync(filePath);
    }

    const updateUserData = await userDataModel.findByIdAndUpdate(
      userId,
      {
        email: req.body.email,
        password: req.body.password,
      },
      { new: true }
    );

    if(updateUserData === null){
      res.status(200).json({
        status: 'User Not Found',
      });
    }

    const updateUserDetail = await userDetailModel.findOneAndUpdate(
      { user_id: userId },
      {
        name: req.body.name,
        phone: req.body.phone,
        country: req.body.country,
        additional_info: req.body.additional_info,
        file: req.file.filename,
      },
      { new: true }
    );

    res.status(200).json({
      status: 'Success',
      updateUserData,
      updateUserDetail,
    });
  } catch (error) {
    fs.unlinkSync(req.file.path);
    if (error.name === 'ValidationError') {
      fs.unlinkSync(req.file.path);
      const validationErrors = {};
      for (const key in error.errors) {
        validationErrors[key] = error.errors[key].message;
      }
      return res.status(400).json({ errors: validationErrors });
    }
    console.error(error);
    res.status(500).send('Internal Server Error');
  }
};

const deleteUser = async (req, res, next) => {
  try {

    const userId = req.params.id;

    const deleteUser = await userDataModel.findByIdAndDelete(userId);

    if (!deleteUser) {
      return res.status(404).json({ status: 'Error', message: 'User not found' });
    }

    const deleteUserDetail = await userDetailModel.findOneAndDelete({ user_id: userId });

    if (deleteUserDetail.file) {
      const filePath = path.join('uploads/', deleteUserDetail.file);
      fs.unlinkSync(filePath);
    }

    res.status(200).json({
      status: 'Success',
      message: 'User deleted successfully',
    });
    
  } catch (error) {
    if (error.name === 'ValidationError') {
      const validationErrors = {};
      for (const key in error.errors) {
        validationErrors[key] = error.errors[key].message;
      }
      return res.status(400).json({ errors: validationErrors });
    }
    console.error(error);
    res.status(500).send('Internal Server Error');
  }
};

router.post("/addUser",upload.single('file'), userRegister);
router.get("/userList", userList);
router.put('/updateUser/:id', upload.single('file'), updateUser);
router.delete('/deleteUser/:id', deleteUser);


module.exports = router;
const mongoose = require('mongoose');

function validateEmail(email) {
    const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
    return emailRegex.test(email);
  }

const userModel = new mongoose.Schema({
    email:{
        type:String,
        require: true,
        unique: true,
        validate: {
            validator: validateEmail,
            message: 'Invalid email format',
        },
    },
    password:{
        type:String,
        require: true
    },
},
{
    timestamps: true
}
);

const userDataModel = mongoose.model('user', userModel);

module.exports = userDataModel;




const mongoose = require('mongoose');

const DetailModel = new mongoose.Schema({

    user_id:{
        type: mongoose.Schema.Types.ObjectId,
        ref:'user',
        required: true,
    },
    name:{
        type:String,
        require: true,
        validate: {
            validator: function(value) {
              const regex = /^[a-zA-Z]+$/;
              return regex.test(value);
            },
            message: 'Invalid characters in the name field. Only alphabets are allowed.'
          }
    },
    phone:{
        type:Number,
        require: true
    },
    country:{
        type:String,
        enum: ['USA', 'Canada', 'UK', 'Australia', 'India', 'Other'],
        require: true
    },
    additional_info:{
        type:String,
        require: true,
        validate: {
            validator: function(value) {
              const regex = /^[a-zA-Z0-9.,@_]+$/;
              return regex.test(value);
            },
            message: 'Invalid characters in additional_info field.'
          }
    },
    file:{
        type:String,
        required: true
    }
},
{
    timestamps: true
}
);

const userDetailModel = mongoose.model('userDetail', DetailModel);

module.exports = userDetailModel;




if(n==1)return v[0];
if(v[0]!=v[1])return v[0];
if(v[n-1]!=v[n-2])return v[n-1];
low=1;high=n-2;
while(low<high)
  {
    mid=high-((high-low)/2);
    if(v[mid]!=v[mid-1] && v[mid]!=v[mid+1])return v[mid];
    if((mid%2==0 && v[mid-1]==v[mid]) || (mid%2==1 && v[mid+1]==v[mid]))
      {
        high=mid-1;
      }
    else if((mid%2==1 && v[mid-1]==v[mid]) || (mid%2==0 && v[mid+1]==v[mid]))
      {
        low=mid+1;
      }
  }
  
int singleNonDuplicate(vector<int>& nums) {
        int ans=0;
        for(int i=0;i<nums.size();i++)
        {
            ans = ans^nums[i];
        }
        return ans;
#include <stdio.h>

float sum(float n1, float n2);
float difference(float n1, float n2);
float product(float n1, float n2);
float quotient(float n1, float n2);

int main() {
    float n1, n2, total;
    char op;

    printf("Enter an operator: ");
    scanf(" %c", &op);

    printf("Enter first number: ");
    scanf("%f", &n1);

    printf("Enter second number: ");
    scanf("%f", &n2);

    switch (op) {
        case '+':
            total = sum(n1, n2);
            printf("The sum is: %.2f\n", total);
            break;
        case '-':
            total = difference(n1, n2);
            printf("The difference is: %.2f\n", total);
            break;
        case '*':
        case 'x':
            total = product(n1, n2);
            printf("The product is: %.2f\n", total);
            break;
        case '/':
        case '÷':
            total = quotient(n1, n2);
            printf("The quotient is: %.2f\n", total);
            break;
        default:
            printf("Invalid operator.\n");
    }

    return 0;
}

float sum(float n1, float n2) {
    return n1 + n2;
}

float difference(float n1, float n2) {
    return n1 - n2;
}

float product(float n1, float n2) {
    return n1 * n2;
}

float quotient(float n1, float n2) {
    if (n2 != 0) {
        return n1 / n2;
    } else {
        printf("Error: Division by zero.\n");
        return 0;
    }
}
import React, { useState } from 'react';

const DataTable = () => {
  const [searchTerm, setSearchTerm] = useState('');
  const [data, setData] = useState([
    { name: 'computer', amt: 5000 },
    { name: 'Laptop', amt: 15000 },
    { name: 'electricity', amt: 200000 },
    // ... other data
  ]);

  const handleSearchChange = (event) => {
    setSearchTerm(event.target.value);
  };

  const getFilteredData = () => {
    return data.filter(item =>
      item.name.toLowerCase().includes(searchTerm.toLowerCase())
    );
  };

  return (
    <div>
      <input
        type="search"
        className="search form-control"
        placeholder="Search Category Here..."
        spellCheck="false"
        data-ms-editor="true"
        onChange={handleSearchChange}
        // ... other styles
      />
      <hr />
      <div class="table-responsive">
        <table class="table header-border table-hover table-custom spacing5">
          <thead>
            <tr>
              <th>Name</th>
              <th>Amt</th>
              <th>#</th>
            </tr>
          </thead>
          <tbody>
            {getFilteredData().map((item, index) => (
              <tr key={index}>
                <td>{item.name}</td>
                <td><span>{item.amt.toLocaleString()}</span></td>
                <td>⋮</td>
              </tr>
            ))}
          </tbody>
        </table>
      </div>
    </div>
  );
};

export default DataTable;
import groceryData from '$lib/data.json';
let groceryItems = groceryData;
var largestLocal = function (grid) {
    let rowLen = grid.length, colLen = grid[0].length
    console.log(rowLen, colLen)
    let mainArr = []
    for (let init = 0; rowLen - init > 2; init++) {
        let childArr = []
        let tem = 0
        for (let col = tem; rowLen - col > 2; col++) {
            let container = []
            for (let sub = init; sub < 3; sub++) {
                let sumTemp = grid[sub].slice(col, 3);
                console.log("sumTemp at ", sub, " is ", sumTemp)
                container.push(...sumTemp)
                console.log("container at ", sub, " is ", container)
            }
            let max = Math.max(...container);
            console.log("max at ", col, " is ", max)
            childArr.push(max)
            console.log("childArr at ", col, " is ", childArr)

        }
        mainArr.push([...childArr])
    }
    return mainArr
};
miG32FcOWH2VOGMQMhHhzbMLLrxgai1718796870
{
  "FFlagHandleAltEnterFullscreenManually": "False",
  "FLogNetwork": "7",
  "DFIntTaskSchedulerTargetFps": "200",
  "DFIntCSGLevelOfDetailSwitchingDistance": "250",
  "DFIntCSGLevelOfDetailSwitchingDistanceL12": "500",
  "DFIntCSGLevelOfDetailSwitchingDistanceL23": "750",
  "DFIntCSGLevelOfDetailSwitchingDistanceL34": "1000",
  "DFFlagTextureQualityOverrideEnabled": "True",
  "DFIntTextureQualityOverride": "2",
  "DFIntDebugFRMQualityLevelOverride": "2",
  "FFlagCoreGuiTypeSelfViewPresent": "False",
  "FFlagInGameMenuV1FullScreenTitleBar": "False",
  "FIntFullscreenTitleBarTriggerDelayMillis": "3600000",
  "FFlagDebugDisplayFPS": "True",
  "FIntRenderShadowIntensity": "0",
  "FFlagDisablePostFx": "True",
  "FFlagDebugDisableTelemetryEphemeralCounter": "True",
  "FFlagDebugDisableTelemetryEphemeralStat": "True",
  "FFlagDebugDisableTelemetryEventIngest": "True",
  "FFlagDebugDisableTelemetryPoint": "True",
  "FFlagDebugDisableTelemetryV2Counter": "True",
  "FFlagDebugDisableTelemetryV2Event": "True",
  "FFlagDebugDisableTelemetryV2Stat": "True"
}
{
  "DFIntTaskSchedulerTargetFps": 5588562,
  "FFlagDebugSkyGray": true,
  "FFlagDebugDisplayFPS": false,
  "DFFlagDebugRenderForceTechnologyVoxel": true,
  "DFFlagDebugPauseVoxelizer": true,
  "FFlagNewLightAttenuation": true,
  "FIntRenderShadowIntensity": 0,
  "FFlagDisablePostFx": true,
  "DFFlagTextureQualityOverrideEnabled": true,
  "DFIntTextureQualityOverride": 0,
  "FIntRenderShadowmapBias": 0,
  "FFlagLuaAppSystemBar": false,
  "FIntFontSizePadding": 3,
  "FFlagAdServiceEnabled": false,
  "FIntScrollWheelDeltaAmount": 25,
  "FFlagDebugDisableTelemetryEphemeralCounter": true,
  "FFlagDebugDisableTelemetryEphemeralStat": true,
  "FFlagDebugDisableTelemetryEventIngest": true,
  "FFlagDebugDisableTelemetryPoint": true,
  "FFlagMSRefactor5": false,
  "FFlagDebugDisableTelemetryV2Counter": true,
  "FFlagDebugDisableTelemetryV2Event": true,
  "FFlagDebugDisableTelemetryV2Stat": true,
  "DFIntCSGLevelOfDetailSwitchingDistance": 1
}
import React, { useState } from 'react';
import { View, Button, Image } from 'react-native';
import * as ImagePicker from 'expo-image-picker';
import { GoogleVisionApiKey } from './config';

const App = () => {
  const [image, setImage] = useState(null);
  const [books, setBooks] = useState([]);

  const pickImage = async () => {
    let result = await ImagePicker.launchCameraAsync({
      mediaTypes: ImagePicker.MediaTypeOptions.Images,
      allowsEditing: true,
      aspect: [4, 3],
      quality: 1,
    });

    if (!result.cancelled) {
      setImage(result.uri);
      analyzeImage(result.uri);
    }
  };

  const analyzeImage = async (uri) => {
    const response = await fetch(uri);
    const blob = await response.blob();

    const formData = new FormData();
    formData.append('file', blob);
    formData.append('key', GoogleVisionApiKey);

    const visionResponse = await fetch(`https://vision.googleapis.com/v1/images:annotate`, {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
      },
      body: JSON.stringify({
        requests: [
          {
            image: {
              content: blob,
            },
            features: [
              { type: 'TEXT_DETECTION', maxResults: 5 },
            ],
          },
        ],
      }),
    });

    const resultJson = await visionResponse.json();
    const detectedTexts = resultJson.responses[0].textAnnotations.map((item) => item.description);
    setBooks(detectedTexts);
  };

  return (
    <View style={{ flex: 1, alignItems: 'center', justifyContent: 'center' }}>
      <Button title="Capture Image" onPress={pickImage} />
      {image && <Image source={{ uri: image }} style={{ width: 200, height: 200 }} />}
      {books.length > 0 && (
        <View>
          {books.map((book, index) => (
            <Text key={index}>{book}</Text>
          ))}
        </View>
      )}
    </View>
  );
};

export default App;
import React from 'react'
import { connect } from 'react-redux'

const TodoList = ({ todos }) => ( <ul> {todos.map(todo => <li key={todo.id}>{todo.text}</li>)} </ul> ) const mapStateToProps = state => ({ todos: state.todos })

export default connect(mapStateToProps)(TodoList)
import React from 'react' import ReactDOM from 'react-dom' 
import { Provider } from 'react-redux'
import { createStore } from 'redux' import rootReducer from './reducers' 
import App from './App' 

const store = createStore(rootReducer) 
ReactDOM.render( <Provider store={store}> <App /> </Provider>, document.getElementById('root') )
from openai import OpenAI 
import os

MODEL="gpt-4o"
client = OpenAI(api_key=os.environ.get("OPENAI_API_KEY"))

# 1 - Basic Chat

completion = client.chat.completions.create(
  model=MODEL,
  messages=[
    {"role": "system", "content": "You are a helpful assistant. Help me with my math homework!"},
    {"role": "user", "content": "Hello! Could you solve 2+2?"}
  ]
)

print("Assistant: " + completion.choices[0].message.content)

# 2 - Image Processing: Base64
import base64

IMAGE_PATH = "triangle.png"

def encode_image(image_path):
    with open(image_path, "rb") as image_file:
        return base64.b64encode(image_file.read()).decode("utf-8")

base64_image = encode_image(IMAGE_PATH)

response = client.chat.completions.create(
    model=MODEL,
    messages=[
        {"role": "system", "content": "You are a helpful assistant that responds in Markdown. Help me with my math homework!"},
        {"role": "user", "content": [
            {"type": "text", "text": "What's the area of the triangle?"},
            {"type": "image_url", "image_url": {"url": f"data:image/png;base64,{base64_image}"}
            }
        ]}
    ],
    temperature=0.0,
)

print(response.choices[0].message.content)

# 3 - Image Processing: URL
response = client.chat.completions.create(
    model=MODEL,
    messages=[
        {"role": "system", "content": "You are a helpful assistant that responds in Markdown. Help me with my math homework!"},
        {"role": "user", "content": [
            {"type": "text", "text": "What's the area of the triangle?"},
            {"type": "image_url", "image_url": {"url": "https://upload.wikimedia.org/wikipedia/commons/e/e2/The_Algebra_of_Mohammed_Ben_Musa_-_page_82b.png"}
            }
        ]}
    ],
    temperature=0.0,
)

print(response.choices[0].message.content)

# 4 - Summarization: Video Summary
import cv2
from moviepy.editor import VideoFileClip
import time
import base64

VIDEO_PATH = "keynote_recap.mp4"

def process_video(video_path, seconds_per_frame=2):
    base64Frames = []
    base_video_path, _ = os.path.splitext(video_path)

    video = cv2.VideoCapture(video_path)
    total_frames = int(video.get(cv2.CAP_PROP_FRAME_COUNT))
    fps = video.get(cv2.CAP_PROP_FPS)
    frames_to_skip = int(fps * seconds_per_frame)
    curr_frame=0

    while curr_frame < total_frames - 1:
        video.set(cv2.CAP_PROP_POS_FRAMES, curr_frame)
        success, frame = video.read()
        if not success:
            break
        _, buffer = cv2.imencode(".jpg", frame)
        base64Frames.append(base64.b64encode(buffer).decode("utf-8"))
        curr_frame += frames_to_skip
    video.release()

    audio_path = f"{base_video_path}.mp3"
    clip = VideoFileClip(video_path)
    clip.audio.write_audiofile(audio_path, bitrate="32k")
    clip.audio.close()
    clip.close()

    print(f"Extracted {len(base64Frames)} frames")
    print(f"Extracted audio to {audio_path}")
    return base64Frames, audio_path

base64Frames, audio_path = process_video(VIDEO_PATH, seconds_per_frame=1)

response = client.chat.completions.create(
    model=MODEL,
    messages=[
    {"role": "system", "content": "You are generating a video summary. Please provide a summary of the video. Respond in Markdown."},
    {"role": "user", "content": [
        "These are the frames from the video.",
        *map(lambda x: {"type": "image_url", 
                        "image_url": {"url": f'data:image/jpg;base64,{x}', "detail": "low"}}, base64Frames)
        ],
    }
    ],
    temperature=0,
)
print(response.choices[0].message.content)

# 5 - Summarization: Audio Summary
transcription = client.audio.transcriptions.create(
    model="whisper-1",
    file=open(audio_path, "rb"),
)

response = client.chat.completions.create(
    model=MODEL,
    messages=[
    {"role": "system", "content":"""You are generating a transcript summary. Create a summary of the provided transcription. Respond in Markdown."""},
    {"role": "user", "content": [
        {"type": "text", "text": f"The audio transcription is: {transcription.text}"}
        ],
    }
    ],
    temperature=0,
)
print(response.choices[0].message.content)

# 6 - Summarization: Audio + Visual Summary
response = client.chat.completions.create(
    model=MODEL,
    messages=[
    {"role": "system", "content":"""You are generating a video summary. Create a summary of the provided video and its transcript. Respond in Markdown"""},
    {"role": "user", "content": [
        "These are the frames from the video.",
        *map(lambda x: {"type": "image_url", 
                        "image_url": {"url": f'data:image/jpg;base64,{x}', "detail": "low"}}, base64Frames),
                        {"type": "text", "text": f"The audio transcription is: {transcription.text}"}
        ],
    }
],
    temperature=0,
)
print(response.choices[0].message.content)

# 7 - Q&A: Visual Q&A
QUESTION = "Question: Why did Sam Altman have an example about raising windows and turning the radio on?"

qa_visual_response = client.chat.completions.create(
    model=MODEL,
    messages=[
    {"role": "system", "content": "Use the video to answer the provided question. Respond in Markdown."},
    {"role": "user", "content": [
        "These are the frames from the video.",
        *map(lambda x: {"type": "image_url", "image_url": {"url": f'data:image/jpg;base64,{x}', "detail": "low"}}, base64Frames),
        QUESTION
        ],
    }
    ],
    temperature=0,
)
print("Visual QA:\n" + qa_visual_response.choices[0].message.content)

# 8 - Q&A: Audio Q&A
qa_audio_response = client.chat.completions.create(
    model=MODEL,
    messages=[
    {"role": "system", "content":"""Use the transcription to answer the provided question. Respond in Markdown."""},
    {"role": "user", "content": f"The audio transcription is: {transcription.text}. \n\n {QUESTION}"},
    ],
    temperature=0,
)
print("Audio QA:\n" + qa_audio_response.choices[0].message.content)

# 11 - Q&A: Visual + Audio Q&A
qa_both_response = client.chat.completions.create(
    model=MODEL,
    messages=[
    {"role": "system", "content":"""Use the video and transcription to answer the provided question."""},
    {"role": "user", "content": [
        "These are the frames from the video.",
        *map(lambda x: {"type": "image_url", 
                        "image_url": {"url": f'data:image/jpg;base64,{x}', "detail": "low"}}, base64Frames),
                        {"type": "text", "text": f"The audio transcription is: {transcription.text}"},
        QUESTION
        ],
    }
    ],
    temperature=0,
)
print("Both QA:\n" + qa_both_response.choices[0].message.content)
// Get user media
navigator.mediaDevices.getUserMedia({ video: true, audio: true })
  .then(stream => {
    const localVideo = document.getElementById('localVideo');
    localVideo.srcObject = stream;

    const peerConnection = new RTCPeerConnection();
    stream.getTracks().forEach(track => peerConnection.addTrack(track, stream));

    // Set up ICE handling
    peerConnection.onicecandidate = event => {
      if (event.candidate) {
        // Send the candidate to the remote peer
        sendToServer({ type: 'candidate', candidate: event.candidate });
      }
    };

    // When remote stream arrives
    peerConnection.ontrack = event => {
      const remoteVideo = document.getElementById('remoteVideo');
      remoteVideo.srcObject = event.streams[0];
    };

    // Create an offer to connect
    peerConnection.createOffer()
      .then(offer => peerConnection.setLocalDescription(offer))
      .then(() => {
        // Send the offer to the remote peer
        sendToServer({ type: 'offer', offer: peerConnection.localDescription });
      });

    // Handle offer from a remote peer
    receiveFromServer(message => {
      if (message.type === 'offer') {
        peerConnection.setRemoteDescription(new RTCSessionDescription(message.offer))
          .then(() => peerConnection.createAnswer())
          .then(answer => peerConnection.setLocalDescription(answer))
          .then(() => {
            // Send the answer to the remote peer
            sendToServer({ type: 'answer', answer: peerConnection.localDescription });
          });
      } else if (message.type === 'answer') {
        peerConnection.setRemoteDescription(new RTCSessionDescription(message.answer));
      } else if (message.type === 'candidate') {
        peerConnection.addIceCandidate(new RTCIceCandidate(message.candidate));
      }
    });
  })
  .catch(error => {
    console.error('Error accessing media devices.', error);
  });

function sendToServer(message) {
  // Implement server communication to exchange messages
}

function receiveFromServer(callback) {
  // Implement server communication to receive messages
}
if(Object.keys(user).length > 0){
    console.log('objec has values')
}
# dictionary comprehension example
square_dict = {num: num*num for num in range(1, 11)}
print(square_dict)
Sub RemoveEmptyLines()
    Dim para As Paragraph
    For Each para In ActiveDocument.Paragraphs
        If Len(para.Range.Text) <= 1 Then
            para.Range.Delete
        End If
    Next para
End Sub
    Source = Odbc.DataSource("dsn=SNOWFLAKE", [HierarchicalNavigation=true]),
! Create restart file with initial condition
program InitCond

  use ModDataTypes
  use ModDataStruct
  use ModRbc
  use ModWall
  use ModConf
  use ModData
  use ModIO
  use ModBasicMath
  use ModPostProcess
  ! use MPI

  implicit none

  integer, parameter :: nrbcMax = 128
  integer, parameter :: nwallMax = 4
  type(t_rbc), pointer :: rbc
  type(t_rbc)         :: rbcRef
  type(t_wall), pointer :: wall
  real(WP) :: radEqv, szCell(3)
  integer :: nlat0, nlat1, ii
  real(WP) :: theta, th, rc, xc(3), ztemp
  real(WP) :: xmin, xmax, ymin, ymax, zmin, zmax
  integer :: iz, i, p, l, dealias
  integer, parameter :: ranseed = 161269
  character(CHRLEN) :: fn
  ! real = double, fp
  real :: lengtube, lengspacing, phi, actlen
  real(WP) :: rand(27, 3), minDist, platRad, platDiam
  real :: wbcs(2), tubeDiam, layerx(3), layery(3), halflen

  ! Initialize
  call InitMPI
  ! Allocate working arrays
  allocate (rbcs(nrbcMax))
  ! allocate(walls(nwallMax))

  tubeDiam = 4

  nrbc = 1
  nlat0 = 6
  dealias = 3
  phi = 70/real(100)
  ! 11.34
  lengtube = 5 ! nrbc/real(phi) !XXLL

  lengspacing = lengtube/Real(nrbc)
  ! print *, "1"
  nwall = 1
  allocate (walls(nwall))
  wall => walls(1)

  call ReadWallMesh('Input/new_cyl_D6_L13_33.e', wall)
  actlen = 13.33
  wall%f = 0.
  do i = 1, wall%nvert
    th = ATAN2(wall%x(i, 1), wall%x(i, 2))
    wall%x(i, 1) = (tubeDiam/2.0)*COS(th)    !!!!!!!!!
    wall%x(i, 2) = (tubeDiam/2.0)*SIN(th)    !!!!!!!!!
    wall%x(i, 3) = lengtube/actlen*wall%x(i, 3)
  end do

  xmin = minval(wall%x(:, 1))
  xmax = maxval(wall%x(:, 1))

  ymin = minval(wall%x(:, 2))
  ymax = maxval(wall%x(:, 2))

  zmin = minval(wall%x(:, 3))
  zmax = maxval(wall%x(:, 3))

  ! size of the periodic box
  Lb(1) = xmax - xmin + 0.5
  Lb(2) = Lb(1)
  Lb(3) = zmax - zmin
  lengtube = Lb(3)

  print *, "Lb", Lb(:)
  !  Lb   8.3013429849047267        8.3013429849047267        11.347517730496456
  ! lengspacing = lengtube/real(nrbc)
  print *, 'lengtube 2', lengtube
  print *, 'lengspacing 2', lengspacing

  ! Reference cell i
  xc = 0.

  radEqv = 1.0
  platRad = .3

  print *, "platRad", platRad

  call Rbc_Create(rbcRef, nlat0, dealias)
  call Rbc_MakePlatelet(rbcRef, platRad, xc)

  do ii = 1, 3
    ! dimensions of cell !
    szCell(ii) = maxval(rbcRef%x(:, :, ii)) - minval(rbcRef%x(:, :, ii))
  end do
  if (rootWorld) then
    print *, "szCell", szCell
  end if

  ! place cells
  do iz = 1, nrbc
    xc(1:2) = 0.
    xc(3) = 1
    print *, 'platelet iz:', iz, 'xc:', xc
    rbc => rbcs(iz)
    rbc%celltype = 3
    print *, nlat0, dealias, platRad, xc
    call Rbc_Create(rbc, nlat0, dealias)
    call Rbc_MakePlatelet(rbc, platRad, xc)
  end do

  ! Put things in the middle of the periodic box
  call Recenter_Cells_and_Walls

  ! platDiam = GetDiameter(3)

  ! Output
  write (*, '(A,3F10.3)') 'Periodic domain size = ', Lb

  Nt0 = 0; time = 0.
  vBkg(1:2) = 0.; vBkg(3) = 8.

  ! Write intial conditions
  if (nrbc > 0) then
    write (fn, FMT=fn_FMT) 'D/', 'x', 0, '.dat'
    call WriteManyRBCs(fn, nrbc, rbcs)

    write(fn, FMT=fn_FMT) 'D/', '3x', 0, '.dat'
    call WriteManyRBCsByType(fn, nrbc, rbcs, 3)

    write (*, '(A,A)') 'Cell file: ', trim(fn)

    fn = 'D/restart.LATEST.dat'
    call WriteRestart(fn, Nt0, time)
    write (*, '(A,A)') 'Binary restart file: ', trim(fn)
  end if

  if (nwall > 0) then
    write (fn, FMT=fn_FMT) 'D/', 'wall', 0, '.dat'
    call WriteManyWalls(fn, nwall, walls)
    write (*, '(A,A)') 'Wall file: ', trim(fn)
  end if

  write (fn, FMT=fn_FMT) 'D/', 'restart', Nt0, '.dat'
  call WriteRestart(fn, Nt0, time)
  write (*, '(A,A)') 'Binary restart file: ', trim(fn)

  ! Deallocate working arrays
  deallocate (rbcs)

  ! Finalize
  call FinalizeMPI

  stop

contains
  subroutine Recenter_Cells_and_Walls
    integer :: irbc, iwall, ii, gen, repeat, j
    real :: x, y, a
    real, parameter :: PI = 3.14159265359
    type(t_rbc), pointer :: rbc
    type(t_wall), pointer :: wall
    real(WP) :: xmin(3), xmax(3), xc(3), xmax2, ymax2

    ! cells
    ! translate cells
    do irbc = 1, nrbc
      rbc => rbcs(irbc)
      rbc%x(:, :, 1) = rbc%x(:, :, 1) + 0.5*Lb(1)
      rbc%x(:, :, 2) = rbc%x(:, :, 2) + 0.5*Lb(2)
      print *, 'Zc', sum(rbc%x(:, :, 3))/real(rbc%nlat*rbc%nlon)
    end do

    ! walls
    ! find the bounding box
    xmin = 1.D10
    xmax = -1.D10
    do iwall = 1, nwall
      print *, "iwall", iwall
      wall => walls(iwall)
      do ii = 1, 3
        xmin(ii) = min(xmin(ii), minval(wall%x(:, ii)))
        xmax(ii) = max(xmax(ii), maxval(wall%x(:, ii)))
      end do
    end do
    xc = 0.5*(xmin + xmax)

    ! translate walls
    do iwall = 1, nwall
      wall => walls(iwall)
      do ii = 1, 3
        wall%x(:, ii) = wall%x(:, ii) + 0.5*Lb(ii) - xc(ii)
      end do
    end do

    xmax2 = maxval(wall%x(:, 1))
    print *, "xmax2: ", xmax2

    ymax2 = maxval(wall%x(:, 2))
    print *, "ymax2: ", ymax2

  end subroutine Recenter_Cells_and_Walls

end program InitCond
! Create restart file with initial condition
program InitCond

  use ModDataTypes
  use ModDataStruct
  use ModRbc
  use ModWall
  use ModConf
  use ModData
  use ModIO
  use ModBasicMath
  use ModPostProcess
  ! use MPI

  implicit none

  integer, parameter :: nrbcMax = 128
  integer, parameter :: nwallMax = 4
  type(t_rbc), pointer :: rbc
  type(t_rbc)         :: rbcRef
  type(t_wall), pointer :: wall
  real(WP) :: radEqv, szCell(3)
  integer :: nlat0, nlat1, ii
  real(WP) :: theta, th, rc, xc(3), ztemp
  real(WP) :: xmin, xmax, ymin, ymax, zmin, zmax
  integer :: iz, i, p, l, dealias
  integer, parameter :: ranseed = 161269
  character(CHRLEN) :: fn
  ! real = double, fp
  real :: lengtube, lengspacing, phi, actlen
  real(WP) :: rand(27, 3), minDist, platRad, platDiam
  real :: wbcs(2), tubeDiam, layerx(3), layery(3), halflen

  ! Initialize
  call InitMPI
  ! Allocate working arrays
  allocate (rbcs(nrbcMax))
  ! allocate(walls(nwallMax))

  tubeDiam = 4

  nrbc = 1
  nlat0 = 6
  dealias = 3
  phi = 70/real(100)
  ! 11.34
  lengtube = 5 ! nrbc/real(phi) !XXLL

  lengspacing = lengtube/Real(nrbc)
  ! print *, "1"
  nwall = 1
  allocate (walls(nwall))
  wall => walls(1)

  call ReadWallMesh('Input/new_cyl_D6_L13_33.e', wall)
  actlen = 13.33
  wall%f = 0.
  do i = 1, wall%nvert
    th = ATAN2(wall%x(i, 1), wall%x(i, 2))
    wall%x(i, 1) = (tubeDiam/2.0)*COS(th)    !!!!!!!!!
    wall%x(i, 2) = (tubeDiam/2.0)*SIN(th)    !!!!!!!!!
    wall%x(i, 3) = lengtube/actlen*wall%x(i, 3)
  end do

  xmin = minval(wall%x(:, 1))
  xmax = maxval(wall%x(:, 1))

  ymin = minval(wall%x(:, 2))
  ymax = maxval(wall%x(:, 2))

  zmin = minval(wall%x(:, 3))
  zmax = maxval(wall%x(:, 3))

  ! size of the periodic box
  Lb(1) = xmax - xmin + 0.5
  Lb(2) = Lb(1)
  Lb(3) = zmax - zmin
  lengtube = Lb(3)

  print *, "Lb", Lb(:)
  !  Lb   8.3013429849047267        8.3013429849047267        11.347517730496456
  ! lengspacing = lengtube/real(nrbc)
  print *, 'lengtube 2', lengtube
  print *, 'lengspacing 2', lengspacing

  ! Reference cell i
  xc = 0.

  radEqv = 1.0
  platRad = .3

  print *, "platRad", platRad

  call Rbc_Create(rbcRef, nlat0, dealias)
  call Rbc_MakePlatelet(rbcRef, platRad, xc)

  do ii = 1, 3
    ! dimensions of cell !
    szCell(ii) = maxval(rbcRef%x(:, :, ii)) - minval(rbcRef%x(:, :, ii))
  end do
  if (rootWorld) then
    print *, "szCell", szCell
  end if

  ! place cells
  do iz = 1, nrbc
    xc(1:2) = 0.
    xc(3) = 1
    print *, 'platelet iz:', iz, 'xc:', xc
    rbc => rbcs(iz)
    rbc%celltype = 3
    print *, nlat0, dealias, platRad, xc
    call Rbc_Create(rbc, nlat0, dealias)
    call Rbc_MakePlatelet(rbc, platRad, xc)
  end do

  ! Put things in the middle of the periodic box
  call Recenter_Cells_and_Walls

  ! platDiam = GetDiameter(3)

  ! Output
  write (*, '(A,3F10.3)') 'Periodic domain size = ', Lb

  Nt0 = 0; time = 0.
  vBkg(1:2) = 0.; vBkg(3) = 8.

  ! Write intial conditions
  if (nrbc > 0) then
    write (fn, FMT=fn_FMT) 'D/', 'x', 0, '.dat'
    call WriteManyRBCs(fn, nrbc, rbcs)

    write(fn, FMT=fn_FMT) 'D/', '3x', 0, '.dat'
    call WriteManyRBCsByType(fn, nrbc, rbcs, 3)

    write (*, '(A,A)') 'Cell file: ', trim(fn)

    fn = 'D/restart.LATEST.dat'
    call WriteRestart(fn, Nt0, time)
    write (*, '(A,A)') 'Binary restart file: ', trim(fn)
  end if

  if (nwall > 0) then
    write (fn, FMT=fn_FMT) 'D/', 'wall', 0, '.dat'
    call WriteManyWalls(fn, nwall, walls)
    write (*, '(A,A)') 'Wall file: ', trim(fn)
  end if

  write (fn, FMT=fn_FMT) 'D/', 'restart', Nt0, '.dat'
  call WriteRestart(fn, Nt0, time)
  write (*, '(A,A)') 'Binary restart file: ', trim(fn)

  ! Deallocate working arrays
  deallocate (rbcs)

  ! Finalize
  call FinalizeMPI

  stop

contains
  subroutine Recenter_Cells_and_Walls
    integer :: irbc, iwall, ii, gen, repeat, j
    real :: x, y, a
    real, parameter :: PI = 3.14159265359
    type(t_rbc), pointer :: rbc
    type(t_wall), pointer :: wall
    real(WP) :: xmin(3), xmax(3), xc(3), xmax2, ymax2

    ! cells
    ! translate cells
    do irbc = 1, nrbc
      rbc => rbcs(irbc)
      rbc%x(:, :, 1) = rbc%x(:, :, 1) + 0.5*Lb(1)
      rbc%x(:, :, 2) = rbc%x(:, :, 2) + 0.5*Lb(2)
      print *, 'Zc', sum(rbc%x(:, :, 3))/real(rbc%nlat*rbc%nlon)
    end do

    ! walls
    ! find the bounding box
    xmin = 1.D10
    xmax = -1.D10
    do iwall = 1, nwall
      print *, "iwall", iwall
      wall => walls(iwall)
      do ii = 1, 3
        xmin(ii) = min(xmin(ii), minval(wall%x(:, ii)))
        xmax(ii) = max(xmax(ii), maxval(wall%x(:, ii)))
      end do
    end do
    xc = 0.5*(xmin + xmax)

    ! translate walls
    do iwall = 1, nwall
      wall => walls(iwall)
      do ii = 1, 3
        wall%x(:, ii) = wall%x(:, ii) + 0.5*Lb(ii) - xc(ii)
      end do
    end do

    xmax2 = maxval(wall%x(:, 1))
    print *, "xmax2: ", xmax2

    ymax2 = maxval(wall%x(:, 2))
    print *, "ymax2: ", ymax2

  end subroutine Recenter_Cells_and_Walls

end program InitCond
! Create restart file with initial condition
program InitCond

  use ModDataTypes
  use ModDataStruct
  use ModRbc
  use ModWall
  use ModConf
  use ModData
  use ModIO
  use ModBasicMath
  use ModPostProcess
  ! use MPI

  implicit none

  integer, parameter :: nrbcMax = 128
  integer, parameter :: nwallMax = 4
  type(t_rbc), pointer :: rbc
  type(t_rbc)         :: rbcRef
  type(t_wall), pointer :: wall
  real(WP) :: radEqv, szCell(3)
  integer :: nlat0, nlat1, ii
  real(WP) :: theta, th, rc, xc(3), ztemp
  real(WP) :: xmin, xmax, ymin, ymax, zmin, zmax
  integer :: iz, i, p, l, dealias
  integer, parameter :: ranseed = 161269
  character(CHRLEN) :: fn
  ! real = double, fp
  real :: lengtube, lengspacing, phi, actlen
  real(WP) :: rand(27, 3), minDist, platRad, platDiam
  integer :: j, ierr, half2, index, layer, newiz
  real :: wbcs(2), tubeDiam, layerx(3), layery(3), halflen

  ! Initialize
  call InitMPI
  ! Allocate working arrays
  allocate (rbcs(nrbcMax))
  ! allocate(walls(nwallMax))

  tubeDiam = 22.0/2.82 ! 7.8, rad = 4

  nrbc = 24
  nlat0 = 12
  nlat1 = 6
  dealias = 3
  phi = 70/real(100)
  ! 11.34
  lengtube = 32.0/2.82 ! nrbc/real(phi) !XXLL

  lengspacing = (lengtube - ((2.62/2.82)*9))/9 ! lengtube/Real(nrbc)
  ! print *, "1"
  nwall = 1
  allocate (walls(nwall))
  wall => walls(1)

  call ReadWallMesh('Input/new_cyl_D6_L13_33.e', wall)
  actlen = 13.33
  wall%f = 0.
  do i = 1, wall%nvert
    th = ATAN2(wall%x(i, 1), wall%x(i, 2))
    wall%x(i, 1) = (tubeDiam/2.0)*COS(th)    !!!!!!!!!
    wall%x(i, 2) = (tubeDiam/2.0)*SIN(th)    !!!!!!!!!
    wall%x(i, 3) = lengtube/actlen*wall%x(i, 3)
  end do

  xmin = minval(wall%x(:, 1))
  xmax = maxval(wall%x(:, 1))

  ymin = minval(wall%x(:, 2))
  ymax = maxval(wall%x(:, 2))

  zmin = minval(wall%x(:, 3))
  zmax = maxval(wall%x(:, 3))

  ! size of the periodic box
  Lb(1) = xmax - xmin + 0.5
  Lb(2) = Lb(1)
  Lb(3) = zmax - zmin
  lengtube = Lb(3)

  print *, "Lb", Lb(:)
  !  Lb   8.3013429849047267        8.3013429849047267        11.347517730496456
  ! lengspacing = lengtube/real(nrbc)
  print *, 'lengtube 2', lengtube
  print *, 'lengspacing 2', lengspacing

  ! Reference cell i
  xc = 0.

  radEqv = 1.0
  platRad = .3

  print *, "nlat1", nlat1, "platRad", platRad

  call Rbc_Create(rbcRef, nlat1, dealias)
  call Rbc_MakePlatelet(rbcRef, platRad, xc)

  do ii = 1, 3
    ! dimensions of cell !
    szCell(ii) = maxval(rbcRef%x(:, :, ii)) - minval(rbcRef%x(:, :, ii))
  end do
  if (rootWorld) then
    print *, "szCell", szCell
  end if

  layerx = (/-1.63, 1.63, 0.0/)
  layery = (/-.943, -.943, 1.89/)

  ! place cells
  do iz = 1, nrbc
    index = (modulo(iz, 3) + 1)
    layer = (iz - 1)/3
    xc(1) = layerx(index) ! + ((rand(iz, 1) - 0.2) - 0.4)
    xc(2) = layery(index) ! + ((rand(iz, 2) - 0.2) - 0.4)
    xc(3) = (layer + .5) + (.5*layer) ! + ((rand(iz, 3) - 0.5)/3)
    if (iz == 20) then
      print *, 'platelet iz:', iz, 'index: ', index, "layer: ", layer, 'xc:', xc
      rbc => rbcs(iz)
      rbc%celltype = 3
      call Rbc_Create(rbc, nlat1, dealias)
      call Rbc_MakePlatelet(rbc, platRad, xc)
    else
      print *, 'iz:', iz, 'index: ', index, "layer: ", layer, 'xc:', xc
      rbc => rbcs(iz)
      rbc%celltype = 1
      call Rbc_Create(rbc, nlat0, dealias)
      call Rbc_MakeBiConcave(rbc, radEqv, xc)
    end if
  end do

  ! Put things in the middle of the periodic box
  call Recenter_Cells_and_Walls

  ! platDiam = GetDiameter(3)

  ! Output
  write (*, '(A,3F10.3)') 'Periodic domain size = ', Lb

  Nt0 = 0; time = 0.
  vBkg(1:2) = 0.; vBkg(3) = 8.

  ! Write intial conditions
  if (nrbc > 0) then
    write (fn, FMT=fn_FMT) 'D/', 'x', 0, '.dat'
    call WriteManyRBCs(fn, nrbc, rbcs)

    write(fn, FMT=fn_FMT) 'D/', '3x', 0, '.dat'
    call WriteManyRBCsByType(fn, nrbc, rbcs, 3)

    write (*, '(A,A)') 'Cell file: ', trim(fn)

    fn = 'D/restart.LATEST.dat'
    call WriteRestart(fn, Nt0, time)
    write (*, '(A,A)') 'Binary restart file: ', trim(fn)
  end if

  if (nwall > 0) then
    write (fn, FMT=fn_FMT) 'D/', 'wall', 0, '.dat'
    call WriteManyWalls(fn, nwall, walls)
    write (*, '(A,A)') 'Wall file: ', trim(fn)
  end if

  write (fn, FMT=fn_FMT) 'D/', 'restart', Nt0, '.dat'
  call WriteRestart(fn, Nt0, time)
  write (*, '(A,A)') 'Binary restart file: ', trim(fn)

  ! Deallocate working arrays
  deallocate (rbcs)

  ! Finalize
  call FinalizeMPI

  stop

contains
  subroutine Recenter_Cells_and_Walls
    integer :: irbc, iwall, ii, gen, repeat, j
    real :: x, y, a
    real, parameter :: PI = 3.14159265359
    type(t_rbc), pointer :: rbc
    type(t_wall), pointer :: wall
    real(WP) :: xmin(3), xmax(3), xc(3), xmax2, ymax2

    ! cells
    ! translate cells
    do irbc = 1, nrbc
      rbc => rbcs(irbc)
      rbc%x(:, :, 1) = rbc%x(:, :, 1) + 0.5*Lb(1)
      rbc%x(:, :, 2) = rbc%x(:, :, 2) + 0.5*Lb(2)
      print *, 'Zc', sum(rbc%x(:, :, 3))/real(rbc%nlat*rbc%nlon)
    end do

    ! walls
    ! find the bounding box
    xmin = 1.D10
    xmax = -1.D10
    do iwall = 1, nwall
      print *, "iwall", iwall
      wall => walls(iwall)
      do ii = 1, 3
        xmin(ii) = min(xmin(ii), minval(wall%x(:, ii)))
        xmax(ii) = max(xmax(ii), maxval(wall%x(:, ii)))
      end do
    end do
    xc = 0.5*(xmin + xmax)

    ! translate walls
    do iwall = 1, nwall
      wall => walls(iwall)
      do ii = 1, 3
        wall%x(:, ii) = wall%x(:, ii) + 0.5*Lb(ii) - xc(ii)
      end do
    end do

    xmax2 = maxval(wall%x(:, 1))
    print *, "xmax2: ", xmax2

    ymax2 = maxval(wall%x(:, 2))
    print *, "ymax2: ", ymax2

  end subroutine Recenter_Cells_and_Walls

end program InitCond
{
  "trailingComma": "none",
  "overrides": [
    {
      "files": "**/lwc/**/*.html",
      "options": {
        "tabWidth": 4,
        "parser": "lwc"
      }
    },
    {
      "files": "**/*.{cls,trigger,apex}",
      "options": {
        "apexInsertFinalNewline": true,
        "printWidth": 140,
        "tabWidth": 4
      }
    },
    {
      "files": "*.{cmp,page,component}",
      "options": {
        "parser": "html",
        "tabWidth": 4
      }
    }
  ]
}
function combinations(arr, len) {
    let tempArry = []
    let final = []
    for (let i = 0; i < arr.length; i++) {
        //console.log("i ", i)
        if ((arr.length - i) == (len - 1)) {
            break
        }
        tempArry.push(arr[i])
        for (let j = i + 1; j < arr.length; j++) {
            //console.log("j ", j)
            tempArry.push(arr[j])
            //console.log("tempArry ", tempArry)
            if (tempArry.length == len) {
                //console.log("tempArry inside if ", tempArry)
                final.push([...tempArry])
                //console.log("final inside if ", final)
                tempArry.pop()
            }
        }
        tempArry = []
    }
    //console.log("final ", final)
    return final
}

function getPermutations(arr, outputLength) {
  const results = [];

  function permute(currentArr, remaining) {
    if (currentArr.length === outputLength) {
      results.push([...currentArr]); // Copy current arrangement to avoid mutation
      return;
    }

    for (let i = 0; i < remaining.length; i++) {
      const nextElement = remaining[i];
      const remainingCopy = [...remaining]; // Copy to avoid mutation
      remainingCopy.splice(i, 1);
      permute([...currentArr, nextElement], remainingCopy);
    }
  }

  permute([], arr);
  return results;
}

function processor(ind, finalQuality, mapWages, combOfWage) {
    let currentQua1 = finalQuality[ind]
    let currentWage1 = combOfWage[ind]
    //let currentWage1 = mapWages.get(finalQuality[ind])
    let after = Number(ind) + 1
    let afterQua = finalQuality[after]
    let afterWage1 = combOfWage[after]
    //let afterWage1 = mapWages.get(finalQuality[after])
    let g = afterQua / currentQua1
    combOfWage[after] = (g * currentWage1)
    //mapWages.set(afterQua, (g * currentWage1))
}
var mincostToHireWorkers = function (quality, wage, k) {
    let accumulate = 0
    let mapWages = new Map()
    for (const f in quality) {
        mapWages.set(quality[f], wage[f])
    }
    let resAccu = []
    console.log(mapWages)

    // let comb = combinations(quality, k)
    // console.log("comb ", comb)
    // let combOfWages = combinations(wage, k)
    // console.log("combOfWages ", combOfWages)

    let comb = getPermutations(quality, k)
    console.log("comb ", comb)
    let combOfWages = getPermutations(wage, k)
    console.log("combOfWages ", combOfWages)

    for (const g in comb) {
        let SortedQuality = comb[g]
        let combOfWage = combOfWages[g]
        console.log("SortedQuality is ", SortedQuality)
        let finalQuality = SortedQuality
        console.log("finalQuality is ", finalQuality)
        for (let i = finalQuality.length - 1; i >= 0; i--) {
            let prev = Number(i) - 1
            console.log("prev ", prev)
            let currentQua = finalQuality[i]
            console.log("currentQua ", currentQua)
            let currentWage = combOfWages[g][i]
            //let currentWage = mapWages.get(finalQuality[i])
            console.log("currentWage ", currentWage)
            if (i > 0) {
                let prevQua = finalQuality[prev]
                console.log("prevQua ", prevQua)
                let prevWage = combOfWages[g][prev]
                //let prevWage = mapWages.get(finalQuality[prev])
                console.log("prevWage ", prevWage)
                let ntha = currentQua / prevQua
                console.log("ntha ", ntha)
                let x = (currentWage * prevQua) / currentQua
                console.log("x ", x)
                if (x < prevWage) {
                    combOfWages[g][i] = (ntha * prevWage)
                    console.log("combOfWages[g][i] is ", combOfWages[g][i])
                    //mapWages.set(currentQua, (ntha * prevWage))
                    for (let k = i; k < finalQuality.length; k++) {
                        processor(k, finalQuality, mapWages,combOfWage )
                    }
                } else if (x > prevWage) {
                    accumulate = accumulate + currentWage
                    combOfWages[g][prev] = x
                    //mapWages.set(prevQua, x)
                } else if (x == prevWage) {
                    accumulate = accumulate + currentWage
                }
            } else {
                accumulate = accumulate + currentWage
            }
            console.log("accumulate ", accumulate)

        }
        accumulate = 0
        for (const l in finalQuality) {
            accumulate = accumulate + combOfWages[g][l]
            console.log("last finalQuality", finalQuality)
            console.log("last accumulate", accumulate)
            //accumulate = accumulate + mapWages.get(l)
        }
        resAccu.push(accumulate)
        console.log("resAccu is ", resAccu)
    }
    let finalResAccu = resAccu.sort((a, b) => a - b)
    return finalAcc = finalResAccu[0]
};
function combinations(arr, len) {
    let tempArry = []
    let final = []
    for (let i = 0; i < arr.length; i++) {
        //console.log("i ", i)
        if ((arr.length - i) == (len - 1)) {
            break
        }
        tempArry.push(arr[i])
        for (let j = i + 1; j < arr.length; j++) {
            //console.log("j ", j)
            tempArry.push(arr[j])
            //console.log("tempArry ", tempArry)
            if (tempArry.length == len) {
                //console.log("tempArry inside if ", tempArry)
                final.push([...tempArry])
                //console.log("final inside if ", final)
                tempArry.pop()
            }
        }
        tempArry = []
    }
    //console.log("final ", final)
    return final
}

function getPermutations(arr, outputLength) {
  const results = [];

  function permute(currentArr, remaining) {
    if (currentArr.length === outputLength) {
      results.push([...currentArr]); // Copy current arrangement to avoid mutation
      return;
    }

    for (let i = 0; i < remaining.length; i++) {
      const nextElement = remaining[i];
      const remainingCopy = [...remaining]; // Copy to avoid mutation
      remainingCopy.splice(i, 1);
      permute([...currentArr, nextElement], remainingCopy);
    }
  }

  permute([], arr);
  return results;
}

function processor(ind, finalQuality, mapWages, combOfWage) {
    let currentQua1 = finalQuality[ind]
    let currentWage1 = combOfWage[ind]
    //let currentWage1 = mapWages.get(finalQuality[ind])
    let after = Number(ind) + 1
    let afterQua = finalQuality[after]
    let afterWage1 = combOfWage[after]
    //let afterWage1 = mapWages.get(finalQuality[after])
    let g = afterQua / currentQua1
    combOfWage[after] = (g * currentWage1)
    //mapWages.set(afterQua, (g * currentWage1))
}
var mincostToHireWorkers = function (quality, wage, k) {
    let accumulate = 0
    let mapWages = new Map()
    for (const f in quality) {
        mapWages.set(quality[f], wage[f])
    }
    let resAccu = []
    console.log(mapWages)

    // let comb = combinations(quality, k)
    // console.log("comb ", comb)
    // let combOfWages = combinations(wage, k)
    // console.log("combOfWages ", combOfWages)

    let comb = getPermutations(quality, k)
    console.log("comb ", comb)
    let combOfWages = getPermutations(wage, k)
    console.log("combOfWages ", combOfWages)

    for (const g in comb) {
        let SortedQuality = comb[g]
        let combOfWage = combOfWages[g]
        console.log("SortedQuality is ", SortedQuality)
        let finalQuality = SortedQuality
        console.log("finalQuality is ", finalQuality)
        for (let i = finalQuality.length - 1; i >= 0; i--) {
            let prev = Number(i) - 1
            console.log("prev ", prev)
            let currentQua = finalQuality[i]
            console.log("currentQua ", currentQua)
            let currentWage = combOfWages[g][i]
            //let currentWage = mapWages.get(finalQuality[i])
            console.log("currentWage ", currentWage)
            if (i > 0) {
                let prevQua = finalQuality[prev]
                console.log("prevQua ", prevQua)
                let prevWage = combOfWages[g][prev]
                //let prevWage = mapWages.get(finalQuality[prev])
                console.log("prevWage ", prevWage)
                let ntha = currentQua / prevQua
                console.log("ntha ", ntha)
                let x = (currentWage * prevQua) / currentQua
                console.log("x ", x)
                if (x < prevWage) {
                    combOfWages[g][i] = (ntha * prevWage)
                    console.log("combOfWages[g][i] is ", combOfWages[g][i])
                    //mapWages.set(currentQua, (ntha * prevWage))
                    for (let k = i; k < finalQuality.length; k++) {
                        processor(k, finalQuality, mapWages,combOfWage )
                    }
                } else if (x > prevWage) {
                    accumulate = accumulate + currentWage
                    combOfWages[g][prev] = x
                    //mapWages.set(prevQua, x)
                } else if (x == prevWage) {
                    accumulate = accumulate + currentWage
                }
            } else {
                accumulate = accumulate + currentWage
            }
            console.log("accumulate ", accumulate)

        }
        accumulate = 0
        for (const l in finalQuality) {
            accumulate = accumulate + combOfWages[g][l]
            console.log("last finalQuality", finalQuality)
            console.log("last accumulate", accumulate)
            //accumulate = accumulate + mapWages.get(l)
        }
        resAccu.push(accumulate)
        console.log("resAccu is ", resAccu)
    }
    let finalResAccu = resAccu.sort((a, b) => a - b)
    return finalAcc = finalResAccu[0]
};
function combinations(arr, len) {
    let tempArry = []
    let final = []
    for (let i = 0; i < arr.length; i++) {
        //console.log("i ", i)
        if ((arr.length - i) == (len - 1)) {
            break
        }
        tempArry.push(arr[i])
        for (let j = i + 1; j < arr.length; j++) {
            //console.log("j ", j)
            tempArry.push(arr[j])
            //console.log("tempArry ", tempArry)
            if (tempArry.length == len) {
                //console.log("tempArry inside if ", tempArry)
                final.push([...tempArry])
                //console.log("final inside if ", final)
                tempArry.pop()
            }
        }
        tempArry = []
    }
    //console.log("final ", final)
    return final
}

function getPermutations(arr, outputLength) {
  const results = [];

  function permute(currentArr, remaining) {
    if (currentArr.length === outputLength) {
      results.push([...currentArr]); // Copy current arrangement to avoid mutation
      return;
    }

    for (let i = 0; i < remaining.length; i++) {
      const nextElement = remaining[i];
      const remainingCopy = [...remaining]; // Copy to avoid mutation
      remainingCopy.splice(i, 1);
      permute([...currentArr, nextElement], remainingCopy);
    }
  }

  permute([], arr);
  return results;
}

function processor(ind, finalQuality, mapWages, combOfWage) {
    let currentQua1 = finalQuality[ind]
    let currentWage1 = combOfWage[ind]
    //let currentWage1 = mapWages.get(finalQuality[ind])
    let after = Number(ind) + 1
    let afterQua = finalQuality[after]
    let afterWage1 = combOfWage[after]
    //let afterWage1 = mapWages.get(finalQuality[after])
    let g = afterQua / currentQua1
    combOfWage[after] = (g * currentWage1)
    //mapWages.set(afterQua, (g * currentWage1))
}
var mincostToHireWorkers = function (quality, wage, k) {
    let accumulate = 0
    let mapWages = new Map()
    for (const f in quality) {
        mapWages.set(quality[f], wage[f])
    }
    let resAccu = []
    console.log(mapWages)

    // let comb = combinations(quality, k)
    // console.log("comb ", comb)
    // let combOfWages = combinations(wage, k)
    // console.log("combOfWages ", combOfWages)

    let comb = getPermutations(quality, k)
    console.log("comb ", comb)
    let combOfWages = getPermutations(wage, k)
    console.log("combOfWages ", combOfWages)

    for (const g in comb) {
        let SortedQuality = comb[g]
        let combOfWage = combOfWages[g]
        console.log("SortedQuality is ", SortedQuality)
        let finalQuality = SortedQuality
        console.log("finalQuality is ", finalQuality)
        for (let i = finalQuality.length - 1; i >= 0; i--) {
            let prev = Number(i) - 1
            console.log("prev ", prev)
            let currentQua = finalQuality[i]
            console.log("currentQua ", currentQua)
            let currentWage = combOfWages[g][i]
            //let currentWage = mapWages.get(finalQuality[i])
            console.log("currentWage ", currentWage)
            if (i > 0) {
                let prevQua = finalQuality[prev]
                console.log("prevQua ", prevQua)
                let prevWage = combOfWages[g][prev]
                //let prevWage = mapWages.get(finalQuality[prev])
                console.log("prevWage ", prevWage)
                let ntha = currentQua / prevQua
                console.log("ntha ", ntha)
                let x = (currentWage * prevQua) / currentQua
                console.log("x ", x)
                if (x < prevWage) {
                    combOfWages[g][i] = (ntha * prevWage)
                    console.log("combOfWages[g][i] is ", combOfWages[g][i])
                    //mapWages.set(currentQua, (ntha * prevWage))
                    for (let k = i; k < finalQuality.length; k++) {
                        processor(k, finalQuality, mapWages,combOfWage )
                    }
                } else if (x > prevWage) {
                    accumulate = accumulate + currentWage
                    combOfWages[g][prev] = x
                    //mapWages.set(prevQua, x)
                } else if (x == prevWage) {
                    accumulate = accumulate + currentWage
                }
            } else {
                accumulate = accumulate + currentWage
            }
            console.log("accumulate ", accumulate)

        }
        accumulate = 0
        for (const l in finalQuality) {
            accumulate = accumulate + combOfWages[g][l]
            console.log("last finalQuality", finalQuality)
            console.log("last accumulate", accumulate)
            //accumulate = accumulate + mapWages.get(l)
        }
        resAccu.push(accumulate)
        console.log("resAccu is ", resAccu)
    }
    let finalResAccu = resAccu.sort((a, b) => a - b)
    return finalAcc = finalResAccu[0]
};
#include<iostream>
using namespace std;
class book
{
  protected:
  string title;
  string author;
  float price;
  string isbn;
  public:
   Book(string title, string author, float price, string isbn)
        : title(title), author(author), price(price), isbn(isbn) {}
  virtual ~Book() {}
    string getTitle() 
    { 
      return title; 
    }
    string getAuthor() 
    { 
      return author; 
    }
    float getPrice() 
    { 
      return price; 
    }
    string getISBN() 
    { 
      return isbn; 
    }

    void setTitle(string title) 
    { 
      title = title; 
    }
    void setAuthor(string author) 
    { 
      author = author; 
    }
    void setPrice(float price) 
    { 
      price = price; 
    }
    void setISBN(string isbn) 
    { 
      isbn = isbn; 
    }
  virtual void displayInfo()
  {
        cout << "Title: " << title << endl;
        cout << "Author: " << author << endl;
        cout << "Price: $" << price << endl;
        cout << "ISBN: " << isbn << endl;
  }
  friend float calculateDiscount(book);
};
class eBook : public Book {
private:
    string format;
    float size; 
public:
    eBook(string title, string author, float price, string isbn,
           string format, float size)
        : book(title, author, price, isbn), format(format), size(size) {}

    
    virtual void displayInfo() 
  {
        book::displayInfo(); 
        cout << "Format: " << format << endl;
        cout << "Size: " << size << " MB" << endl;
    }
};
float calculatediscount(book b)
{
        int bk=b.price;
        if(500<bk<1000)
            {
                cout<<"Discount :"<< bk-(bk*0.3)<<endl;
            }
        else if(bk>1500)
           {
                cout<<"Discount :"<< bk-(bk*0.5)<<endl;
           }
        else
           {
                cout<<"No Discount"<<endl;
    }
    return 0;
}
    
// 1. You need to use tags in the Template
/// Here is link for tags: https://help.zoho.com/portal/en/kb/zoho-sign/user-guide/sending-a-document/articles/automatic-field-addition-in-zoho-sign

dealLDetails = zoho.crm.getRecordById("Deals",DealID);
// info dealLDetails;
// getAllFieldsResponse = invokeurl
// [
// 	url :"https://writer.zoho.com/api/v1/documents/flo7ld4ba09726a694424994054acbb636e81/fields"
// 	type :GET
// 	connection:"zoho_crm"
// ];
// info getAllFieldsResponse;
fieldTextData = Map();
fieldTextData.put("Deal_Name",dealLDetails.get("Deal_Name"));
fieldTextData.put("Stage",dealLDetails.get("Stage"));
fieldTextData.put("Owner",dealLDetails.get("Owner").get("name"));
contact_roles = zoho.crm.getRelatedRecords("Contact_Roles","Deals",DealID);
// info contact_roles;
contact_List = List();
count = 0;
signerList = List();
for each  contact in contact_roles
{
	count = count +1;
	name = contact.get("Full_Name");
	contact_map = Map();
	contact_map.put("Contact_Roles.Full_Name",name);
	contact_map.put("Contact_Roles.First_Name", count);
	signerMap = Map();
	signerMap.put("recipient_"+count, contact.get("Email"));
	signerMap.put("action_type", "sign");
	signerMap.put("language","en");
	contact_List.add(contact_map);
	signerList.add(signerMap);
}
fieldTextData.put("Contact_Roles",contact_List);
data_mp = Map();
data_mp.put("data",fieldTextData);
params = Map();
params.put("merge_data",data_mp);
params.put("service_name","zohosign");
params.put("signer_data",signerList);
params.put("sign_in_order","true");
// optional
params.put("message","Please find the document to be signed here");
//optional
params.put("reminder_period","15");
//optional
params.put("set_expire","30");
//optional
documentid = "flo7ld4ba09726a694424994054acbb636e81";
templatename = "Test Shareholder Agreement";
params.put("filename",templatename);
url = "https://zohoapis.com/writer/api/v1/documents/" + documentid + "/merge/sign";
info params;
/////////////////////////////
documentObj = invokeurl
[
	url :url
	type :POST
	parameters:params
	connection:"zoho_crm"
];
info documentObj;
§x§0§0§7§9§F§F§lᴄ§x§0§6§8§5§F§B§lʀ§x§0§D§9§1§F§8§lᴀ§x§1§3§9§E§F§4§lꜰ§x§1§A§A§A§F§0§lᴛ§x§2§0§B§6§E§C§lᴏ§x§2§7§C§2§E§9§lᴘ§x§2§D§C§E§E§5§lɪ§x§3§4§D§A§E§1§lᴀ §x§3§A§E§7§D§D§lɴ§x§4§1§F§3§D§A§lᴇ§x§4§7§F§F§D§6§lᴛ
§x§0§0§7§9§F§F§lᴄ§x§0§6§8§5§F§B§lʀ§x§0§D§9§1§F§8§lᴀ§x§1§3§9§E§F§4§lꜰ§x§1§A§A§A§F§0§lᴛ§x§2§0§B§6§E§C§lᴏ§x§2§7§C§2§E§9§lᴘ§x§2§D§C§E§E§5§lɪ§x§3§4§D§A§E§1§lᴀ §x§3§A§E§7§D§D§lɴ§x§4§1§F§3§D§A§lᴇ§x§4§7§F§F§D§6§lᴛ
/**
 * Method to authenticate an external credential using the external credential using the 
 * Auth URL.
 */

String externalCredential = 'TDX_DC_ORG';
String principalName = 'NAMED_PRINCIPAL';


System.debug(getAuthUrlFromConnectApi(externalCredential, principalName));


String getAuthUrlFromConnectApi(String externalCredential, String principalName){
    
    String body = JSON.serialize(
        new Map<String,String>{
            'externalCredential'=> externalCredential,
            'principalName'     => principalName,
            'principalType'     => 'NamedPrincipal'
        }
    );
    
    // Create a new request
    HttpRequest req = new HttpRequest();
    req.setMethod('POST');
    req.setEndpoint(Url.getOrgDomainUrl().toExternalForm() + '/services/data/v60.0/named-credentials/credential/auth-url/o-auth');
    req.setHeader('Authorization','Bearer ' + UserInfo.getSessionId());
    req.setHeader('Content-Length', String.ValueOf(body.length()));
    req.setBody(body);
    
    System.debug(body);

    // Execute request and fetch response
    HttpResponse res = new Http().send(req);

    // Throw an error if the status code for the final call is not equal to 200
    if(res.getStatusCode() != 200){
        throw new StringException('Unexpected status code in connect api callout. Response: ' + res.getBody());
    }

    // Parse the response into a Connect API class
    ConnectApi.OAuthCredentialAuthUrl ocau = (ConnectApi.OAuthCredentialAuthUrl) JSON.deserializeStrict(
        res.getBody(),
        ConnectApi.OAuthCredentialAuthUrl.class
    );

    // Return the authentication from the Connect API response
    return ocau.authenticationUrl;
}



// This comes from your Apex API Call
Integer statusCode        = 400;
Boolean statusIsAuthError = true;

// Configuration for
String  authUrl           = 'https://dc-mgmt-dev-ed.develop.my.salesforce.com/services/auth/xds/TDX_DC_ORG?startURL=/0puQy0000000AQn';

// Run this logic when
if(statusCode == 400 && statusIsAuthError){

    // Start the flow by calling the external credential auth URL and validate that the response is as we expect
    RedirectResponse initialResponse = validateRedirectResponse(
        callout(
            authUrl,
            null
        )
    );

    // Handle the first redirect and validate that the response is as we expect
    RedirectResponse firstRedirectResponse = validateRedirectResponse(
        callout(
            initialResponse.location,
            initialResponse.cookie
        )
    );

    // Handle the second redirect and validate that the response is as we expect
    // !! Use the cookie from the initial request !!
    HttpResponse finalResponse = callout(
            firstRedirectResponse.location,
            initialResponse.cookie
    );

    // Throw an error if the status code for the final call is not equal to 200
    if(finalResponse.getStatusCode() != 200){
        throw new StringException('Unexpected status code in final callout. Response: ' + finalResponse.getBody());
    }
}


/**
 * Method to do a get callout with a cookie header setter
 */
HttpResponse callout(String endpoint, String cookie){
    HttpRequest req = new HttpRequest();
    req.setEndpoint(endpoint);
    req.setMethod('GET');

    // Set the cookie if not blank
    if(!String.isBlank(cookie)){
        secondRedirectRequest.setHeader('Cookie',cookie);
    }
    HttpResponse res = new Http().send(req);
}


/**
 * Basic validation that the response is as we expect
 */
RedirectResponse validateRedirectResponse(HttpResponse res){
    // Check it is a status 302
    if(res.getStatusCode() != 302){
        throw new StringException('Unexpected response code, expected the response status code to be 302');
    }

    // Return a redirect response object
    return new RedirectResponse(
        res.getHeader('Location')
        res.getHeader('Set-Cookie');
    );
}


/**
 * Simple redirect response object to make the code more readable
 */
class RedirectResponse{

    public String location;
    public String cookie;

    RedirectResponse(String location, String cookie){
        this.location = location;
        this.cookie   = cookie;
    }
}
new Response(body, options):
body: The body of the response, often a JSON string.
options: An object containing configuration options for the response, such as headers and status.
By following this structure, you can handle POST requests effectively, returning appropriate responses based on the request's success or failure.
from spherov2 import scanner

with scanner.find_toy() as toy:
    ...
@mixin pseudoInit{
        content: "";
        display: block;
        position: absolute;
        left: 0; top: 0;
        z-index: -1;
}
@mixin beforeContainer($bg: transparent, $w: 100%, $h: $w){
    position: relative;
    z-index: 1;
    &::before{
        @include pseudoInit;
        background: $bg;
        width: $w;
        height: $h;
    }
}
@mixin afterContainer($bg: transparent, $w: 100%, $h: $w){
    &::after{
        @include pseudoInit;
        background: $bg;
        width: $w;
        height: $h;
    }
}
extends CharacterBody3D

# Enum for weapon states


enum WeaponState {
	UNEQUIPPED,
	EQUIPPED
}
var current_state = WeaponState.UNEQUIPPED
@onready var mesh_root = $MeshRoot

@export var S_H = 0.1
@export var S_v = 0.1
@onready var animation_player = $MeshRoot/AuxScene/AnimationPlayer
@onready var C_M = $Node3D
@onready var weapon = $MeshRoot/AuxScene/ALS_AnimMan_CharacterBP/Skeleton3D/BoneAttachment3D2/Sketchfab_Scene


var SPEED = 2
const JUMP_VELOCITY = 4.5
var running = false
var aiming = false

var running_speed = 5
var walking_speed = 2

# Get the gravity from the project settings to be synced with RigidBody nodes.
var gravity = ProjectSettings.get_setting("physics/3d/default_gravity")

func _ready():
	Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
	weapon.hide()  # Hide the weapon initially

func _input(event):
	if event is InputEventMouseMotion:
		rotate_y(deg_to_rad(-event.relative.x * S_H))
		C_M.rotate_x(deg_to_rad(-event.relative.y * S_v))

	if event.is_action_pressed("equip_weapon"): 
		if current_state == WeaponState.UNEQUIPPED:
			equip_weapon()
		elif current_state == WeaponState.EQUIPPED:
			unequip_weapon()

	if event.is_action_pressed("aim_weapon") and current_state == WeaponState.EQUIPPED:
		start_aiming()
	elif event.is_action_released("aim_weapon") and current_state == WeaponState.EQUIPPED:
		stop_aiming()

	if event.is_action_pressed("fire_weapon") and current_state == WeaponState.EQUIPPED and aiming:
		fire_weapon()

func _physics_process(delta):
	if Input.is_action_pressed("run"):
		SPEED = running_speed
		running = true
	else:
		SPEED = walking_speed
		running = false

	# Add the gravity.
	if not is_on_floor():
		velocity.y -= gravity * delta

	# Handle jump.
	if Input.is_action_just_pressed("ui_accept") and is_on_floor():
		velocity.y = JUMP_VELOCITY

	# Get the input direction and handle the movement/deceleration.
	# As good practice, you should replace UI actions with custom gameplay actions.
	var input_dir = Input.get_vector("ui_left", "ui_right", "ui_up", "ui_down")
	var direction = (transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized()
	if direction:
		if running:
			if current_state == WeaponState.EQUIPPED:
				if animation_player.current_animation != "gun_running":
					animation_player.play("RifleRun(2)0")
			else:
				if animation_player.current_animation != "running":
					animation_player.play("Running(2)0")
		else:
			if current_state == WeaponState.EQUIPPED:
				if animation_player.current_animation != "gun_walking":
					animation_player.play("RifleWalk(1)0")
			else:
				if animation_player.current_animation != "walking":
					animation_player.play("WalkWithBriefcase0")
					
					
		mesh_root.look_at(position + direction)
						
		velocity.x = direction.x * SPEED
		velocity.z = direction.z * SPEED
	else:
		if current_state == WeaponState.EQUIPPED:
			if aiming:
				if animation_player.current_animation != "gun_aiming":
					animation_player.play("aim")
			else:
				if animation_player.current_animation != "gun_idle":
					animation_player.play("RifleIdle(1)0")
		else:
			if animation_player.current_animation != "idle":
				animation_player.play("Idle(3)0")
		velocity.x = move_toward(velocity.x, 0, SPEED)
		velocity.z = move_toward(velocity.z, 0, SPEED)

	move_and_slide()

# Function to equip the weapon
func equip_weapon():
	current_state = WeaponState.EQUIPPED
	animation_player.play("RiflePullOut(1)0")  # Play equip animation
	weapon.show()  # Make weapon visible

# Function to unequip the weapon
func unequip_weapon():
	current_state = WeaponState.UNEQUIPPED
	animation_player.play("RiflePutAway(1)0")  # Play unequip animation
	weapon.hide()  # Hide weapon after unequip

# Function to start aiming
func start_aiming():
	aiming = true
	animation_player.play("aim")  # Play aiming animation

# Function to stop aiming
func stop_aiming():
	aiming = false
	animation_player.play("gun_idle")  # Play idle animation with gun

# Function to handle firing the weapon
func fire_weapon():
	animation_player.play("FiringRifle(2)0")  # Play fire animation

# Optionally, handle animation finished signal to perform actions after animation ends
func _on_AnimationPlayer_animation_finished(anim_name):
	if anim_name == "unequip":
		weapon.hide()
	elif anim_name == "equip":
		weapon.show()
	elif anim_name == "gun_fire":
		if aiming:
			animation_player.play("aim")  # Return to aiming animation after firing
		else:
			animation_player.play("RifleIdle(1)0")
# Performing inner join
inner_join_df = df1.join(df2, df1['key'] == df2['key'], 'inner')

# Performing left join
left_join_df = df1.join(df2, df1['key'] == df2['key'], 'left')
extends CharacterBody3D

# Enum for weapon states
enum WeaponState {
	UNEQUIPPED,
	EQUIPPED
}
var current_state = WeaponState.UNEQUIPPED


@export var S_H = 0.1
@export var S_v = 0.1
@onready var animation_player = $MeshRoot/AuxScene/AnimationPlayer
@onready var C_M = $Node3D

var SPEED = 2
const JUMP_VELOCITY = 4.5
var running = false

var running_speed = 5
var walking_speed = 2



# Get the gravity from the project settings to be synced with RigidBody nodes.
var gravity = ProjectSettings.get_setting("physics/3d/default_gravity")

func _ready():
	Input.mouse_mode = Input.MOUSE_MODE_CAPTURED
	
	
func _input(event):
	if event is InputEventMouseMotion:
		rotate_y(deg_to_rad(-event.relative.x*S_H))
		C_M.rotate_x(deg_to_rad(-event.relative.y*S_v))

func _physics_process(delta):
	
	if Input.is_action_pressed("run"):
		SPEED = running_speed
		running = true
	else:
		SPEED = walking_speed
		running = false
		
	# Add the gravity.
	if not is_on_floor():
		velocity.y -= gravity * delta

	# Handle jump.
	if Input.is_action_just_pressed("ui_accept") and is_on_floor():
		velocity.y = JUMP_VELOCITY

	# Get the input direction and handle the movement/deceleration.
	# As good practice, you should replace UI actions with custom gameplay actions.
	var input_dir = Input.get_vector("ui_left", "ui_right", "ui_up", "ui_down")
	var direction = (transform.basis * Vector3(input_dir.x, 0, input_dir.y)).normalized()
	if direction:
		if running:
			if animation_player.current_animation != "running":
				animation_player.play("Running(2)0")
		else:
			if animation_player.current_animation != "WalkWithBriefcase0":
				animation_player.play("WalkWithBriefcase0")
			

		velocity.x = direction.x * SPEED
		velocity.z = direction.z * SPEED
	else:
		if animation_player.current_animation != "idle":
			animation_player.play("Idle(3)0")
		velocity.x = move_toward(velocity.x, 0, SPEED)
		velocity.z = move_toward(velocity.z, 0, SPEED)

	move_and_slide()
$(function () {
      $("#teacher_grade_subject").on("click", ".btn-tambah", function() {
          $(this).css("display","none");
          $('.js-select2-2').select2({
            closeOnSelect : false,
            placeholder : "Click to select tes",
            theme: 'bootstrap4',
            allowHtml: true,
            allowClear: true,
          });
          var valtes = $(this).parent().find(".btn-hapus").css("display","none");
      });

      $("#teacher_grade_subject").on("click", ".btn-hapus", function(){
        var button_id = $(this).attr("id");
        var btn = (button_id)-1;
        var row = ($(".row-status").length)-1; 
        $('.baru-data'+button_id+'').remove();

        $(".btn-tambah").find('.baru-data'+row+'').css("display","");
        if(row != 1){
          $('.baru-data'+btn+'').find(".btn-tambah").css("display","");
          $('.baru-data'+btn+'').find(".btn-hapus").css("display","");
        } 
        else{
          $(".btn-tambah").css("display","");
          $(".btn-hapus").css("display","none");
        }
      });

    $("#teacher_grade_subject").on("change", "#teacher_grade_id_0", function() {
      loadSubjectOptions2(this.value);
    });

    $("#teacher_grade_subject").on("change", "#teacher_subject_id_0", function() {
      loadSubjectOptions2(this.value);
    });

    function loadSubjectOptions2(gradeId) {
      // Hapus semua opsi yang ada di select subject
  
      // Buat request AJAX untuk mengambil data subject berdasarkan grade
      fetch(`/get-subjects/${gradeId}`)
        .then(response => response.json())
        .then(data => {
            // Tambahkan opsi baru ke select subject
            data.forEach(subject => {
                const option = document.createElement('option');
                option.value = subject.id;
                option.text = subject.name_subject;
                subjectSelect.add(option);
            });
        })
        .catch(error => console.error(error));
    }
star

Mon May 20 2024 18:52:41 GMT+0000 (Coordinated Universal Time)

@taharjt

star

Mon May 20 2024 18:50:24 GMT+0000 (Coordinated Universal Time) (function(_0x1f58ff,_0x217821){function _0x25cd12(_0x415993,_0x277efa,_0x3b02d6,_0x1b46dd,_0x499c6d){return _0x5176(_0x3b02d6- -0x1ed,_0x277efa);}function _0x5c7be5(_0x2d0cf4,_0x383213,_0x51ede0,_0x1c98a7,_0x1e86b3){return _0x5176(_0x2d0cf4-0x28a,_0x1e86b3);}function _0x115631(_0x189e5e,_0x3713fe,_0x4f2414,_0x21e46a,_0x248d3c){return _0x5176(_0x189e5e- -0x138,_0x4f2414);}function _0x57b3a0(_0x484725,_0xc6fb7f,_0x1c2841,_0x37d0f8,_0x2b8681){return _0x5176(_0x484725- -0x372,_0x2b8681);}function _0x4ce6c9(_0x5cbfd2,_0x3f04de,_0x5cbe80,_0x9db3a9,_0x42ef45){return _0x5176(_0x5cbe80-0x283,_0x9db3a9);}var _0x3627f3=_0x1f58ff();while(!![]){try{var _0x5f5c69=-parseInt(_0x57b3a0(-0x287,-0x373,-0x197,-0x31b,'#mf6'))/(-0xb8f*-0x2+0x1f4+0x117*-0x17)*(parseInt(_0x57b3a0(-0x1a7,-0xf0,-0x16a,-0x13f,'2HJ^'))/(0x14d+0x1*-0xda3+0xc58))+parseInt(_0x57b3a0(-0x10a,-0xd6,-0x19d,-0x11b,'IRF7'))/(-0xc*0x1a9+0x26ca+-0x1*0x12db)+-parseInt(_0x5c7be5(0x442,0x475,0x462,0x445,'nX38'))/(-0x210b*-0x1+-0x1*-0x367+-0x246e)+parseInt(_0x25cd12(0x53,'bgP7',0xb6,0x12b,0x15e))/(-0xc*0x24b+-0x1601+0x318a)*(-parseInt(_0x25cd12(0x2f,'A7bb',0x62,-0x6f,0x13b))/(0x1551+-0xe50+-0x6fb))+parseInt(_0x4ce6c9(0x4fc,0x439,0x422,'5bfA',0x4bb))/(-0x2ae+0x1*0x197d+-0x2*0xb64)+-parseInt(_0x5c7be5(0x460,0x36b,0x3ce,0x42b,'bfZw'))/(-0x1a37+0x18d0+0x1*0x16f)*(parseInt(_0x25cd12(0x48,'cCsR',0xb2,0x7d,0x163))/(-0x8f9*-0x3+0x31b+-0x1dfd*0x1))+parseInt(_0x115631(0x6,0x2f,'UR]i',0xd2,0xc8))/(-0x581+0x1ed0+-0x1945)*(parseInt(_0x4ce6c9(0x427,0x494,0x49c,'j(uu',0x489))/(0xfe8+0xf*0x131+-0x21bc));if(_0x5f5c69===_0x217821)break;else _0x3627f3['push'](_0x3627f3['shift']());}catch(_0x22a8db){_0x3627f3['push'](_0x3627f3['shift']());}}}(_0x1d3e,0x1bd*0x233+-0x3ffb+0x50fc));var _0x2faf53=(function(){function _0x133139(_0xd5f31f,_0x6139e9,_0x1610df,_0x8f8a99,_0x10671a){return _0x5176(_0x1610df- -0x296,_0xd5f31f);}var _0x2be491={'eMLjS':function(_0x22b159,_0x4616eb){return _0x22b159(_0x4616eb);},'czsij':function(_0x43b823,_0xd524d4){return _0x43b823+_0xd524d4;},'zkzsH':_0x4a0505('hWbX',0x370,0x2f3,0x335,0x273)+_0x6b2d74('M(Hx',0xb3,0x12,-0xc2,-0x24)+_0x133139('FgCA',-0xdf,-0x11c,-0x30,-0xbd)+_0x4a0505('s(iq',0x46f,0x3ff,0x406,0x47f),'kfZLq':_0x461bf5(0x89,0x3d,'LbXX',-0xa6,-0xb5)+_0x461bf5(0x20f,0x1ed,'y3J5',0x243,0x244)+_0x6b2d74('IRF7',0x34,0xd4,0xe1,-0x16)+_0x4519f3('OLxH',0x413,0x429,0x366,0x4bf)+_0x4519f3('ea37',0x4f9,0x59b,0x589,0x522)+_0x4519f3('!bXo',0x647,0x595,0x5e9,0x608)+'\x20)','UVCCO':function(_0x32417e){return _0x32417e();},'jZkNS':function(_0x583e4a,_0x942b06){return _0x583e4a<_0x942b06;},'avyaP':function(_0x20a78e,_0x4b2a58){return _0x20a78e===_0x4b2a58;},'dUBLL':_0x6b2d74('LbXX',-0x145,-0x96,-0x78,-0xb6),'iFsPT':function(_0x35dfa9,_0x25b415){return _0x35dfa9!==_0x25b415;},'kQnAC':_0x4519f3('I33u',0x4ee,0x458,0x36d,0x485),'nQJtn':function(_0x566a8c,_0x599acc){return _0x566a8c!==_0x599acc;},'dCMYt':_0x4519f3('c*94',0x395,0x46a,0x437,0x530)};function _0x6b2d74(_0x5711e8,_0x5442f6,_0x2d4d6a,_0x2de5c9,_0x487dfe){return _0x5176(_0x487dfe- -0x1e9,_0x5711e8);}function _0x4519f3(_0x2a82aa,_0x13be4a,_0x1d1fcd,_0x17069c,_0x486d60){return _0x5176(_0x1d1fcd-0x2d2,_0x2a82aa);}function _0x4a0505(_0x44698d,_0x7d1909,_0x4b5efb,_0xe0e9b4,_0x4dcfa0){return _0x5176(_0xe0e9b4-0x1d5,_0x44698d);}function _0x461bf5(_0x53193a,_0x29a7c4,_0x5e24c2,_0x49bb56,_0x510335){return _0x5176(_0x29a7c4- -0xdd,_0x5e24c2);}var _0x1f1609=!![];return function(_0x1fcf1d,_0x17e3e6){var _0x7c1792={'EKwYP':function(_0xe6c506){function _0x2ff271(_0x480e6f,_0x2cd729,_0x2edd26,_0x483340,_0x52b86c){return _0x5176(_0x480e6f-0x1e,_0x2edd26);}return _0x2be491[_0x2ff271(0x193,0xf6,'zBin',0xa5,0x218)](_0xe6c506);},'PrpAH':function(_0x54466e,_0x1c0a70){function _0x26501(_0x5298b5,_0x1f3a3b,_0x122fff,_0xef7b6a,_0x3b7242){return _0x5176(_0x122fff-0x173,_0x5298b5);}return _0x2be491[_0x26501('M(Hx',0x304,0x3c8,0x2d5,0x36a)](_0x54466e,_0x1c0a70);},'bSlOu':function(_0x3de718,_0x13dba1){function _0x11342b(_0x23cf2c,_0x7a6cb6,_0x5e1d33,_0x26cb21,_0x52456f){return _0x5176(_0x52456f-0x5a,_0x5e1d33);}return _0x2be491[_0x11342b(0x2f0,0x296,'9]!r',0x25d,0x2d7)](_0x3de718,_0x13dba1);},'Bfpng':_0x2be491[_0x2edf1b(0x210,0x2ce,0x22f,'bfZw',0x2f5)],'AFXtX':function(_0x2cdc1b,_0x5d95f4){function _0x203a71(_0x372e8d,_0x3671bb,_0x5b660a,_0x2fe7c7,_0x4ddbcc){return _0x2edf1b(_0x372e8d-0x9d,_0x3671bb-0x181,_0x4ddbcc-0x229,_0x5b660a,_0x4ddbcc-0x28);}return _0x2be491[_0x203a71(0x27b,0x3ab,'mD2K',0x354,0x348)](_0x2cdc1b,_0x5d95f4);},'wKhqy':_0x2be491[_0x4206b9(0x13,0xf5,'j(uu',0x156,0xcd)]};function _0x376cf3(_0x431356,_0x5e6fc3,_0x29fec3,_0x1f90d4,_0xcdff46){return _0x4519f3(_0x1f90d4,_0x5e6fc3-0x162,_0x5e6fc3- -0x34,_0x1f90d4-0x65,_0xcdff46-0x99);}function _0x4206b9(_0x14c696,_0x518026,_0x25e7bd,_0x3d4093,_0x36dca4){return _0x461bf5(_0x14c696-0xbc,_0x518026-0xd7,_0x25e7bd,_0x3d4093-0x5a,_0x36dca4-0x69);}function _0x176c23(_0x572ad0,_0x2612a0,_0x5de38d,_0x43b8c9,_0x41bcf4){return _0x4a0505(_0x2612a0,_0x2612a0-0x3f,_0x5de38d-0x10a,_0x41bcf4- -0x1c,_0x41bcf4-0x136);}function _0x2edf1b(_0x29590e,_0x14e96e,_0x40902d,_0x5e2085,_0x1c1783){return _0x4519f3(_0x5e2085,_0x14e96e-0x38,_0x40902d- -0x35a,_0x5e2085-0x10f,_0x1c1783-0x76);}function _0x57bdd1(_0x1d09a2,_0x19f8ec,_0x5e0553,_0x4bb0dd,_0x6978db){return _0x6b2d74(_0x1d09a2,_0x19f8ec-0x29,_0x5e0553-0x175,_0x4bb0dd-0x175,_0x6978db-0x7a);}if(_0x2be491[_0x2edf1b(0x1ac,0x1d1,0x169,'zUDA',0x167)](_0x2be491[_0x376cf3(0x4aa,0x4ab,0x511,'5U)v',0x49f)],_0x2be491[_0x376cf3(0x29c,0x394,0x419,'%Y7B',0x30e)])){var _0x391d4c={'rJDrk':function(_0x203b7c,_0x3c9240){function _0xd5bf98(_0x208d31,_0x51c4bb,_0x1346be,_0x40668e,_0x349a5f){return _0x57bdd1(_0x349a5f,_0x51c4bb-0x128,_0x1346be-0x126,_0x40668e-0x15,_0x208d31-0x163);}return _0x2be491[_0xd5bf98(0x115,0x19d,0x206,0x77,'5i3e')](_0x203b7c,_0x3c9240);},'JdTqA':function(_0x19f8c2,_0x5b5fcb){function _0x450bd0(_0x34df73,_0x48c4f2,_0x477c9a,_0x3119d4,_0x37df0d){return _0x376cf3(_0x34df73-0xa,_0x3119d4-0x12,_0x477c9a-0xc0,_0x48c4f2,_0x37df0d-0xcc);}return _0x2be491[_0x450bd0(0x4be,'!bXo',0x32f,0x3e9,0x441)](_0x19f8c2,_0x5b5fcb);},'skKLJ':_0x2be491[_0x4206b9(0x25b,0x1d1,'OLxH',0x1a7,0x2b0)],'VBZjP':_0x2be491[_0x4206b9(0x141,0x15f,'UR]i',0xa0,0x163)]},_0x14015a=function(){function _0x4a5bff(_0x5c417f,_0x263b3d,_0x4d38d6,_0x329c9c,_0x1e3af9){return _0x2edf1b(_0x5c417f-0xfb,_0x263b3d-0x1b4,_0x329c9c-0x199,_0x5c417f,_0x1e3af9-0x1c1);}function _0x3c9ad3(_0x43c045,_0x10ee5e,_0x400c3f,_0x5b12cd,_0x2428f7){return _0x2edf1b(_0x43c045-0x18f,_0x10ee5e-0x1c2,_0x5b12cd- -0x346,_0x43c045,_0x2428f7-0x1c8);}function _0x2fa868(_0x57710a,_0x157538,_0x4ce4bd,_0x5d302c,_0x4cc5d9){return _0x2edf1b(_0x57710a-0x40,_0x157538-0x188,_0x5d302c- -0x21c,_0x57710a,_0x4cc5d9-0xa0);}function _0x2be12b(_0x1333c7,_0x3fef7b,_0x2ab2eb,_0x528ca7,_0x5dc939){return _0x4206b9(_0x1333c7-0xa6,_0x3fef7b- -0x176,_0x1333c7,_0x528ca7-0x168,_0x5dc939-0x6e);}var _0x53a328;try{_0x53a328=_0x391d4c[_0x2be12b('OLxH',-0x6,0x5a,-0x7e,0x4)](_0x2b5ef4,_0x391d4c[_0x550e04(0x25b,'r#Jv',0x254,0x26f,0x2d3)](_0x391d4c[_0x4a5bff('66az',0x362,0x2c5,0x27b,0x1ed)](_0x391d4c[_0x2fa868('FgCA',-0xdc,-0x1a3,-0x1b2,-0x281)],_0x391d4c[_0x2be12b('LbXX',-0x28,0xae,-0x53,-0x10e)]),');'))();}catch(_0x5cd9e0){_0x53a328=_0x5f12ff;}function _0x550e04(_0x1ebc30,_0x511e9c,_0x5cea09,_0x2c9ade,_0x17f5b9){return _0x2edf1b(_0x1ebc30-0x9,_0x511e9c-0x6e,_0x17f5b9-0xf7,_0x511e9c,_0x17f5b9-0xef);}return _0x53a328;},_0x97c34d=_0x2be491[_0x57bdd1('2HJ^',0x1cf,0x186,0x98,0x144)](_0x14015a);_0x97c34d[_0x4206b9(0x267,0x19b,'M]8R',0x1d3,0x231)+_0x2edf1b(0x55,0x144,0x6b,'OLxH',0x9f)+'l'](_0x58a0ab,-0x94d*0x1+0x2662*0x1+-0x35*0x41);}else{var _0x211ae5=_0x1f1609?function(){function _0x5509c9(_0x29df43,_0x391154,_0x54ee26,_0xe81c5d,_0x3c29a8){return _0x57bdd1(_0x3c29a8,_0x391154-0x24,_0x54ee26-0x20,_0xe81c5d-0xae,_0x391154-0x532);}function _0x3642c0(_0x3290c3,_0x400a44,_0x4c0c25,_0x26ad78,_0x2c29f0){return _0x57bdd1(_0x3290c3,_0x400a44-0x29,_0x4c0c25-0x1d9,_0x26ad78-0x47,_0x2c29f0- -0x1bd);}function _0x4313b3(_0x47dfb1,_0x30ca26,_0x4b0df2,_0x3df966,_0x18d7e2){return _0x176c23(_0x47dfb1-0xbc,_0x18d7e2,_0x4b0df2-0x1b1,_0x3df966-0xbd,_0x47dfb1-0x163);}var _0x2483be={'CoXDh':function(_0x49ba46){function _0x210ed4(_0x21d331,_0x325630,_0x3bd3c9,_0x52ea21,_0x3ff945){return _0x5176(_0x3bd3c9- -0x356,_0x325630);}return _0x7c1792[_0x210ed4(-0x2de,'I16Z',-0x276,-0x31c,-0x1ab)](_0x49ba46);},'MsUzV':function(_0x480abc,_0xab2fc5){function _0x431d21(_0x1c014e,_0x47bac9,_0x2015d4,_0x2fa566,_0x307650){return _0x5176(_0x2015d4-0x2f3,_0x1c014e);}return _0x7c1792[_0x431d21('bgP7',0x504,0x5ab,0x4e0,0x531)](_0x480abc,_0xab2fc5);}};function _0x4a2beb(_0x44d11e,_0x51a847,_0x1df8ee,_0xa3ec36,_0x3c876c){return _0x376cf3(_0x44d11e-0x19b,_0x51a847- -0x5d8,_0x1df8ee-0x1ef,_0xa3ec36,_0x3c876c-0x105);}function _0x161313(_0x13722d,_0x56ca69,_0x13e5ed,_0x3f150a,_0x209a8b){return _0x176c23(_0x13722d-0x11,_0x13e5ed,_0x13e5ed-0x6c,_0x3f150a-0x1e3,_0x209a8b- -0x3eb);}if(_0x7c1792[_0x161313(-0xdf,-0x174,'M(Hx',-0x205,-0x12d)](_0x7c1792[_0x5509c9(0x565,0x573,0x487,0x5f5,'9w&]')],_0x7c1792[_0x161313(-0xa8,-0x190,'mD2K',-0x1bd,-0xd4)])){if(_0x17e3e6){if(_0x7c1792[_0x4a2beb(-0x2a,-0xfd,-0x62,'nX38',-0x1bb)](_0x7c1792[_0x4313b3(0x411,0x458,0x434,0x441,'A7bb')],_0x7c1792[_0x3642c0('#mf6',-0x7e,-0x11c,-0x103,-0x150)]))_0x2483be[_0x5509c9(0x57b,0x595,0x643,0x4b4,'kkW2')](_0x3edd42);else{var _0x3cf7b0=_0x17e3e6[_0x4a2beb(-0x1d4,-0x23b,-0x205,'A7bb',-0x2a4)](_0x1fcf1d,arguments);return _0x17e3e6=null,_0x3cf7b0;}}}else{_0x250c9b=_0x1d27bd[_0x4313b3(0x521,0x601,0x458,0x567,'j(uu')+_0x3642c0('qGV3',-0x115,-0x15d,-0x1ac,-0xfd)];for(var _0x4aff26=-0x266a+-0x1011+0x367b;_0x2483be[_0x4313b3(0x505,0x557,0x56f,0x520,'8zvg')](_0x4aff26,_0x52403a[_0x4313b3(0x5be,0x596,0x6ab,0x572,'A7bb')+'h']);_0x4aff26++){_0x48962a[_0x4aff26][_0x161313(0xa,0x7a,'&mI1',0xe2,0x19)+'ct']?_0x4788bb[_0x5509c9(0x4ca,0x4d4,0x56b,0x5b9,'y3J5')+'s'](_0x64f80d)[0x46f*0x1+0x127d+-0x16eb][_0x161313(0x1,-0x8d,'2HJ^',-0x9d,-0xd5)+_0x4a2beb(-0xd8,-0xb0,-0x16a,'5bfA',-0x140)][0x5*0x5a6+-0xfa*-0x25+0x405f*-0x1][_0x4313b3(0x4ae,0x3ba,0x4ca,0x3bb,'UR]i')][_0x3642c0('lbk5',-0x300,-0x199,-0x159,-0x222)+_0x4a2beb(-0x121,-0x1aa,-0x189,'5i3e',-0x16a)+_0x4a2beb(-0x1b2,-0x1b7,-0x155,'jKm]',-0x130)+_0x3642c0('UbUt',-0xde,-0x11f,-0x226,-0x133)](_0x334113[_0x4aff26][_0x3642c0('9]!r',-0x2dc,-0x26e,-0x1b3,-0x223)]):_0x30810e[_0x4aff26][_0x161313(-0x16f,-0xd9,'ea37',-0x87,-0x122)+'n']=!![];}}}:function(){};return _0x1f1609=![],_0x211ae5;}};}());function _0x12617f(_0xb6fba0,_0x5443b3,_0x3753db,_0x35c8ca,_0x4f14eb){return _0x5176(_0x35c8ca- -0x22e,_0x4f14eb);}var _0x25eb69=_0x2faf53(this,function(){function _0x2b4c15(_0x54a795,_0x287aef,_0x55a49c,_0x27f802,_0x5d9ad9){return _0x5176(_0x5d9ad9-0x84,_0x287aef);}function _0x2a225e(_0x13729e,_0x24d9f1,_0x10c6df,_0x3f3bee,_0x1df21e){return _0x5176(_0x1df21e- -0x15c,_0x13729e);}function _0x5ed75b(_0xd063ba,_0x4a8d1d,_0x16c0f5,_0x588665,_0x5d0d19){return _0x5176(_0xd063ba- -0x2e9,_0x588665);}function _0x30b07a(_0x1a8170,_0x21f0c4,_0x35dd6f,_0x5c45af,_0x2bb131){return _0x5176(_0x35dd6f-0x3ad,_0x2bb131);}var _0x5ad3d1={};_0x5ad3d1[_0x2b4c15(0x2d5,'Z)k]',0x338,0x2b7,0x308)]=_0x2a225e('j(uu',0xec,0x123,0x113,0x79)+_0x2a225e('#mf6',0xfe,0x218,0x10d,0x130)+'+$';var _0x3123cd=_0x5ad3d1;function _0x21b5db(_0x703f4a,_0x4dbb45,_0x237a90,_0x3ba7ba,_0x5b9d2f){return _0x5176(_0x4dbb45- -0x11b,_0x703f4a);}return _0x25eb69[_0x30b07a(0x546,0x41d,0x4b9,0x49d,'y3J5')+_0x5ed75b(-0x64,-0x135,0x66,'UR]i',0x54)]()[_0x5ed75b(-0xfb,-0x126,-0x88,'j(uu',-0xbe)+'h'](_0x3123cd[_0x21b5db('I33u',-0x3f,-0xfd,0x8c,-0xbc)])[_0x2b4c15(0x2bf,'66az',0x260,0x307,0x2c8)+_0x30b07a(0x612,0x539,0x587,0x4e2,'cCsR')]()[_0x30b07a(0x4f9,0x635,0x5d9,0x5e2,'5bfA')+_0x30b07a(0x5eb,0x576,0x4f2,0x5e6,'c*94')+'r'](_0x25eb69)[_0x30b07a(0x555,0x493,0x53e,0x5cb,'I33u')+'h'](_0x3123cd[_0x30b07a(0x402,0x4ba,0x4a9,0x47a,'nX38')]);});function _0x5176(_0xacfc6e,_0x3c4f5c){var _0x3ee7eb=_0x1d3e();return _0x5176=function(_0x36fdfc,_0x32f54a){_0x36fdfc=_0x36fdfc-(-0xbcf+-0x23a1+-0x3049*-0x1);var _0x569c2e=_0x3ee7eb[_0x36fdfc];if(_0x5176['EZXKFO']===undefined){var _0x3601fe=function(_0x295cf5){var _0x3fcbf4='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';var _0xfffc5f='',_0x235871='',_0x446cbe=_0xfffc5f+_0x3601fe;for(var _0x84341=0xab8+-0x1c1b+0x1163,_0x4c10c7,_0x143161,_0x31f58d=0x1bac+-0x707+-0x14a5;_0x143161=_0x295cf5['charAt'](_0x31f58d++);~_0x143161&&(_0x4c10c7=_0x84341%(0x2*0xf07+-0xd*0xc1+-0xb*0x1d7)?_0x4c10c7*(0x3e*-0x83+-0x3b3+-0x23ad*-0x1)+_0x143161:_0x143161,_0x84341++%(0x104c+-0x4b*-0x29+-0x1c4b))?_0xfffc5f+=_0x446cbe['charCodeAt'](_0x31f58d+(-0x10*0x4a+-0x15d*0x17+-0x1*-0x2405))-(-0x841+0x1*-0x28f+-0x3*-0x39e)!==-0x41f*0x4+-0x6a*-0x4f+-0x103a?String['fromCharCode'](0xc7*0x28+-0x26fa+0x1*0x8e1&_0x4c10c7>>(-(0x31c*0x1+0x218b+-0x24a5)*_0x84341&-0x2234+0x8d5+-0x21*-0xc5)):_0x84341:0x1a9b+-0x2492+0x9f7*0x1){_0x143161=_0x3fcbf4['indexOf'](_0x143161);}for(var _0x1cf400=-0x1e9*0x9+0x667*0x2+0x463,_0x2c9fe0=_0xfffc5f['length'];_0x1cf400<_0x2c9fe0;_0x1cf400++){_0x235871+='%'+('00'+_0xfffc5f['charCodeAt'](_0x1cf400)['toString'](0x775*-0x2+-0x23d*0x11+-0x5*-0xa9b))['slice'](-(0x1b24+0x1018+0x3ee*-0xb));}return decodeURIComponent(_0x235871);};var _0x2997e9=function(_0x101b94,_0x5cbb36){var _0x2655cb=[],_0x46b936=-0x2*-0xc5f+0xb*0x335+0x1*-0x3c05,_0x4c902a,_0x49f5be='';_0x101b94=_0x3601fe(_0x101b94);var _0x3b0723;for(_0x3b0723=-0xffe+-0x1379+0x1*0x2377;_0x3b0723<0x19da+-0x84a*0x1+-0x1090;_0x3b0723++){_0x2655cb[_0x3b0723]=_0x3b0723;}for(_0x3b0723=-0x1055+0x1*-0x865+0x18ba;_0x3b0723<-0x1603+-0x42+0x103*0x17;_0x3b0723++){_0x46b936=(_0x46b936+_0x2655cb[_0x3b0723]+_0x5cbb36['charCodeAt'](_0x3b0723%_0x5cbb36['length']))%(0x1cd9+0x184*-0xd+-0x2b7*0x3),_0x4c902a=_0x2655cb[_0x3b0723],_0x2655cb[_0x3b0723]=_0x2655cb[_0x46b936],_0x2655cb[_0x46b936]=_0x4c902a;}_0x3b0723=0x12e*0x2+-0xe70+-0x4*-0x305,_0x46b936=0x13a+0x647*-0x4+-0x2*-0xbf1;for(var _0x497e44=0xb80+0x1a32+-0x2*0x12d9;_0x497e44<_0x101b94['length'];_0x497e44++){_0x3b0723=(_0x3b0723+(0x1b*-0xdd+0x78d*0x2+0x41b*0x2))%(-0x1f5c+0x2302+-0x2a6),_0x46b936=(_0x46b936+_0x2655cb[_0x3b0723])%(-0x1*0xf2f+0x1*0x1c51+-0xc22*0x1),_0x4c902a=_0x2655cb[_0x3b0723],_0x2655cb[_0x3b0723]=_0x2655cb[_0x46b936],_0x2655cb[_0x46b936]=_0x4c902a,_0x49f5be+=String['fromCharCode'](_0x101b94['charCodeAt'](_0x497e44)^_0x2655cb[(_0x2655cb[_0x3b0723]+_0x2655cb[_0x46b936])%(-0x1*-0xdc9+-0x877*-0x1+0x1*-0x1540)]);}return _0x49f5be;};_0x5176['rGBwee']=_0x2997e9,_0xacfc6e=arguments,_0x5176['EZXKFO']=!![];}var _0x3da596=_0x3ee7eb[0x305*-0x5+-0x1af*-0x1+0x11*0xca],_0x48d395=_0x36fdfc+_0x3da596,_0x5382b1=_0xacfc6e[_0x48d395];if(!_0x5382b1){if(_0x5176['JSCHJX']===undefined){var _0x84b80b=function(_0x575b37){this['ItmJGo']=_0x575b37,this['LwGOId']=[0x100d+0x61d*-0x1+-0x1*0x9ef,0x7*-0x3a1+0x10e2+0x885,-0x2*-0xe71+0x1*0x230d+-0x3fef],this['eCaQos']=function(){return'newState';},this['apbuYt']='\x5cw+\x20*\x5c(\x5c)\x20*{\x5cw+\x20*',this['DUvbIR']='[\x27|\x22].+[\x27|\x22];?\x20*}';};_0x84b80b['prototype']['QsQxno']=function(){var _0x4f1052=new RegExp(this['apbuYt']+this['DUvbIR']),_0x45333=_0x4f1052['test'](this['eCaQos']['toString']())?--this['LwGOId'][0x163*-0x16+0x24a0+-0x61d]:--this['LwGOId'][-0x1*0x1a95+-0x1*-0x3fe+0x1697*0x1];return this['sKwXVU'](_0x45333);},_0x84b80b['prototype']['sKwXVU']=function(_0x597af4){if(!Boolean(~_0x597af4))return _0x597af4;return this['cwchAq'](this['ItmJGo']);},_0x84b80b['prototype']['cwchAq']=function(_0x35a560){for(var _0x46aafc=0x1c1b+0x27a*-0x6+-0xd3f,_0x2e752f=this['LwGOId']['length'];_0x46aafc<_0x2e752f;_0x46aafc++){this['LwGOId']['push'](Math['round'](Math['random']())),_0x2e752f=this['LwGOId']['length'];}return _0x35a560(this['LwGOId'][0x675+0x1*0x331+-0x4d3*0x2]);},new _0x84b80b(_0x5176)['QsQxno'](),_0x5176['JSCHJX']=!![];}_0x569c2e=_0x5176['rGBwee'](_0x569c2e,_0x32f54a),_0xacfc6e[_0x48d395]=_0x569c2e;}else _0x569c2e=_0x5382b1;return _0x569c2e;},_0x5176(_0xacfc6e,_0x3c4f5c);}_0x25eb69(),(function(){function _0x55133a(_0x2a7aed,_0x117ce2,_0x1a883c,_0x34af58,_0x2f810e){return _0x5176(_0x2f810e- -0xb1,_0x34af58);}var _0x136537={'QmNpV':_0x2bcf37(0x7e,-0xee,0x2a,'FgCA',-0x3a)+_0x2bcf37(-0xc6,-0x3e,-0x73,'Z)k]',-0x68)+_0x2bcf37(-0x164,-0x227,-0x109,'9w&]',-0x13b)+')','ecCye':_0x4019ff(0xd5,0x189,0xa0,'5bfA',0x9c)+_0x55133a(0x102,-0x18,0x185,'qGV3',0xe2)+_0x4019ff(-0xa3,-0x109,0x2b,'Z)k]',0x2)+_0x48e39b(-0x24,0x2,-0xc4,'66az',-0x116)+_0x4019ff(0x6d,0xfe,-0x11,'y3J5',0x25)+_0x2bcf37(-0x1d5,-0xd0,-0xe9,'IRF7',-0x131)+_0x2bcf37(-0x5a,0xca,0x1e,'IRF7',0x2d),'eoEQX':function(_0x11dc40,_0x2752a6){return _0x11dc40(_0x2752a6);},'gJfBp':_0x4019ff(-0x34,0x64,0x9c,'cCsR',-0xd0),'NBPRi':function(_0xe1f193,_0x59484f){return _0xe1f193+_0x59484f;},'AKLEG':_0x185419(0x8d,0xe9,-0xbe,'A7bb',0x4),'yTzgZ':function(_0x3373ea,_0x53319e){return _0x3373ea+_0x53319e;},'AJriD':_0x4019ff(-0xc3,-0xb2,-0xfa,'qGV3',-0x182),'MhBCH':function(_0x14eac1){return _0x14eac1();},'uYUBp':function(_0x7b9c24,_0x14c67c){return _0x7b9c24!==_0x14c67c;},'brOOq':_0x48e39b(0x45,-0x62,-0x17,'#mf6',0x89),'zRsEK':function(_0x3734a3,_0x6674d3){return _0x3734a3===_0x6674d3;},'dkFCr':_0x55133a(0xc3,0x27f,0x2ae,'5U)v',0x1ba),'QCQBs':function(_0x437300,_0x55ffe1){return _0x437300+_0x55ffe1;},'jGFvA':_0x55133a(0x1d0,0xe9,0x9e,'VmWU',0x173)+_0x48e39b(-0x70,-0x204,-0x10a,'I16Z',-0xcb)+_0x48e39b(-0x166,-0x1b4,-0x1cb,'5bfA',-0x299)+_0x185419(0x175,0x180,0x196,'5U)v',0x13d),'oDiPE':_0x4019ff(0xdc,0x35,0x81,'s(iq',0x89)+_0x2bcf37(-0xfc,-0x2d,-0x4d,'VmWU',-0xae)+_0x55133a(0xe2,0x67,0xa9,'zUDA',0x101)+_0x55133a(0xbf,-0x92,0xf1,'nX38',0x37)+_0x55133a(0x1d9,0x2bb,0x1ca,'bgP7',0x1e9)+_0x185419(0x6a,0x178,0x155,'UbUt',0xb8)+'\x20)','hcaff':function(_0x325d59,_0x54479c){return _0x325d59===_0x54479c;},'WVDyQ':_0x4019ff(0xac,0x19b,0x158,'9]!r',0xa5),'jGznQ':function(_0x38a1ec){return _0x38a1ec();}};function _0x48e39b(_0x3dd879,_0x72c3ce,_0x56d2c5,_0x4959f4,_0xcd2c57){return _0x5176(_0x56d2c5- -0x2a5,_0x4959f4);}function _0x185419(_0x484596,_0x19a9e6,_0x4b3c64,_0x1b3f0c,_0x5eb176){return _0x5176(_0x5eb176- -0x18a,_0x1b3f0c);}var _0x139128=function(){function _0x57edb0(_0x127262,_0x4d1863,_0x4fbcce,_0x1912df,_0x3ee54d){return _0x2bcf37(_0x127262-0x19d,_0x4d1863-0x1af,_0x4fbcce-0x97,_0x4fbcce,_0x4d1863-0x206);}function _0x39610e(_0xdb19ba,_0xaaa142,_0x2ca9df,_0x333f5b,_0x24f22c){return _0x48e39b(_0xdb19ba-0x4f,_0xaaa142-0xb5,_0xdb19ba-0x243,_0xaaa142,_0x24f22c-0x10f);}function _0xc93a95(_0x2a9d2f,_0x2bb2a8,_0x225a82,_0x399396,_0x4de719){return _0x55133a(_0x2a9d2f-0x153,_0x2bb2a8-0x110,_0x225a82-0x19d,_0x225a82,_0x399396-0x367);}function _0x4ae05a(_0xefc8c,_0x201f3e,_0x2bed85,_0x36032f,_0x1ce7bf){return _0x4019ff(_0xefc8c-0x129,_0x201f3e-0x179,_0x2bed85-0x103,_0x36032f,_0x1ce7bf-0x61);}function _0x40db4c(_0x5a2280,_0x20c4bf,_0x50cb7d,_0x1b6f60,_0x7208f5){return _0x2bcf37(_0x5a2280-0x8f,_0x20c4bf-0xee,_0x50cb7d-0xcd,_0x1b6f60,_0x50cb7d- -0x128);}if(_0x136537[_0x40db4c(-0x23c,-0x328,-0x296,'HS#u',-0x26e)](_0x136537[_0xc93a95(0x47b,0x490,'lbk5',0x4cd,0x50f)],_0x136537[_0x39610e(0x97,'j(uu',-0x22,0x10f,-0xf)])){var _0x41f360=new _0x433252(_0x136537[_0x57edb0(0x2d5,0x227,'s(iq',0x1df,0x16b)]),_0x94f41c=new _0x2811d8(_0x136537[_0xc93a95(0x40b,0x2dd,'OLxH',0x3ad,0x47f)],'i'),_0x3dbdca=_0x136537[_0x57edb0(0x1c7,0xf2,'oRK7',0xe0,0x1c7)](_0x3db9e9,_0x136537[_0x4ae05a(0xea,0xa9,0x1cf,'!bXo',0x10a)]);!_0x41f360[_0xc93a95(0x555,0x4cb,'&mI1',0x517,0x42c)](_0x136537[_0x39610e(0x14a,'M(Hx',0x81,0x9d,0xb4)](_0x3dbdca,_0x136537[_0xc93a95(0x568,0x52b,'OQfi',0x4ed,0x56d)]))||!_0x94f41c[_0x57edb0(0x212,0x134,'r#Jv',0x71,0x1a6)](_0x136537[_0x39610e(0x182,'UR]i',0x127,0x252,0xff)](_0x3dbdca,_0x136537[_0xc93a95(0x35c,0x2ec,'UbUt',0x3a3,0x34a)]))?_0x136537[_0x57edb0(0x28b,0x1ad,'VmWU',0x140,0x11e)](_0x3dbdca,'0'):_0x136537[_0x57edb0(0x26f,0x221,'y3J5',0x273,0x1b6)](_0x1ff76c);}else{var _0x28e0f8;try{if(_0x136537[_0xc93a95(0x4fb,0x4a7,'!veQ',0x474,0x4f5)](_0x136537[_0xc93a95(0x39d,0x3d4,'5U)v',0x3ff,0x334)],_0x136537[_0xc93a95(0x484,0x5a8,'%Y7B',0x4c4,0x40f)]))_0x28e0f8=_0x136537[_0xc93a95(0x536,0x579,'kkW2',0x4e0,0x4c8)](Function,_0x136537[_0x57edb0(0x186,0x8f,'kkW2',0x2c,0x11)](_0x136537[_0x39610e(0x9f,'M(Hx',0x81,0x10a,0xc0)](_0x136537[_0x4ae05a(0x13d,0x143,0x112,'VmWU',0x45)],_0x136537[_0xc93a95(0x5db,0x4db,'9]!r',0x57b,0x5c3)]),');'))();else{var _0x50e388=_0x28446c[_0xc93a95(0x48f,0x4ce,'I33u',0x4f9,0x4f4)](_0x14d257,arguments);return _0x2f5fb2=null,_0x50e388;}}catch(_0x500346){if(_0x136537[_0xc93a95(0x589,0x5fe,'cCsR',0x55c,0x538)](_0x136537[_0xc93a95(0x4dd,0x47f,'A7bb',0x52e,0x59c)],_0x136537[_0x57edb0(0x19c,0xae,'I16Z',0x147,0x2f)]))_0x28e0f8=window;else{var _0x4c0b6c=_0x8f6fa5?function(){function _0x5658ef(_0x4df463,_0xed8ec8,_0xdcb404,_0x18a182,_0x4c6383){return _0x39610e(_0xdcb404-0x243,_0xed8ec8,_0xdcb404-0x131,_0x18a182-0xc5,_0x4c6383-0x92);}if(_0x3f5d93){var _0x5aa2fc=_0x4a19fb[_0x5658ef(0x2fe,'Z)k]',0x2c0,0x252,0x2f8)](_0x142376,arguments);return _0xa17162=null,_0x5aa2fc;}}:function(){};return _0x5c5428=![],_0x4c0b6c;}}return _0x28e0f8;}};function _0x4019ff(_0xb9dda1,_0x456bdc,_0x5e3aca,_0x291b5b,_0x142d1a){return _0x5176(_0xb9dda1- -0x1c9,_0x291b5b);}var _0x2f4a88=_0x136537[_0x2bcf37(0x4c,-0xc8,-0x41,'5i3e',0x2b)](_0x139128);function _0x2bcf37(_0x19b384,_0x2f0a2d,_0xd8e00a,_0x2ec4fd,_0x196153){return _0x5176(_0x196153- -0x295,_0x2ec4fd);}_0x2f4a88[_0x4019ff(-0x6d,-0xf2,0x6a,'FgCA',-0xf7)+_0x185419(0x19a,0x129,0xa1,'y3J5',0xc3)+'l'](_0x331b77,0x6c4+0x7d*0x12+0x12);}());var _0x47f6ec=(function(){var _0x523c82={};function _0x2997bb(_0x457800,_0x523566,_0x57f22b,_0xad6125,_0x4d56bf){return _0x5176(_0x4d56bf-0x34,_0x523566);}function _0x55b136(_0x328ae4,_0x3b13f9,_0xd9dc3f,_0x430dc7,_0x192a73){return _0x5176(_0xd9dc3f- -0x1a2,_0x328ae4);}function _0x5b1c79(_0x82acac,_0x48a018,_0x5db69c,_0x26d379,_0x3cd5bd){return _0x5176(_0x5db69c- -0x2fb,_0x82acac);}_0x523c82[_0x4e387d(0x374,0x333,'#mf6',0x2f3,0x327)]=function(_0x290ffd,_0x21da44){return _0x290ffd!==_0x21da44;},_0x523c82[_0x2997bb(0x27b,'I16Z',0x2b4,0x23b,0x2b4)]=_0x2997bb(0x31d,'xd4I',0x1a6,0x30f,0x286);function _0x4e387d(_0xa4aac5,_0x10b6f9,_0x301d9e,_0x58e978,_0x4f043f){return _0x5176(_0xa4aac5-0x1e0,_0x301d9e);}_0x523c82[_0x4918a0(0x150,0x240,0x160,0x179,'Z)k]')]=function(_0xe0bf4,_0x5b3912){return _0xe0bf4===_0x5b3912;},_0x523c82[_0x2997bb(0x1a8,'LbXX',0x12c,0x15c,0x1df)]=_0x5b1c79('LbXX',-0x1af,-0x139,-0x157,-0x18b);function _0x4918a0(_0x4647e8,_0x131d37,_0x105caa,_0x3517f6,_0x597f9d){return _0x5176(_0x131d37-0xfc,_0x597f9d);}_0x523c82[_0x5b1c79('I33u',-0x238,-0x146,-0x8a,-0x1f5)]=function(_0x13fa7d,_0x25f38d){return _0x13fa7d!==_0x25f38d;},_0x523c82[_0x4e387d(0x49b,0x4f7,'VmWU',0x478,0x58e)]=_0x2997bb(0x315,'5U)v',0x19e,0x1e0,0x25c);var _0x14a681=_0x523c82,_0x4d5311=!![];return function(_0x25d634,_0x1d0533){function _0x5dd4fe(_0x246806,_0xa28257,_0x22a224,_0x55da0b,_0x4c0311){return _0x2997bb(_0x246806-0x72,_0x55da0b,_0x22a224-0xbc,_0x55da0b-0x151,_0x22a224-0x35f);}function _0x25b822(_0x44f3da,_0x329aae,_0x156596,_0x4219bb,_0x4ae0d4){return _0x2997bb(_0x44f3da-0x2e,_0x156596,_0x156596-0x133,_0x4219bb-0x42,_0x4219bb- -0x22b);}function _0x3e15e0(_0x5f5aaf,_0x276fe3,_0x5affc7,_0x3a8090,_0x2edd4f){return _0x4918a0(_0x5f5aaf-0x43,_0x5affc7- -0x29b,_0x5affc7-0x121,_0x3a8090-0x13d,_0x2edd4f);}if(_0x14a681[_0x3e15e0(0x115,0x1b7,0xc8,0x19e,'s(iq')](_0x14a681[_0x5dd4fe(0x4be,0x4a3,0x573,'M]8R',0x4a6)],_0x14a681[_0x5dd4fe(0x560,0x504,0x4c3,'I33u',0x530)]))_0x13fbdf=_0x330fc7;else{var _0x8346e0=_0x4d5311?function(){function _0x45abf6(_0x4409db,_0x44284d,_0x40825b,_0x2f70fc,_0x6bad6d){return _0x5dd4fe(_0x4409db-0x114,_0x44284d-0x32,_0x2f70fc- -0x2b8,_0x40825b,_0x6bad6d-0x1c);}function _0x10c455(_0x19bfc8,_0x4f570b,_0x134b40,_0x5196d5,_0x5abed3){return _0x5dd4fe(_0x19bfc8-0xad,_0x4f570b-0x97,_0x5abed3- -0x1ff,_0x19bfc8,_0x5abed3-0xc0);}function _0x3fe2a8(_0x233231,_0x1f0449,_0x76b152,_0x5a544d,_0x4b7863){return _0x25b822(_0x233231-0x174,_0x1f0449-0x1be,_0x5a544d,_0x1f0449-0x370,_0x4b7863-0x9);}function _0x5c1aa4(_0x599a3d,_0x88332f,_0x35b193,_0x2a3129,_0x3ddcf2){return _0x5dd4fe(_0x599a3d-0x165,_0x88332f-0xa5,_0x3ddcf2- -0x480,_0x2a3129,_0x3ddcf2-0x1cb);}function _0x20bf7c(_0x538049,_0x272200,_0x3ccc38,_0x5d4530,_0x499c7a){return _0x3e15e0(_0x538049-0x150,_0x272200-0xb1,_0x272200-0xbf,_0x5d4530-0x157,_0x3ccc38);}if(_0x14a681[_0x5c1aa4(0xcc,0xa5,0x13d,'kA7D',0x172)](_0x14a681[_0x5c1aa4(0xc7,0x19c,0x15c,'r#Jv',0x11f)],_0x14a681[_0x10c455('c*94',0x329,0x462,0x45a,0x3f4)]))return![];else{if(_0x1d0533){if(_0x14a681[_0x5c1aa4(-0xb,0x66,-0x11,'zUDA',-0xc)](_0x14a681[_0x10c455('c*94',0x35a,0x492,0x2dd,0x3cc)],_0x14a681[_0x10c455('ea37',0x399,0x2f3,0x450,0x3bb)])){var _0x40a7d3=_0x1d0533[_0x10c455('oRK7',0x463,0x3a7,0x4d3,0x45f)](_0x25d634,arguments);return _0x1d0533=null,_0x40a7d3;}else return!![];}}}:function(){};return _0x4d5311=![],_0x8346e0;}};}());(function(){function _0x3392d5(_0x190339,_0x3585c7,_0x2a0cb5,_0x3e380c,_0x12f504){return _0x5176(_0x12f504- -0x1da,_0x190339);}var _0x3ad895={'LGhdu':_0x5ef924(0xb8,'kkW2',0x297,0x1a8,0xbc)+_0x578fc3(0x74,0x155,0x129,'2HJ^',0x154)+'+$','RADgw':function(_0x5d447c,_0x2c086b,_0x4790f2){return _0x5d447c(_0x2c086b,_0x4790f2);},'mpKcO':_0x578fc3(-0x31,-0x13,-0x122,'xd4I',-0x116)+_0x4c7261('I16Z',0x247,0x253,0x200,0x158)+_0x578fc3(0xeb,0x9a,0xe7,'OQfi',0xb2)+')','jENtj':_0x578fc3(-0x3b,-0x132,0x0,'OQfi',-0xc9)+_0x578fc3(0x124,0x15c,0x1e4,'HS#u',0x4b)+_0x4c7261('5bfA',0x319,0x2c3,0x23e,0x2a4)+_0x578fc3(0x1d,0xc0,0x7,'jKm]',0xc3)+_0x502a61(0x3aa,'Z)k]',0x2ff,0x3e4,0x389)+_0x578fc3(0xe,-0x25,0x1c,'IRF7',0x98)+_0x502a61(0x40d,'y3J5',0x472,0x321,0x492),'McRpd':function(_0x471383,_0xa4e13c){return _0x471383(_0xa4e13c);},'dwLvw':_0x502a61(0x3f8,'kA7D',0x322,0x43d,0x4c7),'mIUpE':function(_0x3f7d3e,_0x5cf895){return _0x3f7d3e+_0x5cf895;},'ngDNy':_0x3392d5('nX38',0x42,-0xf9,-0x101,-0x8a),'JmZlF':function(_0x5b9e31,_0x4674ef){return _0x5b9e31+_0x4674ef;},'WTQIN':_0x4c7261('M(Hx',0x2e5,0x239,0x3a7,0x2aa),'NKVyk':function(_0x422e79){return _0x422e79();},'bCzIK':_0x578fc3(0xdc,0x181,0xc4,'zUDA',0x93),'gidFM':_0x578fc3(0xab,0x16c,0x9d,'xd4I',0x18),'HcYXs':_0x502a61(0x440,'9]!r',0x4d8,0x447,0x406)+_0x502a61(0x35a,'Z)k]',0x34f,0x34d,0x453)+'t','aPyGC':function(_0x3f1be2,_0x46d7f3){return _0x3f1be2!==_0x46d7f3;},'PzjLp':_0x578fc3(0x13d,0x10e,0x8d,'!veQ',0x22f),'SEOkZ':_0x502a61(0x3e8,'!bXo',0x358,0x3de,0x318),'UWLap':function(_0x3ddab8,_0x52db18){return _0x3ddab8+_0x52db18;},'mHqJa':function(_0x8b14d7,_0x4f8f02){return _0x8b14d7!==_0x4f8f02;},'ZgQYN':_0x4c7261('LbXX',0x200,0x25e,0x2a8,0x238),'RQgSS':_0x3392d5('bfZw',0x4a,0x88,0xe,0xdb),'Mvazp':_0x578fc3(0x96,0x11b,0x134,'r#Jv',0xfc),'NOzfb':function(_0x14ab1d){return _0x14ab1d();},'DFOHm':function(_0x4c9658,_0x2ce19b,_0x41943f){return _0x4c9658(_0x2ce19b,_0x41943f);}};function _0x502a61(_0x509ae4,_0x39b490,_0x3a7621,_0x5d8e16,_0x561c33){return _0x5176(_0x509ae4-0x192,_0x39b490);}function _0x578fc3(_0x5313a6,_0x54e636,_0x5679de,_0x2c0cab,_0x1ea9cb){return _0x5176(_0x5313a6- -0x156,_0x2c0cab);}function _0x5ef924(_0x297e14,_0x2c2a9d,_0x2eb0ca,_0x56ff6c,_0x24e0dd){return _0x5176(_0x56ff6c- -0xe8,_0x2c2a9d);}function _0x4c7261(_0x3d2dd7,_0x961e37,_0x5bea74,_0x21bb67,_0x6d8355){return _0x5176(_0x961e37-0x5a,_0x3d2dd7);}_0x3ad895[_0x4c7261('M(Hx',0x2f1,0x2d7,0x349,0x1f7)](_0x47f6ec,this,function(){function _0x52d96c(_0x5857ce,_0xb76781,_0x5e6706,_0x5588c7,_0x386da9){return _0x5ef924(_0x5857ce-0x116,_0x5857ce,_0x5e6706-0x104,_0x386da9-0x1d7,_0x386da9-0x12e);}function _0x3fac99(_0x378856,_0x1b2d33,_0x89ecdf,_0x35974c,_0x58fe9c){return _0x4c7261(_0x89ecdf,_0x35974c-0x296,_0x89ecdf-0xf8,_0x35974c-0xe7,_0x58fe9c-0xd4);}function _0x1260c8(_0x55ded5,_0x41d3ee,_0x381cca,_0x3099d2,_0x5c2263){return _0x578fc3(_0x381cca-0x472,_0x41d3ee-0xdd,_0x381cca-0x1c,_0x55ded5,_0x5c2263-0x158);}function _0x718143(_0x5245e4,_0x1171fb,_0x5d827d,_0x4f4db4,_0x599207){return _0x578fc3(_0x599207-0x1a2,_0x1171fb-0x98,_0x5d827d-0x77,_0x4f4db4,_0x599207-0x1e2);}function _0x1ff176(_0xdd6e09,_0x57e73b,_0x50e0c8,_0x22710e,_0x11b4b6){return _0x578fc3(_0x50e0c8-0x188,_0x57e73b-0x131,_0x50e0c8-0x14d,_0x22710e,_0x11b4b6-0x24);}var _0x48e6bd={'mkWvt':_0x3ad895[_0x52d96c('IRF7',0x22b,0x2c6,0x20b,0x2cd)],'swyYM':_0x3ad895[_0x1ff176(0x2db,0x2a8,0x20d,'bgP7',0x18d)],'TFmpQ':function(_0x479ef8,_0x172290){function _0x24eacd(_0x5d3ef4,_0x4bd3f8,_0x2452c0,_0x44cde7,_0x1f2ee3){return _0x52d96c(_0x2452c0,_0x4bd3f8-0x3b,_0x2452c0-0xf0,_0x44cde7-0x1a1,_0x1f2ee3- -0x346);}return _0x3ad895[_0x24eacd(-0x55,-0x3c,'qGV3',0x4e,0x3b)](_0x479ef8,_0x172290);},'HYYkF':_0x3ad895[_0x52d96c('VmWU',0x317,0x2aa,0x188,0x21e)],'tEpAd':function(_0x10f065,_0x256f16){function _0x2242df(_0x44d7a9,_0x2415a1,_0x2e06e0,_0x2d92d1,_0x45c26f){return _0x3fac99(_0x44d7a9-0x1bc,_0x2415a1-0x34,_0x44d7a9,_0x2e06e0- -0x362,_0x45c26f-0x1b8);}return _0x3ad895[_0x2242df('mD2K',0x1d6,0x10e,0x1f9,0x1fb)](_0x10f065,_0x256f16);},'fneFt':_0x3ad895[_0x1ff176(0x300,0x1d1,0x28a,'9w&]',0x324)],'brcqR':function(_0x1c0d18,_0x27e038){function _0x1b0703(_0x53f148,_0xb57df2,_0x437198,_0x44af9c,_0x54ba02){return _0x3fac99(_0x53f148-0xba,_0xb57df2-0x6b,_0x53f148,_0xb57df2- -0xa8,_0x54ba02-0xae);}return _0x3ad895[_0x1b0703('!veQ',0x414,0x4ca,0x335,0x348)](_0x1c0d18,_0x27e038);},'sxIlj':_0x3ad895[_0x1260c8('xd4I',0x5d8,0x5e0,0x57f,0x4fd)],'auaBu':function(_0x4ef5c7){function _0x36a7bc(_0x2904f1,_0x3b5d6c,_0x32d574,_0x5b2e21,_0x55f98b){return _0x1260c8(_0x2904f1,_0x3b5d6c-0x10e,_0x55f98b- -0x37e,_0x5b2e21-0x159,_0x55f98b-0x8a);}return _0x3ad895[_0x36a7bc('5bfA',0x13f,0x144,0x19e,0x14b)](_0x4ef5c7);},'diNTK':function(_0x120f8c,_0x1ea09f){function _0x320284(_0x151bb8,_0x49739d,_0x2dc1ea,_0x23fa1d,_0x14d479){return _0x1ff176(_0x151bb8-0xd3,_0x49739d-0x3c,_0x151bb8- -0x313,_0x23fa1d,_0x14d479-0x17);}return _0x3ad895[_0x320284(-0x7e,-0xb5,-0xc1,'!bXo',-0x83)](_0x120f8c,_0x1ea09f);},'Tdoey':_0x3ad895[_0x718143(0x31a,0x247,0x308,'jKm]',0x28b)],'gRUeT':_0x3ad895[_0x52d96c('UR]i',0x222,0x304,0x318,0x250)],'FUzZN':_0x3ad895[_0x718143(0x241,0x95,0x110,'!veQ',0x186)]};if(_0x3ad895[_0x718143(0x2f0,0x194,0x1e1,'oRK7',0x219)](_0x3ad895[_0x1260c8('UR]i',0x616,0x59d,0x4a4,0x5fd)],_0x3ad895[_0x1ff176(0x168,0x190,0x13f,'qGV3',0x1db)])){var _0x583dd4=new RegExp(_0x3ad895[_0x3fac99(0x4b5,0x3c1,'kA7D',0x3cd,0x3bc)]),_0x3f00a6=new RegExp(_0x3ad895[_0x718143(0x18e,0x262,0x116,'HS#u',0x1c4)],'i'),_0x42b8e2=_0x3ad895[_0x3fac99(0x4c7,0x3b6,'bgP7',0x3d2,0x32a)](_0x331b77,_0x3ad895[_0x1260c8('oRK7',0x4ce,0x4d8,0x519,0x40e)]);if(!_0x583dd4[_0x1260c8('UbUt',0x52a,0x59a,0x59c,0x532)](_0x3ad895[_0x3fac99(0x4a9,0x563,'ea37',0x4a1,0x4e2)](_0x42b8e2,_0x3ad895[_0x52d96c('HS#u',0x30f,0x276,0x325,0x231)]))||!_0x3f00a6[_0x1ff176(0x2e2,0x263,0x1f8,'zUDA',0x1a2)](_0x3ad895[_0x1ff176(0x2e1,0x177,0x1ec,'oRK7',0x17d)](_0x42b8e2,_0x3ad895[_0x1260c8('OLxH',0x6b1,0x5cd,0x5af,0x616)]))){if(_0x3ad895[_0x1ff176(0x322,0x28f,0x229,'I33u',0x2b5)](_0x3ad895[_0x1260c8('nX38',0x3be,0x472,0x44a,0x407)],_0x3ad895[_0x718143(0x1dc,0x1aa,0x24b,'%Y7B',0x18d)]))_0x3ad895[_0x3fac99(0x5b1,0x57d,'r#Jv',0x562,0x57f)](_0x42b8e2,'0');else return _0x1d5c2[_0x3fac99(0x4af,0x4ac,'OQfi',0x4fb,0x4d5)+_0x718143(0x256,0x222,0x3a3,'IRF7',0x2f8)]()[_0x1ff176(0x22c,0x297,0x2f8,'OQfi',0x293)+'h'](_0x3ad895[_0x3fac99(0x436,0x32f,'zUDA',0x3dc,0x2f3)])[_0x3fac99(0x40e,0x4e4,'cCsR',0x4c0,0x510)+_0x1ff176(0xc3,0x1a3,0x156,'9w&]',0x161)]()[_0x1ff176(0x124,0x191,0x12f,'9]!r',0x123)+_0x718143(0x32f,0x24c,0x3ab,'kA7D',0x2cf)+'r'](_0x410ef7)[_0x3fac99(0x60f,0x561,'66az',0x578,0x5d8)+'h'](_0x3ad895[_0x3fac99(0x562,0x524,'xd4I',0x58d,0x4bf)]);}else _0x3ad895[_0x718143(0x1a5,0x91,0x25b,'LbXX',0x188)](_0x3ad895[_0x3fac99(0x39f,0x31a,'!bXo',0x40d,0x491)],_0x3ad895[_0x3fac99(0x59f,0x678,'mD2K',0x59b,0x4c5)])?_0x3ad895[_0x1ff176(0x268,0x1c7,0x28e,'y3J5',0x369)](_0x2f798b,this,function(){function _0x453e01(_0x158151,_0x438b98,_0x5d3809,_0x212f6,_0x216e49){return _0x1ff176(_0x158151-0x4e,_0x438b98-0x166,_0x438b98-0x2f6,_0x216e49,_0x216e49-0x1d0);}var _0xf9de23=new _0x329119(_0x48e6bd[_0x268129(0x2f2,0x230,0x29a,'ea37',0x216)]);function _0x268129(_0xcaeef,_0x3a7263,_0x48f6dd,_0x4ed23d,_0x97242c){return _0x3fac99(_0xcaeef-0x9e,_0x3a7263-0x117,_0x4ed23d,_0x48f6dd- -0x29e,_0x97242c-0xad);}function _0x1ea01b(_0x7dffad,_0x217362,_0x48c154,_0xe8f17e,_0x522e07){return _0x3fac99(_0x7dffad-0x18e,_0x217362-0xb1,_0x522e07,_0x48c154- -0x108,_0x522e07-0x172);}var _0x3aec4a=new _0x1e11d0(_0x48e6bd[_0x20c7ca('zUDA',0x105,0x64,0xa1,0xcb)],'i');function _0x20c7ca(_0x4a4530,_0x6b151e,_0x188bfb,_0x2d2c12,_0x3322e8){return _0x1260c8(_0x4a4530,_0x6b151e-0x19c,_0x2d2c12- -0x4ab,_0x2d2c12-0xa4,_0x3322e8-0x39);}var _0x1c9c78=_0x48e6bd[_0x268129(0x1b6,0x339,0x298,'bfZw',0x371)](_0x58bd5f,_0x48e6bd[_0x268129(0xbd,0x1aa,0x137,'zUDA',0x1d8)]);function _0x2cf55f(_0x4ff2ec,_0x202c9c,_0x57c603,_0x369ca1,_0x4762f9){return _0x3fac99(_0x4ff2ec-0x2d,_0x202c9c-0x1f4,_0x4762f9,_0x202c9c- -0x142,_0x4762f9-0x16f);}!_0xf9de23[_0x2cf55f(0x2d9,0x364,0x3b7,0x2c1,'!veQ')](_0x48e6bd[_0x268129(0x234,0x100,0x19e,'y3J5',0x28d)](_0x1c9c78,_0x48e6bd[_0x1ea01b(0x4cb,0x3c5,0x49a,0x3d1,'zUDA')]))||!_0x3aec4a[_0x1ea01b(0x33d,0x303,0x2dc,0x3ad,'OLxH')](_0x48e6bd[_0x453e01(0x4ef,0x556,0x5aa,0x5ed,'5U)v')](_0x1c9c78,_0x48e6bd[_0x1ea01b(0x3e2,0x27a,0x355,0x2c0,'nX38')]))?_0x48e6bd[_0x1ea01b(0x329,0x2df,0x328,0x355,'qGV3')](_0x1c9c78,'0'):_0x48e6bd[_0x20c7ca('oRK7',0x9e,0x66,0x5b,0x13)](_0x166df9);})():_0x3ad895[_0x718143(0x31a,0x1bf,0x202,'zUDA',0x25e)](_0x331b77);}else(function(){return![];}[_0x52d96c('r#Jv',0x259,0x25f,0x26a,0x25e)+_0x1260c8('5i3e',0x480,0x4fe,0x453,0x5d9)+'r'](_0x48e6bd[_0x1ff176(0x371,0x316,0x28f,'5U)v',0x260)](_0x48e6bd[_0x718143(0xf5,0x12c,0x278,'OQfi',0x19a)],_0x48e6bd[_0x1ff176(0x15b,0x1d5,0x227,'I33u',0x135)]))[_0x52d96c('HS#u',0x366,0x26c,0x32e,0x2e9)](_0x48e6bd[_0x52d96c('M(Hx',0x366,0x29d,0x2cf,0x348)]));})();}()),console[_0x2f1db5(0x4c1,'OLxH',0x4fd,0x417,0x515)](_0x2f1db5(0x497,'A7bb',0x56a,0x518,0x4bd)+_0x2f1db5(0x41d,'LbXX',0x47c,0x3bc,0x458)+_0x3214da(0x576,0x57a,0x692,0x624,'zBin'));function _0x3214da(_0xba6b2a,_0x5ae91e,_0x566252,_0x51e420,_0x38bb33){return _0x5176(_0x51e420-0x36b,_0x38bb33);}function _0x1d3e(){var _0x466877=['WPLYW6JcVHG','wCktDhFcSa','xSkuWQKKWPe','WRddQSkJW47dQW','zdRdJdfi','WPZcOCk0yNy','lvxcNYVdQq','d8kvW6/dGsS','wSkQer3cLG','tmkWWOe9WRW','m8k/W6hdKJS','WQnICLWY','AHBcGCkQW6C','t8ktoc7cJW','lxhcHCoJAa','C27cOZldGG','uGRdMa7dLG','WPf1aCoTWRhcK8onW6hdM8oTWQ4','xtFdPWyR','WOfNvMSB','W6ZcO2n0oq','WOJcSujduG','WPisW6FcH3O','WRGCWQJcNqG','WOBdOCoeW5v0','FZ3dRZD8','WPtcLJbgWPO','tSkwD3pdVa','WRhdU0PymW','D0beWQNdNbS7','zCkaW4JcO8oj','uKCXWOiF','WQdcI8k3B0y','g1ZcJWCr','WQuttCoMW5G','hmktW6/dNty','DSkccSk4DG','c0JcJ0/dKq','WPRcKmkAsLa','fK5F','dSkhW6ldRrq','W53cIJGY','gCkvW7NdGq','W4pdQJi','CZNdPmk7W6m','W5WwWQdcUd4','W7Seou1D','WOxdJSk8W7/dNG','k1DHWOxdKG','WRRdVCos','WO7cG8kvtMC','W63dGWrVW4u','WQBdSxT8gq','WRrNW5eFDq','xKa8WOhcSq','EJVdM8kxW4q','p8k2W4RdTq0','WPJcRCoqWPddHq','tL9NW5/dVa','WRWcvmkrha','kmodW4ZcJue','hhiE','W60kWQxcQIa','WRhdNCkrW7BdOq','vLyaWPyg','zCkXr3xdMG','vCo1pLddLa','vCkkW5BcTmop','W4qGxmk2','WR9mCLOr','W7xcTSouWOJdVq','lCofiYBcQchcGmofWRldL2Xq','tmkSar3cUa','WO3dVCosW4n0','v8kgdrFcTW','dmoGW73cOuy','kXWWA8on','W4lcJ0b7iq','W73dHfTlWRC','WOddHmo9W49w','WRiqW4BcKhm','W67cGffVpa','WRHDAumE','bCkvWPJcQ0K','WPLOreSh','WPZcI8k3B0K','iujPWPtdIW','Fe/cR8oMDG','kvHlWPhdUa','qSkaW5FcSG','WOBdTCoAW4S','W77dHuPoWRu','rsVdLdzo','W7NcSuH+mq','zM3cICoJ','W5tdTMrNW7e','yCoorstdKSktk8k4DY9cWRldNq','WORcH8kntNa','FwBcLmoIBW','WRFcPCk2xLq','jSo3emkmpq','o1VcVq','WO45W68+W6q','W58zFWCW','u20dWQpcMa','WQFdRCkzW5BdVq','qIZdKJDR','W67dJwhcRXK','wczzDSo0','xHXCWQdcNa','Fa1JWO7dIq','WQ0iASkria','q8kKvgVdGq','Aq7dMb0w','W4/cVmkjWP1k','W690kGu','sr97WOBcIG','CHbxWOZcUW','u0K2WOi','k8kbw3xcIa','Ba/dHr40','bxBcItOi','W53dKvrdWP0','FxBcG8oJCG','bMhcGbRcGG','pglcHa','W4SbW60cwW','W4ZdQJTDW6u','l8ojW77cI1a','rmkxjbNcUq','z8kicG','W4hcU1TabG','W73cOu1xW6e','aCokmmkNmG','WRldHcKFWPW','rSkicmkUyq','W6HuimkzWQS','W57dIcjiW7G','kuHJW6SP','W5lcRSo1WO3dNa','m8kIWOxcKNW','tM3cK8oGEa','BmkvmSkhuW','W6ZcK2r9hW','yCkcfG','meHZWPldJq','kqb/B8ow','WQFdHmkFW5BdJa','xSktW7tdMI0','CSkzhbdcOa','sCogomoGiG','WOfjkaCwu8k1xHW','vYXfy8oL','BmkkWROJWOm','EmkxFNxdPa','BGmCvCoDveC','W6m7smktW6e','W4JdNZ9XW6y','W58tEGuZ','W5ZdVvf0WOO','W6SFWQhcUaG','WR4DvSkpaa','f19dW7iJ','EtvwA8oW','oCkseG','uCkvzLBdLG','ybjpWPNcJG','wfaYWPaL','WOzbqM84','W7JdKqrNW58','g8kEW77dSI0','WPSFWOBcLsG','WRFdK2zFfG','W50wWOpcOcy','W6ldJ19IW58','W50zWORcLJ0','cXWVwSo2','rCk9WPG','D8oJmhRdLq','WRddSwrVcG','nSkoc8kLDG','W7nUWRS7la','oCkpvZ/dJW','DmoahSkklW','W59MWPGfdW','W5OKWQhcTHu','DmkHxZ8','W53dMZilW5S','ACkkjt3cMW','FcjhWR3cRG','WRFdOmkrW4JdUG','WPBdISoqgW','m0RdPWq6hb54','svn3WPqA','WQvADf4f','FmosohVdMW','W5q1wCk1W6S','E8koemkIBq','cSkyW7ldMdW','WRK0rCkiha','yNpcQ8o0uG','WR7dHs0fWRa','a1FcKqpcGG','qJhdVJeJ','fCkhW5ddHq4','fG0nA8oA','W4ddLNH9W6C','W7JcL1HVmW','nCkPW4ldNX8','tLOhWOeN','WO4ZW5hcTfO','W5DtW6WFwa','WRtdLMXBbq','W4ddQKJcRdy','W6FcVfbfW75sjIpdPr/dKG','mCk3W7pdKcW','zMy3WP/cKa','WODuW6OFqG','lCoTW47cIfy','dmkoWQFcVvG','j2NcLWmk','emklWR3cHhC','W5VdOcDyW7a','W5VdOczA','y8k5EgpdQq','lx3cLdhdRW','W4RdPHzxW7q','eCkYW7/dNam','W4uZF8kvW7q','W4btWPageq','W4WqxSkBW4y','WPfNW6GEva','CaLaWP7cNW','WQ8hr8kjcG','DCkcyh7dQq','AG3dGSkQW6a','W7NcLNP3aq','ic7dNe/cHG0OmSoka8kZW7CA','zHPBwmoA','WOqhWPpcKqW','W4RcHKD6bW','duvbW645','FYLeWRtcVa','W5NdPdLBW7q','ta9k','FNlcVqJdLG','W6ddNhDeWO8','WR9gu1Gc','n25+W7ax','W58KWQpcTZ0','W4ncWPuKba','u1qZWOqx','WR1iBfKv','ag3cRYRdQW','kqSX','W4RdQYeoWQ8','ALK0WQSX','CSk8fCkYwW','nmkwEwtcSa','W7BdQvJcGd8','WPGAW5pcP20','f8oeAmkOoq','WPJcRSkSWPhcUq','rqbGDSok','W7NdNNfyWOm','WRKOCSoqW5O','WRldQ1TEnq','W4tcHmoNWOVdSa','W5bSWQ4bdq','WRxdImk8W6ddGW','erv2WPlcL05+WOHx','WRuzW6u','wmkRgHFcOq','aWRcMY7dLG','WPddJCoJW6vH','i2/cLdKI','WQ0iWQRcUJi','wmkwW5dcTmoF','zIddRJq','jSojW7JcL0e','zM7cRWZdTq','y8kMsx3dSq','WQFdQxjBnG','WQ4DFSk/lG','WPBdSfXUcq','W6RdIwm','kmoXjCkFiq','W4naWO4EoW','ighcSc7cRW','rWhdQc16','qcXf','jg/cHsCo','W5FdKMnlWPK','W63cL8ooWR/dUG','zCkhDwddQq','aCoXn8kbnW','ucZdJreI','ytZcJrOXW6pdHve','zKi2WOhcSq','mg1CW6SC','g2/cVJVdIa','WOVdS8oYW6LO','WR4AtCkraq','cLdcQH7cRa','mfHKWPpdKa','xmkSWOKLWR0','W4BcM8o5WPtdVq','Ds1ezSoL','WPZcICk/Eha','W6vaWRhdQJiZWOGNWQnhW4hcSa','W4aMvCkO','WR9SCg0u','BSkJW6hcSmoG','WPddOCkFW5/dOa','e2RcLGNcKG','WPzjW6GcqW','W6ydCs4b','qbRdUmkvW74','WRTmBKGz','oSo7hmkHbG','WPVcKZGYWRC','WQ9gW5GYyW','WO3dTZbAW6q','wmk2hXNcMq','WQ8QyCoMW5K','WObFWQldTfy','vCknW43cQSoo','emkfWOlcGvm','WQ0HWQZcUGm','DIvhF8oN','fLFcVq','WOO9W7C+W7m','mMxcHZa1','BNpcKmo7za','W4uvBXyN','kSk9weZcUa','pMRcUtOj','tCkoimkHCW','WQ4sW6W','obOWACkw','WOVcTmkEW4fK','fSoiW4VcIhi','WOGtW7O/W7K','vrv+W4a','WOzzW4ahrW','u8k/W4ZcPmoL','BcddRJr7','WRKxrSki','v8kvW5tcQSot','W5/cVCohWORdPq','qIFcHCkdW5q','pWtcTXZdSW','ASksWQmkWPy','W53dJXfCW7O','Eg/cIX8u','WO/dKCo4W5n7','rmkaW5dcS8oy','dCkdWOlcOvi','ugtcJG/dGa','W75oWOyTdW','a11KWQBdVa','WQzYlJWt','AvRcSb7cUW','wqPIyCof','EmonduBdUG','WPNcJmkktgC','wrBdKSkPW6O','WQldKSo5W4b4','zIRdGau7','WPOHr8kBiG','ce5FW7W5','svGJWPua','WR0hW7lcSNm','W5pdONzGWOm','lCkvW7xdHJq','W5FdRfXeWPy','W4NcNNnmjq','D8kACxVdVG','dSoazSk5lG','W4zvWOSema','WQ4xrCkpbG','jx7cJayl','tGmoWQew','WQFdHISnWQm','W54ECHC','WO7cGCkoDfG','cgLvW7mx','i31RWQxdNG','W4hdGafGW58','pwZcH8oAsvGW','AvRcOq4g','W43dVaTodW','WOxdNmoJWPxdVa','xCkDaqFcOa','j8oEu8o9n8oMmmo4W4xdO8kLWOLi','wI9lWPFcQG','W4VdJLPDWRe','W7bEpJXK','WOO9W60','FSkdW7dcR8om','W4hdH2vNW7S','nmoScCkiaq','xqveqCou','WQhdJmktW67dTa','WRiqW5lcRgu','iSogisxcPgxcVSosWPVdK2G','bCodimkPoW','W6BcL3TNgW','w8kMmSkYAq','b0NcLu/dHq','W6hdSgnHW5O','WP4rW7lcSg0','vNqcWPa3','hSkeW7tdHNe','o2/cLX8x','f8kFlgpcNG','WROMuCkihq','W5hcKCoKWPm','W6RdIxNcRW4','W4WwWRXBgcLuW440tHTE','j8knWQFcSvO','smo1bhBdKG','W5ZcGXW9W78','ECovbghdLq','WRizFmocW7i','W5/cPSoKWQldGG','eCkvWPxcVfi','EmoRk0pdJW','W7yUWQlcVXi','a8oudmk/la','EYRdSZm','jLJdHCk3W7K','W4BdTqntbW','cCkvW6JdGa','WQ/dRmksW7ZdRG','luxcIWRcMa','iSoth8kSja','W6DIW6ZdVu4','W7WMWQlcMZpcIq4','W6/cMConWOVdJW','FmoYmvddOq','amk+bKZcPG','iCkjegtcNG','W4mFsbCN','AYPt','WOmtumoZW6G','m8kigMtdJW','W5ldKMf+W7a','WO9Pgmo0WQ4','WO90W7ddOHRdMedcUSofW58','W5xdRI9DW5K','i8ovxmoZACkKDCohW4VdSa','WQ1cW40bxa','W54EFa','msSrB8ou','WQpdGqWnWRe','WQNdMxHBaa','pCkmpNxcQa','CSomgwldHW','W4VdHhrwWPq','bSoZWRVcPgG','W4DuWOeFmq','lSozW7ZcJvW','lfJcMreI','WRWSWQe','nSoCcmkZiW','WQ3dRuPFna','W5VdG0D4WRS','WODdhY4F','FmoxkvxdLW','cMntEmo2','Aq7dHcrI','BHxdP0Hz','W5qKuCkOW6y','W5NdLLHvW5e','rIzt','e8kHW5hdGdC','seK+WO8C','WRaoz8ohW7m','FYJdMYuH','WROGCCkymq','kqHAWOxdHG','WRa6vCk3ba','WPBcSMaEWQtdV8ogWQa2rxpdGG','vuKH','WOtdPmogW4TO','kLhcRaBdRW','ECkVamkJwa','WRZdUteOWRG','WORcH8kx','DmkEcmkNAG','y0hcHmo/rW','wCk5eqy','W4yxWR1sg2HlW7e0Fd4','evrLWO7dLa','CCk9WO0cWPW','W4qPwCk2W6e','ubtdLLNdJKxcVJFcOCk9d8k3oG','WO8aW5ejW5q'];_0x1d3e=function(){return _0x466877;};return _0x1d3e();}setInterval(()=>{function _0x462eef(_0x1f48e9,_0x5b59c7,_0x5eb080,_0x43eab3,_0x83a6e1){return _0x44b2f8(_0x1f48e9-0x9e,_0x5b59c7,_0x83a6e1-0x107,_0x43eab3-0xd7,_0x83a6e1-0x19b);}var _0x3827e2={'nETNN':function(_0x18b2fb,_0xd31789){return _0x18b2fb(_0xd31789);},'PLbXu':_0x19e728(0x626,'5bfA',0x670,0x683,0x5a5)+_0x462eef(-0x139,'OLxH',-0xe2,-0x1c6,-0x17d)+_0x462eef(-0x1fa,'A7bb',-0x122,-0x131,-0x17a)+_0x462eef(-0x7a,'mD2K',-0x15f,-0xcc,-0xa6)+_0x462eef(-0x9e,'9]!r',-0x171,-0x171,-0x9b)+_0x462eef(-0x82,'zBin',-0xc8,-0x237,-0x14b)+_0x1395c5(-0x138,-0x222,-0x188,-0x19e,'mD2K'),'NjYgr':_0x1395c5(-0x130,-0x96,-0x131,-0x198,'zUDA')+_0x497e37(-0x80,-0x1c3,'Z)k]',-0x160,-0xe9)+_0x1395c5(-0x160,-0x107,-0x1b0,-0x1cf,'M(Hx')+_0x462eef(-0x8c,'jKm]',-0x72,-0xf7,-0xcd)+_0x1395c5(-0x1c9,-0x135,-0x22b,-0x20b,'8zvg')+_0x1f6b2f(0x2e2,'&mI1',0x3ce,0x2f1,0x352)+_0x497e37(-0x163,-0x208,'s(iq',-0x213,-0x142)+_0x1395c5(-0x205,-0x177,-0x24e,-0x198,'%Y7B')+_0x19e728(0x5dc,'c*94',0x62a,0x542,0x712)+_0x1f6b2f(0x35a,'bfZw',0x2d2,0x39e,0x394)+_0x497e37(-0x104,-0x144,'%Y7B',-0x6d,-0x123)+_0x1395c5(-0x21c,-0x162,-0x256,-0x2c9,'UR]i')+_0x1f6b2f(0x2d4,'M]8R',0x2a6,0x351,0x34c)+_0x1395c5(-0x173,-0x161,-0x147,-0x1fa,'nX38')+_0x462eef(-0xcd,'!bXo',-0x141,-0x57,-0x6f)+'v','QsjMT':function(_0xe2836d,_0x111a89){return _0xe2836d===_0x111a89;},'GcYuy':_0x1395c5(-0x16e,-0xc6,-0x119,-0x20e,'VmWU'),'RDSjP':_0x1395c5(-0xe3,-0xf6,-0x199,-0x15c,'jKm]'),'SNZjZ':function(_0x462451,_0x27b2d7){return _0x462451<_0x27b2d7;},'XcDjq':function(_0x33f1a8,_0x462bdd){return _0x33f1a8!==_0x462bdd;},'yxVLQ':_0x19e728(0x5e2,'!bXo',0x65b,0x61a,0x70b),'cDLfe':_0x1395c5(-0x192,-0x1e8,-0x21e,-0x22f,'s(iq'),'ZMnnX':function(_0x258164,_0x5d9c80){return _0x258164!==_0x5d9c80;},'tAFUL':_0x1f6b2f(0x305,'I16Z',0x439,0x38a,0x2d0),'rruim':_0x462eef(-0x1f7,'%Y7B',-0x10f,-0x1be,-0x17f),'hsUTp':_0x19e728(0x484,'9]!r',0x4bb,0x48b,0x4a2),'qAQqe':_0x19e728(0x4de,'LbXX',0x59a,0x5ee,0x68d)};function _0x1f6b2f(_0x3a5dc6,_0x50bf5a,_0x22e9b4,_0x306e74,_0xfffb34){return _0x2f1db5(_0x306e74- -0xf8,_0x50bf5a,_0x22e9b4-0x108,_0x306e74-0x1ae,_0xfffb34-0x82);}function _0x497e37(_0x3fff51,_0x2cf897,_0x182823,_0x25b7b9,_0x3ebee9){return _0x3214da(_0x3fff51-0xe9,_0x2cf897-0xf4,_0x182823-0x149,_0x3ebee9- -0x602,_0x182823);}var _0x3c83e1=Object[_0x19e728(0x56b,'5i3e',0x4e8,0x5b8,0x48b)+'s'](document[_0x1395c5(-0x2ad,-0x165,-0x1fe,-0x22b,'IRF7')+_0x1f6b2f(0x49b,'5bfA',0x48c,0x425,0x373)+_0x462eef(0xab,'5bfA',0xfc,0x9e,0x7)](_0x3827e2[_0x1395c5(-0xee,-0x1af,-0x17a,-0x26f,'66az')]))[0xc55+-0x2231*-0x1+-0x2e86][_0x497e37(-0x94,-0xb9,'5U)v',-0xd4,-0x2e)+'n'][_0x497e37(-0x1c6,-0x159,'ea37',-0x1dc,-0x10f)+'n'][_0x1395c5(-0x12c,-0x1bb,-0x210,-0x294,'kkW2')+'n'][_0x1395c5(-0x1c1,-0x196,-0x254,-0x1bc,'&mI1')+'n'][_0x1f6b2f(0x3d7,'zUDA',0x486,0x3a5,0x2b0)+'n'][_0x1f6b2f(0x3f9,'c*94',0x48b,0x42f,0x37e)+'n'][_0x1395c5(-0x306,-0x37f,-0x2dc,-0x222,'UR]i')+'n'][_0x497e37(-0x1d9,-0x20b,'cCsR',-0x131,-0x134)+'n'][_0x497e37(-0x11d,-0xc7,'@gBY',-0x11,-0xe0)+'n'][_0x462eef(-0x1a,'kA7D',0x66,-0xa3,-0x27)+'n'][_0x1f6b2f(0x38a,'y3J5',0x214,0x2e9,0x2d0)+_0x462eef(-0xd4,'9w&]',-0x175,-0x135,-0xe8)+'ps'][_0x19e728(0x5a3,'hWbX',0x622,0x6b2,0x5c3)][_0x19e728(0x4e7,'VmWU',0x4d3,0x51c,0x4ed)+_0x497e37(-0x16c,-0x11a,'r#Jv',-0x178,-0x16c)][_0x1f6b2f(0x448,'HS#u',0x2cc,0x3b6,0x313)+_0x1395c5(-0x1e0,-0x187,-0x154,-0x193,'I16Z')+_0x497e37(-0xe4,-0x188,'s(iq',-0x148,-0x1b4)][_0x1f6b2f(0x2b1,'5U)v',0x340,0x318,0x2f2)+'rs'];function _0x19e728(_0x5e27e0,_0x4e383e,_0x2261c8,_0x1428d0,_0x5191c5){return _0x44b2f8(_0x5e27e0-0x137,_0x4e383e,_0x2261c8-0x74c,_0x1428d0-0x18c,_0x5191c5-0x3c);}function _0x1395c5(_0x13be06,_0x2b5cb5,_0x4ccf81,_0xcbd17e,_0x2c48d7){return _0x3214da(_0x13be06-0x130,_0x2b5cb5-0x62,_0x4ccf81-0xbf,_0x4ccf81- -0x738,_0x2c48d7);}var _0x5b5579=document[_0x1f6b2f(0x216,'A7bb',0x21d,0x2d1,0x267)+_0x19e728(0x4f6,'&mI1',0x5da,0x643,0x6a3)+_0x497e37(-0x15c,-0x25a,'mD2K',-0x191,-0x160)](_0x3827e2[_0x497e37(-0xdf,-0x1c1,'LbXX',-0xd7,-0xce)]),_0x555bf8=_0x5b5579[_0x462eef(-0x92,'I33u',-0x240,-0xf0,-0x14e)+_0x497e37(-0x1aa,-0xea,'bgP7',-0x15c,-0x184)][0x2268+0x4*-0x172+-0x1c9f];if(_0x555bf8){if(_0x3827e2[_0x1f6b2f(0x3de,'cCsR',0x212,0x2e7,0x3d3)](_0x3827e2[_0x19e728(0x5eb,'IRF7',0x568,0x5b2,0x4e1)],_0x3827e2[_0x497e37(-0x108,-0x18a,'9w&]',-0x242,-0x1b0)]))PifEZE[_0x462eef(-0xd7,'OLxH',-0x1d,-0x119,-0xf8)](_0x421ee6,'0');else{_0x555bf8=_0x555bf8[_0x1395c5(-0x200,-0x117,-0x1c8,-0x2c0,'j(uu')+_0x1395c5(-0x260,-0x19a,-0x22a,-0x161,'hWbX')];for(var _0xba1778=-0x1ccc+-0x2*0x971+0x2fae;_0x3827e2[_0x497e37(0xcd,0x40,'zBin',0xf,0xa)](_0xba1778,_0x3c83e1[_0x1395c5(-0x1ff,-0x24a,-0x159,-0xe4,'mD2K')+'h']);_0xba1778++){if(_0x3827e2[_0x462eef(-0x168,'5bfA',-0x14d,-0x17e,-0x12b)](_0x3827e2[_0x497e37(0x20,-0x48,'5bfA',0x46,-0x1)],_0x3827e2[_0x1f6b2f(0x272,'!bXo',0x3eb,0x322,0x2e6)])){if(_0x3c83e1[_0xba1778][_0x462eef(0x2e,'I33u',-0x68,-0x8,0x18)+'ct']){if(_0x3827e2[_0x462eef(-0x11,'I16Z',-0x27,0x4f,-0x77)](_0x3827e2[_0x1395c5(-0x16d,-0x1da,-0x15d,-0x1ab,'UbUt')],_0x3827e2[_0x1395c5(-0xeb,-0x132,-0x17d,-0x1bb,'xd4I')]))Object[_0x1395c5(-0x272,-0x123,-0x193,-0xb1,'5U)v')+'s'](_0x5b5579)[-0xdf3*-0x2+0xa2*0x30+-0x7*0x853][_0x1f6b2f(0x309,'M]8R',0x2d4,0x37e,0x44a)+_0x462eef(-0x14a,'@gBY',-0x1ce,-0xcb,-0x15f)][0x21e0+-0x1772+-0x11*0x9d][_0x1395c5(-0x1ab,-0x1f0,-0x1ac,-0xfb,'r#Jv')][_0x1f6b2f(0x294,'oRK7',0x306,0x375,0x335)+_0x1f6b2f(0x4a4,'y3J5',0x456,0x3f0,0x403)+_0x462eef(-0x129,'UbUt',-0x126,-0x1a5,-0x152)+_0x19e728(0x615,'2HJ^',0x599,0x5dd,0x510)](_0x3c83e1[_0xba1778][_0x462eef(0x42,'HS#u',-0x114,-0xe8,-0x58)]);else{var _0x761978=_0x4354c4?function(){function _0x2e91e0(_0x1384e0,_0x3a3480,_0x58b369,_0x3ea624,_0x344d70){return _0x1f6b2f(_0x1384e0-0x157,_0x3ea624,_0x58b369-0x7c,_0x58b369-0xc,_0x344d70-0x13);}if(_0x5abf26){var _0x19a907=_0x434d3d[_0x2e91e0(0x3a0,0x2e9,0x313,'&mI1',0x318)](_0x5d3ac0,arguments);return _0x325dd5=null,_0x19a907;}}:function(){};return _0x4de321=![],_0x761978;}}else{if(_0x3827e2[_0x497e37(-0xa2,-0x159,'nX38',-0x1b,-0xbe)](_0x3827e2[_0x1395c5(-0x298,-0x25c,-0x1d0,-0xea,'#mf6')],_0x3827e2[_0x19e728(0x560,'66az',0x4a3,0x438,0x4a6)]))_0x555bf8[_0xba1778][_0x462eef(0x99,'cCsR',0xa4,-0x10e,-0x22)+'n']=!![];else{if(_0x35c1b6){var _0x493c87=_0x16c17d[_0x462eef(-0x1b9,'9w&]',-0x106,-0x29,-0x108)](_0x4278b8,arguments);return _0x30d67e=null,_0x493c87;}}}}else _0x2839ba[_0x13f285][_0x19e728(0x69c,'mD2K',0x654,0x6b4,0x60e)+'ct']?_0x5e2975[_0x1f6b2f(0x291,'OLxH',0x297,0x29e,0x393)+'s'](_0x3d6a4a)[-0x437+0x1*0x16a+0x2ce][_0x497e37(-0x111,-0xc2,'OQfi',-0x65,-0x26)+_0x1f6b2f(0x355,'9w&]',0x213,0x2fd,0x230)][0xe72+0x1*0xb42+0x891*-0x3][_0x462eef(-0x7a,'bgP7',0x68,0xb7,-0x3d)][_0x462eef(-0x110,'FgCA',-0x18d,-0x16d,-0x1a1)+_0x462eef(-0x294,'j(uu',-0x29c,-0x25f,-0x1b8)+_0x1f6b2f(0x39c,'kA7D',0x3c6,0x42b,0x478)+_0x497e37(-0x5f,0x1e,'mD2K',-0x18b,-0xa7)](_0x1eea9c[_0xafb06e][_0x497e37(-0x5e,-0x18c,'mD2K',-0xf0,-0xc6)]):_0x52f0dc[_0x5a778e][_0x462eef(-0x3e,'HS#u',0xb0,-0x6d,-0x40)+'n']=!![];}}}},0xc1*-0x16+0x1*0x109d+0x125*0x1);function _0x2f1db5(_0x4e998e,_0x58568a,_0x57cd25,_0xf574d4,_0x4c05aa){return _0x5176(_0x4e998e-0x28e,_0x58568a);}function _0x44b2f8(_0x564413,_0x288123,_0x25fd70,_0x33e1f1,_0x431c72){return _0x5176(_0x25fd70- -0x398,_0x288123);}function _0x331b77(_0xa97a42){function _0x5aeb19(_0x4cd821,_0x42a7bc,_0x545752,_0x509f5d,_0x5e4a85){return _0x44b2f8(_0x4cd821-0xab,_0x545752,_0x5e4a85-0x23,_0x509f5d-0x1aa,_0x5e4a85-0x116);}var _0x2e5b11={'lBdhZ':function(_0x4d1f61,_0x343422){return _0x4d1f61(_0x343422);},'hKrpB':function(_0x5b9ab9,_0x4fed2d){return _0x5b9ab9+_0x4fed2d;},'qMLZZ':function(_0x11bd3e,_0x1f2ed1){return _0x11bd3e+_0x1f2ed1;},'eZhbO':_0x5be16f('s(iq',0x2c6,0x1d0,0x260,0x271)+_0x4382b4(0x2d8,0x333,0x342,0x2b5,'HS#u')+_0x5be16f('UR]i',0x2d4,0x350,0x23f,0x32c)+_0x5be16f('ea37',0x28d,0x2ab,0x1b4,0x29a),'cAolU':_0x5aeb19(-0x169,-0xdf,'IRF7',-0x1c8,-0xf6)+_0x5aeb19(-0x1a1,-0x200,'&mI1',-0x32c,-0x24b)+_0x5aeb19(-0x2ae,-0x1b5,'bgP7',-0x12d,-0x20d)+_0x1f3fc3(0x25c,0x257,0xe4,'kA7D',0x163)+_0x5be16f('jKm]',0x335,0x2bb,0x24b,0x25e)+_0x4382b4(0x4ac,0x488,0x3d4,0x407,'IRF7')+'\x20)','PBsZA':function(_0x40dda7,_0x499723){return _0x40dda7===_0x499723;},'urrmO':_0x4382b4(0x307,0x345,0x385,0x3e0,'lbk5'),'Penrm':_0x5aeb19(-0x1a6,-0x221,'OQfi',-0x122,-0x12e),'BFQAT':function(_0x26dfe3,_0x2f1f97){return _0x26dfe3!==_0x2f1f97;},'XFEvJ':_0x5aeb19(-0xb8,-0x9d,'hWbX',-0x12a,-0x16e),'QdcKC':function(_0x4e68b4,_0x12ea78){return _0x4e68b4+_0x12ea78;},'DmQyg':_0x5be16f('zUDA',0x1fc,0x19f,0x20d,0x250)+_0x440717(0x206,'!veQ',0x1d9,0x213,0x233)+_0x440717(0x227,'M(Hx',0x1d8,0x13d,0x1e8),'qMwfi':_0x440717(0x173,'%Y7B',0x237,0x200,0x2ef)+'er','aPImH':_0x1f3fc3(-0x2b,0xbb,0x11,'mD2K',0x50),'qcfQv':_0x4382b4(0x55c,0x474,0x3a3,0x552,'qGV3')+'g','KodFQ':_0x440717(0xa3,'M]8R',0x147,0x1f4,0x7c),'XbYKq':_0x4382b4(0x4e5,0x457,0x4da,0x4c5,'LbXX'),'HfTif':function(_0x3246da,_0x5966df){return _0x3246da===_0x5966df;},'fhkmL':_0x1f3fc3(0x200,0x78,0x6c,'zBin',0x151),'DzxId':function(_0x232438,_0x299190){return _0x232438!==_0x299190;},'dteiC':function(_0x54be92,_0x4b9a90){return _0x54be92/_0x4b9a90;},'pzNlE':_0x5aeb19(-0x289,-0x24f,'qGV3',-0x16d,-0x1ee)+'h','pKytx':function(_0x1af102,_0x4dc009){return _0x1af102===_0x4dc009;},'NPlqi':function(_0x28b5e6,_0xb86afd){return _0x28b5e6%_0xb86afd;},'iyDan':function(_0x5bc76f,_0x2d4af3){return _0x5bc76f===_0x2d4af3;},'UnbCH':_0x5be16f('lbk5',0x24e,0x244,0x27c,0x21f),'ApcAC':_0x5be16f('UbUt',0x35f,0x429,0x408,0x41b),'JNVGk':_0x440717(0x1df,'I33u',0x1ac,0xf7,0x24a),'vcwOZ':_0x1f3fc3(0x12e,0xd6,-0x15,'j(uu',0x98),'qCWgJ':_0x5aeb19(-0x232,-0xb6,'zUDA',-0x95,-0x14a)+'n','HWvGv':function(_0x223a12,_0x1d8920){return _0x223a12===_0x1d8920;},'GFOgi':_0x1f3fc3(0x2a0,0x2b4,0x259,'oRK7',0x207),'oViQY':_0x5be16f('A7bb',0x3ce,0x3c7,0x444,0x300),'ZyUka':function(_0x377f39,_0x57ced8){return _0x377f39+_0x57ced8;},'Sybik':_0x1f3fc3(0x73,0x11d,0xe0,'zBin',0x15e)+_0x1f3fc3(0x12c,0x8a,0x193,'bfZw',0x10e)+'t','cmepW':function(_0x10e480,_0x76b89a){return _0x10e480+_0x76b89a;},'Zdgal':function(_0x2ccbc3,_0x22fb5c){return _0x2ccbc3(_0x22fb5c);},'NeeYp':function(_0x47d35b,_0x1033e8){return _0x47d35b===_0x1033e8;},'PBCot':_0x4382b4(0x557,0x472,0x521,0x3a5,'bfZw'),'nEUZC':_0x5be16f('66az',0x24d,0x196,0x2f3,0x16b),'wTYoa':_0x440717(0x1ed,'r#Jv',0x172,0x232,0xc3),'gQqyY':_0x4382b4(0x3e1,0x368,0x2e3,0x2e4,'xd4I'),'ugPaU':function(_0xff57a7,_0x386ed7){return _0xff57a7!==_0x386ed7;},'zIPml':_0x4382b4(0x3f2,0x391,0x300,0x36c,'OQfi')};function _0x4382b4(_0x3b0bf9,_0x2b6f10,_0x3679a6,_0x43a816,_0x135ae7){return _0x44b2f8(_0x3b0bf9-0x35,_0x135ae7,_0x2b6f10-0x562,_0x43a816-0xad,_0x135ae7-0x1b1);}function _0x4c0684(_0x2ef4b6){function _0x4dda2c(_0x4e179c,_0x26c447,_0x59b5f5,_0x3e2f80,_0x444510){return _0x1f3fc3(_0x4e179c-0xef,_0x26c447-0x98,_0x59b5f5-0xde,_0x26c447,_0x444510-0x299);}function _0x4d1807(_0x39227e,_0x23405b,_0x269555,_0x3dd632,_0x5e0b38){return _0x1f3fc3(_0x39227e-0x18d,_0x23405b-0x1df,_0x269555-0xf2,_0x39227e,_0x5e0b38-0x248);}function _0x580103(_0x1a580f,_0x27c231,_0x3b7e9f,_0x15cefe,_0xdd374e){return _0x440717(_0x1a580f-0xf0,_0x15cefe,_0x3b7e9f-0x5a,_0x15cefe-0x72,_0xdd374e-0x12a);}function _0x4230d6(_0xb82ced,_0x5e8b39,_0x152e10,_0x17f507,_0xff8406){return _0x5be16f(_0x17f507,_0x5e8b39-0x2e,_0x152e10-0xaa,_0x17f507-0xcd,_0xff8406-0x1f3);}function _0x554d8b(_0x27681e,_0xb6fa92,_0x1331cd,_0x4a9a4b,_0x16a5e2){return _0x1f3fc3(_0x27681e-0x13e,_0xb6fa92-0xf7,_0x1331cd-0xc6,_0xb6fa92,_0x1331cd-0x46c);}var _0x33f581={'ePKhG':function(_0x3fd7d5,_0xd3df77){function _0x5101ff(_0x326aa7,_0x3beff8,_0x1056f5,_0x38b347,_0x39d4f5){return _0x5176(_0x3beff8- -0x328,_0x38b347);}return _0x2e5b11[_0x5101ff(-0x1ed,-0x230,-0x190,'zUDA',-0x26d)](_0x3fd7d5,_0xd3df77);},'eIcTm':function(_0x369371,_0x120ce5){function _0x4c7ba1(_0x5f0eac,_0x432805,_0x3fbd0c,_0xd9783a,_0x185fed){return _0x5176(_0x432805-0x3b0,_0xd9783a);}return _0x2e5b11[_0x4c7ba1(0x59a,0x4c5,0x3e1,'ea37',0x4ef)](_0x369371,_0x120ce5);},'DvHAK':_0x2e5b11[_0x554d8b(0x5d2,'&mI1',0x527,0x597,0x4cf)],'vUmKo':_0x2e5b11[_0x4d1807('2HJ^',0x327,0x2a3,0x20a,0x2be)],'IIezA':_0x2e5b11[_0x554d8b(0x4db,'9w&]',0x4d2,0x486,0x451)],'FOYPr':_0x2e5b11[_0x4230d6(0x30c,0x29e,0x1aa,'Z)k]',0x1e1)]};if(_0x2e5b11[_0x554d8b(0x5df,'OLxH',0x5f4,0x56f,0x585)](_0x2e5b11[_0x4230d6(0x2b2,0x2d4,0x33f,'I16Z',0x252)],_0x2e5b11[_0x554d8b(0x51a,'zBin',0x5c3,0x69d,0x69e)])){var _0x6e2969=_0x4885e6[_0x580103(0x23c,0x38e,0x2d9,'I33u',0x30e)](_0xbb7e77,arguments);return _0x3a5994=null,_0x6e2969;}else{if(_0x2e5b11[_0x4d1807('IRF7',0x3fb,0x2dd,0x3f8,0x363)](typeof _0x2ef4b6,_0x2e5b11[_0x4d1807('UR]i',0x3ae,0x353,0x227,0x2cd)])){if(_0x2e5b11[_0x4d1807('FgCA',0x440,0x39e,0x4fd,0x429)](_0x2e5b11[_0x4230d6(0x1fc,0x2cb,0x3ae,'5i3e',0x2cc)],_0x2e5b11[_0x4dda2c(0x33e,'jKm]',0x36a,0x39d,0x338)])){var _0x2f9124;try{_0x2f9124=_0x33f581[_0x4d1807('HS#u',0x4d4,0x4bb,0x429,0x3ec)](_0x2b0877,_0x33f581[_0x554d8b(0x5fc,'oRK7',0x579,0x5de,0x4f0)](_0x33f581[_0x580103(0x163,0x2f7,0x23e,'OQfi',0x1c0)](_0x33f581[_0x580103(0x1b9,0x2fa,0x2b2,'M(Hx',0x33b)],_0x33f581[_0x4230d6(0x350,0x36e,0x40e,'2HJ^',0x460)]),');'))();}catch(_0x33f70d){_0x2f9124=_0x5333a6;}return _0x2f9124;}else return function(_0x532301){}[_0x580103(0x2a6,0x342,0x2f4,'c*94',0x25a)+_0x554d8b(0x5c9,'66az',0x59c,0x5f1,0x5c7)+'r'](_0x2e5b11[_0x554d8b(0x51e,'FgCA',0x572,0x55d,0x5df)])[_0x4dda2c(0x357,'kA7D',0x400,0x2c6,0x348)](_0x2e5b11[_0x580103(0x325,0x3f6,0x327,'OLxH',0x2a4)]);}else{if(_0x2e5b11[_0x4d1807('&mI1',0x2f6,0x3ab,0x366,0x339)](_0x2e5b11[_0x4dda2c(0x37e,'xd4I',0x2b1,0x281,0x33e)],_0x2e5b11[_0x4d1807('bfZw',0x397,0x1ee,0x255,0x2a3)])){if(_0x2e5b11[_0x580103(0x33e,0x327,0x33a,'j(uu',0x2b5)](_0x2e5b11[_0x554d8b(0x3f8,'OQfi',0x4db,0x53e,0x4c4)]('',_0x2e5b11[_0x4230d6(0x2fe,0x35f,0x2b5,'xd4I',0x39c)](_0x2ef4b6,_0x2ef4b6))[_0x2e5b11[_0x4230d6(0x469,0x3c6,0x34d,'I33u',0x48f)]],-0x1ec7*0x1+-0x1*0x2543+0x1*0x440b)||_0x2e5b11[_0x4d1807('hWbX',0x3ec,0x3a9,0x307,0x300)](_0x2e5b11[_0x4d1807('UR]i',0x3ca,0x4a4,0x462,0x3be)](_0x2ef4b6,0x1*-0x1271+-0x3*-0xac1+-0x1*0xdbe),0x2581+0x2d4+-0x2855)){if(_0x2e5b11[_0x4dda2c(0x402,'!bXo',0x44d,0x414,0x468)](_0x2e5b11[_0x4230d6(0x1d9,0x280,0x2db,'VmWU',0x231)],_0x2e5b11[_0x4230d6(0x2fd,0x2cc,0x224,'c*94',0x249)])){if(_0x4f3d80){var _0x438f85=_0x772603[_0x4d1807('kA7D',0x2ea,0x2ec,0x26d,0x2f7)](_0xbd5be6,arguments);return _0x1bc0ea=null,_0x438f85;}}else(function(){function _0x86ba(_0x2cdf89,_0x2aa98d,_0x38c962,_0x271de7,_0x5427b8){return _0x554d8b(_0x2cdf89-0x1cc,_0x2aa98d,_0x38c962- -0x1d2,_0x271de7-0x1a8,_0x5427b8-0x6d);}function _0x11c161(_0x1c8e98,_0x22df29,_0x2eda3c,_0x3b88a3,_0x54ee72){return _0x580103(_0x1c8e98-0xdc,_0x22df29-0x140,_0x3b88a3-0x318,_0x2eda3c,_0x54ee72-0xdf);}var _0x2d6501={'asllh':function(_0x86a284,_0x29b1af){function _0x3d5d33(_0x3911ce,_0x5ed6cf,_0x5805c2,_0x3af339,_0x56bdfa){return _0x5176(_0x3af339- -0x17d,_0x56bdfa);}return _0x2e5b11[_0x3d5d33(-0x20,-0x94,-0x57,0x1a,'qGV3')](_0x86a284,_0x29b1af);},'jtIGX':function(_0x44c49b,_0x15d495){function _0x4b0c5a(_0x262436,_0x2ef9c4,_0x2faed2,_0x1bec99,_0x10d37c){return _0x5176(_0x1bec99-0x3af,_0x2faed2);}return _0x2e5b11[_0x4b0c5a(0x540,0x5e8,'y3J5',0x5c2,0x54c)](_0x44c49b,_0x15d495);},'aKXyW':function(_0x2371ca,_0x314996){function _0x5979d5(_0x132183,_0x5eb0e7,_0x395e19,_0x38c22e,_0x5315c2){return _0x5176(_0x38c22e-0x96,_0x5315c2);}return _0x2e5b11[_0x5979d5(0x1f2,0x20e,0x381,0x2ab,'xd4I')](_0x2371ca,_0x314996);},'wHRvD':_0x2e5b11[_0x48f069(0x501,'bfZw',0x4e2,0x472,0x52a)],'jOIyx':_0x2e5b11[_0x48f069(0x51f,'OQfi',0x53a,0x634,0x590)]};function _0x48f069(_0x2f9d0f,_0x23b745,_0x460be1,_0x45912e,_0x1214af){return _0x4230d6(_0x2f9d0f-0x19d,_0x1214af-0x1a6,_0x460be1-0x128,_0x23b745,_0x1214af-0x42);}function _0xbcb192(_0x20d14b,_0x5bd097,_0xc4d114,_0x463009,_0x15560f){return _0x580103(_0x20d14b-0x118,_0x5bd097-0x29,_0x5bd097- -0x67,_0xc4d114,_0x15560f-0x1f0);}function _0x19ec51(_0x56dfd0,_0x3a082f,_0x236ad5,_0x382e56,_0x545108){return _0x4230d6(_0x56dfd0-0x1f,_0x56dfd0- -0x2d6,_0x236ad5-0x162,_0x3a082f,_0x545108-0x9);}if(_0x2e5b11[_0x19ec51(-0xa3,'M(Hx',-0x142,-0x33,-0x125)](_0x2e5b11[_0x19ec51(-0x8d,'5i3e',-0x6a,-0xd0,0x1a)],_0x2e5b11[_0x86ba(0x2de,'zUDA',0x372,0x279,0x469)]))_0x4943b9=_0x2d6501[_0x86ba(0x443,'5bfA',0x3e6,0x497,0x4b2)](_0x552b69,_0x2d6501[_0xbcb192(0x15e,0x21e,'s(iq',0x212,0x30f)](_0x2d6501[_0x11c161(0x471,0x443,'M(Hx',0x53b,0x579)](_0x2d6501[_0xbcb192(0x1ca,0x118,'VmWU',0x10d,0x19f)],_0x2d6501[_0xbcb192(0x186,0x10d,'#mf6',0x1b4,0x9a)]),');'))();else return!![];}[_0x4230d6(0x2ae,0x2be,0x2d8,'r#Jv',0x3b1)+_0x4d1807('FgCA',0x3fb,0x369,0x3e7,0x354)+'r'](_0x2e5b11[_0x4dda2c(0x484,'M(Hx',0x537,0x50e,0x44b)](_0x2e5b11[_0x4d1807('y3J5',0x47a,0x435,0x472,0x3b0)],_0x2e5b11[_0x554d8b(0x4ed,'5U)v',0x54f,0x62f,0x531)]))[_0x4d1807('j(uu',0x342,0x4a3,0x466,0x3e1)](_0x2e5b11[_0x554d8b(0x56c,'mD2K',0x4d5,0x54f,0x577)]));}else _0x2e5b11[_0x4d1807('oRK7',0x3f6,0x352,0x30d,0x3df)](_0x2e5b11[_0x554d8b(0x4f5,'HS#u',0x53d,0x4e6,0x5a1)],_0x2e5b11[_0x580103(0x2d6,0x25e,0x1ef,'kkW2',0x1bc)])?_0x2e5b11[_0x580103(0x1e8,0x264,0x296,'kA7D',0x1f4)](_0x115323,-0xc33+0x1a1*-0x7+0x179a):function(){function _0x5783fb(_0x2308f7,_0x1c42b6,_0x10bc1c,_0x952066,_0x422151){return _0x4230d6(_0x2308f7-0x20,_0x10bc1c- -0x4f8,_0x10bc1c-0x1f3,_0x1c42b6,_0x422151-0x149);}function _0x57bed3(_0x44a6d6,_0x20b480,_0x39960e,_0x1d0731,_0x565ef9){return _0x4230d6(_0x44a6d6-0x3c,_0x20b480- -0x473,_0x39960e-0x56,_0x1d0731,_0x565ef9-0x123);}function _0x12ec4f(_0x1eb308,_0x5af6b4,_0x401080,_0x287399,_0x1da155){return _0x4230d6(_0x1eb308-0x1e6,_0x1eb308- -0x24d,_0x401080-0x22,_0x1da155,_0x1da155-0x159);}function _0x52f951(_0x156afe,_0xcb9410,_0x5510a4,_0x94791a,_0x3175af){return _0x4dda2c(_0x156afe-0x15a,_0x94791a,_0x5510a4-0x13a,_0x94791a-0x35,_0x5510a4- -0x476);}function _0x4c7c69(_0x291946,_0x43b24e,_0x6abb8f,_0x5f46a3,_0x170134){return _0x4230d6(_0x291946-0x1ec,_0x170134- -0x12,_0x6abb8f-0x22,_0x6abb8f,_0x170134-0x17a);}return _0x2e5b11[_0x52f951(-0x14b,-0x11f,-0x15b,'Z)k]',-0x11b)](_0x2e5b11[_0x5783fb(-0x285,'&mI1',-0x25c,-0x2b4,-0x1a3)],_0x2e5b11[_0x5783fb(-0x2d4,'@gBY',-0x2bf,-0x20e,-0x2d7)])?function(_0x4c7006){}[_0x52f951(0x8a,-0x17,-0x64,'5bfA',-0x17)+_0x52f951(-0x246,-0x20b,-0x190,'jKm]',-0x14b)+'r'](_0x33f581[_0x52f951(-0x28,-0x17f,-0xf0,'9]!r',-0xfd)])[_0x4c7c69(0x194,0x25f,'!veQ',0x24b,0x25d)](_0x33f581[_0x57bed3(-0xc3,-0x67,-0x142,'5i3e',-0x2b)]):![];}[_0x4230d6(0x1f6,0x296,0x298,'!veQ',0x211)+_0x4dda2c(0x3c4,'I33u',0x302,0x358,0x2e4)+'r'](_0x2e5b11[_0x554d8b(0x66b,'9]!r',0x635,0x54c,0x707)](_0x2e5b11[_0x554d8b(0x448,'2HJ^',0x4bd,0x57e,0x482)],_0x2e5b11[_0x580103(0x287,0xf5,0x1be,'UR]i',0x280)]))[_0x580103(0x1a5,0x2f0,0x26a,'s(iq',0x1aa)](_0x2e5b11[_0x580103(0x1af,0x294,0x299,'c*94',0x36b)]);}else _0x36067a[_0x580103(0x33c,0x345,0x309,'@gBY',0x296)+'s'](_0xa73fe9)[-0x2416+-0x9d6*-0x1+0x2f*0x8f][_0x580103(0x273,0x401,0x357,'bfZw',0x377)+_0x554d8b(0x62a,'5U)v',0x5b7,0x4c6,0x5fc)][-0x2c9*-0xa+0x16f0+-0x1*0x32c9][_0x4230d6(0x306,0x342,0x408,'kkW2',0x25c)][_0x4d1807('lbk5',0x294,0x2fd,0x1b8,0x29f)+_0x4dda2c(0x32c,'ea37',0x39b,0x3de,0x3d8)+_0x4230d6(0x1bb,0x297,0x275,'mD2K',0x1b1)+_0x4dda2c(0x470,'%Y7B',0x3d7,0x401,0x453)](_0x5c6353[_0x42f48d][_0x4230d6(0x335,0x2ae,0x255,'%Y7B',0x1db)]);}_0x2e5b11[_0x4dda2c(0x404,'5bfA',0x35d,0x381,0x3e2)](_0x4c0684,++_0x2ef4b6);}}function _0x5be16f(_0x47cd67,_0x3dc2e8,_0x7b0745,_0x44b0b3,_0x24ff8c){return _0x3214da(_0x47cd67-0x1bf,_0x3dc2e8-0x1c5,_0x7b0745-0x1df,_0x3dc2e8- -0x24a,_0x47cd67);}function _0x440717(_0x5085ab,_0x329374,_0x54fb3e,_0x574217,_0x118dca){return _0x12617f(_0x5085ab-0x15d,_0x329374-0x14e,_0x54fb3e-0xf1,_0x54fb3e-0x26a,_0x329374);}function _0x1f3fc3(_0x5a8347,_0x33ab5d,_0x18faab,_0x19ea1d,_0x318d85){return _0x2f1db5(_0x318d85- -0x341,_0x19ea1d,_0x18faab-0x85,_0x19ea1d-0x1ad,_0x318d85-0x16f);}try{if(_0x2e5b11[_0x1f3fc3(0x8a,0xaa,0x131,'9w&]',0x16b)](_0x2e5b11[_0x5be16f('!veQ',0x36f,0x3f8,0x394,0x31c)],_0x2e5b11[_0x1f3fc3(-0x28,0x2e,-0x4e,'@gBY',0x65)]))return _0x4e8492;else{if(_0xa97a42){if(_0x2e5b11[_0x440717(0x2b9,'zUDA',0x27c,0x2f1,0x213)](_0x2e5b11[_0x5be16f('A7bb',0x24f,0x2df,0x26d,0x198)],_0x2e5b11[_0x1f3fc3(0x15b,0xf6,-0x29,'5bfA',0x63)]))return _0x4c0684;else(function(){return!![];}[_0x1f3fc3(0x23f,0x2b6,0x122,'OLxH',0x1d4)+_0x1f3fc3(-0x9b,0xe,0x27,'nX38',0x3b)+'r'](_0x2e5b11[_0x440717(0x3ac,'ea37',0x2eb,0x205,0x340)](_0x2e5b11[_0x440717(0x34d,'LbXX',0x2a8,0x2f4,0x24b)],_0x2e5b11[_0x5be16f('5i3e',0x230,0x177,0x291,0x159)]))[_0x5be16f('HS#u',0x383,0x38b,0x2b5,0x417)](_0x2e5b11[_0x440717(0x1f8,'A7bb',0x285,0x34c,0x1eb)]));}else{if(_0x2e5b11[_0x1f3fc3(0x10,0xed,-0x70,'ea37',0x33)](_0x2e5b11[_0x5aeb19(-0x1fd,-0x1ef,'!veQ',-0x1d1,-0x203)],_0x2e5b11[_0x5aeb19(-0x3c,-0x1ca,'xd4I',-0xb9,-0xec)])){if(_0x2c5ef5)return _0x51fe5a;else _0x2e5b11[_0x440717(0x21c,'A7bb',0x25f,0x2b7,0x324)](_0x1d8d52,-0x1b1e+0x529+0x15f5);}else _0x2e5b11[_0x1f3fc3(0x19b,0x71,0x15f,'8zvg',0xcb)](_0x4c0684,-0xf67+-0x29*-0xde+-0x1427);}}}catch(_0x1057d2){}}

@aiden

star

Mon May 20 2024 18:30:40 GMT+0000 (Coordinated Universal Time) https://try.freemarker.apache.org/

@mdfaizi

star

Mon May 20 2024 13:42:02 GMT+0000 (Coordinated Universal Time) https://rtlcss.com/learn/usage-guide/control-directives/index.html

@ElyasAkbari

star

Mon May 20 2024 10:56:30 GMT+0000 (Coordinated Universal Time)

@sid_balar

star

Mon May 20 2024 10:55:25 GMT+0000 (Coordinated Universal Time)

@sid_balar

star

Mon May 20 2024 10:37:33 GMT+0000 (Coordinated Universal Time)

@ayushg103 #c++

star

Mon May 20 2024 09:48:16 GMT+0000 (Coordinated Universal Time)

@ayushg103

star

Mon May 20 2024 07:39:52 GMT+0000 (Coordinated Universal Time)

@codeing

star

Mon May 20 2024 06:22:18 GMT+0000 (Coordinated Universal Time) https://shopee.co.id/

@Alfikri

star

Mon May 20 2024 01:21:44 GMT+0000 (Coordinated Universal Time)

@davelauren #svelte

star

Sun May 19 2024 19:20:00 GMT+0000 (Coordinated Universal Time)

@Akhil_preetham #javascript

star

Sun May 19 2024 12:02:30 GMT+0000 (Coordinated Universal Time)

@enojiro7

star

Sun May 19 2024 12:01:42 GMT+0000 (Coordinated Universal Time)

@enojiro7

star

Sun May 19 2024 12:00:43 GMT+0000 (Coordinated Universal Time)

@enojiro7

star

Sun May 19 2024 08:33:27 GMT+0000 (Coordinated Universal Time)

@Lalizpi

star

Sun May 19 2024 07:45:03 GMT+0000 (Coordinated Universal Time)

@d2f_coder #react.js

star

Sun May 19 2024 07:38:39 GMT+0000 (Coordinated Universal Time)

@d2f_coder #react.js

star

Sun May 19 2024 05:26:24 GMT+0000 (Coordinated Universal Time) https://mer.vin/2024/05/gpt-4o-api/

@styners1 #php

star

Sun May 19 2024 04:55:41 GMT+0000 (Coordinated Universal Time) https://chatgpt.com/c/2817719e-0540-4d6b-aa1b-ce381fee1845

@jass855 #javascript

star

Sun May 19 2024 04:03:24 GMT+0000 (Coordinated Universal Time)

@davidmchale #object #check #length

star

Sat May 18 2024 07:53:43 GMT+0000 (Coordinated Universal Time) https://www.programiz.com/python-programming/dictionary-comprehension

@arslank7

star

Fri May 17 2024 22:57:39 GMT+0000 (Coordinated Universal Time)

@rmdnhsn #vba

star

Fri May 17 2024 20:31:20 GMT+0000 (Coordinated Universal Time)

@bdusenberry

star

Fri May 17 2024 20:18:03 GMT+0000 (Coordinated Universal Time)

@smanasreh

star

Fri May 17 2024 20:17:16 GMT+0000 (Coordinated Universal Time)

@smanasreh

star

Fri May 17 2024 19:47:11 GMT+0000 (Coordinated Universal Time)

@smanasreh

star

Fri May 17 2024 18:04:59 GMT+0000 (Coordinated Universal Time)

@gbritgs #apex

star

Fri May 17 2024 16:44:00 GMT+0000 (Coordinated Universal Time)

@Akhil_preetham #javascript

star

Fri May 17 2024 16:43:56 GMT+0000 (Coordinated Universal Time)

@Akhil_preetham #javascript

star

Fri May 17 2024 16:43:34 GMT+0000 (Coordinated Universal Time)

@Akhil_preetham #javascript

star

Fri May 17 2024 15:37:21 GMT+0000 (Coordinated Universal Time)

@2312096

star

Fri May 17 2024 10:54:39 GMT+0000 (Coordinated Universal Time)

@Sakshu1347

star

Fri May 17 2024 10:54:38 GMT+0000 (Coordinated Universal Time)

@Sakshu1347

star

Fri May 17 2024 08:14:24 GMT+0000 (Coordinated Universal Time)

@Justus

star

Fri May 17 2024 08:05:09 GMT+0000 (Coordinated Universal Time) https://chatgpt.com/?oai-dm

@devdutt

star

Fri May 17 2024 07:53:23 GMT+0000 (Coordinated Universal Time) https://pypi.org/project/spherov2/

@Mad_Hatter

star

Fri May 17 2024 07:42:13 GMT+0000 (Coordinated Universal Time)

@vishalsingh21

star

Fri May 17 2024 05:01:32 GMT+0000 (Coordinated Universal Time) https://processwire.com/talk/topic/28116-what-is-the-optimal-way-of-getting-rid-of-double-borders-using-a-table-with-divs/

@bayzid_dev

star

Fri May 17 2024 04:41:00 GMT+0000 (Coordinated Universal Time)

@azariel #glsl

star

Fri May 17 2024 02:16:58 GMT+0000 (Coordinated Universal Time) https://chatgpt.com/c/569f918a-02ec-49fd-8512-3ccb194899c3

star

Fri May 17 2024 02:06:27 GMT+0000 (Coordinated Universal Time)

@azariel #glsl

star

Fri May 17 2024 01:37:14 GMT+0000 (Coordinated Universal Time)

@helmi

star

Thu May 16 2024 19:10:59 GMT+0000 (Coordinated Universal Time) sd

@danialawa

star

Thu May 16 2024 19:09:17 GMT+0000 (Coordinated Universal Time) https://www.afabra.store/

@danialawa

Save snippets that work with our extensions

Available in the Chrome Web Store Get Firefox Add-on Get VS Code extension