Snippets Collections
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>htnml Events </title>
</head>
<body style="background-color: #414141; color: aliceblue;">
    <h2>Amazing image</h2>
    <div >
        <ul id="images">
            <li><img width="200px" id="photoshop" src="https://images.pexels.com/photos/3561339/pexels-photo-3561339.jpeg?auto=compress&cs=tinysrgb&w=1600&lazy=load" alt="photoshop"></li>
            <li><img width="200px" id="japan" src="https://images.pexels.com/photos/3532553/pexels-photo-3532553.jpeg?auto=compress&cs=tinysrgb&w=1600&lazy=load" alt=""></li>
            <li><img width="200px" id="river" src="https://images.pexels.com/photos/3532551/pexels-photo-3532551.jpeg?auto=compress&cs=tinysrgb&w=1600&lazy=load" alt=""></li>
            <li><img width="200px" id="owl" src="https://images.pexels.com/photos/3532552/pexels-photo-3532552.jpeg?auto=compress&cs=tinysrgb&w=1600&lazy=load" alt="" ></li>
            <li><img width="200px" id="prayer" src="https://images.pexels.com/photos/2522671/pexels-photo-2522671.jpeg?auto=compress&cs=tinysrgb&w=1600&lazy=load" alt=""></li>
            <li><a style="color: aliceblue;" href="https://google.com" id="google">Google</a></li>
        </ul>
   </div>
</body>
<script>
    // document.getElementById('owl').onclick = function(){
    //     alert("owl clicked")
    // }

     // attachEvent()
    // jQuery - on

    // type, timestamp, defaultPrevented
    // target, toElement, srcElement, currentTarget,
    // clientX, clientY, screenX, screenY
    // altkey, ctrlkey, shiftkey, keyCode

    // document.getElementById('images').addEventListener('click', function(e){
    //     console.log("clicked inside the ul");
    // }, false)

    // document.getElementById('owl').addEventListener('click', function(e){
    //     console.log("owl clicked");
    //     e.stopPropagation()
    // }, false)
    
    // document.getElementById('google').addEventListener('click',function(e){
    //     e.preventDefault();
    //     e.stopPropagation()
    //     console.log("google clicked");
    // }, false)
   
    
    document.querySelector('#images').addEventListener('click', function(e){
        if (e.target.tagName === 'IMG') { // checks if image clicked than remove only 
           
            let removeIt = e.target.parentNode
            removeIt.remove()
        }
    
        
    })
    
    //removeIt.parentNode.removeChild(removeIt)
</script>
</html>
<!DOCTYPE html>
<html lang="pt-BR">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Alertas com Sessions</title>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <style>
        .notice {
            display: none;
            padding: 10px;
            margin: 10px auto;
            width: 300px;
            border-radius: 5px;
            text-align: center;
        }
        .notice-success {
            background-color: #d4edda;
            color: #155724;
            border: 1px solid #c3e6cb;
        }
        .notice-error {
            background-color: #f8d7da;
            color: #721c24;
            border: 1px solid #f5c6cb;
        }
    </style>
</head>
<body>
    <div id="notice-success" class="notice notice-success">
        <?= $_SESSION['success'] ?? '' ?>
    </div>
    <div id="notice-error" class="notice notice-error">
        <?= $_SESSION['error'] ?? '' ?>
    </div>

    <script>
        $(document).ready(function () {
            <?php if (isset($_SESSION['success'])): ?>
                $('#notice-success').fadeIn();
                setTimeout(function () {
                    $('#notice-success').fadeOut();
                }, 5000);
            <?php unset($_SESSION['success']); endif; ?>

            <?php if (isset($_SESSION['error'])): ?>
                $('#notice-error').fadeIn();
                setTimeout(function () {
                    $('#notice-error').fadeOut();
                }, 5000);
            <?php unset($_SESSION['error']); endif; ?>
        });
    </script>
</body>
</html>
class ContainsExample{
public static void main(String args[]){
String name="what do you know about me";
System.out.println(name.contains("do you know"));
System.out.println(name.contains("about"));
System.out.println(name.contains("hello"));
}}
This is LolSeeks alt account, i cant return my game to this account!
<?php
/**
 * Generate a random string, using a cryptographically secure 
 * pseudorandom number generator (random_int)
 * 
 * For PHP 7, random_int is a PHP core function
 * For PHP 5.x, depends on https://github.com/paragonie/random_compat
 * 
 * @param int $length      How many characters do we want?
 * @param string $keyspace A string of all possible characters
 *                         to select from
 * @return string
 */
function random_str(
    $length,
    $keyspace = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ'
) {
    $str = '';
    $max = mb_strlen($keyspace, '8bit') - 1;
    if ($max < 1) {
        throw new Exception('$keyspace must be at least two characters long');
    }
    for ($i = 0; $i < $length; ++$i) {
        $str .= $keyspace[random_int(0, $max)];
    }
    return $str;
}
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Chai aur code | DOM</title>
</head>
<body style="background-color: #212121; color: #fff;">
    <ul class="language">
        <li>Javascript</li>
    </ul>
</body>
<script>
    function addLanguage(langName){
        const li = document.createElement('li');
        li.innerHTML = `${langName}`
        document.querySelector('.language').appendChild(li)
    }
    addLanguage("python")
    addLanguage("typescript")

    function addOptiLanguage(langName){
        const li = document.createElement('li');
        li.appendChild(document.createTextNode(langName))
        document.querySelector('.language').appendChild(li)
    }
    addOptiLanguage('golang')

    //Edit
    const secondLang = document.querySelector("li:nth-child(2)")
    console.log(secondLang);
    //secondLang.innerHTML = "Mojo"
    const newli = document.createElement('li')
    newli.textContent = "Mojo"
    secondLang.replaceWith(newli)

    //edit
    const firstLang = document.querySelector("li:first-child")
    firstLang.outerHTML = '<li>TypeScript</li>'

    //remove
    const lastLang = document.querySelector('li:last-child')
    lastLang.remove()


</script>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>chai or code </title>
</head>
<body style="background-color: black;">
    



</body>
<script>
    //// creating element by javascript in html 
    const div = document.createElement('div');
    console.log(div);
    div.className = "main" 
    div.id = "hero" // giving id 
    div.setAttribute('title', "generate title") // making value 
    div.style.backgroundColor = "green" // styling 
    div.innerText = "chai or code "
    document.body.appendChild(div)
</script>
</html>
import React, { useState, useEffect } from "react";
import { FaMedal } from "react-icons/fa";
import axios from "axios";
import Apis from "../../APIs";
import { useAuth } from "../Auth/AuthContext";
import { useNavigate } from "react-router-dom";
import { toast } from "react-toastify";
import ToastWrapper from "../../../ToastWrapper";
import "react-toastify/dist/ReactToastify.css";

const See360Assessment = () => {
  const { user, setUser } = useAuth();
  const navigate = useNavigate();
  const [questions, setQuestions] = useState([]);
  const [answers, setAnswers] = useState([]);
  const [currentQuestionIndex, setCurrentQuestionIndex] = useState(0);
  const [result, setResult] = useState(false);
  const [loading, setLoading] = useState(true);
  const [error, setError] = useState(null);
  const [assessmentId, setAssessmentId] = useState(null);
  const [redirectPage, setRedirectPage] = useState(null);

  useEffect(() => {
    const fetchQuestions = async () => {
      try {
        const response = await axios.get(Apis.See360_QUESTION_API);
        const fetchedQuestions = response.data;

        const savedProgress = JSON.parse(localStorage.getItem("assessmentProgress")) || {};
        const { savedAnswers = [], savedQuestionIndex = 0 } = savedProgress;

        setQuestions(fetchedQuestions);
        setAnswers(savedAnswers.length ? savedAnswers : fetchedQuestions.map(() => null));
        setCurrentQuestionIndex(savedQuestionIndex);
        setLoading(false);
      } catch (err) {
        console.error("Error fetching questions:", err);
        setError("Failed to load questions. Please try again later.");
        setLoading(false);
      }
    };

    fetchQuestions();
  }, []);

  const saveProgress = (newAnswers, newQuestionIndex) => {
    const progress = {
      savedAnswers: newAnswers,
      savedQuestionIndex: newQuestionIndex,
    };
    localStorage.setItem("assessmentProgress", JSON.stringify(progress));
  };

  const handleOptionSelect = (oIndex) => {
    const qIndex = currentQuestionIndex;
    const optionId = questions[qIndex].options[oIndex]._id;
    const newAnswers = [...answers];
    newAnswers[qIndex] = optionId;
    setAnswers(newAnswers);
    saveProgress(newAnswers, qIndex);
  };

  const handleNextQuestion = () => {
    if (!answers[currentQuestionIndex]) {
      toast.error("Please select an option before moving to the next question.");
      return;
    }

    const nextIndex = currentQuestionIndex + 1;
    if (nextIndex < questions.length) {
      setCurrentQuestionIndex(nextIndex);
      saveProgress(answers, nextIndex);
    } else {
      handleSubmit();
    }
  };

  const handleSubmit = async () => {
    setLoading(true);

    const formattedResponses = questions.map((question, qIndex) => ({
      questionId: question._id,
      answered: {
        optionId: answers[qIndex],
      },
    }));

    const payload = {
      userId: user._id,
      responses: formattedResponses,
    };

    try {
      const response = await axios.post(Apis.See360_ASSESSMENT_API, payload);
      const recordId = response.data._id;
      setAssessmentId(recordId);

      let calculatedRedirectPage = "/Pdf";
      setRedirectPage(calculatedRedirectPage);

      if (user.feedbackStatus === "newUser") {
        const updatedUserData = { feedbackStatus: "feedbackPending" };
        await axios.put(`${Apis.See360_USER_API}/${user._id}`, updatedUserData);
      }

      const pdfName = calculatedRedirectPage.replace("/", "");
      const updatedPdfAccess = [...user.pdfAccess, pdfName];
      setUser({ ...user, pdfAccess: updatedPdfAccess });
      await axios.put(
        `${Apis.See360_USER_API}/${user._id}`,
        { pdfAccess: updatedPdfAccess },
        {
          headers: {
            Authorization: `Bearer ${localStorage.getItem("token")}`,
          },
        }
      );

      localStorage.removeItem("assessmentProgress");
    } catch (error) {
      console.error("Error during assessment submission process:", error);
      toast.error("An error occurred while submitting the assessment. Please try again.");
    } finally {
      setResult(true);
      setLoading(false);
    }
  };

  const handleOkClick = async () => {
    const getUser = await axios.get(`${Apis.See360_USER_API}/${user._id}`, {
      headers: {
        Authorization: `Bearer ${localStorage.getItem("token")}`,
      },
    });
    const latestUserData = getUser.data;

    setUser(latestUserData);
    if (redirectPage) {
      navigate(redirectPage, { state: { assessmentId } });
    } else {
      toast.error("PDF page could not be determined.");
    }
  };

  if (loading) {
    return (
      <div className="min-h-screen w-full flex items-center justify-center bg-primary-gradient">
        <l-infinity
          size="200"
          stroke="4"
          stroke-length="0.15"
          bg-opacity="0.1"
          speed="1.3"
          color="white"
        ></l-infinity>
      </div>
    );
  }

  if (error) {
    return (
      <section className="min-h-screen w-full bg-primary-gradient flex items-center justify-center">
        <div className="text-white text-2xl">{error}</div>
      </section>
    );
  }

  return (
    <>
      <section className="min-h-screen w-full bg-primary-gradient flex flex-col items-center justify-center p-5">
        {result ? (
          <div className="min-h-[400px] w-80 md:w-[400px] rounded-lg bg-secondary p-5 flex items-center justify-center flex-col gap-5">
            <h2 className="text-3xl text-center">
              Thank you for giving the assessment
            </h2>
            <h2 className="text-3xl text-center">To See Your Result Click Ok</h2>
            <FaMedal className="text-4xl text-yellow-400" />
            <button
              onClick={handleOkClick}
              className="h-10 w-full rounded-lg bg-green-500 text-white hover:bg-green-700"
            >
              Ok
            </button>
          </div>
        ) : (
          <>
            <div className="w-screen max-w-[90%] md:max-w-[900px] rounded-lg bg-secondary p-5">
              <h2 className="font-bold text-xl flex items-center justify-center">
                SEE 360 Biz Scan Assessment
              </h2>
            </div>
            <div className="w-screen max-w-[90%] md:max-w-[900px] mt-5 rounded-lg bg-secondary p-5">
              <div className="text-lg text-black font-bold mb-3 flex items-center justify-center">
                {currentQuestionIndex + 1} / {questions.length}
              </div>
              <h3 className="font-semibold text-lg mb-3">
                {currentQuestionIndex + 1}. {questions[currentQuestionIndex].mainQuestion}
              </h3>
              <div className="flex flex-col gap-3">
                {questions[currentQuestionIndex].options.map((option, oIndex) => (
                  <div
                    key={option._id}
                    className={`cursor-pointer p-3 border rounded-lg ${
                      answers[currentQuestionIndex] === option._id
                        ? "bg-green-500 text-white"
                        : "hover:bg-gray-100"
                    }`}
                    onClick={() => handleOptionSelect(oIndex)}
                  >
                    {option.option}
                  </div>
                ))}
              </div>
              <div className="mt-5 flex justify-end">
                <button
                  onClick={handleNextQuestion}
                  className="h-10 w-32 rounded-lg bg-green-500 text-white hover:bg-green-700"
                >
                  Next
                </button>
              </div>
            </div>
          </>
        )}
      </section>
      <ToastWrapper />
    </>
  );
};

export default See360Assessment;
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body style= "background-color: black ; color: aliceblue;">
    <div class = "parent">
        <div class = 'day'>MONDY</div>
        <div class = 'day'>TUESDY</div>
        <div class = 'day'>WEDNESDY</div>
        <div class = 'day'>THURSDY</div>
        <div class = 'day'>FRIDY</div>
    </div>
</body>
<script>
    ///// catching children from parents ////////////
    const parent = document.querySelector('.parent')
    console.log(parent);  
    /*<div class = "parent">
        <div class = 'day'>MONDY</div>
        <div class = 'day'>TUESDY</div>
        <div class = 'day'>WEDNESDY</div>
        <div class = 'day'>THURSDY</div>
        <div class = 'day'>FRIDY</div>
    </div>*/
    console.log(parent.children); // html collection as output 
    console.log(parent.children[1]); //TUESDAY AS A OUTPUT 
     
     for (let i = 0; i < parent.children.length; i++) {
       console.log(parent.children[i].innerHTML);
       /* MONDAY , TUESDAY , WEDNESDAY , THURSDAY , FRIIDAY */  
    }
    parent.children[1].style.color="orange"; // TUESDAY COBNVERTED TO YELLOW
    console.log(parent.firstElementchild);
    console.log(parent.lastElementchild);


    ///// catching  parent from children ////////////
    const dayone = document.querySelector('.day');
    console.log(dayOne);
    console.log(dayOne.parentElement);
    console.log(dayOne.parentElemenSibling);
    
</script>
</html> 
$ curl -OL https://github.com/pytube/pytube/tarball/master
# optionally, zipball is also available (for Windows users).
The main purpose of creating a hotel reservation system is to streamline and optimize hotel operations more efficiently, improve the guest experience, and increase overall profits from their business. Here we listed out the breakdown key points in an easily understandable way

Centralized operations
◦ Reservation Management: From this category, you'll get complete reservation management that effectively manages your platform for your users, handling bookings, cancellations, and modifications efficiently.
◦ Front Desk Operations: Streamline check-in/check-out, room assignments, and guest registration.
◦ Housekeeping Management: Track room status, assign cleaning tasks, and coordinate maintenance.

Enhanced Guest Experience:

◦ Personalized Service: Gather guest preferences and tailor services accordingly.
◦ Improved Communication: Facilitate communication with guests through various channels.
◦ Loyalty Programs: Manage loyalty programs and reward repeat guests.

Increased Efficiency:

◦ Automation: Automate repetitive tasks, freeing up staff for other duties.
◦ Reduced Errors: Minimize human error in data entry and other tasks.
◦ Improved Communication: Facilitate better communication between departments.

If you have any plans to uplift your business in all aspects, then you choose the best hotel booking engine script to effectively manage your hotel business.


The `@track` decorator in Lightning Web Components (LWC) is used to make a property reactive, meaning that changes to the property will cause the component to re-render. However, `@track` is used for internal state management within the component itself and is not intended for exposing properties to parent or other components.

Here’s a comparison:

- `@api`: Used to expose properties and methods to parent components. It makes the property or method public.
- `@track`: Used to make properties reactive within the component. It is used for internal state management.

Example using `@track`:

```javascript
import { LightningElement, track } from 'lwc';

export default class MyComponent extends LightningElement {
    @track internalState = {}; // This property is reactive within the component

    handleChange(event) {
        this.internalState.value = event.target.value;
    }
}
```

In this example, `internalState` is a reactive property that will cause the component to re-render when its value changes, but it is not exposed to parent components.

Use `@api` when you need to expose properties or methods to parent components, and use `@track` for managing internal state that should trigger re-renders when changed.










import { LightningElement, track } from 'lwc';

export default class MyComponent extends LightningElement {
    @track internalState = {}; // This property is reactive within the component

    handleChange(event) {
        this.internalState.value = event.target.value;
    }
}
const turnOverDataList =[
    {
      "turnover_data": [
        {
          "debit_amt": 3089315000,
          "credit_amt": 1663958000
        }
      ]
    },
    {
      "turnover_data": [
        {
          "debit_amt": 215278167000,
          "credit_amt": 272487858350
        }
      ]
    },
    {
      "turnover_data": [
        {
          "debit_amt": 30414730000,
          "credit_amt": 39515585500
        }
      ]
    }
  ]


let { debitAmount, creditAmount } = turnOverDataList.reduce((acc, x) => {
                acc.debitAmount += x.turnover_data[0].debit_amt;
                acc.creditAmount += x.turnover_data[0].credit_amt;
                return acc;
            }, { debitAmount: 0, creditAmount: 0 });

 debitAmount = debitAmount > 0 ? debitAmount : 1;

     const   previousRTP = creditAmount / debitAmount * 100;

console.log(previousRTP)
add_filter( 'pcp_hr_grid_first_item_content_limit', function($limit, $shortcode_id ){
	if ( 3842 == $shortcode_id ){ // Update 2923 with your shortcode id
		$limit = 99;
	}
	return $limit;
}, 10, 2);
{!$CustomMetadata.APINameoftheCMDT__mdt.APINameoftheSpecificCMDT.APINameoftheField}

Example:
{!$CustomMetadata.Generic_Configuration__mdt.Cancelled_Event_Owner.Value__c}
add_action('wpcf7_mail_sent', 'save_cf7_form_data');

function save_cf7_form_data($contact_form) {
    global $wpdb;

    $form_id = $contact_form->id();
    $submission = WPCF7_Submission::get_instance();
    if ($submission) {
        $form_data = $submission->get_posted_data();
        $table_name = 'wpyy_cf7_submissions'; // Use your custom table name directly

        $wpdb->insert(
            $table_name,
            [
                'form_id' => $form_id,
                'form_data' => maybe_serialize($form_data),
            ],
            [
                '%d',
                '%s'
            ]
        );
    }
}


add_action('wpcf7_mail_sent', 'add_submission_to_layout');


function add_submission_to_layout($contact_form) {
    global $wpdb;

    // Get form data
    $submission = WPCF7_Submission::get_instance();
    if ($submission) {
        $data = $submission->get_posted_data();

        // Define variables for all fields
        $name = isset($data['Full-name']) ? $data['Full-name'] : 'Unknown';
        $sport = isset($data['Sport']) ? $data['Sport'] : 'Unknown';
        $email_address = isset($data['Email-address']) ? $data['Email-address'] : 'Unknown';
        $phone_Number = isset($data['Phone-Number']) ? $data['Phone-Number'] : 'Unknown';
        $nick_name = isset($data['Nick-name']) ? $data['Nick-name'] : 'Unknown';
        $player_number = isset($data['Player-Number']) ? $data['Player-Number'] : 'Unknown';
        $graduation_year = isset($data['Graduation-year']) ? $data['Graduation-year'] : 'Unknown';
        $team_club = isset($data['Team-club']) ? $data['Team-club'] : 'Unknown';
        $years_playing = isset($data['Years-playing']) ? $data['Years-playing'] : 'Unknown';
        $stats = isset($data['Stats']) ? $data['Stats'] : 'Unknown';
        $positions = isset($data['Positions']) ? $data['Positions'] : 'Unknown';
        $awards_achievements = isset($data['Awards-Achievements']) ? $data['Awards-Achievements'] : 'Unknown';
        $tiktok_link = isset($data['Tiktok-link']) ? $data['Tiktok-link'] : 'Unknown';
        $instagram_link = isset($data['Instagram-link']) ? $data['Instagram-link'] : 'Unknown';  
        $twitter_link = isset($data['Twitter-link']) ? $data['Twitter-link'] : 'Unknown';
        $imlca_link = isset($data['IMLCA-link']) ? $data['IMLCA-link'] : 'Unknown';
        $youtube_link = isset($data['YouTube-link']) ? $data['YouTube-link'] : 'Unknown';
        $file_id = isset($data['file-upload']) ? $data['file-upload'] : '';
        $dominant_hand = isset($data['hand-dominance']) ? $data['hand-dominance'] : 'Unknown'; 
        if (isset($_POST['hand-dominance'])) {
        $dominant_hand = sanitize_text_field($_POST['hand-dominance']); // Sanitize the input
        }
        $file_url = 'https://sportmeid.com/wp-content/uploads/2024/12/player-profile.webp'; 
        if (!empty($_FILES['file-upload']['name'])) {
            $file = $_FILES['file-upload'];
            $upload_dir = wp_upload_dir();
            $file_path = $upload_dir['path'] . '/' . basename($file['name']);
            move_uploaded_file($file['tmp_name'], $file_path);

            $attachment = array(
                'guid' => $upload_dir['url'] . '/' . basename($file['name']),
                'post_mime_type' => mime_content_type($file_path),
                'post_title' => preg_replace('/\.[^.]+$/', '', basename($file['name'])),
                'post_content' => '',
                'post_status' => 'inherit'
            );

            $attachment_id = wp_insert_attachment($attachment, $file_path);
            require_once(ABSPATH . 'wp-admin/includes/image.php');
            $attachment_metadata = wp_generate_attachment_metadata($attachment_id, $file_path);
            wp_update_attachment_metadata($attachment_id, $attachment_metadata);

            $file_url = wp_get_attachment_url($attachment_id);
        }

        $player_id = uniqid();

        $new_entry = '<a href="' . site_url('/player-detail?id=' . $player_id) . '" >';
        $new_entry .= '<div class="player-card" data-name="' . esc_attr($name) . '" data-sport="' . esc_attr($sport) . '">';
        $new_entry .= '<div class="player-image">';
        $new_entry .= '<img src="' . esc_url($file_url) . '" alt="' . esc_attr($name) . '" class="player-image">';
        $new_entry .= '</div>'; 
        $new_entry .= '<div class="player-card-name">';
        $new_entry .= '<p>Name: ' . esc_html($name) . '</p>';
        $new_entry .= '<p>Sport: ' . esc_html($sport) . '</p>';
        $new_entry .= '<div class="player-image-button">';
        $new_entry .= '</div>';
        $new_entry .= '</div>';
        $new_entry .= '</div>';
        $new_entry .= '</a>';

        $existing_data = get_option('players_data', []);
        $existing_data[$player_id] = array(
            'name' => $name,
            'sport' => $sport,
            'email_address' => $email_address,
            'phone_Number' => $phone_Number,
            'nick_name' => $nick_name,
            'player_number' => $player_number,
            'graduation_year' => $graduation_year,
            'team_club' => $team_club,
            'years_playing' => $years_playing,
            'positions' => $positions,
            'dominant_hand' => $dominant_hand,
            'stats' => $stats,
            'awards_achievements' => $awards_achievements,
            'tiktok_link' => $tiktok_link,
            'instagram_link' => $instagram_link,
            'twitter_link' => $twitter_link,
            'youtube_link' =>  $youtube_link,
            'imlca_link' =>   $imlca_link,
            'file_url' => $file_url
        );

        update_option('players_data', $existing_data);

        $existing_layout = get_option('players_layout', []);
        $existing_layout[] = $new_entry;
        update_option('players_layout', $existing_layout);
    }
}


function render_players_layout() {
    $layout = get_option('players_layout', []);

    if (!empty($layout)) {
        $output = '<div class="players-pof-col">';
        $counter = 0;

        foreach ($layout as $entry) {
            $output .= $entry;

            $counter++;
            if ($counter % -1 === 0) {
                $output .= '</div><div class="players-pof-col">';
            }
        }

        $output .= '</div>';
        echo $output;
    } else {
        echo '<p>No players data found.</p>';
    }
}
function delete_form_submission() {
    if (isset($_GET['delete_submission']) && isset($_GET['entry_id'])) {
        $submission_id = intval($_GET['entry_id']);
        if (is_user_logged_in() && user_can(current_user(), 'delete_posts')) {
            global $wpdb;

            $wpdb->delete($wpdb->prefix . 'flamingo_inbound_messages', array('id' => $submission_id));
        }
    }
}
add_action('wp', 'delete_form_submission');



add_shortcode('players_layout', 'render_players_layout');


add_action('template_redirect', 'handle_player_detail_page');

function handle_player_detail_page() {
    if (isset($_GET['id']) && is_page('player-detail')) {
        $player_id = sanitize_text_field($_GET['id']);
        $players_data = get_option('players_data', []);

        if (isset($players_data[$player_id])) {
            $player = $players_data[$player_id];

            // Display player detail page
            include get_template_directory() . '/player-detail-template.php';
            exit; // Prevent further processing
        } else {
            wp_die('Player not found.');
        }
    }
}


add_filter('wpcf7_form_tag', 'set_default_dropdown_value', 10, 2);

function set_default_dropdown_value($tag, $unused) {
    if ($tag['name'] === 'hand-dominance') {
        $submitted_value = isset($_POST['hand-dominance']) ? $_POST['hand-dominance'] : '';
        foreach ($tag['raw_values'] as &$value) {
            if ($value === $submitted_value) {
                $value = $value . ' default:1';
            }
        }
    }
    return $tag;
}


function sports_textarea_field() {
    ob_start();
    ?>
    <div id="sports-wrapper" class="text-fild">
        <textarea id="sports-textarea" name="Sport" class="auto-height" placeholder="Sports will be shown here..." readonly></textarea>
        <div id="sports-input-wrapper" class="add-text-input" style="display: none;">
            <input type="text" id="sports-input" placeholder="Enter sport here..." />
        </div>
        <p id="sports-warning-message" style="color: blue; display: none; margin-top: 10px;"></p> <!-- Warning message -->
        <div class="add-buttons">
            <button type="button" id="sports-add-save-button">Add</button>
            <button type="button" id="sports-delete-last-button" style="display: none;">Delete Last</button>
        </div>
    </div>
    <script>
        document.addEventListener('DOMContentLoaded', function () {
            const textarea = document.getElementById('sports-textarea');
            const addSaveButton = document.getElementById('sports-add-save-button');
            const deleteButton = document.getElementById('sports-delete-last-button');
            const inputWrapper = document.getElementById('sports-input-wrapper');
            const sportsInput = document.getElementById('sports-input');
            const warningMessage = document.getElementById('sports-warning-message');
            let sportsCounter = 1; 

            function toggleDeleteButton() {
                if (textarea.value.trim() === '') {
                    deleteButton.style.display = 'none';
                } else {
                    deleteButton.style.display = 'block';
                }
            }

            function showWarning(message) {
                warningMessage.textContent = message;
                warningMessage.style.display = 'block';
            }

            function hideWarning() {
                warningMessage.textContent = '';
                warningMessage.style.display = 'none';
            }

            function autoGrowTextarea() {
                textarea.style.height = 'auto'; 
                textarea.style.height = textarea.scrollHeight + 'px'; // Corrected height adjustment
            }

            addSaveButton.addEventListener('click', function () {
                hideWarning(); 
                if (addSaveButton.textContent === 'Add') {
                    inputWrapper.style.display = 'block';
                    sportsInput.focus();
                    addSaveButton.textContent = 'Save';
                } else if (addSaveButton.textContent === 'Save') {
                    const newSport = sportsInput.value.trim();
                    if (newSport) {
                        const currentValue = textarea.value;
                        const newSportText = `Sport ${sportsCounter}: ${newSport}`;
                        textarea.value = currentValue
                            ? currentValue + '\n' + newSportText
                            : newSportText;
                        sportsInput.value = ''; 
                        sportsCounter++; 
                        inputWrapper.style.display = 'none'; 
                        addSaveButton.textContent = 'Add'; 
                        toggleDeleteButton(); 
                        autoGrowTextarea(); // Adjust height after adding new content
                    } else {
                        showWarning("Please enter a sport before saving.");
                    }
                }
            });

            deleteButton.addEventListener('click', function () {
                hideWarning(); 
                const sports = textarea.value.split('\n');
                if (sports.length === 0 || textarea.value.trim() === '') {
                    showWarning("No sports to delete.");
                    return;
                }
                sports.pop(); 
                textarea.value = sports.join('\n'); 
                sportsCounter--; 
                toggleDeleteButton(); 
                autoGrowTextarea(); // Adjust height after deleting content
            });

            textarea.addEventListener('input', autoGrowTextarea); // Adjust height on user input

            toggleDeleteButton();
            autoGrowTextarea(); // Initialize height adjustment
        });
    </script>
    <?php
    return ob_get_clean();
}
add_shortcode('sports_field', 'sports_textarea_field');


function positions_textarea_field() {
    ob_start();
    ?>
    <div id="positions-wrapper" class="text-fild">
        <textarea id="positions-textarea" name="Positions" class="auto-height" placeholder="Positions will be shown here..." readonly></textarea>
        <div id="positions-input-wrapper" class="add-text-input" style="display: none;">
            <input type="text" id="positions-input" placeholder="Enter position here..." />
        </div>
        <p id="positions-warning-message" style="color: red; display: none; margin-top: 10px;"></p> <!-- Warning message -->
        <div class="add-buttons">
            <button type="button" id="positions-add-save-button">Add</button>
            <button type="button" id="positions-delete-last-button" style="display: none;">Delete Last</button>
        </div>
    </div>
    <script>
        document.addEventListener('DOMContentLoaded', function () {
            const textarea = document.getElementById('positions-textarea');
            const addSaveButton = document.getElementById('positions-add-save-button');
            const deleteButton = document.getElementById('positions-delete-last-button');
            const inputWrapper = document.getElementById('positions-input-wrapper');
            const positionInput = document.getElementById('positions-input');
            const warningMessage = document.getElementById('positions-warning-message');
            let positionCounter = 1; 

            function toggleDeleteButton() {
                if (textarea.value.trim() === '') {
                    deleteButton.style.display = 'none';
                } else {
                    deleteButton.style.display = 'block';
                }
            }

            function showWarning(message) {
                warningMessage.textContent = message;
                warningMessage.style.display = 'block';
            }

            function hideWarning() {
                warningMessage.textContent = '';
                warningMessage.style.display = 'none';
            }

            function autoGrowTextarea() {
                textarea.style.height = 'auto'; // Reset height to calculate new scrollHeight
                textarea.style.height = textarea.scrollHeight + 'px';
            }

            addSaveButton.addEventListener('click', function () {
                hideWarning(); 
                if (addSaveButton.textContent === 'Add') {
                    inputWrapper.style.display = 'block';
                    positionInput.focus();
                    addSaveButton.textContent = 'Save';
                } else if (addSaveButton.textContent === 'Save') {
                    const newPosition = positionInput.value.trim();
                    if (newPosition) {
                        const currentValue = textarea.value;
                        const newPositionText = `Position ${positionCounter}: ${newPosition}`;
                        textarea.value = currentValue
                            ? currentValue + '\n' + newPositionText
                            : newPositionText;
                        positionInput.value = ''; 
                        positionCounter++; 
                        inputWrapper.style.display = 'none'; 
                        addSaveButton.textContent = 'Add'; 
                        toggleDeleteButton(); 
                        autoGrowTextarea(); // Adjust height after adding new content
                    } else {
                        showWarning("Please enter a position before saving.");
                    }
                }
            });

            deleteButton.addEventListener('click', function () {
                hideWarning(); 
                const positions = textarea.value.split('\n');
                if (positions.length === 0 || textarea.value.trim() === '') {
                    showWarning("No positions to delete.");
                    return;
                }
                positions.pop(); 
                textarea.value = positions.join('\n'); 
                positionCounter--; 
                toggleDeleteButton(); 
                autoGrowTextarea(); // Adjust height after deleting content
            });

            textarea.addEventListener('input', autoGrowTextarea); // Adjust height on user input

            toggleDeleteButton();
            autoGrowTextarea(); // Initialize height adjustment
        });
    </script>
    <?php
    return ob_get_clean();
}
add_shortcode('positions_field', 'positions_textarea_field');

function stats_textarea_field() {
    ob_start();
    ?>
    <div id="stats-wrapper" class="text-fild">
        <textarea id="stats-textarea" name="Stats" placeholder="Stats will be shown here..." readonly></textarea>
        <div id="input-wrapper" class="add-text-input" style="display: none;">
            <input type="text" id="stats-input" placeholder="Enter stats here..." />
        </div>
        <p id="warning-message" style="color: #fff; display: none; margin-top: 10px;"></p> <!-- Warning message -->
        <div class="add-buttons">
            <button type="button" id="add-save-stats">Add</button>
            <button type="button" id="delete-last-stats" style="display: none;">Delete Last</button>
        </div>
    </div>
    <script>
        document.addEventListener('DOMContentLoaded', function () {
            const textarea = document.getElementById('stats-textarea');
            const addSaveButton = document.getElementById('add-save-stats');
            const deleteButton = document.getElementById('delete-last-stats');
            const inputWrapper = document.getElementById('input-wrapper');
            const statsInput = document.getElementById('stats-input');
            const warningMessage = document.getElementById('warning-message');
            let statsCounter = 1; 
            
            function toggleDeleteButton() {
                if (textarea.value.trim() === '') {
                    deleteButton.style.display = 'none';
                } else {
                    deleteButton.style.display = 'block';
                }
            }

            function showWarning(message) {
                warningMessage.textContent = message;
                warningMessage.style.display = 'block';
            }

            function hideWarning() {
                warningMessage.textContent = '';
                warningMessage.style.display = 'none';
            }

            function autoGrowTextarea() {
                textarea.style.height = 'auto'; // Reset height to calculate new scrollHeight
                textarea.style.height = textarea.scrollHeight + 'px';
            }

            addSaveButton.addEventListener('click', function () {
                hideWarning(); 
                if (addSaveButton.textContent === 'Add') {
                    inputWrapper.style.display = 'block';
                    statsInput.focus();
                    addSaveButton.textContent = 'Save';
                } else if (addSaveButton.textContent === 'Save') {
                    const newStats = statsInput.value.trim();
                    if (newStats) {
                        const currentValue = textarea.value;
                        const newStatsText = `Stats ${statsCounter}: ${newStats}`;
                        textarea.value = currentValue
                            ? currentValue + '\n' + newStatsText
                            : newStatsText;
                        statsInput.value = ''; 
                        statsCounter++; 
                        inputWrapper.style.display = 'none'; 
                        addSaveButton.textContent = 'Add'; 
                        toggleDeleteButton(); 
                        autoGrowTextarea(); // Adjust height after adding new content
                    } else {
                        showWarning("Please enter stats before saving.");
                    }
                }
            });

            deleteButton.addEventListener('click', function () {
                hideWarning(); 
                const stats = textarea.value.split('\n');
                if (stats.length === 0 || textarea.value.trim() === '') {
                    showWarning("No stats to delete.");
                    return;
                }
                stats.pop(); 
                textarea.value = stats.join('\n'); 
                statsCounter--; 
                toggleDeleteButton(); 
                autoGrowTextarea(); // Adjust height after deleting content
            });

            textarea.addEventListener('input', autoGrowTextarea); // Adjust height on user input

            toggleDeleteButton();
            autoGrowTextarea(); // Initialize height adjustment
        });
    </script>
    <?php
    return ob_get_clean();
}
add_shortcode('stats_field', 'stats_textarea_field');

function team_level_club_affiliation_field() {
    ob_start();
    ?>
    <div id="team-level-wrapper" class="text-fild">
        <textarea id="team-level-textarea" name="Team-club" class="auto-height" placeholder="Team Level & Club Affiliation will be shown here..." readonly></textarea>
        <div id="team-level-input-wrapper" class="add-text-input" style="display: none;">
            <input type="text" id="team-level-input" placeholder="Enter team level or club affiliation here..." />
        </div>
        <p id="team-level-warning-message" style="color: green; display: none; margin-top: 10px;"></p>
        <div class="add-buttons">
            <button type="button" id="team-level-add-save-button">Add</button>
            <button type="button" id="team-level-delete-last-button" style="display: none;">Delete Last</button>
        </div>
    </div>
    <script>
        document.addEventListener('DOMContentLoaded', function () {
            const textarea = document.getElementById('team-level-textarea');
            const addSaveButton = document.getElementById('team-level-add-save-button');
            const deleteButton = document.getElementById('team-level-delete-last-button');
            const inputWrapper = document.getElementById('team-level-input-wrapper');
            const teamLevelInput = document.getElementById('team-level-input');
            const warningMessage = document.getElementById('team-level-warning-message');

            function adjustTextareaHeight() {
                // Adjust the height of the textarea based on its scrollHeight
                textarea.style.height = 'auto'; // Reset height first
                textarea.style.height = textarea.scrollHeight + 'px'; // Set height to scrollHeight
            }

            function toggleDeleteButton() {
                deleteButton.style.display = textarea.value.trim() === '' ? 'none' : 'block';
            }

            function showWarning(message) {
                warningMessage.textContent = message;
                warningMessage.style.display = 'block';
            }

            function hideWarning() {
                warningMessage.style.display = 'none';
            }

            addSaveButton.addEventListener('click', function () {
                hideWarning();
                if (addSaveButton.textContent === 'Add') {
                    inputWrapper.style.display = 'block';
                    teamLevelInput.focus();
                    addSaveButton.textContent = 'Save';
                } else if (addSaveButton.textContent === 'Save') {
                    const newEntry = teamLevelInput.value.trim();
                    if (newEntry) {
                        const currentValue = textarea.value;
                        const newText = newEntry; // Correct string interpolation
                        textarea.value = currentValue ? currentValue + "\n" + newText : newText; // Concatenate new text
                        teamLevelInput.value = '';
                        inputWrapper.style.display = 'none';
                        addSaveButton.textContent = 'Add';
                        toggleDeleteButton();
                        adjustTextareaHeight(); // Adjust height after adding new content
                    } else {
                        showWarning("Please enter a value before saving.");
                    }
                }
            });

            deleteButton.addEventListener('click', function () {
                hideWarning();
                const entries = textarea.value.split('\n');
                if (entries.length === 0 || textarea.value.trim() === '') {
                    showWarning("No entries to delete.");
                    return;
                }
                entries.pop();
                textarea.value = entries.join('\n');
                toggleDeleteButton();
                adjustTextareaHeight(); // Adjust height after deleting content
            });

            // Adjust height on initial page load and when textarea content changes
            adjustTextareaHeight();
            textarea.addEventListener('input', adjustTextareaHeight);

            toggleDeleteButton();
        });
    </script>
    <?php
    return ob_get_clean();
}
add_shortcode('team_level_club_field', 'team_level_club_affiliation_field');

function player_number_field() {
    ob_start();
    ?>
    <div id="player-number-wrapper" class="text-fild">
        <textarea id="player-number-textarea" name="Player-Number" class="auto-height" placeholder="Player Numbers will be shown here..." readonly></textarea>
        <div id="player-number-input-wrapper" class="add-text-input" style="display: none;">
            <input type="text" id="player-number-input" placeholder="Enter player number here..." />
        </div>
        <p id="player-number-warning-message" style="color: blue; display: none; margin-top: 10px;"></p>
        <div class="add-buttons">
            <button type="button" id="player-number-add-save-button">Add</button>
            <button type="button" id="player-number-delete-last-button" style="display: none;">Delete Last</button>
        </div>
    </div>
    <script>
        document.addEventListener('DOMContentLoaded', function () {
            const textarea = document.getElementById('player-number-textarea');
            const addSaveButton = document.getElementById('player-number-add-save-button');
            const deleteButton = document.getElementById('player-number-delete-last-button');
            const inputWrapper = document.getElementById('player-number-input-wrapper');
            const playerNumberInput = document.getElementById('player-number-input');
            const warningMessage = document.getElementById('player-number-warning-message');

            function adjustTextareaHeight() {
                // Adjust the height of the textarea based on its scrollHeight
                textarea.style.height = 'auto'; // Reset height first
                textarea.style.height = textarea.scrollHeight + 'px'; // Set height to scrollHeight
            }

            function toggleDeleteButton() {
                deleteButton.style.display = textarea.value.trim() === '' ? 'none' : 'block';
            }

            function showWarning(message) {
                warningMessage.textContent = message;
                warningMessage.style.display = 'block';
            }

            function hideWarning() {
                warningMessage.style.display = 'none';
            }

            addSaveButton.addEventListener('click', function () {
                hideWarning();
                if (addSaveButton.textContent === 'Add') {
                    inputWrapper.style.display = 'block';
                    playerNumberInput.focus();
                    addSaveButton.textContent = 'Save';
                } else if (addSaveButton.textContent === 'Save') {
                    const newEntry = playerNumberInput.value.trim();
                    if (newEntry) {
                        const currentValue = textarea.value;
                        const newText = newEntry; // Correct string concatenation
                        textarea.value = currentValue ? currentValue + "\n" + newText : newText; // Concatenate new text
                        playerNumberInput.value = '';
                        inputWrapper.style.display = 'none';
                        addSaveButton.textContent = 'Add';
                        toggleDeleteButton();
                        adjustTextareaHeight(); // Adjust height after adding new content
                    } else {
                        showWarning("Please enter a value before saving.");
                    }
                }
            });

            deleteButton.addEventListener('click', function () {
                hideWarning();
                const entries = textarea.value.split('\n');
                if (entries.length === 0 || textarea.value.trim() === '') {
                    showWarning("No entries to delete.");
                    return;
                }
                entries.pop();
                textarea.value = entries.join('\n');
                toggleDeleteButton();
                adjustTextareaHeight(); // Adjust height after deleting content
            });

            // Adjust height on initial page load and when textarea content changes
            adjustTextareaHeight();
            textarea.addEventListener('input', adjustTextareaHeight);

            toggleDeleteButton();
        });
    </script>
    <?php
    return ob_get_clean();
}
add_shortcode('player_number_field', 'player_number_field');

function awards_achievements_field() {
    ob_start();
    ?>
    <div id="awards-achievements-wrapper" class="text-fild">
        <textarea id="awards-achievements-textarea" name="Awards-Achievements" class="auto-height" placeholder="Awards and Achievements will be shown here..." readonly></textarea>
        <div id="awards-achievements-input-wrapper" class="add-text-input" style="display: none;">
            <input type="text" id="awards-achievements-input" placeholder="Enter award or achievement here..." />
        </div>
        <p id="awards-achievements-warning-message" style="color: purple; display: none; margin-top: 10px;"></p>
        <div class="add-buttons">
            <button type="button" id="awards-achievements-add-save-button">Add</button>
            <button type="button" id="awards-achievements-delete-last-button" style="display: none;">Delete Last</button>
        </div>
    </div>
    <script>
        document.addEventListener('DOMContentLoaded', function () {
            const textarea = document.getElementById('awards-achievements-textarea');
            const addSaveButton = document.getElementById('awards-achievements-add-save-button');
            const deleteButton = document.getElementById('awards-achievements-delete-last-button');
            const inputWrapper = document.getElementById('awards-achievements-input-wrapper');
            const awardsAchievementsInput = document.getElementById('awards-achievements-input');
            const warningMessage = document.getElementById('awards-achievements-warning-message');

            function adjustTextareaHeight() {
                // Adjust the height of the textarea based on its scrollHeight
                textarea.style.height = 'auto'; // Reset height first
                textarea.style.height = textarea.scrollHeight + 'px'; // Set height to scrollHeight
            }

            function toggleDeleteButton() {
                deleteButton.style.display = textarea.value.trim() === '' ? 'none' : 'block';
            }

            function showWarning(message) {
                warningMessage.textContent = message;
                warningMessage.style.display = 'block';
            }

            function hideWarning() {
                warningMessage.style.display = 'none';
            }

            addSaveButton.addEventListener('click', function () {
                hideWarning();
                if (addSaveButton.textContent === 'Add') {
                    inputWrapper.style.display = 'block';
                    awardsAchievementsInput.focus();
                    addSaveButton.textContent = 'Save';
                } else if (addSaveButton.textContent === 'Save') {
                    const newEntry = awardsAchievementsInput.value.trim();
                    if (newEntry) {
                        const currentValue = textarea.value;
                        const newText = newEntry;
                        textarea.value = currentValue ? currentValue + "\n" + newText : newText; // Corrected concatenation
                        awardsAchievementsInput.value = '';
                        inputWrapper.style.display = 'none';
                        addSaveButton.textContent = 'Add';
                        toggleDeleteButton();
                        adjustTextareaHeight(); // Adjust height after adding new content
                    } else {
                        showWarning("Please enter a value before saving.");
                    }
                }
            });

            deleteButton.addEventListener('click', function () {
                hideWarning();
                const entries = textarea.value.split('\n');
                if (entries.length === 0 || textarea.value.trim() === '') {
                    showWarning("No entries to delete.");
                    return;
                }
                entries.pop();
                textarea.value = entries.join('\n');
                toggleDeleteButton();
                adjustTextareaHeight(); // Adjust height after deleting content
            });

            // Adjust height on initial page load and when textarea content changes
            adjustTextareaHeight();
            textarea.addEventListener('input', adjustTextareaHeight);

            toggleDeleteButton();
        });
    </script>
    <?php
    return ob_get_clean();
}
add_shortcode('awards_achievements_field', 'awards_achievements_field');


<script>
document.addEventListener('DOMContentLoaded', () => {
    const fileInput = document.querySelector('input[type="file"]');
    if (fileInput) {
        fileInput.addEventListener('change', (e) => {
            let file = e.target.files[0];

            if (file) {
                let split_name = file.name.split('.');
                let randomString = Math.random().toString(36).substring(2, 8);
                let name = `playerprofileimg${randomString}.` + split_name[split_name.length - 1];
                let blob = file.slice(0, file.size, file.type);
                let new_file = new File([blob], name, { type: file.type });
                const data_transfer = new DataTransfer();
                data_transfer.items.add(new_file);
                e.target.files = data_transfer.files;
            }
        });
    } else {
        console.error("No input[type='file'] found in the DOM.");
    }
});


</script>
<?php
if (!defined('ABSPATH')) {
    exit;
}

$player = $players_data[$player_id];

get_header(); ?>


<style>
header#masthead {
  display: none;
}

footer {
  display: none;
}
</style>

<div class="back-button">
    <a href="https://sportmeid.com/view-profile/"><span><img
                src="https://sportmeid.com/wp-content/uploads/2024/12/arrow.svg"></span> Back</a>
</div>
<div class="player-detail">
    <div class="player-main-img">
            <div class="player-wrapper-img">
        <img src="<?php echo esc_url($player['file_url']); ?>" alt="<?php echo esc_attr($player['name']); ?>" />
     </div>
    </div>
    <div class="profile-container">
        <h1>Player Profile</h1>
        <table>
            <tr>
                <td>Full Name:</td>
                <td><?php echo esc_html(strtolower($player['name'])); ?></td>
            </tr>
            <tr>
                <td>Sport:</td>
                <td><?php echo nl2br(esc_html(strtolower($player['sport']))); ?></td>
            </tr>
            <tr>
                <td>Email Address:</td>
                <td><?php echo esc_html(strtolower($player['email_address'])); ?></td>
            </tr>
             <tr>
                <td>Phone Number:</td>
                <td><?php echo esc_html(strtolower($player['phone_Number'])); ?></td>
            </tr>
            <tr>
                <td>Nickname:</td>
                <td><?php echo esc_html(strtolower($player['nick_name'])); ?></td>
            </tr>
            <tr>
                <td>Player Number:</td>
                <td><?php echo nl2br(esc_html(strtolower($player['player_number']))); ?></td>
            </tr>
            <tr>
                <td>Graduation Year:</td>
                <td><?php echo esc_html(strtolower($player['graduation_year'])); ?></td>
            </tr>
            <tr>
                <td>Team Level & Team/Club Affiliation:</td>
                <td><?php echo nl2br(esc_html(strtolower($player['team_club']))); ?></td>
            </tr>
            <tr>
                <td>Years Playing/Experience:</td>
                <td><?php echo esc_html(strtolower($player['years_playing'])); ?></td>
            </tr>
            <tr>
                <td>Dominant Hand:</td>
                <td><?php echo esc_html($player['dominant_hand']); ?></td>
            </tr>
            <tr>
                <td>Stats:</td>
                <td><?php echo nl2br(esc_html(strtolower($player['stats']))); ?></td>
            </tr>
            <tr>
                <td>Positions:</td>
                <td><?php echo nl2br(esc_html(strtolower($player['positions']))); ?></td>
            </tr>
            <tr>
                <td>Sports Awards/Achievements:</td>
                <td><?php echo nl2br(esc_html(strtolower($player['awards_achievements']))); ?></td>
            </tr>
            <tr>
                <td>Social Media Links:</td>
                <td class="social-media">
                    <a href="<?php echo esc_html(strtolower($player['tiktok_link'])); ?>"><img src="https://sportmeid.com/wp-content/uploads/2024/12/tiktok.svg"></a>
                    <a href="<?php echo esc_html(strtolower($player['instagram_link'])); ?>"><img src="https://sportmeid.com/wp-content/uploads/2024/12/instagram.svg"></a>
                    <a href="<?php echo esc_html(strtolower($player['twitter_link'])); ?>"><img src="https://sportmeid.com/wp-content/uploads/2024/12/twitter.svg"></a>
                    <a href="<?php echo esc_html(strtolower($player['youtube_link'])); ?>"><img src="https://sportmeid.com/wp-content/uploads/2024/12/youtube.svg"></a> 
                    <a href="<?php echo esc_html(strtolower($player['imlca_link'])); ?>"><img src="https://sportmeid.mmcgbl.ae/wp-content/uploads/2024/12/imlca-icon.png"></a>   
                </td>
            </tr>
        </table>
    </div>
</div>
<script>
  document.addEventListener("DOMContentLoaded", () => {
    const socialLinks = document.querySelectorAll("td.social-media a");

    socialLinks.forEach(link => {
        if (!link.getAttribute("href").trim()) {
            link.style.display = "none";
        }
    });
});
</script>


function delete_players_layout_data() {
    // Delete the 'players_layout' option from the database
    delete_option('players_layout');
}

function remove_players_shortcode() {
    // Replace 'your_shortcode_name' with the actual shortcode name
    remove_shortcode('your_shortcode_name');
}

add_action('init', 'delete_players_layout_data');
add_action('init', 'remove_players_shortcode');

  
function remove_specific_player_data() {
    // The specific player ID to remove
    $player_id_to_remove = '676c0c99aab75';

    // Retrieve the existing data
    $players_data = get_option('players_data', []);
    $players_layout = get_option('players_layout', []);

    // Remove the player data with the specific ID
    if (isset($players_data[$player_id_to_remove])) {
        unset($players_data[$player_id_to_remove]);
        update_option('players_data', $players_data);
    }

    // Filter the players layout to remove the entry with the specific ID
    if (!empty($players_layout)) {
        $players_layout = array_filter($players_layout, function ($entry) use ($player_id_to_remove) {
            return strpos($entry, $player_id_to_remove) === false;
        });
        update_option('players_layout', $players_layout);
    }
}

// Hook the function to an admin action
add_action('admin_init', 'remove_specific_player_data');
SELECT RIGHT(Email, LEN(Email) - CHARINDEX('@', email)) as emaildomain ,
COUNT(Email) as EmailCount
FROM   [Your data extension]
WHERE  LEN(Email) > 0
GROUP BY RIGHT(Email, LEN(Email) - CHARINDEX('@', email))
SELECT
    "v"."Id" AS "ePOS_Variant_Id",
    "v"."ePOS Variant Name" AS "ePOS_Variant_Name",
    "vv"."CRM Record Id" AS "Verification_Record_Id",
    "vv"."Name" AS "Verification_Name",

    CASE
        WHEN "vv"."CRM Record Id" IS NULL THEN 'Create'
        WHEN "v"."Id" IS NULL THEN 'Delete'
        WHEN "v"."ePOS Variant Name" <> "vv"."Name" THEN 'Update'
    END AS "Action"
FROM  "ePOS Variants" AS "v"
FULL OUTER JOIN "ePOS Variant (Zoho Creator-Trees Verification Process)" AS "vv" 
    ON "v"."Id" = "vv"."CRM Record Id"
WHERE
    "vv"."CRM Record Id" IS NULL
    OR "v"."Id" IS NULL
    OR "v"."ePOS Variant Name" <> "vv"."Name"
Extending Classes
One of the powerful features of classes is they can be extended. You can create a new class based on an existing class, and this new class will not only inherit all the properties and methods of the existing class, but you can add new properties and methods to the new class.

This is useful when you have a class that works for most situations, but there are some cases where you need to add new features. Instead of starting from scratch and creating an entirely new class, you can extend the existing class and add the new features. A classic example of this is making a main class called MotorVehicle with properties and methods that are common to all motor vehicles, then extending this class with more specific classes like Car, Truck, and Motorcycle.

Earlier in the course you worked with the Backpack class which has properties and methods that apply to all backpacks. But there's a snag: In my closet I have a hiking backpack with an extra feature that isn't covered by the Backpack class—a hydration pack. For my dataset to be complete, I need the ability to track the hydration capacity of my pack, for obvious reasons. The bigger the hydration capacity, the heavier the pack can potentially get at the start of a hike.

To solve this problem, let's create a new class called HikingBackpack by extending the Backpack class.

Here's the original Backpack class for reference:

class Backpack {
  constructor(
    // Defines parameters:
    name,
    volume,
    color,
    pocketNum,
    strapLengthL,
    strapLengthR,
    lidOpen
  ) {
    // Define properties:
    this.name = name;
    this.volume = volume;
    this.color = color;
    this.pocketNum = pocketNum;
    this.strapLength = {
      left: strapLengthL,
      right: strapLengthR,
    };
    this.lidOpen = lidOpen;
  }
  // Add methods like normal functions:
  toggleLid(lidStatus) {
    this.lidOpen = lidStatus;
  }
  newStrapLength(lengthLeft, lengthRight) {
    this.strapLength.left = lengthLeft;
    this.strapLength.right = lengthRight;
  }
}
To create a new class from an existing one, use the extends keyword followed by the name of the class you want to extend:

class HikingBackpack extends Backpack {}
Next, define all the properties the class needs in the constructor. This includes both the existing properties from the parent class and any new properties you want to add:

class HikingBackpack extends Backpack {
  constructor(
    name,
    volume,
    color,
    pocketNum,
    strapLengthL,
    strapLengthR,
    lidOpen,
    hydrationCapacity
  ) {
    // Initialize the parent class properties
    super(name, volume, color, pocketNum, strapLengthL, strapLengthR, lidOpen);
    // New property specific to HikingBackpack
    this.hydrationCapacity = hydrationCapacity; // Capacity in liters
  }
}
In the above example, you see hydrationCapacity has been added in the constructor. This is the new property specific to the HikingBackpack class. The super() method is used to call the constructor of the parent class and pass in the properties common to both classes. Finally, the new hydrationCapacity property is added.

The new HikingBackpack class can also be extended with new methods. That's done the same way as before:

// Method to check the hydration level.
  checkHydration() {
    if (this.hydrationCapacity > 0) {
      console.log(`You have ${this.hydrationCapacity} liters of water left.`);
    } else {
      console.log("Time to refill your water!");
    }
  }
You can also override methods from the parent class by defining a new method with the same name, calling in the parent method with the super keyword, and then adding new functionality:

toggleLid(lidStatus) {
    super.toggleLid(lidStatus); // Call the parent method
    if (lidStatus) {
      console.log("Your hiking backpack lid is open. Remember to check to make sure the hydration pack is inserted.");
    } else {
      console.log("Your hiking backpack lid is closed. Remember to check to make sure the hydration pack is inserted.");
    }
  }
Here's the full code for the extended HikingBackpack class:

class HikingBackpack extends Backpack {
  constructor(
    name,
    volume,
    color,
    pocketNum,
    strapLengthL,
    strapLengthR,
    lidOpen,
    hydrationCapacity
  ) {
    // Initialize the parent class properties
    super(name, volume, color, pocketNum, strapLengthL, strapLengthR, lidOpen);
    // New property specific to HikingBackpack
    this.hydrationCapacity = hydrationCapacity; // Capacity in liters
  }

  // Method to check the hydration level and alert if it needs refilling
  checkHydration() {
    if (this.hydrationCapacity > 0) {
      console.log(`You have ${this.hydrationCapacity} liters of water left.`);
    } else {
      console.log("Time to refill your water!");
    }
  }

  // Extend or override methods from the parent class if necessary
  // For example, adding extra functionality when the lid is toggled
  toggleLid(lidStatus) {
    super.toggleLid(lidStatus); // Call the parent method
    if (lidStatus) {
      console.log(
        "Your hiking backpack lid is open. Remember to check to make sure the hydration pack is inserted."
      );
    } else {
      console.log(
        "Your hiking backpack lid is closed. Remember to check to make sure the hydration pack is inserted."
      );
    }
  }
}
SELECT InterventionType.*, InterventionLocation.*, InterventionService.* FROM

(SELECT SURef, 
COALESCE([1],0) AS Phone,
COALESCE([2],0) AS [Assessment/Intervention],
COALESCE([3],0) AS Meeting,
COALESCE([4],0) AS Equipment,
COALESCE([5],0) AS [Admin],
COALESCE([6],0) AS Travel,

SUM(
COALESCE([1],0) + 
COALESCE([2],0) + 
COALESCE([3],0) + 
COALESCE([4],0) + 
COALESCE([5],0) + 
COALESCE([6],0)
) AS TotalInterventions
FROM
(
  SELECT SURef, InterventionType
  FROM [BOCClientIndex - SU Interventions]
 
) src
pivot
(
  COUNT(InterventionType)
  for InterventionType in ([1], [2], [3], [4], [5], [6])
) piv
GROUP BY SURef, 
COALESCE([1],0) ,
COALESCE([2],0) ,
COALESCE([3],0) ,
COALESCE([4],0) ,
COALESCE([5],0) ,
COALESCE([6],0) 
) AS InterventionType

INNER JOIN

(SELECT SURef, 
COALESCE([1],0) AS TeamBase,
COALESCE([2],0) AS [FamilyHomeRes],
COALESCE([3],0) AS Preschool,
COALESCE([4],0) AS School,
COALESCE([5],0) AS [DayService],
COALESCE([6],0) AS RespiteFamilyHomeShare,
COALESCE([7],0) AS [Other],
COALESCE([8],0) AS TeleHealth,


SUM(
COALESCE([1],0) + 
COALESCE([2],0) + 
COALESCE([3],0) + 
COALESCE([4],0) + 
COALESCE([5],0) + 
COALESCE([6],0) +
COALESCE([7],0) + 
COALESCE([8],0) 

) AS TotalInterventions

from 
(
  SELECT SURef, InterventionLocation
  FROM [BOCClientIndex - SU Interventions]
 
) src
pivot
(
  COUNT(InterventionLocation)
  FOR InterventionLocation in ([1], [2], [3], [4], [5], [6], [7], [8])
) piv
GROUP BY SURef, 
COALESCE([1],0) ,
COALESCE([2],0) ,
COALESCE([3],0) ,
COALESCE([4],0) ,
COALESCE([5],0) ,
COALESCE([6],0) ,
COALESCE([7],0) ,
COALESCE([8],0) 
) As InterventionLocation 

ON InterventionType.SURef = InterventionLocation.SURef

INNER JOIN

(
SELECT SURef, 
COALESCE([1],0) AS CommunityNursing,
COALESCE([2],0) AS OccupationalTherapy,
COALESCE([3],0) AS Paediatrics,
COALESCE([4],0) AS Physiotherapy,
COALESCE([5],0) AS Psychology,
COALESCE([6],0) AS PreSchoolLiaison,
COALESCE([7],0) AS SocialWork,
COALESCE([8],0) AS SpeechLanguage,
COALESCE([9],0) AS Psychiatry,
COALESCE([10],0) AS ClinicalNurse,
COALESCE([11],0) AS BehaviourSupport,
COALESCE([12],0) AS CommunityLinkWorker,
COALESCE([13],0) AS Psychotherapy,
COALESCE([14],0) AS AdvancedNursePractitioner,
COALESCE([15],0) AS AssistiveTechnology,

SUM(
COALESCE([1],0) + 
COALESCE([2],0) + 
COALESCE([3],0) + 
COALESCE([4],0) + 
COALESCE([5],0) + 
COALESCE([6],0) +
COALESCE([7],0) + 
COALESCE([8],0) +
COALESCE([9],0) + 
COALESCE([10],0) + 
COALESCE([11],0) + 
COALESCE([12],0) + 
COALESCE([13],0) + 
COALESCE([14],0) +
COALESCE([15],0) 

) AS TotalInterventions

from 
(
  select SURef, [Service]
  from [BOCClientIndex - SU Interventions]
 
) src
pivot
(
  COUNT([Service])
  FOR [Service] in ([1], [2], [3], [4], [5], [6], [7], [8], [9], [10], [11], [12], [13], [14], [15])
) piv
GROUP BY SURef, 
COALESCE([1],0) ,
COALESCE([2],0) ,
COALESCE([3],0) ,
COALESCE([4],0) ,
COALESCE([5],0) ,
COALESCE([6],0) ,
COALESCE([7],0) ,
COALESCE([8],0) ,
COALESCE([9],0) ,
COALESCE([10],0) ,
COALESCE([11],0) ,
COALESCE([12],0) ,
COALESCE([13],0) ,
COALESCE([14],0) ,
COALESCE([15],0) ) AS InterventionService

ON InterventionType.SURef = InterventionService.SURef


ORDER BY InterventionLocation.SURef

<script>
    document.addEventListener("DOMContentLoaded", function () {
  const marqueeElement = document.querySelector(".marquee");
  const text = marqueeElement.textContent; 
  const speed = 200; 
  marqueeElement.textContent = ""; // Clear the text initially
  let index = 0;

  function typeWriter() {
    if (index < text.length) {
      marqueeElement.textContent += text.charAt(index);
      index++;
      setTimeout(typeWriter, speed);
    }
  }

  typeWriter();
});
</script>
1a opção:
if(!parentCaseIds.isEmpty()) {
    for(Id parentCaseId : parentCaseIds) {
        Case objCase = new Case();
        objCase.Id = parentCaseId;
        objCase.Status = 'Concluído';
        casesToUpdate.add(objCase);
    }
}
---------------------------------------
2a opção:
if(!parentCaseIds.isEmpty()) {
    for(Id parentCaseId : parentCaseIds) {
        casesToUpdate.add(new Case(Id=parentCaseId, Status='Concluído'));
    }
}
--------------------------------------- 
jQuery(document).ready(function($) {
    // Function to show the loader
    function showLoader() {
        document.getElementById('page-loader').style.display = 'flex'; // Ensure the loader is shown
    }
  
      // Expose the showLoader function globally
    window.showLoader = showLoader;

    // Function to hide the loader - might be used elsewhere or for initial page load
    function hideLoader() {
        document.getElementById('page-loader').style.display = 'none'; // Ensure the loader is hidden
    }
    // Function to initialize Cloudinary widget and handle upload success
    function setupCloudinaryWidget(editButtonId, urlFieldSelector, submitButtonSelector) {
        var widget = cloudinary.createUploadWidget({
            cloudName: "drt2tlz1j",
            uploadPreset: "giftWidget",
            show_powered_by: false,
            sources: ["local", "image_search", "url"],
            defaultSource: "local",
            googleApiKey: "AIzaSyAhy7PJXH7_3t9qbIiczK5nZHsaUOGEFMM",
            searchBySites: ["all", "unsplash.com", "pexels.com", "vecteezy.com", "forestnation.com/net/"],
            showAdvancedOptions: false,
            cropping: true,
            croppingAspectRatio: 9 / 16,
            croppingShowBackButton: true,
            multiple: false,
            folder: "gs-uploads",
            clientAllowedFormats: ["image/*", "video/*", "mp4", "mov", "webm", "webp", "gif", "jpg", "png", "svg"],
            showCompletedButton: true,
            styles: {
                palette: {
                    window: "#00000099",
                    windowBorder: "#FFFFFF",
                    tabIcon: "#009A42",
                    menuIcons: "#FFFFFF",
                    textDark: "#FFFFFF",
                    textLight: "#FFFFFF",
                    link: "#009A42",
                    action: "#009A42",
                    inactiveTabIcon: "#FFFFFF",
                    error: "#FA9B32",
                    inProgress: "#009A42",
                    complete: "#009A42",
                    sourceBg: "#00000059"
                },
                fonts: {
                    default: null,
                    "'Montserrat', sans-serif": {
                        url: "https://fonts.googleapis.com/css?family=Montserrat:400,700",
                        active: true
                    }
            }
            }
        }, (error, result) => {
            if (!error && result && result.event === "success") {
                console.log('Done! Here is the image info: ', result.info);
                var uploadedUrl = result.info.secure_url;
                
                // Fill the ACF URL field with the uploaded URL
                $(urlFieldSelector).val(uploadedUrl);
							
                // Show the loader before submitting the form
                showLoader();
                
                // Submit the ACF form
                $(submitButtonSelector).click();
            }
        });

        // Attach click event to the edit button to open the widget
        $(editButtonId).on('click', function() {
            widget.open();
        });
    }

    // Setup Cloudinary widget for each edit button, URL field, and submit button
    setupCloudinaryWidget("#slide1edit", "input[name='acf[field_65c630a53001b]']", "button[name='acf[field_65c630e33001f]']");
    setupCloudinaryWidget("#slide2edit", "input[name='acf[field_65c630c93001c]']", "button[name='acf[field_65c6311130020]']");
    setupCloudinaryWidget("#slide3edit", "input[name='acf[field_65c630cf3001d]']", "button[name='acf[field_65c6311930021]']");
    setupCloudinaryWidget("#slide4edit", "input[name='acf[field_65c630d63001e]']", "button[name='acf[field_65c6312330022]']");
});
const cloudinarySettings = {
        cloudName: "drt2tlz1j",
        uploadPreset: "giftWidget",
        show_powered_by: false,
        sources: ["local", "image_search"],
        defaultSource: "local",
        googleApiKey: "AIzaSyAhy7PJXH7_3t9qbIiczK5nZHsaUOGEFMM",
        searchBySites: ["all", "unsplash.com", "pexels.com", "vecteezy.com"],
        showAdvancedOptions: false,
        cropping: true,
        croppingShowBackButton: true,
        multiple: false,
        folder: "gs-uploads",
        clientAllowedFormats: ["webp", "gif", "jpg", "png", "svg"],
        showCompletedButton: true,
        styles: {
            palette: {
                window: "#00000099",
                windowBorder: "#FFFFFF",
                tabIcon: "#009A42",
                menuIcons: "#FFFFFF",
                textDark: "#FFFFFF",
                textLight: "#FFFFFF",
                link: "#009A42",
                action: "#009A42",
                inactiveTabIcon: "#FFFFFF",
                error: "#FA9B32",
                inProgress: "#009A42",
                complete: "#009A42",
                sourceBg: "#00000059"
            },
            fonts: {
                default: null,
                "'Montserrat', sans-serif": {
                    url: "https://fonts.googleapis.com/css?family=Montserrat:400,700",
                    active: true
                }
            }
        }
    };
Concurrency: A single chef multitasking between several dishes.
Parallelism: Multiple chefs working on separate dishes simultaneously.

1. Using Promises for Concurrency
Promises are one of the simplest ways to achieve concurrency in TypeScript.

const fetchData = (url: string) => {
  return new Promise<string>((resolve) => {
    setTimeout(() => resolve(`Data from ${url}`), 1000);
  });
};

const main = async () => {
  console.log('Fetching data concurrently...');
  const data1 = fetchData('https://api.example.com/1');
  const data2 = fetchData('https://api.example.com/2');

  const results = await Promise.all([data1, data2]);
  console.log(results); // ["Data from https://api.example.com/1", "Data from https://api.example.com/2"]
};
main();

Explanation:
Promise.all allows both fetch operations to run concurrently, saving time. 2. Concurrency with Async/Await async/await simplifies promise chaining while maintaining the asynchronous nature.

async function task1() {
  console.log("Task 1 started");
  await new Promise((resolve) => setTimeout(resolve, 2000));
  console.log("Task 1 completed");
}

async function task2() {
  console.log("Task 2 started");
  await new Promise((resolve) => setTimeout(resolve, 1000));
  console.log("Task 2 completed");
}

async function main() {
  console.log("Concurrent execution...");
  await Promise.all([task1(), task2()]);
  console.log("All tasks completed");
}
main();

Parallelism in TypeScript
While JavaScript doesn’t natively support multi-threading, Web Workers and Node.js Worker Threads enable parallelism. These features leverage separate threads to handle computationally expensive tasks.

1. Web Workers for Parallelism
In browser environments, Web Workers execute scripts in a separate thread.

// worker.ts
addEventListener('message', (event) => {
  const result = event.data.map((num: number) => num * 2);
  postMessage(result);
});
// main.ts
const worker = new Worker('worker.js');

worker.onmessage = (event) => {
  console.log('Result from worker:', event.data);
};

worker.postMessage([1, 2, 3, 4]);


2. Node.js Worker Threads
For server-side applications, Node.js provides worker_threads.

// worker.js
const { parentPort } = require('worker_threads');
parentPort.on('message', (data) => {
  const result = data.map((num) => num * 2);
  parentPort.postMessage(result);
});
// main.js
const { Worker } = require('worker_threads');

const worker = new Worker('./worker.js');
worker.on('message', (result) => {
  console.log('Worker result:', result);
});
worker.postMessage([1, 2, 3, 4]);
Patterns for Effective Concurrency and Parallelism
1. Task Queues for Managing Concurrency
When dealing with many tasks, task queues ensure controlled execution.

class TaskQueue {
  private queue: (() => Promise<void>)[] = [];
  private running = 0;
  constructor(private concurrencyLimit: number) {}

  enqueue(task: () => Promise<void>) {
    this.queue.push(task);
    this.run();
  }

  private async run() {
    if (this.running >= this.concurrencyLimit || this.queue.length === 0) return;

    this.running++;
    const task = this.queue.shift();
    if (task) await task();
    this.running--;
    this.run();
  }
}

// Usage
const queue = new TaskQueue(3);
for (let i = 0; i < 10; i++) {
  queue.enqueue(async () => {
    console.log(`Task ${i} started`);
    await new Promise((resolve) => setTimeout(resolve, 1000));
    console.log(`Task ${i} completed`);
  });
}

2. Load Balancing with Worker Pools
Worker pools efficiently distribute tasks across multiple workers.

import { Worker, isMainThread, parentPort, workerData } from 'worker_threads';

if (isMainThread) {
  const workers = Array.from({ length: 4 }, () => new Worker(__filename));
  const tasks = [10, 20, 30, 40];
  workers.forEach((worker, index) => {
    worker.postMessage(tasks[index]);
    worker.on('message', (result) => console.log('Result:', result));
  });
} else {
  parentPort.on('message', (task) => {
    parentPort.postMessage(task * 2);
  });
}
Challenges and Solutions
1. Debugging Asynchronous Code

Use tools like async_hooks in Node.js to trace async operations.
Use IDEs that support debugging async/await code.
2. Error Handling

Wrap promises in try/catch blocks or use .catch() with Promise.all.
3. Race Conditions
Avoid shared state or use locking mechanisms.

Best Practices for Concurrency and Parallelism
1. Prioritize Asynchronous I/O: Avoid blocking the main thread for I/O-heavy operations.
2. Use Worker Threads for CPU-Intensive Tasks: Offload heavy computations to worker threads or Web Workers.
3. Limit Concurrency: Use task queues or libraries like p-limit to control concurrency levels.
4. Leverage Libraries: Use libraries like Bull for task queues or Workerpool for worker thread management.
//docuRef.clear();
//select firstonly docuRef 
//    where docuRef.RefTableId == tableName2Id("HcmApplicant")
//    && docuRef.RefRecId == HcmApplicant.RecId;

//if(docuRef)
//{
//    builder.addAttachment(DocumentManagement::getAttachmentStream(docuRef),docuRef.Name);
//}
import 'package:flutter/material.dart';

class AnimatedNavigation {
  static push({
    required BuildContext context,
    required Widget page,
  }) {
    return Navigator.of(context).push(
      PageRouteBuilder(
        transitionDuration: const Duration(milliseconds: 250),
        pageBuilder: (context, animation, secondaryAnimation) => page,
        transitionsBuilder: (context, animation, secondaryAnimation, child) {
          const begin = 0.0;
          const end = 1.0;
          final tween = Tween(begin: begin, end: end);
          final offsetAnimation = animation.drive(tween);

          return FadeTransition(
            opacity: offsetAnimation,
            child: child,
          );
        },
      ),
    );
  }

  static pushAndRemoveUntil({
    required BuildContext context,
    required Widget page,
  }) {
    return Navigator.of(context).pushAndRemoveUntil(
      PageRouteBuilder(
        transitionDuration: const Duration(milliseconds: 250),
        pageBuilder: (context, animation, secondaryAnimation) => page,
        transitionsBuilder: (context, animation, secondaryAnimation, child) {
          const begin = 0.0;
          const end = 1.0;
          final tween = Tween(begin: begin, end: end);
          final offsetAnimation = animation.drive(tween);

          return FadeTransition(
            opacity: offsetAnimation,
            child: child,
          );
        },
      ),
          (route) => false,
    );
  }
}
Yes, crypto payment gateways have the potential to become a standard in global e-commerce due to their ability to process fast, secure, and borderless transactions. They eliminate the need for intermediaries, reducing transaction fees and enabling merchants to accept payments from customers worldwide. With the growing demand for decentralized finance and the increasing adoption of cryptocurrencies, crypto payment gateway development is evolving to support diverse currencies, making cross-border payments more efficient. However, regulatory challenges and volatility in cryptocurrency markets need to be addressed before they can fully replace traditional payment systems.
Intro:
MIm7  SOL  MIm7  SOL

MIm7  LA7/4  MIm7  LA7/4  SOL

MIm7  SOL  MIm7  SOL

MIm7  LA7/4  MIm7  LA7/4  SOL

DO                       RE/FA#
So, so you think you can tell,
            LAm/MI                SOL
Heaven from Hell, blue skies from pain.
                     RE/FA#
Can you tell a green field
                  DO                   LAm
from a cold steel rail, a smile from a veil
                     SOL
Do you think you can tell?
                    DO                    RE/FA#
Did they get you to trade your heroes for ghosts
              LAm/MI               SOL
Hot ashes for trees, hot air for a cool breeze
                 RE/FA#
cold comfort for change
              DO                           LAm
And did you exchange a walk on part in the war
                     SOL
for a lead role in a cage?

MIm7  SOL  MIm7  SOL

MIm7  LA7/4  MIm7  LA7/4  SOL

DO                                RE/FA#
  How I wish, how I wish you were here.
           LAm/MI
We're just two lost souls swimming in a fish bowl
SOL
  year after year
RE/FA#
  Running over the same old ground.
DO
  What have we found?
             LAm                  SOL
The same old fears. Wish you were here...

MIm7  SOL  MIm7  SOL

MIm7  LA7/4  MIm7  LA7/4  SOL
Investing in a crypto banking solution can significantly enhance your business's financial capabilities. It allows for seamless cryptocurrency transactions, which can attract tech-savvy customers and improve user experience. With features like multi-currency support, real-time reporting, and robust security measures, this software enables businesses to streamline operations and reduce transaction costs. Furthermore, as the demand for digital assets grows, adopting crypto banking software solutions positions your business at the forefront of financial innovation. Overall, the long-term benefits, including increased customer loyalty and potential revenue growth, make crypto banking software a worthwhile investment.

Yes, a white Label crypto payment gateway can significantly boost transaction security for e-commerce stores. By utilizing advanced encryption techniques and blockchain technology, these gateways minimize the risk of fraud and chargebacks. They offer secure wallet integrations, ensuring that sensitive customer information remains protected throughout the transaction. Additionally, many white-label solutions implement multi-signature wallets and robust identity verification measures, further enhancing security. White label crypto payment gateway safeguards transactions and builds customer trust, making it a viable option for e-commerce businesses looking to enhance their security posture while accepting cryptocurrency payments.

The cost of tokenizing an asset can vary widely depending on several factors, including the type of asset, the complexity of the tokenization process, and the asset tokenization company you choose to work with. Generally, fees can range from $10,000 to over $100,000. 

Basic costs include legal fees for compliance and regulations, smart contract development, and integration with blockchain platforms. For instance, tokenizing real estate might require extensive legal reviews and property evaluations, increasing costs. Additionally, ongoing costs for maintaining and managing the tokens, such as custody and reporting, should be considered.

Selecting an experienced asset tokenization company can ensure a smoother process, but it may come at a premium. Businesses looking to tokenize assets should prepare for initial setup costs and ongoing maintenance expenses to ensure successful and compliant asset tokenization.
// HTML Code
<div class="home-video">
	<div class="hp-video-container">
		<div class="slideshow-container">
			<!-- <div class="mySlides fade">
				<video loop muted autoplay playsinline class="fullscreen-bg__video">
					<source src="https://static-trailercentral.s3.amazonaws.com/videos/LUND23_W2F_Pre-roll_15_16x9_FINAL-1920.mp4" type="video/mp4">
				</video>
			</div> -->
			<div class="mySlides fade" style="opacity: 0;">
				<video loop="" muted="" autoplay="" playsinline="" class="fullscreen-bg__video">
					<source src="https://static-trailercentral.s3.amazonaws.com/videos/ben-my23-homepage-video-desktop.mp4" type="video/mp4">
				</video>
			</div>
			<div class="mySlides fade" style="opacity: 1;">
				<video loop="" muted="" autoplay="" playsinline="" class="fullscreen-bg__video">
					<source src="https://static-trailercentral.s3.amazonaws.com/videos/macdonaldmarineinc_5.mp4" type="video/mp4">
				</video>
			</div>

			
			<div class="mySlides fade" style="opacity: 0;">
				<video loop="" muted="" autoplay="" playsinline="" class="fullscreen-bg__video">
					<source src="https://static-trailercentral.s3.amazonaws.com/videos/MY2024-B2.mp4" type="video/mp4">
				</video>
			</div>
			
			<a class="prev" onclick="plusSlides(-1)">❮</a>
			<a class="next" onclick="plusSlides(1)">❯</a>
            
            <!-- <div class="dot-container">
				<span class="dot" onclick="currentSlide(1)"></span>
				<span class="dot" onclick="currentSlide(2)"></span>
				<span class="dot" onclick="currentSlide(3)"></span>
				<span class="dot" onclick="currentSlide(4)"></span>
				<span class="dot" onclick="currentSlide(5)"></span>
			</div> -->
		</div>
	</div>
	<script type="text/javascript">
		document.querySelector('.fullscreen-bg__video').playbackRate = 1;

		var slideIndex = 1;
			var myTimer;
			var slideshowContainer;
			window.addEventListener("load", function () {
				showSlides(slideIndex);
				myTimer = setInterval(function () {
					(1);
				}, 15000);
			//UNCOMMENT OUT THE LINE BELOW TO KEEP ARROWS PART OF MOUSEENTER PAUSE/RESUME
				slideshowContainer = document.getElementsByClassName("slideshow-container")[0];
			slideshowContainer.addEventListener("mouseenter", pause);
			slideshowContainer.addEventListener("mouseleave", resume);
			});
			// NEXT AND PREVIOUS CONTROL
			function plusSlides(n) {
				clearInterval(myTimer);
				if (n < 0) {
					showSlides((slideIndex -= 1));
				} else {
					showSlides((slideIndex += 1));
				}
				//COMMENT OUT THE LINES BELOW TO KEEP ARROWS PART OF MOUSEENTER PAUSE/RESUME
				if (n === -1) {
					myTimer = setInterval(function () {
						plusSlides(n + 2);
					}, 15000);
				} else {
					myTimer = setInterval(function () {
						plusSlides(n + 1);
					}, 15000);
				}
			}
			//Controls the current slide and resets interval if needed
			function currentSlide(n) {
				clearInterval(myTimer);
				myTimer = setInterval(function () {
					plusSlides(n + 1);
				}, 15000);
				showSlides((slideIndex = n));
			}


			var current = 0,
				slides = document.getElementsByClassName("mySlides");

			setInterval(function() {
			  for (var i = 0; i < slides.length; i++) {
				slides[i].style.opacity = 0;
			  }
			  current = (current != slides.length - 1) ? current + 1 : 0;
			  slides[current].style.opacity = 1;
			}, 15000);


			function showSlides(n) {
				var i;
				var slides = document.getElementsByClassName("mySlides");
				var dots = document.getElementsByClassName("dot");
				if (n > slides.length) {
					slideIndex = 1;
				}
				if (n < 1) {
					slideIndex = slides.length;
				}
				for (i = 0; i < slides.length; i++) {
					slides[i].style.opacity = 0;
				}
				for (i = 0; i < dots.length; i++) {
					dots[i].className = dots[i].className.replace(" active", "");
				}
				slides[slideIndex - 1].style.opacity = 1;
				// dots[slideIndex - 1].className += " active";
			}
			pause = () => {
				clearInterval(myTimer);
			};
			resume = () => {
				clearInterval(myTimer);
				myTimer = setInterval(function () {
					plusSlides(slideIndex);
				}, 15000);
			};
	</script>
</div>

// SCSS
.home-video{
            position: relative;
            overflow: hidden;
            .hp-video-container{
                width: 100%;
                text-align: center;
                .slideshow-container{
                    width: 100%;
                    height: 50vw;
                    position: relative;
                    margin: auto;
                    background-color: #000;
                }
            }
            .mySlides{
                position: absolute;
                -webkit-transition: opacity .5s ease-in;
                transition: opacity .5s ease-in;
                width: 100%;
                height: 100%;
                display: -webkit-box;
                display: -webkit-flex;
                display: -ms-flexbox;
                display: flex;
                -webkit-box-align: center;
                -webkit-align-items: center;
                -ms-flex-align: center;
                align-items: center;
                -webkit-box-pack: center;
                -webkit-justify-content: center;
                -ms-flex-pack: center;
                justify-content: center;
                &+.mySlides{
                    opacity: 0;
                }
            }
            .prev, .next{
                cursor: pointer;
                position: absolute;
                top: 50%;
                width: auto;
                padding: 10px 15px;
                color: white;
                font-weight: bold;
                font-size: 18px;
                -webkit-transition: 0.6s ease;
                transition: 0.6s ease;
                border-radius: 2px;
                -webkit-user-select: none;
                -moz-user-select: none;
                -ms-user-select: none;
                user-select: none;
                -webkit-transform: translatey(-50%);
                -ms-transform: translatey(-50%);
                transform: translatey(-50%);
                z-index: 9;
                -webkit-filter: drop-shadow(0px 4px 6px black);
                filter: drop-shadow(0px 4px 6px black);
            }
            .prev{ left: 0; }
            .next{ right: 0; }
            video{
                height: 100%;
                width: 100%;
                object-fit: cover;
            }
        }
921dd32d0e41f0002d113f7a7c0a2b7a
If you are looking for a reliable OST to PST converter, I highly recommend trying EmailsGuru OST to PST Conveter. It is user-friendly and efficiently recovers inaccessible OST files, converting them to PST without any hassle. This tool offers offers a quick and hassle-free conversion process. The tool maintain data integrity and support multiple versions of Outlook. Additionally, it provide a preview feature, allowing you to view emails before conversion. Users can smoothly run it on Windows 10, 8.1, 7, XP, Vista and all below versions. Users can try a free trial version also.
class node{
    data;
    next=null;
}
class linklistNodes{
    head=null;
    
    add(value){
          let newNode=new node
          newNode.data=value
          if( this.head==null){
              this.head=newNode
             console.log('ia am head')
               this.head.data=value
                
               return
          }
          
          let lastNode= this.head
        
          while(lastNode.next!==null){
              lastNode=lastNode.next
                }
          lastNode.next=newNode}
    
    
    find(value){
        let currentNode=this.head
        let find;
        while(currentNode.next!=null){
                 currentNode=  currentNode.next
            if(currentNode.data==value){
                find=currentNode
                console.log('find')
                
            } }
            return find
         }
         
         
         deletex(value){
             
            let linklist= this.head
            if(linklist.data==value){
                console.log('......')
               this.head=linklist.next
            }
            while(linklist.next!=null){
                
                if(linklist.next.data==value){
                    linklist.next=linklist.next.next
                    console.log('......................')
                    console.log(linklist)
                    console.log(linklist.next.next)
                       console.log('......................')
                    return
                }
                linklist= linklist.next
            }
             
             
         }
}

const linklist=new linklistNodes
linklist.add('21')
linklist.add('25')
linklist.add('26')
linklist.add('26')
linklist.add('21')
linklist.add('25')
linklist.add('26')
linklist.add('26')

linklist. deletex('25')
console.log(linklist.head)
// Shortcode [fellow_intern type='']

function fellow_intern ( $atts, $content = null) {
    $today = date('Ymd');
	$atts = shortcode_atts(
        array(
            'type' => '',
            'number' => '-1',
        ),
        $atts,
        'fellow_intern'
    );
    $args = array(
        'post_type' => 'fellow-intern',
		'posts_per_page' => -1,
        'post_status' => 'publish',
        'orderby' => 'date',
        'order' => 'ASC',
    );

	if( !empty( $atts['type'] ) ) {
		$args['tax_query'] = array(
			array(
				'taxonomy' => 'fellow-type',
				'field' => 'slug',
				'terms' => $atts['type'],
            )
		);
	}

    $fellow_query = new WP_Query($args);

    ob_start();
    if($fellow_query->have_posts()) { ?>

    <div class="fellows-wrapper">

    <?php

    while ($fellow_query->have_posts()) {
    $fellow_query->the_post(); ?>

    <div class="fellow-inner">
		<!-- Thumbnail -->
		<div class="fellow-img">
			<?php if ( has_post_thumbnail() ) { the_post_thumbnail('full'); } ?>
		</div>
		<div class="fellow-content">
			<!-- Title -->
			<h3><?php echo the_title(); ?></h3>
			<!-- Details -->
			<div class="fellow-details">
				<?php echo the_content(); ?>
			</div>
		</div>
	</div>

    <?php }
    wp_reset_postdata();
    ?>
    </div>

    <?php
    } else { ?>
        <div>No fellows found</div>
    <?php }
    return ob_get_clean();
}
add_shortcode('fellow_intern', 'fellow_intern');
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=s, initial-scale=1.0">
    <title>Document</title>
    <style>
        body{
            background-color: rgb(66, 31, 92);
        }
        form{
            width:400px;
            margin:auto;
            border:solid 3pt rgb(197, 174, 202);
            padding:6px;
        }
        input{
            margin:5px;
            background-color: rgb(189, 161, 215);
            font-size: medium;
            border: solid 3pt rgb(199, 178, 204);
        }
        input[type=button]{
            width:80px;
            border-radius:10px;
            height:50px;
            border:solid 3pt rgb(171, 159, 184);
        }
        h1{
            text-align: center;
            color: rgb(177, 158, 191);

        }
        footer{
            text-align: center;
            padding: 10px;
            font-weight: 700;
            color: rgb(190, 163, 193);
        }
        input[type=text]{
           color: rgb(0, 0, 0);
        }
    </style>
</head>
<body>
    <h1>Calculator</h1>
    <form name="calform">
        <input type="text" id="answer" naame="answer"/>
        

        <input type="button" value="C" onclick="calform.answer.value=''"/>
      <br>
        <input type="button" value="1" onclick="calform.answer.value+='1'"/>

        <input type="button" value="2" onclick="calform.answer.value+='2'"/>
  
        <input type="button" value="3" onclick="calform.answer.value+='3'"/>
     
        <input type="button" value="+" onclick="calform.answer.value+='+'"/>
        <br>
        
        <input type="button" value="4" onclick="calform.answer.value+='4'"/>
   
        <input type="button" value="5" onclick="calform.answer.value+='5'"/>
     
        <input type="button" value="6" onclick="calform.answer.value+='6'"/>
     
        <input type="button" value="-" onclick="calform.answer.value+='-'"/>
        <br>

        <input type="button" value="7" onclick="calform.answer.value+='7'"/>

        <input type="button" value="8" onclick="calform.answer.value+='8'"/>

        <input type="button" value="9" onclick="calform.answer.value+='9'"/>

        <input type="button" value="*" onclick="calform.answer.value+='*'"/>
        <br>
        <input type="button" value="/" onclick="calform.answer.value+='/'"/>
        <input type="button" value="0" onclick="calform.answer.value+='0'"/>
        <input type="button" value="." onclick="calform.answer.value+='.'"/>
        <input type="button" value="%" onclick="calform.answer.value+='%'"/>
        <br>
        <input type="button" value="x^2" onclick="squarenumber()">
        <input type="button" value="sqrt" onclick="squareroot()">
        <input type="button" value="^" onclick="calform.answer.value='**'">
        <input type="button" value="=" onclick="calform.answer.value=eval(calform.answer.value)" />
    </form>
    
    <script>
        function squarenumber(){
            let value=calform.answer.value;
            calform.answer.value=Math.pow(value,2);
        }

        function squareroot(){
            let value=calform.answer.value;
            if(value>=0){
                calform.answer.value=Math.sqrt(value)
            }
            else{
                calform.aanswer.value="error"
            }
        }
    </script>
</body>
<footer>
    AKSHITA VASU [DEPARTMENT OD CSE ]
</footer>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Newspaper</title>
    <style>
        #container{
            width:95%;
            overflow:auto;
            margin:auto;
        }
        header{
            text-align: center;
            background-color: aquamarine;
        }
        nav ul{
            list-style-type:none;
            margin:0;padding:0;
            overflow:hidden;
        }
        nav li{
            float:left;
        }
        nav li a{
            text-decoration:none;
            text-align:center;
            padding:15px ;
        }
        nav li a:hover{
            background-color: aqua;
        }
        section{
            width:70%;
            margin:5px;
            float:left;
            padding:6px;
            border:solid 1pt black;
            background-color: burlywood;
        }

        aside{
           display:inline-block;
           margin:5px;
           padding:5px;
           width:25%;
            position: inherit;
            vertical-align:top;
            background-color: bisque;

        }
        figure{
            float:left;
            margin-right: 5px;
        }
        footer{
            text-align: center;
            font-weight:500;
            height:30px;
            background-color: rgb(131, 117, 131);
            width: 100%;
            font-size: larger;
        }

    </style>
</head>
<body>
    <div id="container">
        <header>
            <img src="TOI.png" width="500px"/>
            <nav role="navigation">
                <ul>
                    <li><a href="#">City</a></li>
                    <li><a href="#">world</a></li>
                    <li><a href="#">business</a></li>
                    <li><a href="#">tech</a></li>
                    <li><a href="#">Cricket</a></li>
                </ul>
            </nav>
        </header>

        <section>
            <h2>latest News</h2>
            <article>
                <h3>how cyclone done</h3>
                <figure>
                    <img src="cyclone.JPG" width="200px" />
                    <figcaption>CYCLONE</figcaption>
                </figure>
                Lorem ipsum dolor sit amet consectetur adipisicing elit. Necessitatibus aspernatur in earum cupiditate odit inventore aperiam iure quia ratione unde. Et voluptatem assumenda fugiat mollitia esse porro recusandae voluptatibus a!
            </article>
        </section>
        <section>
            <h2>latest News</h2>
            <article>
                <h3>how cyclone done</h3>
                <figure>
                    <img src="cyclone.JPG" width="200px" />
                    <figcaption>CYCLONE</figcaption>
                </figure>
                Lorem ipsum dolor sit amet consectetur adipisicing elit. Necessitatibus aspernatur in earum cupiditate odit inventore aperiam iure quia ratione unde. Et voluptatem assumenda fugiat mollitia esse porro recusandae voluptatibus a!
            </article>
        </section><section>
            <h2>latest News</h2>
            <article>
                <h3>how cyclone done</h3>
                <figure>
                    <img src="cyclone.JPG" width="200px" />
                    <figcaption>CYCLONE</figcaption>
                </figure>
                Lorem ipsum dolor sit amet consectetur adipisicing elit. Necessitatibus aspernatur in earum cupiditate odit inventore aperiam iure quia ratione unde. Et voluptatem assumenda fugiat mollitia esse porro recusandae voluptatibus a!
            </article>
        </section>
        <section>
            <h2>latest News</h2>
            <article>
                <h3>how cyclone done</h3>
                <figure>
                    <img src="cyclone.JPG" width="200px" />
                    <figcaption>CYCLONE</figcaption>
                </figure>
                Lorem ipsum dolor sit amet consectetur adipisicing elit. Necessitatibus aspernatur in earum cupiditate odit inventore aperiam iure quia ratione unde. Et voluptatem assumenda fugiat mollitia esse porro recusandae voluptatibus a!
            </article>
        </section>
        <aside>
            <hgroup>
                <h3> <a href="#">SOMETHING</a></h3>
                <h3> <a href="#">SOMETHING</a></h3>
                <h3> <a href="#">SOMETHING</a></h3>
            </hgroup>
            <figure>
                <img src="sucess1.JPG" width="260px"/>
            </figure>
            <figure>
                <img src="quotes2.JPG" width="260px"/>
            </figure>
            <figure>
                <img src="quotes 3.JPG" width="260px"/>
            </figure>
        </aside>
        </div>
        <footer>
            aksh|hey|bhkm
        </footer>
</body>
</html>
star

Sun Dec 22 2024 01:55:41 GMT+0000 (Coordinated Universal Time)

@E23CSEU1151

star

Sat Dec 21 2024 23:43:08 GMT+0000 (Coordinated Universal Time)

@jdeveloper #javascript

star

Sat Dec 21 2024 17:36:46 GMT+0000 (Coordinated Universal Time) https://apple.stackexchange.com/questions/144474/mds-and-mds-stores-constantly-consuming-cpu

@milliedavidson #mac #cpuusage #mds_stores

star

Sat Dec 21 2024 15:45:28 GMT+0000 (Coordinated Universal Time) https://www.javatpoint.com/java-string-contains

@Subha

star

Sat Dec 21 2024 13:28:36 GMT+0000 (Coordinated Universal Time) https://www.roblox.com/users/7655483489/profile

@kool015312

star

Sat Dec 21 2024 12:35:31 GMT+0000 (Coordinated Universal Time) https://stackoverflow.com/questions/6101956/generating-a-random-password-in-php/31284266#31284266

@dontexpectless #php

star

Sat Dec 21 2024 09:29:40 GMT+0000 (Coordinated Universal Time) https://massgrave.dev/windows_ltsc_links#win10-enterprise-ltsc-2021

@Curable1600 #windows

star

Sat Dec 21 2024 09:07:07 GMT+0000 (Coordinated Universal Time)

@E23CSEU1151

star

Sat Dec 21 2024 07:49:16 GMT+0000 (Coordinated Universal Time)

@E23CSEU1151

star

Sat Dec 21 2024 06:44:06 GMT+0000 (Coordinated Universal Time)

@Rishi1808

star

Sat Dec 21 2024 06:28:09 GMT+0000 (Coordinated Universal Time)

@E23CSEU1151

star

Sat Dec 21 2024 01:18:57 GMT+0000 (Coordinated Universal Time) https://www.mindeo.com/formations/success-pro

@laurianobrice@

star

Fri Dec 20 2024 15:28:49 GMT+0000 (Coordinated Universal Time) https://pytube.io/en/latest/user/install.html

@CHIBUIKE

star

Fri Dec 20 2024 15:28:43 GMT+0000 (Coordinated Universal Time) https://pytube.io/en/latest/user/install.html

@CHIBUIKE

star

Fri Dec 20 2024 12:26:10 GMT+0000 (Coordinated Universal Time) https://appticz.com/hotel-booking-script

@aditi_sharma_

star

Fri Dec 20 2024 09:52:36 GMT+0000 (Coordinated Universal Time)

@Naveen@1833 #nodejs

star

Fri Dec 20 2024 03:53:21 GMT+0000 (Coordinated Universal Time)

@Pulak

star

Fri Dec 20 2024 00:10:45 GMT+0000 (Coordinated Universal Time) https://help.salesforce.com/s/articleView?id=platform.custommetadatatypes_formula_fields.htm&type=5

@dannygelf #salesforce #custommetadatatype #flow #cmdt

star

Thu Dec 19 2024 23:42:17 GMT+0000 (Coordinated Universal Time)

@BilalRaza12

star

Thu Dec 19 2024 22:10:51 GMT+0000 (Coordinated Universal Time)

@shirnunn

star

Thu Dec 19 2024 16:22:05 GMT+0000 (Coordinated Universal Time)

@RehmatAli2024 #deluge

star

Thu Dec 19 2024 13:38:02 GMT+0000 (Coordinated Universal Time) https://www.linkedin.com/learning/javascript-essential-training/javascript-the-soil-from-which-the-modern-web-grows

@NaviAndrei #javascript

star

Thu Dec 19 2024 12:55:50 GMT+0000 (Coordinated Universal Time) https://appticz.com/uber-for-handyman-app-development

@davidscott

star

Thu Dec 19 2024 11:32:39 GMT+0000 (Coordinated Universal Time)

@paulbarry

star

Thu Dec 19 2024 11:05:25 GMT+0000 (Coordinated Universal Time)

@Huzaifa

star

Thu Dec 19 2024 01:42:46 GMT+0000 (Coordinated Universal Time) https://stackoverflow.com/questions/76127897/netsuite-results-where-one-field-is-true-and-the-other-is-false-that-it-returns

@susilogn

star

Thu Dec 19 2024 01:42:20 GMT+0000 (Coordinated Universal Time) https://stackoverflow.com/questions/76127897/netsuite-results-where-one-field-is-true-and-the-other-is-false-that-it-returns

@susilogn

star

Wed Dec 18 2024 18:25:49 GMT+0000 (Coordinated Universal Time)

@gbritgs

star

Wed Dec 18 2024 16:17:41 GMT+0000 (Coordinated Universal Time)

@FOrestNAtion

star

Wed Dec 18 2024 16:16:54 GMT+0000 (Coordinated Universal Time)

@FOrestNAtion

star

Wed Dec 18 2024 15:37:27 GMT+0000 (Coordinated Universal Time) https://dev.to/shafayeat/mastering-concurrency-and-parallelism-in-typescript-1bgf

@StephenThevar #nodejs #javascript

star

Wed Dec 18 2024 15:00:37 GMT+0000 (Coordinated Universal Time)

@MinaTimo

star

Wed Dec 18 2024 13:38:20 GMT+0000 (Coordinated Universal Time)

@Samuel1347

star

Wed Dec 18 2024 13:28:13 GMT+0000 (Coordinated Universal Time) https://maticz.com/cryptocurrency-payment-gateway-development

@Ameliasebastian #white #crypto

star

Wed Dec 18 2024 13:24:28 GMT+0000 (Coordinated Universal Time) https://www.accordiespartiti.it/accordi/internazionali/pink-floyd/wish-you-were-here-3/

@cinzia

star

Wed Dec 18 2024 13:11:55 GMT+0000 (Coordinated Universal Time) https://maticz.com/crypto-banking-software

@Ameliasebastian #white #crypto

star

Wed Dec 18 2024 12:59:15 GMT+0000 (Coordinated Universal Time) https://maticz.com/white-label-crypto-payment-gateway

@Ameliasebastian #white #crypto

star

Wed Dec 18 2024 11:28:50 GMT+0000 (Coordinated Universal Time) https://maticz.com/asset-tokenization-company

@Ameliasebastian #asset #tokenization

star

Wed Dec 18 2024 10:29:05 GMT+0000 (Coordinated Universal Time)

@vishalsingh21

star

Wed Dec 18 2024 10:19:09 GMT+0000 (Coordinated Universal Time) https://home.openweathermap.org/api_keys

@A_Znk

star

Wed Dec 18 2024 10:07:25 GMT+0000 (Coordinated Universal Time) https://www.emailsguru.com/ost/pst/

@adamsmith #osttopst #convertosttopst #osttopstconverter #ost #pst #emails #tools

star

Wed Dec 18 2024 10:03:12 GMT+0000 (Coordinated Universal Time) https://tobiasahlin.com/blog/hiding-an-element-if-its-empty/

@zaki

star

Wed Dec 18 2024 08:59:40 GMT+0000 (Coordinated Universal Time)

@ziaurrehman #html

star

Wed Dec 18 2024 06:45:55 GMT+0000 (Coordinated Universal Time)

@omnixima #javascript

star

Wed Dec 18 2024 06:20:02 GMT+0000 (Coordinated Universal Time) https://www.earnlogic.in/gst-registration-in-coimbatore.php

@earnlogic #gstregistration in coimbatore

star

Wed Dec 18 2024 06:19:38 GMT+0000 (Coordinated Universal Time) https://www.earnlogic.in/copyright-registration-in-coimbatore.php

@earnlogic #copyrightregistration in coimbatore

star

Wed Dec 18 2024 06:19:01 GMT+0000 (Coordinated Universal Time) https://www.earnlogic.in/trademark-registration-in-coimbatore.php

@earnlogic #trademarkregistration in coimbatore #trademarkregistration

star

Wed Dec 18 2024 03:11:30 GMT+0000 (Coordinated Universal Time)

@akshva

star

Wed Dec 18 2024 02:49:03 GMT+0000 (Coordinated Universal Time)

@akshva

Save snippets that work with our extensions

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