Snippets Collections
const http = require("http");

const html = `
<!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>
    <form action="/submit-form" enctype="application/x-www-form-urlencoded" method="POST">
      <label> Enter Name: 
        <input type="text" autocomplete="name" name="name" required />
      </label>
      <input type="submit" />
    </form>
  </body>
</html>
`;
const server = http.createServer((req, res) => {
  switch (req.method) {
    case "GET":
      if (req.url === "/") {
        res.writeHead(200, { "Content-Type": "text/html" });
        res.end(html);
      } else {
        res.writeHead(404, { "Content-Type": "text/plain" });
        res.end("Page not found");
      }
      break;
    case "POST":
      if (req.url === "/submit-form") {
        let body = "";
        req.on("data", (data) => {
          body += data;
        });

        req.on("end", () => {
          console.log("Request body:  " + body);
          // Parse, validate, and sanitize
          res.writeHead(200, { "Content-Type": "application/json" });
          res.end(JSON.stringify({ body }));
        });
      } else {
        res.writeHead(404, { "Content-Type": "text/plain" });
        res.end("Page not found");
      }
      break;
    default:
      res.writeHead(405, { "Content-Type": "text/plain" });
      res.end("Method not supported");
  }
});

const PORT = process.env.PORT || 3000;

server.listen(PORT, () => {
  console.log(`Your app is listening on PORT ${PORT}`);
});
function myy () {
	alert("ohh run");
    }
setTimeout(myy, 3000);
// .call(), in call() method first argument must be a object. and function didnot need a parameter for recieve it, it can be accsses by this 
const person = {
	firstName: 'jigar1',
  fullName: function(abc) {
    console.log('---',this.firstName  + " " +  abc);
    // return abc.firstName + " " + this.lastName;
  }
}
const person1 = {
  firstName:"John",
  lastName: "Doe"
}
const person2 = {
  firstName:"Mary",
  lastName: "Doe"
}
const person3 = {
    firstName: 'krishiv',
    myfun: function () {
        person.fullName.call(this,'jck');
    },
    funn3: function () {
        funn.call(this);
    }
}

function funn (hi) {
    console.log('*****',hi, this.firstName);
}
person3.myfun();					//--- krishiv jck
person3.funn3();					//***** undefined krishiv
person.fullName.call(this,'jck');	// --- undefined jck
person.fullName('jck');				//--- jigar1 jck
function myFunction(arg1, arg2) {
  const firstName = arg1;
  this.lastName  = arg2;
  this.cusfun = function (wow) {
  	console.log('---->', this.firstName, wow);
    return firstName;
  }
}

const myObj = new myFunction("John","Doe");
console.log(myObj.cusfun('hi'));
console.log('--------');
console.log(myObj.lastName);
console.log(myFunction.lastName);
console.log(myObj.firstName);
console.log(myFunction.firstName);
console.log('--------');
console.log(typeof myFunction);
console.log(typeof myObj);
x = findMax(1, 123, 500, 115, 44, 88);

function findMax() {
  let max = -Infinity;
  for (let i = 0; i < arguments.length; i++) {
    if (arguments[i] > max) {
      max = arguments[i];
    }
  }
  return max;
}
<!DOCTYPE html>
<html lang="ja">
 <head>
    <script async src="https://xxxxx/liquidekyc.js"></script>
    <title>申込フォーム</title>
  </head>
  <body>
    <h1>新規申込</h1>
    <form id="applicant-form">
      <div>
        <label for="last_name">姓</label>
        <input type="text" id="last_name" name="last_name" />
      </div>
      <div>
        <label for="first_name">名</label>
        <input type="text" id="first_name" name="first_name" />
      </div>
      ・・・
    </form>
    <script>
     ・・・
      function handleSubmit(e) {
       ・・・
        const data = new FormData(applicantForm);
        const params = JSON.stringify(Object.fromEntries(data));
        LIQUIDEKYC.startKYC(params)
       ・・・
      }
    </script>
  </body>
</html>
arr.splice(start[, deleteCount, elem1, ..., elemN])
@"C:\temp4\database\01_plano_execucao_GFF-261.sql";
function checkImagesSource() {
    const images = document.querySelectorAll('img');
    const viewportWidth = window.innerWidth;
    const viewportHeight = window.innerHeight;

    console.log(`Viewport dimensions: ${viewportWidth} x ${viewportHeight}`);
    console.log('Images displayed and their sources:');

    images.forEach((img, index) => {
        const rect = img.getBoundingClientRect();
        // Check if the image is within the viewport
        if (rect.top < viewportHeight && rect.bottom >= 0 && rect.left < viewportWidth && rect.right >= 0) {
            const isSrcset = img.hasAttribute('srcset');
            const sourceUsed = img.currentSrc || img.src;  // This will get the image URL after srcset and sizes have been applied by the browser

            if (isSrcset) {
                console.log(`${img.tagName.toLowerCase()} srcset - ${sourceUsed}`);
            } else {
                console.log(`${img.tagName.toLowerCase()} - ${sourceUsed}`);
            }
        }
    });
}

checkImagesSource();
// remove element at certain index without changing original
let arr = [0,1,2,3,4,5]
let newArr = [...arr]
newArr.splice(1,1)//remove 1 element from index 1
console.log(arr) // [0,1,2,3,4,5]
console.log(newArr)// [0,2,3,4,5]



eg //


const comments = [
      { text: 'Love this!', id: 523423 },
      { text: 'Super good', id: 823423 },
      { text: 'You are the best', id: 2039842 },
      { text: 'Ramen is my fav food ever', id: 123523 },
      { text: 'Nice Nice Nice!', id: 542328 }
    ];



// Array.prototype.findIndex()
// Find the comment with this ID
   const commentIndex = comments.findIndex((item) => item.id === 823423)
    // delete the comment with the ID of 823423
    const commentsCopy = [...comments];
    commentsCopy.splice(1, commentIndex) //remove 1 element from index 1
    console.log(commentsCopy)


// or we can use slice from the start to the value and from the value to the end
const newComments = [
  ...comments.slice(1, commentIndex)
  ...comments.slice(commentIndex++)
]
    
<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Minecraft Block Path Finder</title>
  <style>
      .minecraft-block-path-finder-main {
    background: none;
    display: block;
    padding: 0px 0px 0px 0px;
    font: bold 17px/30px Arial, Helvetica, sans-serif;
    min-width: 260px;
    margin: 50px auto 0px auto;
    border: none;
  }

  .minecraft-block-path-finder-main:after {
    content: "";
    clear: both;
  }

  .noselect {
    cursor: default;
    -webkit-touch-callout: none;
    -webkit-user-select: none;
    -khtml-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
  }

  .minecraft-block-path-finder-card {
    padding: 1rem 2rem 1rem 2rem;
    height: 70px;
  }

  .minecraft-block-path-finder-cards {
    max-width: 1600px;
    margin: 0 auto;
    display: grid;
    grid-gap: 0 1rem;
    grid-template-columns: repeat(auto-fit, minmax(420px, 1fr));
  }

  .minecraft-block-path-finder-card00 {
    padding: 1rem 2rem 1rem 2rem;
    height: 70px;
  }

  
  
  .minecraft-block-path-finder-cards00 {
    width: 100%;
    margin: 0 auto;
    display: grid;
    grid-gap: 0 1rem;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
  }

  .minecraft-block-path-finder-blocks {
    background: #24aded;
    background: -webkit-linear-gradient(to right, #24aded, #108dc7);
    background: linear-gradient(to right, #24aded, #108dc7);
    box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.2);
    border-radius: 2px;
    display: block;
    padding: 10px 10px 10px 10px;
    margin: 10px 0px;
    border: none;
    text-align: center;
    min-height: 50px;
  }

  .minecraft-block-path-finder-click-blocks {
    background: none;
    box-shadow: 0 4px 8px 0 rgba(0, 0, 0, 0.2), 0 6px 20px 0 rgba(0, 0, 0, 0.2);
    border-radius: 2px;
    display: block;
    padding: 10px 10px 10px 10px;
    margin: 10px 0px;
    border-width: 2px;
    border-style: solid;
    border-color: #108dc7;
    text-align: center;
    overflow-y: scroll;
    overflow-x: hidden;
    height: 250px;
    color: #108dc7;
    position: relative !important;
    -webkit-transition: all 0.6s ease;
    -moz-transition: all 0.6s ease;
    -ms-transition: all 0.6s ease;
    -o-transition: all 0.6s ease;
    transition: all 0.6s ease;
    -ms-overflow-style: none;
    scrollbar-width: none;
    margin-left: auto;
    margin-right: auto;
  }

  .minecraft-block-path-finder-click-blocks::-webkit-scrollbar {
    display: none;
  }

  .minecraft-block-path-finder-click-blocks:hover {
    background: #24aded;
    color: white;
    text-shadow: 0px 0px 8px rgb(255, 230, 186), 0px 0px 22px rgb(255, 255, 255),
      0px -1px 0px rgba(0, 0, 0, 0.5);
    -webkit-transition: all 0.6s ease;
    -moz-transition: all 0.6s ease;
    -ms-transition: all 0.6s ease;
    -o-transition: all 0.6s ease;
    transition: all 0.6s ease;
  }

  .minecraft-block-path-finder-cmnd-button {
    transition: color 0.15s ease-in;
    font-size: 35px;
    text-align: center;
    text-decoration: none;
    line-height: 50px;
    color: white;
    cursor: pointer;
  }

  .minecraft-block-path-finder-reset-button:hover {
    color: #8d8c85;
    transition: color 0.3s ease-in;
    transition: color 0.3s ease-out;
  }

  .stepper_select {
    display: none;
  }
  
  .tool-input input[type="number"] {
    width: calc(100% - 2px); 
    height: 25px;
    border: none;
    border-radius: 0;
    box-shadow: 0px 0px 20px 5px rgba(0, 0, 0, 0.05);
    background: #24aded;
    background: -webkit-linear-gradient(to right, #24aded, #108dc7);
    background: linear-gradient(to right, #24aded, #108dc7);
    text-align: center;
    color: #ffffff;
    font-size: 18px;
    line-height: 25px;
    outline: none;
}
  
.tool-input input[type="number"]::placeholder {
    color: #E6E6E6;
}


.tool-input input[type="number"]:focus {
    outline: none;
}

  .stepper-input {
    width: 100%;
    height: 25px;
    border: 0px;
    border-radius: 2px;
    box-shadow: 0px 0px 20px 5px rgba(0, 0, 0, 0.05);
    overflow: hidden;
    margin: 0px 0px 5px 0px;
  }

  .stepper-input input {
    display: none;
  }

  .stepper-input .input {
    width: 100%;
    height: 100%;
    display: flex;
  }

  .stepper-input .input :active {
    background: #24aded;
  }

  .stepper-input .input .range {
    overflow: hidden;
    text-align: center;
    flex: 1;
  }

  .stepper-input .input .range .list span {
    display: block;
    width: 100%;
    height: 25px;
    color: #ffffff;
    font-size: 18px;
    line-height: 25px;
  }

  .stepper_btn {
    background: #24aded;
    background: -webkit-linear-gradient(to right, #24aded, #108dc7);
    background: linear-gradient(to right, #24aded, #108dc7);
    height: 100%;
    border-radius: 2px;
    color: #ffffff;
    font-size: 12px;
    line-height: 25px;
    cursor: pointer;
    border: none;
    transition: all 300ms ease-in-out;
    flex: 0.2;
    text-align: center;
  }

  .stepper_btn:active {
    transform: translateY(1px);
  }

  .disabledivclick {
    pointer-events: none;
  }

  .table-fixed {
    width: 100%;
    caption-side: bottom;
  }

  .table-fixed tbody {
    display: block;
    height: 100%;
    overflow: auto;
    -ms-overflow-style: none;
    scrollbar-width: none;
  }

  .table-fixed tbody::-webkit-scrollbar {
    display: none;
  }

  .table-fixed thead,
  .table-fixed tbody tr {
    display: table;
    width: 100%;
  }

  .table-fixed td,
  th {
    text-align: center;
    vertical-align: middle;
    width: 33%;
  }

  .table-fixed caption {
    margin-top: 20px;
  }

  .divparenttable {
    display: flex;
    justify-content: center;
    align-items: center;
  }
  #startlocations::before {
    content: "";
    position: absolute;
    width: 100%;
    height: 2px; 
    background-color: #108dc7; 
    z-index: 1;
    margin: -20px 0;
}
  #startlocations::after {
    content: "Start Location";
    position: absolute;
    left: 50%;
    transform: translate(-50%, -50%);
    background-color: #24aded;
    padding: 0 10px; 
    z-index: 2;
    margin: -20px 0;
}
  #endlocations::before {
    content: "";
    position: absolute;
    width: 100%;
    height: 2px; 
    background-color: #108dc7; 
    z-index: 1;
    margin: -20px 0;
}
  #endlocations::after {
    content: "End Location";
    position: absolute;
    left: 50%;
    transform: translate(-50%, -50%);
    background-color: #24aded;
    padding: 0 10px; 
    z-index: 2;
    margin: -20px 0;
}
	#startlocations,
#endlocations {
  position: relative;
}
  </style>
</head>
<body>
  <div class="minecraft-block-path-finder-main noselect">
    <div style="margin-top:30px; margin-bottom:10px;">
     
      <div id="startlocations" class="minecraft-block-path-finder-cards00">
        <div class="minecraft-block-path-finder-card00 minecraft-block-path-finder-blocks">
          <div style="font-size:22px; color : white;">
            <div class="tool-input">
              <input id="startX" type="number" oninput="CalcUpdateOutput()" placeholder="enter value">
            </div>
          </div>
          <div style="margin-top:-5px; color : white;">X-Coordinate</div>
        </div>
  
        <div class="minecraft-block-path-finder-card00 minecraft-block-path-finder-blocks">
          <div style="font-size:22px; color : white;">
  
            <div class="tool-input">
              <input id="startY" type="number" oninput="CalcUpdateOutput()" placeholder="enter value">
            </div>
  
          </div>
          <div style="margin-top:-5px; color : white;">Y-Coordinate</div>
        </div>
        <div class="minecraft-block-path-finder-card00 minecraft-block-path-finder-blocks">
          <div style="font-size:22px; color : white;">
  
            <div class="tool-input">
              <input id="startZ" type="number" oninput="CalcUpdateOutput()" placeholder="enter value">
            </div>
  
          </div>
          <div style="margin-top:-5px; color : white;">Z-Coordinate</div>
        </div>
      </div>
      <div id="endlocations" class="minecraft-block-path-finder-cards00" style="margin: 50px 0px 0px 0px;">
        <div class="minecraft-block-path-finder-card00 minecraft-block-path-finder-blocks">
          <div style="font-size:22px; color : white;">
            <div class="tool-input">
              <input id="endX" type="number" oninput="CalcUpdateOutput()" placeholder="enter value">
            </div>
          </div>
          <div style="margin-top:-5px; color : white;">X-Coordinate</div>
        </div>
  
        <div class="minecraft-block-path-finder-card00 minecraft-block-path-finder-blocks">
          <div style="font-size:22px; color : white;">
  
            <div class="tool-input">
              <input id="endY" type="number" oninput="CalcUpdateOutput()" placeholder="enter value">
            </div>
  
          </div>
          <div style="margin-top:-5px; color : white;">Y-Coordinate</div>
        </div>
        <div class="minecraft-block-path-finder-card00 minecraft-block-path-finder-blocks">
          <div style="font-size:22px; color : white;">
  
            <div class="tool-input">
              <input id="endZ" type="number" oninput="CalcUpdateOutput()" placeholder="enter value">
            </div>
  
          </div>
          <div style="margin-top:-5px; color : white;">Z-Coordinate</div>
        </div>
      </div>
      <div class="minecraft-block-path-finder-cards00">
        <div class="minecraft-block-path-finder-card00 minecraft-block-path-finder-blocks">
          <div style="font-size:22px; color : white;">
  
            <div class="tool-input">
              <input id="spacing" type="number" oninput="CalcUpdateOutput()" placeholder="enter value (set to 1 for solid walls/ramps)">
            </div>
  
          </div>
          <div style="margin-top:-5px; color : white;">Block Spacing</div>
        </div>
      </div>
    </div>
    <div id="calc-console" oncontextmenu="return false;" class="divparenttable minecraft-block-path-finder-click-blocks ">
    </div>
  </div>
  <script src="script.js">
  	    let startX = parseInt(document.getElementById("startX").value);
        let startY = parseInt(document.getElementById("startY").value);
        let startZ = parseInt(document.getElementById("startZ").value);
        let endX = parseInt(document.getElementById("endX").value);
        let endY = parseInt(document.getElementById("endY").value);
        let endZ = parseInt(document.getElementById("endZ").value);
        let spacing = parseInt(document.getElementById("spacing").value);

  let debounceTimer;

function debounce(func, delay) {
    clearTimeout(debounceTimer);
    debounceTimer = setTimeout(func, delay);
}

function CalcUpdateOutput() {
    debounce(() => {
        let startX = parseInt(document.getElementById("startX").value);
        let startY = parseInt(document.getElementById("startY").value);
        let startZ = parseInt(document.getElementById("startZ").value);
        let endX = parseInt(document.getElementById("endX").value);
        let endY = parseInt(document.getElementById("endY").value);
        let endZ = parseInt(document.getElementById("endZ").value);
        let spacing = parseInt(document.getElementById("spacing").value);

        let calcConsole = document.getElementById("calc-console");
        let blockPositions = '';
        let hasMessage = false;

        if (isNaN(startX) || isNaN(startY) || isNaN(startZ) || isNaN(endX) || isNaN(endY) || isNaN(endZ) || isNaN(spacing)) {
            blockPositions = "Please enter all coordinates and spacing.";
            hasMessage = true;
        } else if (spacing < 1) {
            blockPositions = "Block spacing must be at least 1.";
            hasMessage = true;
        } else {
            let dx = Math.abs(endX - startX);
            let dy = Math.abs(endY - startY);
            let dz = Math.abs(endZ - startZ);
            let maxLength = Math.max(dx, dy, dz);
            let currentStep = 0;

            function calculateNextBlock() {
                if (currentStep <= maxLength) {
                    let x = Math.round(startX + currentStep * (endX - startX) / maxLength);
                    let y = Math.round(startY + currentStep * (endY - startY) / maxLength);
                    let z = Math.round(startZ + currentStep * (endZ - startZ) / maxLength);
                    blockPositions += `#${currentStep / spacing + 1}: ${x}, ${y}, ${z}<br>`;
                    calcConsole.innerHTML = blockPositions;
                    currentStep += spacing;
                    setTimeout(calculateNextBlock, 0);
                }
            }

            calculateNextBlock();
        }

        if (hasMessage) {
            calcConsole.innerHTML = blockPositions;
            calcConsole.classList.add("divparenttable");
        } else {
            calcConsole.classList.remove("divparenttable");
        }
    }, 300);
}

document.addEventListener("DOMContentLoaded", function(event) { CalcUpdateOutput(); });        
  </script>
</body>
</html>
const data = ['car', 'car', 'truck', 'truck', 'bike', 'walk', 'car', 'van', 'bike', 'walk', 'car', 'van', 'car', 'truck', 'pogostick'];

    const transportation = data.reduce((total, item) => {

      if(!total[item]){
        total[item] = 0
      }

      total[item]++
      
      return total

    },{})

    console.log(transportation)
 const people = [
      'Bernhard, Sandra', 'Bethea, Erin', 'Becker, Carl', 'Bentsen, Lloyd', 'Beckett, Samuel', 'Blake, William', 'Berger, Ric', 'Beddoes, Mick', 'Beethoven, Ludwig',
      'Belloc, Hilaire', 'Begin, Menachem', 'Bellow, Saul', 'Benchley, Robert', 'Blair, Robert', 'Benenson, Peter', 'Benjamin, Walter', 'Berlin, Irving',
      'Benn, Tony', 'Benson, Leana', 'Bent, Silas', 'Berle, Milton', 'Berry, Halle', 'Biko, Steve', 'Beck, Glenn', 'Bergman, Ingmar', 'Black, Elk', 'Berio, Luciano',
      'Berne, Eric', 'Berra, Yogi', 'Berry, Wendell', 'Bevan, Aneurin', 'Ben-Gurion, David', 'Bevel, Ken', 'Biden, Joseph', 'Bennington, Chester', 'Bierce, Ambrose',
      'Billings, Josh', 'Birrell, Augustine', 'Blair, Tony', 'Beecher, Henry', 'Biondo, Frank'
    ];




 let sortedPeople = [];

   for(person of people){
   const name = person.split(',').reverse().join(' ').trim();
   sortedPeople.push(name)
   }

   console.log(sortedPeople)
function removeTransition(e){
  const keys = [...document.querySelectorAll('.key')];
  keys.forEach((key) => key.addEventListener('transitionend', function(e){
    // console.log(e.propertyName)
    e.propertyName === 'transform' ? key.classList.remove('playing') : null;
  }))
}

// use the load listener
window.addEventListener('load', removeTransition)
// if something is true then execute the code on the left, otherwise return null
e.propertyName === 'transform' ? key.classList.remove('playing') : null;
<script type="text/javascript">
  document.addEventListener('DOMContentLoaded', function () {
    var link = document.getElementById('exit-intent-popup-trigger');


    function handleClick(e) {
      e.preventDefault();
    }


    link.addEventListener('click', handleClick);


    function triggerClick() {
      link.click();
      sessionStorage.setItem('eventTriggered', 'true');
    }

    // בדיקה האם המכשיר הוא נייד
    var isMobile = /Mobi|Android/i.test(navigator.userAgent);

    if (isMobile) {

      if (sessionStorage.getItem('eventTriggered') !== 'true') {
        setTimeout(triggerClick, 8000); 
      }
    } else {

      document.addEventListener('mousemove', function(e) {
        if (sessionStorage.getItem('eventTriggered') !== 'true') {
 
          if (e.clientY < 45) {
            triggerClick();
            document.removeEventListener('mousemove', arguments.callee);
            sessionStorage.setItem('eventTriggered', 'true');  
          }
        }
      });
    }
  });
</script>
const videoPlayers = document.getElementsByClassName('video-stream html5-main-video');
var videoPlayerss = videoPlayers[0]
var startTimes = 30
var endTimes = 68
var startTimes2 = 90
var endTimes2 = 150
var startTimes3 = 185
var endTimes3 = 270
videoPlayerss.currentTime = startTimes;
videoPlayerss.play();
videoPlayerss.addEventListener('timeupdate', () => {
  if (videoPlayerss.currentTime > endTimes && videoPlayerss.currentTime < startTimes2 ) {
    videoPlayerss.currentTime = startTimes2;
  } else if (videoPlayerss.currentTime > endTimes2 && videoPlayerss.currentTime < startTimes3 ) {
    videoPlayerss.currentTime = startTimes3;
  } else if (videoPlayerss.currentTime > endTimes3) {
    videoPlayerss.currentTime = startTimes;
  } 
});
var elementss2 = document.getElementsByClassName("ud-real-toggle-input");
//console.log(elementss2)
for (var i = 0; i < elementss2.length; i++) {
  if (!elementss2[i].hasAttribute("checked")) {
    console.log(elementss2[i]);
      elementss2[i].disabled = false;
      elementss2[i].click()
  }
}
var elementss2 = document.getElementsByClassName("contents");
//console.log(elementss2)
for (var i = 0; i < elementss2.length; i++) {
 elementss2[i].style = "display: none;";  
}
import $ from 'jquery';

class Header {
	constructor(element) {
		this.$element = $(element);
		this.$burger = this.$element.find('.header__burger');
		this.$Nav = this.$element.find('.nav-main');
		this.$hasSub = this.$element.find('.menu-item-has-children');
		this.$menuArrow = this.$element.find('.dropdown-arv-cont');
		this.$menuBg = this.$element.find('.header__menu-bg');
		this.init();
	}

	// headerPadding() {
	// 	if (!this.$element.hasClass('header--transperant')) {
	// 		let hHeight = this.$element.height();
	// 		$('.main-wrapper').css({ 'padding-top': hHeight });
	// 	}
	// }

	init() {
		// $(document).ready(() => {
		// 	this.headerPadding();
		// });

		$(window).on('resize load', () => {
			this.$element.addClass('loaded');
		});

		$(window).on('scroll', () => {
			if ($(window).scrollTop() > 100) {
				$('.header').addClass('sticky');
			} else {
				$('.header').removeClass('sticky');
			}
		});

		$(document).on(
			'click',
			'.menu-item-has-children .dropdown-arv-cont',
			function () {
				$(this).closest('li').toggleClass('active');
			},
		);

		this.$burger.on('click', (e) => {
			e.preventDefault();
			if ($(e.currentTarget).hasClass('opened')) {
				$(e.currentTarget).removeClass('opened').attr('aria-expanded', 'false');
				this.$Nav.slideUp(300).parent().removeClass('active');
				$('.menu-item-has-children .dropdown-arv-cont').removeClass('active');
				$('body').css('overflow-y', 'visible');
				$('.dropdown-arv-cont')
					.closest('li')
					.children('.sub-menu')
					.removeClass('active');
			} else {
				$(e.currentTarget).addClass('opened').attr('aria-expanded', 'true');
				this.$Nav.slideDown(300).parent().toggleClass('active');
				$('body').css('overflow-y', 'hidden');
			}
		});

		this.$menuBg.on('click', (e) => {
			e.preventDefault();
			this.$burger.removeClass('opened').attr('aria-expanded', 'false');
			this.$Nav.slideUp(300).parent().removeClass('active');
		});

		$(document).on('click', '.dropdown-arv-cont', function (e) {
			e.preventDefault();
			if ($(this).hasClass('active')) {
				$(this).removeClass('active');
				$(this).closest('li').children('.sub-menu').removeClass('active');
			} else {
				$(this).addClass('active');
				$(this).closest('li').children('.sub-menu').addClass('active');
			}
		});
	}
}

$('[data-header]').each((index, element) => new Header(element));
var contentSlider = $('.blog-slider__cont');
		var imageSlider = $('.blog-slider__slider');

		contentSlider.owlCarousel({
			items: 1,
			loop: true,
			dots: false,
			nav: false,
			mouseDrag: false,
			touchDrag: false,
		});

		imageSlider.owlCarousel({
			loop: true,
			dots: true,
			nav: false,
			items: 1,
			margin: 30,
			responsive: {
				320: {
					items: 1,
				},
				576: {
					items: 2,
				},
			},
		});

		imageSlider.on('changed.owl.carousel', function (event) {
			var currentIndex = event.relatedTarget.relative(event.item.index);
			contentSlider.trigger('to.owl.carousel', [currentIndex]);
		});
//Without payload
export const moveRight = () => ({
	type: MOVE_RIGHT
});

//With payload
export const moveRight = (data: string) => ({
	type: MOVE_RIGHT,
	payload: data
});
function* performAction() {
    yield put({
        type: COPY_DATA,
        payload: "Hello"
    });
}
// postcss.config.js
const { join } = require('path');

module.exports = {
  plugins: {
    tailwindcss: {
      config: join(__dirname, 'tailwind.config.js'),
    },
    autoprefixer: {},
  },
};
var xmlResponse = '<?xml version="1.0" encoding="UTF-8"?> <data code="0" name="piece-shipment-list" request-id="f1fc982b-fd81-4b63-92ae-eb60d1dd9262"> <data airway-bill-number="" delivery-event-flag="1" dest-country="DE" division="DPEED" domestic-id="" error-status="0" event-country="DE" event-location="" ice="DLVRD" identifier-type="2" international-flag="0" leitcode="" matchcode="" name="piece-shipment" order-preferred-delivery-day="false" origin-country="DE" pan-recipient-address="Heinrich-Brüning-Str. 7 53113 Bonn" pan-recipient-city="53113 Bonn" pan-recipient-name="Deutsche Post DHL" pan-recipient-postalcode="53113" pan-recipient-street="Heinrich-Brüning-Str. 7" piece-code="00340434161094022115" piece-customer-reference="" piece-id="8e464a3e-219a-459b-823b-07d9d92732e3" piece-identifier="340434161094022115" product-code="00" product-key="" product-name="DHL PAKET (parcel)" pslz-nr="5066934803" recipient-city="53113 Bonn" recipient-id="5" recipient-id-text="different person present" recipient-name="Kraemer" recipient-street="Heinrich-Brüning-Str. 7" ric="OTHER" routing-code-ean="" ruecksendung="false" searched-piece-code="00340434161094022115" searched-ref-no="" shipment-code="" shipment-customer-reference="" shipment-height="0.0" shipment-length="0.0" shipment-weight="0.0" shipment-width="0.0" shipper-address="" shipper-city="" shipper-name="No sender data has been transferred to DHL." shipper-street="" short-status="Delivery successful" standard-event-code="ZU" status="The shipment has been successfully delivered" status-liste="0" status-timestamp="18.03.2016 10:02" upu=""> <data _build-time="2017-01-14 19:56:42.000775" leitcode="5311304400700" name="piece-event-list" order-preferred-delivery-day="false" piece-id="8e464a3e-219a-459b-823b-07d9d92732e3" piece-identifier="340434161094022115" pslz-nr="5066934803" routing-code-ean="" ruecksendung="false"> <data event-country="Germany" event-location="Bremen" event-short-status="Posting at PACKSTATION" event-status="The shipment has been posted by the sender at the PACKSTATION" event-text="The shipment has been posted by the sender at the PACKSTATION" event-timestamp="17.03.2016 11:43" ice="SHRCU" name="piece-event" ric="PCKST" ruecksendung="false" standard-event-code="ES" /> <data event-country="Germany" event-location="Bremen" event-short-status="Transportation to parcel center of origin" event-status="The shipment has been taken from the PACKSTATION for onward transportation" event-text="The shipment has been taken from the PACKSTATION for onward transportation" event-timestamp="17.03.2016 13:53" ice="LDTMV" name="piece-event" ric="MVMTV" ruecksendung="false" standard-event-code="AA" /> <data event-country="Germany" event-location="" event-short-status="Pick-up successful" event-status="The shipment has been picked up" event-text="The shipment has been picked up" event-timestamp="17.03.2016 13:55" ice="PCKDU" name="piece-event" ric="PUBCR" ruecksendung="false" standard-event-code="AE" /> <data event-country="Germany" event-location="Bremen" event-short-status="Parcel center of origin" event-status="The shipment has been processed in the parcel center of origin" event-text="The shipment has been processed in the parcel center of origin" event-timestamp="17.03.2016 15:49" ice="LDTMV" name="piece-event" ric="MVMTV" ruecksendung="false" standard-event-code="AA" /> <data event-country="Germany" event-location="Neuwied" event-short-status="Destination parcel center" event-status="The shipment has been processed in the destination parcel center" event-text="The shipment has been processed in the destination parcel center" event-timestamp="18.03.2016 03:35" ice="ULFMV" name="piece-event" ric="UNLDD" ruecksendung="false" standard-event-code="EE" /> <data event-country="" event-location="" event-short-status="In delivery" event-status="The shipment has been loaded onto the delivery vehicle" event-text="The shipment has been loaded onto the delivery vehicle" event-timestamp="18.03.2016 09:00" ice="SRTED" name="piece-event" ric="NRQRD" ruecksendung="false" standard-event-code="PO" /> <data event-country="Germany" event-location="Bonn" event-short-status="Delivery successful" event-status="The shipment has been successfully delivered" event-text="The shipment has been successfully delivered" event-timestamp="18.03.2016 10:02" ice="DLVRD" name="piece-event" ric="OTHER" ruecksendung="false" standard-event-code="ZU" /> </data> </data> </data>';

// Parse the XML response
var parser = new XMLDocument2();
parser.parseXML(xmlResponse);

// Get the value of the "short-status" attribute from the <data> element
var shortStatus = parser.getNode('/data/data').getAttribute('short-status');;

// Print the value of the "short-status" attribute
gs.info("Short Status: " + shortStatus);
const str = 'abcab';

const freq = (str) => 
    str.split('').reduce((obj, char) => {
        obj[char] = (obj[char] || 0) + 1;
        return obj;
    }, {})

console.log(freq('zCu3zezCaX'));
function getDirection() {

  

  // DECLARE SHEET

  var ss = SpreadsheetApp.getActiveSpreadsheet();

  var mapSheet = ss.getSheetByName("MAP");

  

  var start = mapSheet.getRange('B1').getValue();

  var end = mapSheet.getRange('B2').getValue();

  

  var directions = Maps.newDirectionFinder()

    .setOrigin(start)

    .setDestination(end)

    .setMode(Maps.DirectionFinder.Mode.DRIVING)

    .getDirections();

  

  //Logger.log(directions.routes[0].legs[0].duration.text);

 

  //CLEAR QUESTION AND ANSWER

  mapSheet.getRange('A6:D500').clear();

  

  //NEXT ROW ON MAP SHEET

  var nextRow = mapSheet.getLastRow() + 1;

 

  for (var i = 0; i < directions.routes[0].legs.length; i++) 

  {

    var endAddress = directions.routes[0].legs[i].end_address;

    var startAddress = directions.routes[0].legs[i].start_address;

    var distance = directions.routes[0].legs[i].distance.text;

    var duration = directions.routes[0].legs[i].duration.text;

    

    mapSheet.getRange(nextRow,1).setValue(startAddress);

    mapSheet.getRange(nextRow,2).setValue(endAddress);

    mapSheet.getRange(nextRow,3).setValue(distance);

    mapSheet.getRange(nextRow,4).setValue(duration);

    

    nextRow++;

 

  }

}
/*!
 * Color mode toggler for Bootstrap's docs (https://getbootstrap.com/)
 * Copyright 2011-2023 The Bootstrap Authors
 * Licensed under the Creative Commons Attribution 3.0 Unported License.
 */
 
(() => {
  'use strict';
 
  const storedTheme = localStorage.getItem('theme');
 
  const getPreferredTheme = () => {
    if (storedTheme) {
      return storedTheme;
    }
 
    return window.matchMedia('(prefers-color-scheme: dark)').matches
      ? 'dark'
      : 'light';
  };
 
  const setTheme = function (theme) {
    if (
      theme === 'auto' &&
      window.matchMedia('(prefers-color-scheme: dark)').matches
    ) {
      document.documentElement.setAttribute('data-bs-theme', 'dark');
    } else {
      document.documentElement.setAttribute('data-bs-theme', theme);
    }
  };
 
  setTheme(getPreferredTheme());
 
  const showActiveTheme = (theme, focus = false) => {
    const themeSwitcher = document.querySelector('#bd-theme');
 
    if (!themeSwitcher) {
      return;
    }
 
    const themeSwitcherText = document.querySelector('#bd-theme-text');
    const activeThemeIcon = document.querySelector('.theme-icon-active use');
    const btnToActive = document.querySelector(
      `[data-bs-theme-value="${theme}"]`
    );
    const svgOfActiveBtn = btnToActive
      .querySelector('svg use')
      .getAttribute('href');
 
    document.querySelectorAll('[data-bs-theme-value]').forEach((element) => {
      element.classList.remove('active');
      element.setAttribute('aria-pressed', 'false');
    });
 
    btnToActive.classList.add('active');
    btnToActive.setAttribute('aria-pressed', 'true');
    activeThemeIcon.setAttribute('href', svgOfActiveBtn);
    const themeSwitcherLabel = `${themeSwitcherText.textContent} (${btnToActive.dataset.bsThemeValue})`;
    themeSwitcher.setAttribute('aria-label', themeSwitcherLabel);
 
    if (focus) {
      themeSwitcher.focus();
    }
  };
 
  window
    .matchMedia('(prefers-color-scheme: dark)')
    .addEventListener('change', () => {
      if (storedTheme !== 'light' || storedTheme !== 'dark') {
        setTheme(getPreferredTheme());
      }
    });
 
  window.addEventListener('DOMContentLoaded', () => {
    showActiveTheme(getPreferredTheme());
 
    document.querySelectorAll('[data-bs-theme-value]').forEach((toggle) => {
      toggle.addEventListener('click', () => {
        const theme = toggle.getAttribute('data-bs-theme-value');
        localStorage.setItem('theme', theme);
        setTheme(theme);
        showActiveTheme(theme, true);
      });
    });
  });
})();
<p>Copyright &copy; <script>document.write(new Date().getFullYear())</script> Your Name All Rights Reserved</p>
function isPartialMatch(stokenM, tagM) {
			const minLength = Math.min(stokenM.length, tagM.length);
			for (let i = 0; i < minLength; i++) {
				if (stokenM[i] !== tagM[i]) {
					// If characters don't match, return false
					return false;
				}
			}
			return true;
		}
@page
@model WebUI.Pages.Shared.ServitörVyModel

@{
    var swedishTimeZone = TimeZoneInfo.FindSystemTimeZoneById("Central European Standard Time");
    var nowSwedishTime = TimeZoneInfo.ConvertTimeFromUtc(DateTime.UtcNow, swedishTimeZone);
}

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Välj Bord</title>
    <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css">
    <link href="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/css/bootstrap.min.css" rel="stylesheet">
    <link href="https://maxcdn.bootstrapcdn.com/bootstrap/5.3.0/css/bootstrap.min.css" rel="stylesheet">
    <link rel="stylesheet" type="text/css" href="css/StyleFoodMenu.css" asp-append-version="true">

    <style>
        .table-button {
            width: 100%;
            margin-bottom: 20px;
            height: 60px;
        }

        .iframe-container {
            width: 100%;
            border: none;
            height: 400px;
        }
    </style>
</head>

<div class="container" style="display:flex; flex-direction:column;" >

    <button class="btn btn-warning" id="offcanvasbutton" style=" color:black;" type="button" data-bs-toggle="offcanvas" data-bs-target="#offcanvasBottom" aria-controls="offcanvasBottom">Toggle bottom offcanvas</button>

    <div id="accordion">
        <div class="card">
            
                    <button class="btn btn-warning" data-toggle="collapse" data-target="#collapseOne" aria-expanded="true" aria-controls="collapseOne">
                        Välj bord
                    </button>
             
            <div id="collapseOne" class="collapse show" aria-labelledby="headingOne" data-parent="#accordion">
                <div class="card-body">
                    Välj bord

                    <select id="tableSelect" class="form-control">
                        @foreach (var table in Model.TablesProp)
                        {
                            <option value="@table.Number">@table.Number</option>
                        }
                    </select>

                    <button class="btn btn-success" id="confirmButton">Bekräfta </button>
                </div>
            </div>
        </div>
        <div class="card">

            <button class="btn btn-warning collapsed" data-toggle="collapse" data-target="#collapseThree" aria-expanded="false" aria-controls="collapseThree">
              Beställning
            </button>

            <div id="collapseThree" class="collapse" aria-labelledby="headingThree" data-parent="#accordion">
                <div class="card-body">
                    <button class="btn btn-success" id="orderButton">Ny Beställning </button>
                </div>
            </div>
        </div>
        <div class="card">
           
                    <button class="btn btn-warning collapsed" data-toggle="collapse" data-target="#collapseTwo" aria-expanded="false" aria-controls="collapseTwo">
                        Välj maträtt
                    </button>
                
            <div id="collapseTwo" class="collapse" aria-labelledby="headingTwo" data-parent="#accordion">
                <div class="card-body">
                    <div class="row special-list">
                        @if (Model.Foods != null)
                        {
                            foreach (var food in Model.Foods)
                            {
                                if ((food.PublishDate == null || food.PublishDate <= nowSwedishTime) &&
                                (food.RemoveDate == null || food.RemoveDate > nowSwedishTime))
                                {
                                    <div class="col-lg-4 col-md-6 special-grid menu-card" data-food-id="@food.Id"
                                         data-food-title="@food.Title" data-food-description="@food.Description"
                                         data-food-price="@food.Price" data-food-category="@food.Category"
                                         data-food-ingredients="@food.Ingredients">
                                        <div class="gallery-single fix">
                                            @if (!string.IsNullOrEmpty(food.ImagePath))
                                            {
                                                <img src="@Url.Content($"~/{food.ImagePath}")" class="img-fluid" alt="Bild av @food.Title">
                                            }
                                            <div class="why-text">
                                                @if (User.IsInRole("Admin") || User.IsInRole("Owner"))
                                                {
                                                    <div class="options-menu" style="display:none;">
                                                    </div>
                                                }
                                                <h4>@food.Title</h4>

                                                <button class="button btn-success add-to-cart" id="addtocart" data-food-id="@food.Id">Lägg till</button>
                                                <h5>@food.Price kr</h5>
                                            </div>
                                        </div>
                                    </div>
                                }
                            }
                        }
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

<title>Offcanvas Button Example</title>
<!-- Include Bootstrap CSS -->

<div class="offcanvas offcanvas-bottom" tabindex="-1" id="offcanvasBottom" aria-labelledby="offcanvasBottomLabel">
    <div class="offcanvas-header">
        <h5 class="offcanvas-title" id="offcanvasBottomLabel">Offcanvas bottom</h5>
        <button type="button" class="btn-close" data-bs-dismiss="offcanvas" aria-label="Close"></button>
    </div>
    <div class="offcanvas-body small" id="ordersContainer">
        
    </div>

    

</div>

<button class="btn-btn btn-success" id="confirmorder"> Bekräfta beställning </button>

<!-- Include Bootstrap JavaScript (popper.js and bootstrap.js are also required) -->
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/2.11.6/umd/popper.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/5.3.0/js/bootstrap.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.5.2/js/bootstrap.min.js"></script>
<script>
    document.getElementById('confirmButton').addEventListener('click', function () {
        // Get the selected table number
        var selectedTableNumber = document.getElementById('tableSelect').value;

        // Do something with the selected table number
        console.log('Selected table number:', selectedTableNumber);

        // You can perform further actions here, such as sending the selected table number to the server
        // using AJAX or submitting a form.
    });

    let orderId;
    let guest;
    let waiter;
    let date;
    let receit
    let status
    let table;


         //POST Order
        document.getElementById('orderButton').addEventListener('click', function () {
            // Prepare the order data

        const currentDate = new Date();
            const orderData = {
             table:document.getElementById('tableSelect').value
            };
            
            // Send the order data to the server using Fetch API
            fetch('/api/Order/', {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json'
                },
                body: JSON.stringify(orderData)
            })
                .then(response => {
                    if (!response.ok) {
                        throw new Error('Network response was not ok');
                    }
                    return response.json();
                })
                .then(data => {
                    // Handle the response data if needed
                    console.log('Order created successfully:', data);
                    console.log('Order Id: ', data.id)
                    console.log('Order Guest: ', data.guest)
                    console.log('Order Table: ', data.table )
                    console.log('Order WaiterId: ', data.waiterId)
                    console.log('Order Date: ', data.date)
                    console.log('Order ReceitId: ', data.receitId)
                    console.log('Order Status: ', data.status)

                    date = order.date;
                    orderId = data.id;
                    guest = data.guest;
                    table = data.table;
                    waiter = data.waiterId;
                    receit = data.receitId;
                    status = data.status;

                    // You can redirect or show a success message here
                })
                .catch(error => {
                    console.error('There was a problem with your fetch operation:', error);
                    // Handle errors appropriately, e.g., show an error message to the user
                });
        });

    //POST OrderItem
    document.querySelectorAll('.add-to-cart').forEach(item => {
        item.addEventListener('click', function () {
            var foodId = $(this).data('food-id');
            var data = {
                FoodId: foodId,
                Quantity: 1,
                OrderId: orderId
            };

            fetch('/api/OrderItem/', {
                method: 'POST',
                headers: {
                    'Content-Type': 'application/json'
                },
                body: JSON.stringify(data)
            })
                .then(response => {
                    if (!response.ok) {
                        throw new Error('Network response was not ok');
                    }
                    return response.json();
                })
                .then(data => {
                    // Handle success
                    console.log('Success:', data);
                })
                .catch(error => {
                    // Handle error
                    console.error('Error:', error);
                });
        });
    });


    //GET OrderItems
    function fetchOrders() {
        fetch(`/api/OrderItem/?columnName=orderid&columnValue=${orderId}`)
            .then(response => {
                if (!response.ok) {
                    throw new Error('Network response was not ok');
                }
                return response.json();
            })
            .then(data => {
                // Work with the JSON data retrieved from the endpoint
                const ordersContainer = document.getElementById('ordersContainer');

                // Clear existing content
                ordersContainer.innerHTML = '';

                // Iterate over the data and append to the container
                data.forEach(order => {
                    const orderElement = document.createElement('div');
                    orderElement.textContent = `Quantity: ${order.quantity} FoodId:${order.foodId}, OrderId: ${order.orderId}`;
                    ordersContainer.appendChild(orderElement);
                });
            })
            console.log()
            .catch(error => {
                console.error('There was a problem with the fetch operation:', error);
            });
    }



    document.getElementById('confirmorder').addEventListener('click', function () {


        const itemIdToUpdate = orderId; // Example item ID to update
        const updatedData = {
            id : orderId,
            guest : guest,
            table : table,
            waiterId : waiter,
            date : date,
            receitId : receit,
            confirmed : true,
            status : status
            // Example updated data for the item
            
            // Add other fields as needed
        };

        // Construct the URL targeting the specific item
        const url = `/api/Order/${itemIdToUpdate}`;

        // Prepare the request object
        const requestOptions = {
            method: 'PUT', // or 'PATCH' depending on the server's API
            headers: {
                'Content-Type': 'application/json', // Specify content type as JSON
                // Add any other headers if required
            },
            body: JSON.stringify(updatedData), // Convert data to JSON format
        };

        // Send the request
        fetch(url, requestOptions)
            .then(response => {
                if (!response.ok) {
                    throw new Error('Network response was not ok');
                }
                return response.json(); // Parse response JSON if needed
            })
            .then(data => {
                // Handle successful response (if required)
                console.log('Item updated successfully:', data);
            })
            .catch(error => {
                // Handle errors
                console.error('There was a problem updating the item:', error);
            });

        

    });

    // Attach an event listener to the button
    const refreshButton = document.getElementById('addtocart');
    refreshButton.addEventListener('click', fetchOrders);
    const refreshButton2 = document.getElementById('offcanvasbutton');
    refreshButton2.addEventListener('click', fetchOrders);
</script>




let text = "Hello world, welcome to the universe.";
let result = text.includes("elq");

const regex = new RegExp("elq", "gim");
let result1 = regex.test(text);
function test({ a = "foo", b = "bar", c = "baz" } = {}) {
  console.log(a + b + c);
}

test({c: "blub"});	// foobarblub
const string = "hello jigar krishiv kajiwala this is a test. alright jigar kajiwala";
const sarray = ["jigar", "krishiv"];

// Create a regular expression pattern to match any word from the array
const regex = new RegExp("\\b(" + sarray.join("|") + ")\\b", "g");

// Use the match() method with the regular expression to find all matches
const matches = string.match(regex);
console.log(matches);


const arrayWithDuplicates = [1,{name: ["krishiv", "kajiwala"]}], "Jigar", "jigar", 3, 4, 5, 5];
const uniqueArray = [...new Set(arrayWithDuplicates)];
console.log(uniqueArray); // Output: [1, 2, 3, 4, 5]

const arrayy = ["jigar kajiwala", "krishiv kajiwala"];
const arrMatch = regex.test(arrayy.join(" "));
console.log(arrMatch);

const arrayyjoin = arrayy.join(" @ ");
console.log("---",arrayyjoin);
const arrayysplit = arrayyjoin.split(" @ ");
console.log("---",arrayysplit);
const matchesarr = arrayyjoin.match(regex);
console.log(matchesarr);

console.log(arrayWithDuplicates[1].name[name.length - 1]);
javascript: (function () {
  if (
    location.host.includes("youtube.com") &&
    (location.pathname.startsWith("/channel") ||
      location.pathname.startsWith("/@"))
  ) {
    const feed = document
      .querySelector("link[title='RSS']")
      .getAttribute("href");
    if (feed.includes(".xml")) {
      let toClip = prompt("copy to clipboard", feed);
      navigator.clipboard.writeText(toClip);
    } else {
      window.alert("failed");
    }
  } else {
    window.alert("current page isn't YouTube Channel");
  }
})();
sizeguide/script/release-theme walmart 

script/release sizeguide
export function TailwindIndicator() {
  if (process.env.NODE_ENV === "production") return null

  return (
    <div className="fixed bottom-1 left-1 z-50 flex h-6 w-6 items-center justify-center rounded-full bg-gray-800 p-3 font-mono text-xs text-white">
      <div className="block sm:hidden">xs</div>
      <div className="hidden sm:block md:hidden">sm</div>
      <div className="hidden md:block lg:hidden">md</div>
      <div className="hidden lg:block xl:hidden">lg</div>
      <div className="hidden xl:block 2xl:hidden">xl</div>
      <div className="hidden 2xl:block">2xl</div>
    </div>
  )
}
const tweetId = location.pathname.match(/status\/([0-9]+)/)[1];
const imgElements = document.querySelectorAll(`a[href*="${tweetId}"] img`);
let imgArray = new Array();
for (const imgElement of imgElements) {
  let imgSrc = imgElement
    .getAttribute("src")
    .replace(/\?format=/, ".")
    .replace(/&.+/, "");
  imgArray.push(imgSrc);
}
var links = document.links;
for (let i = 0, linksLength = links.length ; i < linksLength ; i++) {
  if (links[i].hostname !== window.location.hostname) {
    links[i].target = '_blank';
    links[i].rel = 'noreferrer noopener';
  }
}             
javascript: (function () {
  const query = prompt("Search App Store", document.getSelection().toString());
  if (query) {
    window.open(
      `itms-apps://search.itunes.apple.com/WebObjects/MZSearch.woa/wa/search?media=software&term=${encodeURIComponent(query)}`,
    );
  }
})();
const genDTO = (className, id) => {
  var fields = [
    'package com.voltcash.integrations.opencp.common.dto; ',
    '\n',
    'import com.voltcash.integrations.common.dto.BaseJsonEntity; ',
    'import lombok.Data;',
     '\n',
    '@Data ',
    'public class '+ className +' extends BaseJsonEntity{ ' 
  ];
 var declarations = $('#' + id).parentNode.querySelectorAll('td:first-child strong').forEach(e => fields.push('private String ' + e.innerHTML + ';'));
  
  fields.push('}');
  
  console.log(fields.join('\n'));
}
/*** +page.svelte **/

<script>
	import { onMount } from 'svelte';
	
	let Thing;
	
	const sleep = ms => new Promise(f => setTimeout(f, ms));
	
	onMount(async () => {
		await sleep(1000); // simulate network delay
		Thing = (await import('./Thing.svelte')).default;
	});
</script>

<svelte:component this={Thing} answer={42}>
	<p>some slotted content</p>
</svelte:component>



/*** Thing.svelte ***/

<script>
	export let answer;
</script>

<p>the answer is {answer}</p>
<slot></slot>

/* +page.svelte **/

<script>
    import Component2 from "./Component2.svelte";
    
    function abc() {
    	const element = new Component2({
    		target: document.querySelector('#abc')
    	})
    }
</script>

<div id="abc" use:abc>dsaads</div>

/* Component2.svelte **/

<script>
  export let params;
</script>
<div>
	<table>
		<tr>
			<td>dsadasads</td>
		</tr>
	</table>
</div>
/* +page.svelte **/

<script>
    import Component2 from "./Component2.svelte";
    
    function abc() {
    	const element = new Component2({
    		target: document.querySelector('#abc')
    	})
    }
</script>

<div id="abc" use:abc>dsaads</div>

/* Component2.svelte **/

<script>
  export let params;
</script>
<div>
	<table>
		<tr>
			<td>dsadasads</td>
		</tr>
	</table>
</div>
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>

   <script>
        function createChart(data) {
            const ctx = document.getElementById('myChart');
            new Chart(ctx, {
                type: 'bar',
                data: {
                    labels: data.labels,
                    datasets: [{
                        label: data.label,
                        data: data.data1,
                       backgroundColor: '#003f5c ',
                        borderWidth: 2
                    },
                          {
                        label: '# of Views',
                        data: data.data2,
                       backgroundColor: '#ff6e54 ',
                        borderWidth: 3
                    }    
                              
                              ]
                },
                options: {
                    scales: {
                        y: {
                            beginAtZero: true
                        }
                    }
                }
            });
        }
    </script>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <script>
        $(document).ready(function() {
            $("#nama_suami").autocomplete({
                source: function(request, response) {
                    $.ajax({
                        url: "fetch_nama_lengkap.php",
                        type: "POST",
                        dataType: "json",
                        data: {
                            term: request.term
                        },
                        success: function(data) {
                            response(data);
                        }
                    });
                },
                minLength: 2 // Jumlah minimum karakter sebelum autocomplete mulai
            });
        });
    </script>
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Edit Staff</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
    <script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script>
    <link rel="stylesheet" href="https://code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css">
<link rel="stylesheet" href="adminer.css" />

<script>
        $(document).ready(function() {
            $("#nama_suami").autocomplete({
                source: function(request, response) {
                    $.ajax({
                        url: "fetch_nama_lelaki.php",
                        type: "POST",
                        dataType: "json",
                        data: {
                            term: request.term
                        },
                        success: function(data) {
                            response(data);
                        }
                    });
                },
                minLength: 2, // Jumlah minimum karakter sebelum autocomplete mulai
                select: function(event, ui) {
                    $("#nama_suami").val(ui.item.value);
                    $.ajax({
                        url: "fetch_id_number.php",
                        type: "POST",
                        dataType: "json",
                        data: {
                            nama_lengkap: ui.item.value
                        },
                        success: function(data) {
                            $("#id_suami").val(data.id_number);
                        }
                    });
                    return false;
                }
            });
        });
    </script>
console.log('Hi')

const func = () => {
    return new Promise(resolve => {
        setTimeout(() => {
            console.log('2nd Hi')
            resolve();
        }, 2000)
    })
}

(async () => {
    await func();
    console.log('3rd Hi');
})();
<!--HTML Code-->
  
  <form id="contact_form" method="post">
    <div class="row">
        <div class="col-md-12 form-group g-mb-20">
            <input type="text" class="form-control" id="txtContactName" name="txtContactName" placeholder="Full Name" tabindex="201" required>
            <div class="error-message" id="txtContactName-error"></div>
        </div>

        <div class="col-md-12 form-group g-mb-20">
            <input type="email" class="form-control" id="txtContactEmail" name="txtContactEmail" placeholder="Email Address" tabindex="202" required>
            <div class="error-message" id="txtContactEmail-error"></div>
        </div>

        <div class="col-md-12 form-group g-mb-20">
            <input type="text" class="form-control" id="txtContactPhone" name="txtContactPhone" placeholder="Contact Number" maxlength="10" tabindex="203" required>
            <div class="error-message" id="txtContactPhone-error"></div>
        </div> 

        <div class="col-md-12 form-group g-mb-40">
            <textarea class="form-control" id="txtContactMessage" name="txtContactMessage" rows="7" placeholder="Message" maxlength="160" tabindex="204" required></textarea>
            <div class="error-message" id="txtContactMessage-error"></div>
        </div>
    </div>
    <input type="submit" class="btn btn-lg u-btn-primary g-font-weight-600 g-font-size-default rounded-0 text-uppercase g-py-15 g-px-30" id="btnContactSubmit" name="btnContactSubmit" value="SUBMIT">
</form>

<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.19.3/jquery.validate.min.js"></script>
<script>
	
</script>
<script>
    $(document).ready(function() {
        $('#contact_form').validate({
            rules: {
                txtContactName: "required",
                txtContactEmail: {
                    required: true,
                    email: true
                },
                txtContactPhone: {
                    required: true,
                    digits: true,
                    maxlength: 10
                },
                txtContactMessage: "required"
            },
            messages: {
                txtContactName: "Please enter your full name",
                txtContactEmail: {
                    required: "Please enter your email address",
                    email: "Please enter a valid email address"
                },
                txtContactPhone: {
                    required: "Please enter your contact number",
                    digits: "Please enter only digits",
                    maxlength: "Please enter a valid 10-digit phone number"
                },
                txtContactMessage: "Please enter your message"
            },
            errorPlacement: function(error, element) {
                error.appendTo(element.closest('.form-group').find('.error-message'));
            },
            submitHandler: function(form) {
                var formData = $(form).serialize();
                $.ajax({
                    type: 'POST',
                    url: 'mail.php',
                    data: formData,
                    success: function(response) {
                        $('#contact_form').append('<div class="success-message" style="color: green;">Message sent successfully!</div>');
                        setTimeout(function() {
                            $('#contact_form')[0].reset();
                        }, 4000);
                    },
                    error: function(xhr, status, error) {
                        console.error(xhr.responseText);
                        alert('Error: ' + xhr.responseText);
                    }
                });
            }
        });
    });
</script>

PHP Miler folder should be there
Create folder name with mail.php and add below code there 
<?php
// Include PHPMailer autoload file

use PHPMailer\PHPMailer\PHPMailer;
use PHPMailer\PHPMailer\SMTP;
use PHPMailer\PHPMailer\Exception;

// Load Composer's autoloader
require 'phpmailer/vendor/autoload.php';

// Check if the form is submitted
if ($_SERVER["REQUEST_METHOD"] == "POST") {
    // Retrieve form data
    $name = $_POST['txtContactName'];
    $email = $_POST['txtContactEmail'];
    $phone = $_POST['txtContactPhone'];
    $message = $_POST['txtContactMessage'];

    // Initialize PHPMailer
    $mail = new PHPMailer(true);
    try {
        // SMTP settings
		$mail->IsSMTP();        // Sets Mailer to send message using SMTP
		$mail->SMTPAuth = true; // Authentication enabled
		$mail->SMTPSecure = 'tls'; // Secure transfer enabled REQUIRED for Gmail
		$mail->Host = 'smtp-relay.brevo.com';
		$mail->Port = 587;
		$mail->Username = 'advanceindiaprojectltd@gmail.com';
		$mail->Password = 'xsmtpsib-e66045ab99d2f28608d548ca33a5a3ac8cc14a6896d682cbdc5418c80154b5eb-6B5QJOyT18GvbzmZ';
		$mail->SMTPOptions = array(
			'ssl' => array(
				'verify_peer' => false,
				'verify_peer_name' => false,
				'allow_self_signed' => true
			)
		);

        // Recipients
        $mail->setFrom($email, $name);
        $mail->addAddress('roshan@teamvariance.com'); // Add recipient email address

        // Content
        $mail->isHTML(true);
        $mail->Subject = 'Contact Form Submission';
		// Construct HTML table for the email body
        $message = '
            <h3 align="center">Details</h3>
            <table border="1" width="100%" cellpadding="5" cellspacing="5">
                <tr>
                    <td width="30%">Name</td>
                    <td width="70%">' . $name . '</td>
                </tr> 
                <tr>
                    <td width="30%">Email</td>
                    <td width="70%">' . $email . '</td>
                </tr>
                <tr>
                    <td width="30%">Phone</td>
                    <td width="70%">' . $phone . '</td>
                </tr>
                <tr>
                    <td width="30%">Message</td>
                    <td width="70%">' . $message . '</td>
                </tr>
            </table>
        ';
        $mail->Body = $message;

        // Send email
        $mail->send();
        
        // Return success message
        echo "success";
    } catch (Exception $e) {
        // Return error message
        echo "error";
    }
}
?>



  var newStafflist = [];
  for (var i = 0; i < staffdata.length; i++) {
    var department = staffdata[i][4];
    if (depData.flat().includes(department) && department !== "") {
      newStafflist.push([staffdata[i][2], staffdata[i][3], staffdata[i][4], staffdata[i][5], staffdata[i][8], staffdata[i][9], staffdata[i][10], staffdata[i][7]]);
    }
  }
 const countries = [...new Set(cities)].map(elem => (
  {
    country: elem.country,
    emoji: elem.emoji
  } 
));
function extractProductData() {
  const getValueById = (id) => document.getElementById(id) ? document.getElementById(id).value : 'N/A';
  const data = {
    productName: getValueById("productName"),
    item_id: getValueById("productId"),
    price: getValueById("priceInput"),
    item_brand: 'Solskjerming AS', // Questo valore è statico come da tua richiesta
    item_category: getValueById("modelId"),
    item_variant: getValueById("fabricInput"),
  };
  console.log(data);
  return data;
}

extractProductData();
function main() {
  // Settings
  var campaignName = "Campaign Name";
  var significantOverlapChange = 0.1; // 10% change triggers an alert
  var lookbackPeriod = "LAST_30_DAYS";
  var recipientEmail = "your_email@example.com";

  // Get Auction Insights Data
  var report = AdsApp.report(
    "SELECT Domain, ImpressionShare " +
    "FROM AUCTION_INSIGHTS " +
    "WHERE CampaignName = '" + campaignName + "' " +
    "DURING " + lookbackPeriod);

  var rows = report.rows();
  var competitorData = {};

  // Store Impression Share Data
  while (rows.hasNext()) {
    var row = rows.next();
    competitorData[row['Domain']] = row['ImpressionShare'];
  }

  // Compare with Current Data (Simplified)
  var currentCampaign = AdsApp.campaigns().withCondition("Name = '" + campaignName + "'").get().next();
  var competitors = currentCampaign.targeting().auctionInsights().get().results();

  competitors.forEach(function(competitor) {
    var domain = competitor.getDomain();
    var currentImpressionShare = competitor.getStats().getImpressionShare();

    if (domain in competitorData) {
      var previousImpressionShare = competitorData[domain];
      var change = Math.abs(currentImpressionShare - previousImpressionShare);

      if (change >= significantOverlapChange) {
        // Send an alert - Customize this part
        var subject = "Competitor Alert: " + domain;
        var body = "Impression share for " + domain + " has changed significantly in campaign: " + campaignName;
        MailApp.sendEmail(recipientEmail, subject, body);
      }
    }
  });
}
function main() {
  // Settings
  var campaignName = "Campaign Name";
  var metricsToTrack = ["Clicks", "Conversions", "Cost"]; 
  var changeThreshold = 0.2; // 20% increase or decrease
  var comparisonPeriod = "LAST_7_DAYS"; // Timeframe for comparison
  var recipientEmail = "your_email@example.com";

  // Get the campaign
  var campaign = AdsApp.campaigns().withCondition("Name = '" + campaignName + "'").get().next();

  // Fetch performance data for the current and previous periods
  var currentStats = campaign.getStatsFor("TODAY");
  var previousStats = campaign.getStatsFor("PREVIOUS_" + comparisonPeriod); 

  // Analyze each metric
  for (var i = 0; i < metricsToTrack.length; i++) {
    var metric = metricsToTrack[i];
    var currentValue = currentStats.get(metric);
    var previousValue = previousStats.get(metric);

    var changePercentage = (currentValue - previousValue) / previousValue;

    // Send alert if the change is significant
    if (Math.abs(changePercentage) >= changeThreshold) {
      var direction = changePercentage > 0 ? "increased" : "decreased";
      var subject = "Performance Alert: " + campaignName;
      var body = metric + " has " + direction + " by " + (changePercentage * 100).toFixed(0) + "% compared to the previous " + comparisonPeriod.toLowerCase() + ".";
      MailApp.sendEmail(recipientEmail, subject, body);
    }
  }
}
function main() {
  // Threshold Settings
  var campaignBudgetThreshold = 0.8; // Alert when 80% of the budget is spent
  var sendEmailAlerts = true; // Set to false to disable emails
  var recipientEmail = "your_email@example.com";

  // Get all active campaigns
  var campaignIterator = AdsApp.campaigns()
      .withCondition("Status = ENABLED")
      .get();

  while (campaignIterator.hasNext()) {
    var campaign = campaignIterator.next();
    var campaignName = campaign.getName();
    var budget = campaign.getBudget().getAmount();
    var spendToDate = campaign.getStatsFor("TODAY").getCost();

    var spentPercentage = spendToDate / budget;

    if (spentPercentage >= campaignBudgetThreshold && sendEmailAlerts) {
      var subject = "Budget Alert: " + campaignName;
      var body = "Campaign " + campaignName + " has spent " + (spentPercentage * 100).toFixed(0) + "% of its budget.";
      MailApp.sendEmail(recipientEmail, subject, body);
    }
  }
}
function main() {
  // Campaign Selection
  var campaignName = "Campaign Name"; 

  // Ad Rotation Strategy (Choose one and adjust)
  var rotationStrategy = {
    // 1. Rotate Evenly: Give all ads equal chance
    // "ROTATE_EVENLY" 
    
    // 2. Optimize for Clicks: Show higher-performing ads more often 
    // "OPTIMIZE_FOR_CLICKS"

    // 3. Optimize for Conversions: Prioritize ads driving conversions
    // "OPTIMIZE_FOR_CONVERSIONS" 

    // 4. Rotate Indefinitely: Don't automatically select an ad 
    "ROTATE_INDEFINITELY" 
  }

  // Get the specified campaign
  var campaign = AdsApp.campaigns().withCondition("Name = '" + campaignName + "'").get().next();

   // Set the ad rotation type
  var adRotationType = campaign.getAdRotationType();

  // Apply only if rotation settings need to be changed
  if (adRotationType != rotationStrategy) {
    campaign.setAdRotationType(rotationStrategy); 
  }
}
function main() {
  // Settings
  var campaignName = "Campaign Name"; 
  var negativeKeywordListName = "Auto-Generated Negatives";
  var dateRange = "LAST_30_DAYS";

  // Find or create the negative keyword list
  var negativeKeywordList = AdsApp.negativeKeywordLists().withCondition("Name = '" + negativeKeywordListName + "'").get().next();
  if (!negativeKeywordList) {
    negativeKeywordList = AdsApp.newNegativeKeywordListBuilder()
      .withName(negativeKeywordListName)
      .build()
      .getResult();
  }

  // Get search query data 
  var queryReport = AdsApp.searchQueryPerformanceReport()
      .forCampaign(campaignName)
      .withCondition("Status = ENABLED") // Focus on active keywords
      .during(dateRange);

  var queryRows = queryReport.rows();
  while (queryRows.hasNext()) {
    var queryRow = queryRows.next();
    var searchQuery = queryRow.getQuery();
    var impressions = queryRow.getImpressions();
    var clicks = queryRow.getClicks();
    var cost = queryRow.getCost();

    // Add query as a negative keyword if it meets your criteria 
    // Example: High impressions, low CTR, high cost
    if (impressions > 100 && clicks == 0 && cost > 10) {
      negativeKeywordList.addNegativeKeyword(searchQuery);
    } 
  }

  // Apply the negative keyword list to the campaign
  var campaign = AdsApp.campaigns().withCondition("Name = '" + campaignName + "'").get().next();
  campaign.addNegativeKeywordList(negativeKeywordList);
}
function main() {
  // Settings
  var campaignName = "Campaign Name"; 
  var negativeKeywordListName = "Auto-Generated Negatives";
  var dateRange = "LAST_30_DAYS";

  // Find or create the negative keyword list
  var negativeKeywordList = AdsApp.negativeKeywordLists().withCondition("Name = '" + negativeKeywordListName + "'").get().next();
  if (!negativeKeywordList) {
    negativeKeywordList = AdsApp.newNegativeKeywordListBuilder()
      .withName(negativeKeywordListName)
      .build()
      .getResult();
  }

  // Get search query data 
  var queryReport = AdsApp.searchQueryPerformanceReport()
      .forCampaign(campaignName)
      .withCondition("Status = ENABLED") // Focus on active keywords
      .during(dateRange);

  var queryRows = queryReport.rows();
  while (queryRows.hasNext()) {
    var queryRow = queryRows.next();
    var searchQuery = queryRow.getQuery();
    var impressions = queryRow.getImpressions();
    var clicks = queryRow.getClicks();
    var cost = queryRow.getCost();

    // Add query as a negative keyword if it meets your criteria 
    // Example: High impressions, low CTR, high cost
    if (impressions > 100 && clicks == 0 && cost > 10) {
      negativeKeywordList.addNegativeKeyword(searchQuery);
    } 
  }

  // Apply the negative keyword list to the campaign
  var campaign = AdsApp.campaigns().withCondition("Name = '" + campaignName + "'").get().next();
  campaign.addNegativeKeywordList(negativeKeywordList);
}
function main() {
  // 1. Data Source: Google Sheet
  var spreadsheetUrl = "https://docs.google.com/spreadsheets/d/..."; // Replace with your spreadsheet URL
  var dataSheet = SpreadsheetApp.openByUrl(spreadsheetUrl).getSheetByName("CampaignData");

  // 2. Campaign Template Settings
  var campaignNameTemplate = "Dynamic Campaign - {Product Category}";
  var budget = 100; // Daily budget
  // ... other desired campaign settings ...

  // 3. Iterate through Spreadsheet Data 
  var dataRange = dataSheet.getDataRange().getValues(); 
  dataRange.shift(); // Remove header row

  for (var i = 0; i < dataRange.length; i++) {
    var productCategory = dataRange[i][0]; 
    // ... extract other data from the row ...

    // 4. Create New Campaign (Simplified)
    var campaignBuilder = AdsApp.newCampaignBuilder();
    var campaign = campaignBuilder
      .withName(campaignNameTemplate.replace("{Product Category}", productCategory))
      .withBudget({ amount: budget, currencyCode: "USD" })
      .build()
      .getResult(); 

    // 5. (Optional) Create Ad Groups, Keywords, Ads based on Spreadsheet Data
  }
}
function main() {
  // Define your schedule
  var dayOfWeek = "MONDAY"; 
  var startTime = "00:00"; // Midnight
  var endTime = "06:00";  // 6 AM

  // Campaign Selection 
  var campaignName = "Weekend Campaign";

  // Get the current day of the week and time (adjust the timezone if needed)
  var timeZone = "America/Los_Angeles";  
  var date = new Date();
  var currentDayOfWeek = Utilities.formatDate(date, "EEEE", timeZone);
  var currentTime = Utilities.formatDate(date, "HH:mm", timeZone);

  // Pause or enable the campaign based on the schedule
  var campaign = AdsApp.campaigns().withCondition("Name = '" + campaignName + "'").get().next();

  if (currentDayOfWeek == dayOfWeek && currentTime >= startTime && currentTime <= endTime) {
    campaign.pause();
  } else {
    campaign.enable();
  }
}
function main() {
  // Get your OpenWeatherMap API key (Sign up for a free account)
  var apiKey = "YOUR_API_KEY"; 

  // Target location (City or Zip Code)
  var targetLocation = "Los Angeles, CA"; 

  // Campaign Selection 
  var campaignName = "Summer Campaign"; 

  // Bid adjustments based on temperature
  var temperatureRanges = {
    "below_70": -0.1,   // Decrease bid by 10% if below 70°F
    "70_to_85": 0.0,    // No change between 70°F and 85°F 
    "above_85": 0.2     // Increase bid by 20% if above 85°F
  };

  // Fetch current weather data
  var weatherUrl = "https://api.openweathermap.org/data/2.5/weather?q=" + targetLocation + "&appid=" + apiKey + "&units=imperial";
  var weatherResponse = UrlFetchApp.fetch(weatherUrl);
  var weatherData = JSON.parse(weatherResponse.getContentText());

  // Extract temperature from the data
  var currentTemperature = weatherData.main.temp;

  // Determine the appropriate bid modifier
  var bidModifier;
  for (var range in temperatureRanges) {
    if (currentTemperature >= range.split("_")[1]) {
      bidModifier = temperatureRanges[range];
      break;
    }
  }

  // Apply the bid modifier at the campaign level
  var campaign = AdsApp.campaigns().withCondition("Name = '" + campaignName + "'").get().next();
  campaign.setBidModifier(1 + bidModifier); 
}
function main() {
  // Performance Thresholds
  var maxCPA = 50;  // Your maximum acceptable cost per acquisition
  var minClicks = 50; // Minimum clicks for reliable data

  // Timeframe: Analyze recent performance
  var dateRange = "LAST_30_DAYS"; 

  // Campaign Selection 
  var campaignName = "Campaign Name";

  // Get all the keywords in the specified campaign
  var keywordIterator = AdsApp.campaigns()
      .withCondition("Name = '" + campaignName + "'")
      .get()
      .keywords();

  while (keywordIterator.hasNext()) {
    var keyword = keywordIterator.next();

    // Gather keyword performance data
    var stats = keyword.getStatsFor(dateRange);
    var conversions = stats.getConversions();
    var cost = stats.getCost();
    var clicks = stats.getClicks();
    var currentCPA = cost / conversions;

    // Pause keywords if they exceed max CPA and have sufficient data
    if (currentCPA > maxCPA && clicks >= minClicks) {
      keyword.pause();
    }
  }
}
function main() {
  // Target Locations (Adjust this list!)
  var targetLocations = [
    "California", 
    "New York", 
    "Texas"
  ];

  // Bid Adjustments (Positive = Increase, Negative = Decrease)
  var locationBidModifiers = {
    "California": 0.20,  // Increase bids by 20% in California
    "New York": 0.10,    // Increase bids by 10% in New York
    "Texas": -0.15       // Decrease bids by 15% in Texas
  };

  // Campaign Selection 
  var campaignName = "Campaign Name"; 

  // Get all the location criteria within the specified campaign
  var locationIterator = AdsApp.campaigns()
      .withCondition("Name = '" + campaignName + "'")
      .get()
      .targeting().locations();

 while (locationIterator.hasNext()) {
    var location = locationIterator.next();
    var locationName = location.getName(); 

    // Check if the location is in our target list
    if (targetLocations.indexOf(locationName) !== -1) {
      var bidModifier = locationBidModifiers[locationName];

      // Set the bid modifier only if it exists
      if (bidModifier) {
        location.setBidModifier(1 + bidModifier); 
      }
    }
  }
}
function main() {
  // Performance Metrics
  var targetCPA = 30; // Your desired cost per acquisition
  var minConversions = 10; // Minimum conversions for reliable data

  // Timeframe: Analyze recent performance with flexibility
  var dateRange = "LAST_30_DAYS"; 

  // Campaign Selection 
  var campaignName = "Campaign Name"; 

  // Get relevant keywords
  var keywordIterator = AdsApp.campaigns()
      .withCondition("Name = '" + campaignName + "'")
      .get()
      .keywords();

  while (keywordIterator.hasNext()) {
    var keyword = keywordIterator.next();

    // Gather keyword performance data
    var stats = keyword.getStatsFor(dateRange);
    var conversions = stats.getConversions();
    var cost = stats.getCost();
    var currentCPA = cost / conversions;

    // Apply Bid Adjustments Only If Data is Sufficient 
    if (conversions >= minConversions) {
      if (currentCPA > targetCPA) {
        // Decrease bid if CPA is higher than target
        var newBid = keyword.getMaxCpc() * 0.9; // Example: Reduce by 10%
        keyword.setMaxCpc(newBid);
      } else if (currentCPA < targetCPA) {
        // Increase bid if CPA is lower than target
        var newBid = keyword.getMaxCpc() * 1.1; // Example: Increase by 10%
        keyword.setMaxCpc(newBid);
      }
    } 
  }
}
function main() {
  // Set your timezone for accurate time-based adjustments 
  var timeZone = "America/Los_Angeles";  

  // Get the current hour in your specified timezone
  var currentHour = Utilities.formatDate(new Date(), "HH", timeZone);

  // Define your campaign name (replace with your actual campaign)
  var campaignName = "Campaign Name"; 

  // Get all the keywords in the specified campaign
  var keywordIterator = AdsApp.campaigns()
      .withCondition("Name = '" + campaignName + "'")
      .get()
      .keywords();

  while (keywordIterator.hasNext()) {
    var keyword = keywordIterator.next();

    // Example: Increase bids by 20% during peak hours (9 AM to 5 PM)
    if (currentHour >= 9 && currentHour <= 17) {
      keyword.setBidModifier(1.2);  // Increase bid by 20%
    } else {
      keyword.setBidModifier(1.0);  // Reset bid to normal
    }
  }
}

/**
 * Format a given date object to YYYY-MM-DD format.
 * 
 * @param {Date} date The date object to be formatted.
 * @returns {string} The formatted date in YYYY-MM-DD format.
 */
function formatDateToYYYYMMDD(date) {
    const year = date.getFullYear();
    const month = String(date.getMonth() + 1).padStart(2, '0');
    const day = String(date.getDate()).padStart(2, '0');
    const formattedDate = `${year}-${month}-${day}`;
    return formattedDate;
}
//rpf のgsap スライド

const listWrapperEl = document.querySelector('.side-scroll-list-wrapper');
const listEl = document.querySelector('.side-scroll-list');

gsap.to(listEl, {
  x: () => -(listEl.clientWidth - listWrapperEl.clientWidth),
  ease: 'none',
  scrollTrigger: {
    trigger: '.side-scroll',
    start: 'top 20%',
    end: () => `+=${listEl.clientWidth - listWrapperEl.clientWidth}`,
    scrub: true,
    pin: true,
    anticipatePin: 1,
    invalidateOnRefresh: true,
    onUpdate: (scrollTrigger) => {
      const activeIndex = Math.round(scrollTrigger.progress * (listEl.children.length - 1));
      yourOtherFunction(activeIndex);
    },
  },
});



function yourOtherFunction(activeIndex) {
  const myList = document.querySelectorAll('.side-scroll-list li');
  const variableToCompare = activeIndex;

  myList.forEach((item, index) => {
    if (index === variableToCompare) {
      item.classList.add('active');
    }
    else {
      item.classList.remove('active');
    }
  });
  const myList2 = document.querySelectorAll('.side-scroll-status li');
  myList2.forEach((item, index) => {
    if (index === variableToCompare) {
      item.classList.add('current');
    }
    else {
      item.classList.remove('current');
    }
  });
}

var percentTime;
var tick;
var progressBar = document.querySelector('.js-mainvisual-progress');

var mySwiper = new Swiper('.js-mainvisual-container', {
	effect: 'slide',
	loop: true,
	speed: 400,
	slidesPerView: 1,
	spaceBetween: 30,
	grabCursor: false,
	watchOverflow: true,
	easing: 'ease-in',
	keyboard: {
		enabled: true,
		onlyInViewport: true
	},
	watchOverflow: true,
	watchSlidesProgress: true,
	watchSlidesVisibility: true,
	roundLengths: true,
	autoplay: {
		delay: 3000,
		disableOnInteraction: false
	},
	on: {
		slideChange: function () {
			var swiper = this;
			var defaultSlideDelay = swiper.params.autoplay.delay;
			var currentIndex = swiper.realIndex + 1;
			var currentSlide = swiper.slides[currentIndex];
			var currentSlideDelay = currentSlide.getAttribute('data-swiper-autoplay') || defaultSlideDelay;
			updateSwiperProgressBar(progressBar, currentSlideDelay);
		}
	}
});

function updateSwiperProgressBar(bar, slideDelay) {

	let tick;

	function startProgressBar() {
		resetProgressBar();
		tick = requestAnimationFrame(progress);
	}

	function progress() {

		var timeLeft = getTimeout(mySwiper.autoplay.timeout);

		if (mySwiper.autoplay.running && !mySwiper.autoplay.paused) {
			percentTime = sanitisePercentage(100 - (timeLeft / slideDelay * 100));
			bar.style.width = percentTime + 5 + '%';
			bar.style.transition = 'width ' + percentTime + 'ms linear';

			if (percentTime > 100) {
				resetProgressBar();
			}
		}

		if (mySwiper.autoplay.paused) {
			percentTime = 0;
			bar.style.width = 0;
		}

		tick = requestAnimationFrame(progress);
	}

	function resetProgressBar() {
		percentTime = 0;
		bar.style.width = 0;
		cancelAnimationFrame(tick);
	}

	startProgressBar();

}

<div class="p-mainvisual slider">
					<div class="p-mainvisual__container swiper-container js-mainvisual-container">
					  	<div class="p-mainvisual__swiper swiper-wrapper">
					  		<div class="p-mainvisual__swiper-slide swiper-slide"  data-swiper-autoplay="3000">
					  		  <img src="<%= getRelativePath('/assets/images/index/img_index_mv1.jpg'); %>" alt="">
					  		</div>
					  		<div class="p-mainvisual__swiper-slide swiper-slide"  data-swiper-autoplay="3000">
					  		  <img src="<%= getRelativePath('/assets/images/index/img_index_mv2.jpg'); %>" alt="">
					  		</div>
					  		<div class="p-mainvisual__swiper-slide swiper-slide"  data-swiper-autoplay="3000">
					  		  <img src="<%= getRelativePath('/assets/images/index/img_index_mv3.jpg'); %>" alt="">
					  		</div>
					  	</div>
				  

						<div class="p-mainvisual__progress swiper-hero-progress js-mainvisual-progress"></div>

						<div class="p-mainvisual__text">人と自然に<br class="u-only-sp">快適な環境を創る</div>
						<div class="p-mainvisual__buttons">
							<span class="c-rounded-btn js-pop-up">
								<picture>
									<source srcset="<%= getRelativePath('/assets/images/index/img_index_mv_logo1-sp.png.webp'); %>" media="(max-width:767px)" type="image/webp">
									<source srcset="<%= getRelativePath('/assets/images/index/img_index_mv_logo1-sp.png'); %>" media="(max-width:767px)">
									<source srcset="<%= getRelativePath('/assets/images/index/img_index_mv_logo1.png.webp'); %>" type="image/webp">
									<img src="<%= getRelativePath('/assets/images/index/img_index_mv_logo1.png'); %>" alt="エコアクション21認定登録">
								</picture>
							</span>
							<div class="c-rounded-btn__group">
								<a href="https://www3.sanpainet.or.jp/chukan2/company/19452/" target="_blank" class="c-rounded-btn">
									<picture>
										<source srcset="<%= getRelativePath('/assets/images/index/img_index_mv_logo2-sp.png.webp'); %>" media="(max-width:767px)" type="image/webp">
										<source srcset="<%= getRelativePath('/assets/images/index/img_index_mv_logo2-sp.png'); %>" media="(max-width:767px)">
										<source srcset="<%= getRelativePath('/assets/images/index/img_index_mv_logo2.png.webp'); %>" type="image/webp">
										<img src="<%= getRelativePath('/assets/images/index/img_index_mv_logo2.png'); %>" alt="優良産廃処理業者認定">
									</picture>
								</a>
								<a href="<%= getRelativePath('/certificate/'); %>" class="c-rounded-btn">
									<picture>
										<source srcset="<%= getRelativePath('/assets/images/index/img_index_mv_logo3-sp.png.webp'); %>" media="(max-width:767px)" type="image/webp">
										<source srcset="<%= getRelativePath('/assets/images/index/img_index_mv_logo3-sp.png'); %>" media="(max-width:767px)">
										<source srcset="<%= getRelativePath('/assets/images/index/img_index_mv_logo3.png.webp'); %>" type="image/webp">
										<img src="<%= getRelativePath('/assets/images/index/img_index_mv_logo3.png'); %>" alt="許可証一覧">
									</picture>	  
								</a>
							</div>
						</div>
					</div> 
				  </div>
​

var getTimeout = function(){var e=setTimeout,b={};setTimeout=function(a,c){var d=e(a,c);b[d]=[Date.now(),c];return d};return function(a){return(a=b[a])?Math.max(a[1]-Date.now()+a[0],0):NaN}}();

​

function sanitisePercentage(i){

    return Math.min(0,Math.max(0,i));

}

​

// Slider

var percentTime;
10
var tick;

var progressBar = document.querySelector('.swiper-hero-progress');

​

var mySwiper = new Swiper('.swiper-container', {

    effect: 'slide',
// got DOM element

const cursor = document.querySelector('#cursor');

const cursorCircle = cursor.querySelector('.cursor__circle');

​

//variables which defines coordinates of 

const mouse = { x: -0, y: -100 }; // mouse pointer's coordinates

const pos = { x: 0, y: 0 }; // cursor's coordinates

const speed = 0.1; // between 0 and 1

​
10
const updateCoordinates = e => {

  mouse.x = e.clientX;
   var swiper = new Swiper('.js-news-swiper', {
      slidesPerView: 'auto',
      centeredSlides: true,
      spaceBetween: 20,
      speed: 1500,
      pagination: {
        el: '.swiper-pagination',
        clickable: true
      },
      navigation: {
        nextEl: '.swiper-button-next',
        prevEl: '.swiper-button-prev'
      },
      autoplay: {
        delay: 2000,
        disableOnInteraction: false
      },
      loop: true,
      watchSlidesProgress: true
    });
    var mySwiper = new Swiper(".js-ticker", {	
        infinite: true,
        loop: true,
        slidesPerView: 'auto',
        speed: 8000,
        spaceBetween: 32,
        centeredSlides: true,
        autoplay: {
          delay: 0,
          disableOnInteraction: false,
          reverseDirection: false,
        },
      });

function diff(start, end) {
    start = document.getElementById("start").value; //to update time value in each input bar
    end = document.getElementById("end").value; //to update time value in each input bar
    
    start = start.split(":");
    end = end.split(":");
    var startDate = new Date(0, 0, 0, start[0], start[1], 0);
    var endDate = new Date(0, 0, 0, end[0], end[1], 0);
    var diff = endDate.getTime() - startDate.getTime();
    var hours = Math.floor(diff / 1000 / 60 / 60);
    diff -= hours * 1000 * 60 * 60;
    var minutes = Math.floor(diff / 1000 / 60);

    return (hours < 9 ? "0" : "") + hours + ":" + (minutes < 9 ? "0" : "") + minutes;
}
/**
 * dateUtils
 * Format Date using php's format string.  Date to/From ymd. Get Today's date as ymd or Date, with no time.
 *
 * @type {{todayYMD: (function(): string), ymdToDate: (function(*): Date), is_ymd: ((function(*): boolean)|*), today: (function(): Date), format: ((function((Date|string|number), string=, string=): string)|*), dateToYMD: (function(*): string), dateToDay: (function(*): Date), setLanguage(*): ({shortMonth, shortDay, longMonth, longDay})}}
 */
const dateUtils = {
    version: "2024-02-22",

    dateToDay: function(date){return new Date((new Date(date)).setHours(0, 0, 0, 0) );
    },

    dateToYMD: function date(date) {return this.dateToDay(date).toISOString().split('T')[0];},

    today: function() {return new Date((new Date()).setHours(0, 0, 0, 0) );},

    todayYMD: function() {return this.today().toISOString().split('T')[0];},

    ymdToDate: function(ymd) {return ymd.length === 10 ? this.dateToDay(ymd) : new Date(ymd); },

    is_ymd: function(value, dateOnly = true) {
        if(value === null || !isNaN(value) || typeof value !== 'string')
            return false;
        if(dateOnly) {
            if(value.length !== 10)
                return false;
            const regex = /^\d\d\d\d[-.\\\/_](0[1-9]|1[0-2])[-.\\\/_](0[1-9]|[1-2][0-9]|3[0|1])$/gm;
            return value.match(regex) !== null;
        }
        if(value.length < 10 || value.length > 27)
            return false;
        const regex =
           /^\d\d\d\d[-.\\\/_](0[1-9]|1[0-2])[-.\\\/_](0[1-9]|[1-2][0-9]|3[0|1])($|([ T]([0-1]\d|2[0-4]):[0-5]\d:[0-5]\d))/gm;
        return value.match(regex) !== null;
    },

    /**
     * Formats a date according to the given format string in PHP style
     *
     * @param {Date|string|number} inputDate - The date to be formatted. Can be a Date object, a date string, or a timestamp.
     * @param {string} [formatPhpStyle="d/M/y"] - The format string to be used for formatting the date. Defaults to "d/M/y"
     *  https://www.php.net/manual/en/datetime.format.php.
     * @param {string} [language="en"] - Englinsh en, Spanish es
     * @returns {string} - The formatted date string.
     * @throws {Error} - If an error occurs during the formatting process.
     */
    format: function(inputDate, formatPhpStyle = "d/M/y", language = "en")  {
        let lang = this.setLanguage(language);
        if(inputDate === null)
            return "";
        try {
            function padZero(value) {return value < 10  ? `0${value}` : `${value}`;}
            let date;
            if(inputDate instanceof Date)
                date = inputDate;
            else if(typeof inputDate === 'object')
                return "[object]";
            else if(isNaN(inputDate))
                date = this.is_ymd(inputDate) ?
                    new Date(`${inputDate}T00:00:00`) : new Date(inputDate);
            else
                date = new Date(inputDate);

            const parts = {
                d: padZero(date.getDate()),
                j: date.getDate(),
                D: lang.shortDay[date.getDay()],
                l: lang.longDay[date.getDay()],
                w: date.getDay(),

                m: padZero(date.getMonth() + 1),
                n: date.getMonth() + 1,
                M: lang.shortMonth[date.getMonth()],
                F: lang.longMonth[date.getMonth()],

                Y: date.getFullYear(),
                y: date.getFullYear().toString().slice(-2),

                H: padZero(date.getHours()),
                G: date.getHours(),
                h: padZero(date.getHours() > 12 ? date.getHours() - 12 : date.getHours()),
                g: date.getHours() > 12 ? date.getHours() - 12 : date.getHours(),
                i: padZero(date.getMinutes()),
                s: padZero(date.getSeconds()),

                a: date.getHours() < 12 ? 'am' : 'pm',
                A: date.getHours() < 12 ? 'AM' : 'PM',
            };

            let skip = false;
            let ret = [];
            for(let i = 0, len = formatPhpStyle.length; i < len; ++i) {
                let c = formatPhpStyle[i];
                if(c === "\\") {
                    skip = true;
                    continue;
                }
                if(skip) {
                    skip = false;
                    ret.push(c);
                    continue;
                }
                ret.push(parts.hasOwnProperty(c) ? parts[c] : c);
            }
            return ret.join("");
        } catch(error) {
            console.log("ERROR: fmt.date arguments:", arguments);
            console.log("       fmt.date error:", error);
            return inputDate;
        }
    },

    setLanguage(language) {
        switch(language.toLowerCase()) {
            case 'es':
                return {
                    longMonth: ['Enero', 'Febrero', 'Marzo', 'Abril', 'Mayo', 'Junio', 'Julio', 'Agosto',
                        'Septiembre', 'Octubre', 'Noviembre', 'Diciembre'],
                    shortMonth: ['Ene', 'Feb', 'Mar', 'Abr', 'May', 'Jun', 'Jul', 'Ago', 'Sep', 'Oct', 'Nov', 'Dic'],
                    longDay: ['Domingo', 'Lunes', 'Martes', 'Miércoles', 'Jueves', 'Viernes', 'Sábado'],
                    shortDay: ['Do', 'Lu', 'Ma', 'Mi', 'Ju', 'Vi', 'Sa'],
                };
            case 'en':
            default:
                return {
                    longMonth: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September',
                        'October', 'November', 'December'],
                    shortMonth: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
                    longDay: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'],
                    shortDay: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],
                };
        }
    },

};
function scrollBanner() {
      jQuery(document).on('scroll', function(){
      var scrollPos = jQuery(this).scrollTop();
        jQuery('.home_banner').css({
          'top' : (scrollPos/4)+'px',
        });
      });    
      }
scrollBanner(); 


// With out function


jQuery(document).ready(function(){
	
	jQuery(window).on('scroll', function(){
		var scrollTop = jQuery(window).scrollTop();
		jQuery('.home_banner').css({'top': (scrollTop/4) +'px'});
		
	});
});
class TLoadComplete{
    constructor( callbackFunc, frequency ){
        this.callback = callbackFunc || (()=>{ console.log("completed")});
        this.frequency = frequency || 500;
    }
 
    start(){
        if (this.started) return;
        this.started = true;
        let me = this;
        this.images = [...document.images];
        this.interval = setInterval(()=>{
            let result = me.images.filter(el => !el.complete).length == 0 && document.fonts.ready;
            if (result) {
                me.callback();
                console.log("completed");
                me.stop();
            }
        }, me.frequency)
    }
 
    stop(){
        clearTimeout(this.interval);
        this.started = false;
    }
}
const waitLoad = ( statusFunc )=>{
    var imagesLoaded=false;
    var fontsLoaded=false;

    let interval = setInterval(()=>{
        fontsLoaded = fontsLoaded || document.fonts.ready;
        imagesLoaded = imagesLoaded || ([...document.images].filter(el => !el.complete).length == 0);
        statusFunc( fontsLoaded && imagesLoaded );
        if (fontsLoaded && imagesLoaded) clearInterval(interval);
    }, 500);
}

// use waitLoad( ( state ) => console.log(state) )
header{
    background-color: #333;
    color: #fff;
    padding: 10px 0;
}

nav ul{
    list-style: none;
    display: flex;
    justify-content: center;
}
nav li{
    margin: 0 20px;
}
nav a{
    text-decoration: none;
    color: #fff;
}
const chatInput = document.querySelector(".chat-input textarea");
const sendChatBtn = document.querySelector(".chat-input span");
const chatbox = document.querySelector(".chatbox");

let userMessage;
const API_KEY = "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";

let createChatLi = (message, className) => {
    // Create a chat <li> element with the passed message and className
    const chatLi = document.createElement("li");
    chatLi.classList.add("chat", className);
    let chatContent = className === "outgoing" ? `<p>${message}</p>` : ` <span class="material-symbols-outlined">
    smart_toy
  </span><p>${message}</p>`;
  chatLi.innerHTML = chatContent;
  return chatLi;
}
const generateResponse = (incomingChatLi) => {
    const API_URL = "https://api.openai.com/v1/chat/completions";
    const messageElement = incomingChatLi.querySelector("p");
    const requestOption = {
        method: "POST",
        headers: {
            "Content-Type" : "application/json",
            "Authorization": `Bearer ${API_KEY}`
        },
        body: JSON.stringify({
            model: "gpt-3.5-turbo",
            messages: [{role: "user", content: userMessage}]
        })
            
        
    }
    // Send POST request to API, get response
    fetch(API_URL, requestOption).then(res => res.json()).then(data => {
        messageElement.textContent = data.choices[0].message.content;
    }).catch((error) => {
        messageElement.textContent = "Oops! Something went horribly wrong. Please try again.";
    })
}

const handleChat = () => {
    userMessage = chatInput.value.trim();
    if(!userMessage) return;

    // Append the user's message to the chatbox
    chatbox.appendChild(createChatLi(userMessage, "outgoing"));

    setTimeout(() => {
        const incomingChatLi = createChatLi("...", "incoming")
        chatbox.appendChild(incomingChatLi);
        generateResponse(incomingChatLi);
    },600);

}
sendChatBtn.addEventListener("click", handleChat)
try {history.replaceState({content: document.title}, document.title, document.location.href);} catch(e) {}
/** Vanilla javascript **/

    // Get the value of the checked radio button, undefined on not checked or not found
   let radioButtonValue = (document.querySelector("input[name='radioName']:checked") || {}).value || undefined

    // Check radio button with value ...
    (document.querySelector("input[name='radioName'][value='A']") || {}).checked=true;

/** jQuery **/

    // Get the value of the checked radio button, undefined on not checked or not found
   let radioButtonValue = $("input[name='radioName']:checked").val();

    // Check radio button with value ...
   $("input[name='radioName'][value='A']").prop('checked',true);
 //HTML





<div class="custom-mouse"></div>





//CSS


.custom-mouse{
    border: none;
    background-color: #fff;
    transform: translate(-50%, -100%);
    width: 20px;
    height: 20px;
    border-radius: 50%;
    position: absolute;
    top: 0;
}



//JS


let customMouse = document.querySelector(".custom-mouse");
window.addEventListener("mousemove", function(details) {
   let xValue = details.clientX;
   let yValue = details.clientY;

   setTimeout(() => {
       customMouse.style.top = `${yValue}px`;
       customMouse.style.left = `${xValue}px`;
         
   }, 100);


});
dataLayer.push({
  ecommerce: {
    currencyCode: "EUR",
    purchase: {
      actionField: {
        coupon: "",
        affiliation: "Online Store",
        transaction_id: 4091243,
        revenue: 5.37,
        new: 1,
        shipping: 4.99,
        id: "4091243",
        option: "paypal_payment_method_handler",
        tax: 1.02
      },
      products: [
        {
          quantity: 1,
          item_name: "Baby-Gießer Glitter",
          item_id: 2000578486402,
          id: "2000578486402",
          name: "Baby-Gießer Glitter",
          type: "product",
          p_id: "",
          variant: "",
          brand: "Simba",
          price: 1.4,
          category: "Sandspielzeug"
        }
      ]
    }
  },
  session-: "380c5d93a281755852731a6997eeff34",
  google_tag_params: {ecomm_totalvalue: 6.39, ecomm_pagetype: "purchase"}
})
 
HTML

 <nav>
      <ul>
          <li class="item">Home</li>
          <li class="item">Content</li>
          <li class="item">About</li>
          <li class="item">Contact Us</li>

      </ul>
  </nav>


  <script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/3.12.5/gsap.min.js"></script>
  <script src="script.js"></script>


CSS


body{
    background-color: #fff;
    overflow: hidden;
}
.container{
    height: 100vh;
    display: flex;
    justify-content: center;
    align-items: center;
    
}
.item{
    color: grey;
    font-size: large;
    font-weight: bolder;
    cursor: pointer;
}


JS


let itemList = document.querySelectorAll(".item");


itemList.forEach(function (item, index) {

    let animation = gsap.to(item, {color: "black",x:3,y: -3, ease: "", duration:0.3, paused:true  })
    
    item.addEventListener("mouseenter", function() {
        animation.play()
    })
    item.addEventListener("mouseleave", function() {
        animation.reverse()
    })
})

const uuid = () => {
  return Date.now().toString(36) + Math.random().toString(36).substr(2);
}

export default uuid;
function replaceURLTextWithLink(text) {
 
            // Put the URL to variable $1 after visiting the URL
            const Rexp =/((http|https|ftp):\/\/[\w?=&.\/-;#~%-]+(?![\w\s?&.\/;#~%"=-]*>))/g;
 
            // Replace the RegExp content by HTML element
            return text.replace(Rexp,
                "<a href='$1' target='_blank'>$1</a>");
}
function MyPage() {
  const [theme, setTheme] = useState('dark');
  return (
    <ThemeContext.Provider value={theme}>
      <Form />
      <Button onClick={() => {
        setTheme('light');
      }}>
        Switch to light theme
      </Button>
    </ThemeContext.Provider>
  );
}
// Avia Layout Builder in custom post types

function avf_alb_supported_post_types_mod( array $supported_post_types )
{
  $supported_post_types[] = 'case_studies';
  return $supported_post_types;
}
add_filter('avf_alb_supported_post_types', 'avf_alb_supported_post_types_mod', 10, 1);

function avf_metabox_layout_post_types_mod( array $supported_post_types )
{
 $supported_post_types[] = 'case_studies';
 return $supported_post_types;
}
add_filter('avf_metabox_layout_post_types', 'avf_metabox_layout_post_types_mod', 10, 1);
import { useLocation } from "react-router-dom";

const ProfileTwo = () => {
  const location = useLocation();
  const data = location.state;

  return (
    <div>
      <p>Name: {data.name}</p>
      <p>Age: {data.age}</p>
      Hello
    </div>
  );
};

export default ProfileTwo;
import { useNavigate } from "react-router-dom";

const ProfileOne = () => {
  const navigate = useNavigate();
  const data = { name: "John", age: 30 };

  const handleClick = () => {
    navigate("/profile-two", { state: data });
  };

  return <button onClick={handleClick}>Go to ProfileTwo</button>;
};

export default ProfileOne;
// importing
import ReactPaginate from 'react-paginate';

// handling the pagination
const [page, setPage] = useState(0);
const handlePageClick = (num) => {
  setPage(num);
};

// fetching all the employee details from the mongoDB database
const [loadedEmployees, setLoadedEmployees] = useState();
useEffect(() => {
  const fetchEmployees = async () => {
    try {
      const responseData = await sendRequest(
        `http://localhost:5000/api/employees/emp?page=${page}`
      );
      setLoadedEmployees(responseData.employees);
    } catch (err) {
      console.log("Error in fetching employees: "+err);
    }
  };
  fetchEmployees();
}, [sendRequest, page]);


// returning this component
<ReactPaginate
  containerClassName="flex gap-2 justify-center mt-4"
  pageClassName="text-gray-500"
  activeClassName="text-gray-900 border-2 border-black px-2"
  previousClassName="text-gray-500"
  nextClassName="text-gray-500"
  breakLabel="..."
  nextLabel="next >"
  onPageChange={(selected) => handlePageClick(selected.selected + 1)}
  pageRangeDisplayed={2}
  marginPagesDisplayed={1}
  pageCount={pageCount}
  previousLabel="< previous"
  renderOnZeroPageCount={null}
/>



// backend - controller methods
const getEmployeeCount = async (req, res, next) => {
  let employeeCount;
  try {
    employeeCount = await Employee.countDocuments();
  } catch (err) {
    const error = new HttpError(
      'Fetching employee count failed, please try again later.',
      500
    );
    return next(error);
  }

  res.json({ employeeCount });
  console.log("DEBUG -- Employee-Controller - Fetching employee count successful!");
};
const getEmployees = async (req, res, next) => {
  const page = req.query.page || 0;
  const employeesPerPage = 2; 

  let allEmployees;
  try {
    allEmployees = await Employee
      .find()
      .skip(page * employeesPerPage)
      .limit(employeesPerPage);
  } catch (err) {
    const error = new HttpError(
      'Fetching Employees failed, please try again later.',
      500
    );
    return next(error);
  }

  if (!allEmployees || allEmployees.length === 0) {
    return next(new HttpError('No employees found.', 404));
  }

  res.json({
    employees: allEmployees.map((emp) => emp.toObject({ getters: true })),
  });
  console.log("DEBUG -- Employee-Controller - Fetching employees successful!");
};
var number;
Console.WriteLine("Enter a number:");
number = Convert.ToInt32(Console.ReadLine());
if (IsPrime(number))
{
    Console.WriteLine("**" + number + " is a prime number**");
}
else
{
    Console.WriteLine("**" + number + " is not a prime number**");
}

public static bool IsPrime(int number)
{
    if (number <= 1) return false;
    if (number == 2) return true;
    if (number % 2 == 0) return false;
    var boundary = (int)Math.Floor(Math.Sqrt(number));
    for (int i = 3; i <= boundary; i += 2)
        if (number % i == 0)
            return false;
    return true;
}
import axios from "axios"; //Check this for more information

const [user, SetUser] = useState({
  name = "",
  username = "",
  email = "",
});

const { name, username, email } = user;

const onInputChange = (e) => {
  setUser({ ...user, [e.target.name]: e.target.value }); //This will append info when type
}

const onSubmit = async (e) => {
  e.preventDefault(); //This will prevent showing info in url.
  await axios.post("https://localhost:8080/user") //Link to backend server
  //We use async and await here to guarantee get the data before submit.
};

<form onSubmit = {(e) => onSubmit(e)}>
  <input
	value={name}
	onChange={(e) => onInputChange(e)}
	/>
</form>
let shelf = ["Think and Grow Rich", "Four-Hour Work Week", "The Power of I AM", "Eat That Frog", "Harry Potter"];
input[type=text],
input[type=password] {
    ...
    width: calc(100% - 20px);
}
   <canvas id="my_canvas" width="250" height="250"></canvas>

//To draw the half circle with canvas
  var ctx = document.getElementById("my_canvas").getContext("2d");
  var al = 0;
  var start = 4.72;
  var cw = ctx.canvas.width;
  var ch = ctx.canvas.height;
  var diff;
  var counter = 0;
  var gradient = ctx.createLinearGradient(0, 0, 0, 250);
  gradient.addColorStop("0.0", "white");
  gradient.addColorStop("1.0", "#ae4e86");
  function progressSim() {
    diff = ((al / 100) * Math.PI * 2 * 10).toFixed(2);
    counter = (al * 0.6).toFixed(0);
    $("#clock_text > span").text(counter);
    ctx.clearRect(0, 0, cw, ch);
    ctx.lineWidth = 55;
    ctx.strokeStyle = gradient;
    ctx.beginPath();
    ctx.arc(125, 130, 80, start, diff / 10 + start, false);
    ctx.stroke();
    if (al >= 50) {
      clearTimeout(sim);
      // Add scripting here that will run when progress completes
    }
    al++;
  }
  var sim = setInterval(progressSim, 30);
});
const truncate = (str, n) => {
  return str?.length > n ? str.substr(0, n - 1) + " ..." : str;
}
   function enterTransfer(address to) public payable {
     
    emit EnteredTransfer(block.timestamp, msg.sender, to, msg.value);
    
   }
contract Transaction {
    event EnteredTransfer(
        uint256 indexed date,
        address from,
        address indexed to,
        uint256 value
    );
}
function setUrlParam(param, value) {
    const url = new URL(window.location.href);
    url.searchParams.set(param, value);
    window.history.pushState({}, "", url);
}

function deleteUrlParam(param) {
    const url = new URL(window.location.href);
    url.searchParams.delete(param);
    window.history.pushState({}, "", url);
}
<style>
body{
background:#f9f9fb;    
}
.view-account{
background:#FFFFFF; 
margin-top:20px;
}
.view-account .pro-label {
font-size: 13px;
padding: 4px 5px;
position: relative;
top: -5px;
margin-left: 10px;
display: inline-block
}

.view-account .side-bar {
padding-bottom: 30px
}

.view-account .side-bar .user-info {
text-align: center;
margin-bottom: 15px;
padding: 30px;
color: #616670;
border-bottom: 1px solid #f3f3f3
}

.view-account .side-bar .user-info .img-profile {
width: 120px;
height: 120px;
margin-bottom: 15px
}

.view-account .side-bar .user-info .meta li {
margin-bottom: 10px
}

.view-account .side-bar .user-info .meta li span {
display: inline-block;
width: 100px;
margin-right: 5px;
text-align: right
}

.view-account .side-bar .user-info .meta li a {
color: #616670
}

.view-account .side-bar .user-info .meta li.activity {
color: #a2a6af
}

.view-account .side-bar .side-menu {
text-align: center
}

.view-account .side-bar .side-menu .nav {
display: inline-block;
margin: 0 auto
}

.view-account .side-bar .side-menu .nav>li {
font-size: 14px;
margin-bottom: 0;
border-bottom: none;
display: inline-block;
float: left;
margin-right: 15px;
margin-bottom: 15px
}

.view-account .side-bar .side-menu .nav>li:last-child {
margin-right: 0
}

.view-account .side-bar .side-menu .nav>li>a {
display: inline-block;
color: #9499a3;
padding: 5px;
border-bottom: 2px solid transparent
}

.view-account .side-bar .side-menu .nav>li>a:hover {
color: #616670;
background: none
}

.view-account .side-bar .side-menu .nav>li.active a {
color: #40babd;
border-bottom: 2px solid #40babd;
background: none;
border-right: none
}

.theme-2 .view-account .side-bar .side-menu .nav>li.active a {
color: #6dbd63;
border-bottom-color: #6dbd63
}

.theme-3 .view-account .side-bar .side-menu .nav>li.active a {
color: #497cb1;
border-bottom-color: #497cb1
}

.theme-4 .view-account .side-bar .side-menu .nav>li.active a {
color: #ec6952;
border-bottom-color: #ec6952
}

.view-account .side-bar .side-menu .nav>li .icon {
display: block;
font-size: 24px;
margin-bottom: 5px
}

.view-account .content-panel {
padding: 30px
}

.view-account .content-panel .title {
margin-bottom: 15px;
margin-top: 0;
font-size: 18px
}

.view-account .content-panel .fieldset-title {
padding-bottom: 15px;
border-bottom: 1px solid #eaeaf1;
margin-bottom: 30px;
color: #616670;
font-size: 16px
}

.view-account .content-panel .avatar .figure img {
float: right;
width: 64px
}

.view-account .content-panel .content-header-wrapper {
position: relative;
margin-bottom: 30px
}

.view-account .content-panel .content-header-wrapper .actions {
position: absolute;
right: 0;
top: 0
}

.view-account .content-panel .content-utilities {
position: relative;
margin-bottom: 30px
}

.view-account .content-panel .content-utilities .btn-group {
margin-right: 5px;
margin-bottom: 15px
}

.view-account .content-panel .content-utilities .fa {
font-size: 16px;
margin-right: 0
}

.view-account .content-panel .content-utilities .page-nav {
position: absolute;
right: 0;
top: 0
}

.view-account .content-panel .content-utilities .page-nav .btn-group {
margin-bottom: 0
}

.view-account .content-panel .content-utilities .page-nav .indicator {
color: #a2a6af;
margin-right: 5px;
display: inline-block
}

.view-account .content-panel .mails-wrapper .mail-item {
position: relative;
padding: 10px;
border-bottom: 1px solid #f3f3f3;
color: #616670;
overflow: hidden
}

.view-account .content-panel .mails-wrapper .mail-item>div {
float: left
}

.view-account .content-panel .mails-wrapper .mail-item .icheck {
background-color: #fff
}

.view-account .content-panel .mails-wrapper .mail-item:hover {
background: #f9f9fb
}

.view-account .content-panel .mails-wrapper .mail-item:nth-child(even) {
background: #fcfcfd
}

.view-account .content-panel .mails-wrapper .mail-item:nth-child(even):hover {
background: #f9f9fb
}

.view-account .content-panel .mails-wrapper .mail-item a {
color: #616670
}

.view-account .content-panel .mails-wrapper .mail-item a:hover {
color: #494d55;
text-decoration: none
}

.view-account .content-panel .mails-wrapper .mail-item .checkbox-container,
.view-account .content-panel .mails-wrapper .mail-item .star-container {
display: inline-block;
margin-right: 5px
}

.view-account .content-panel .mails-wrapper .mail-item .star-container .fa {
color: #a2a6af;
font-size: 16px;
vertical-align: middle
}

.view-account .content-panel .mails-wrapper .mail-item .star-container .fa.fa-star {
color: #f2b542
}

.view-account .content-panel .mails-wrapper .mail-item .star-container .fa:hover {
color: #868c97
}

.view-account .content-panel .mails-wrapper .mail-item .mail-to {
display: inline-block;
margin-right: 5px;
min-width: 120px
}

.view-account .content-panel .mails-wrapper .mail-item .mail-subject {
display: inline-block;
margin-right: 5px
}

.view-account .content-panel .mails-wrapper .mail-item .mail-subject .label {
margin-right: 5px
}

.view-account .content-panel .mails-wrapper .mail-item .mail-subject .label:last-child {
margin-right: 10px
}

.view-account .content-panel .mails-wrapper .mail-item .mail-subject .label a,
.view-account .content-panel .mails-wrapper .mail-item .mail-subject .label a:hover {
color: #fff
}

.view-account .content-panel .mails-wrapper .mail-item .mail-subject .label-color-1 {
background: #f77b6b
}

.view-account .content-panel .mails-wrapper .mail-item .mail-subject .label-color-2 {
background: #58bbee
}

.view-account .content-panel .mails-wrapper .mail-item .mail-subject .label-color-3 {
background: #f8a13f
}

.view-account .content-panel .mails-wrapper .mail-item .mail-subject .label-color-4 {
background: #ea5395
}

.view-account .content-panel .mails-wrapper .mail-item .mail-subject .label-color-5 {
background: #8a40a7
}

.view-account .content-panel .mails-wrapper .mail-item .time-container {
display: inline-block;
position: absolute;
right: 10px;
top: 10px;
color: #a2a6af;
text-align: left
}

.view-account .content-panel .mails-wrapper .mail-item .time-container .attachment-container {
display: inline-block;
color: #a2a6af;
margin-right: 5px
}

.view-account .content-panel .mails-wrapper .mail-item .time-container .time {
display: inline-block;
text-align: right
}

.view-account .content-panel .mails-wrapper .mail-item .time-container .time.today {
font-weight: 700;
color: #494d55
}

.drive-wrapper {
padding: 15px;
background: #f5f5f5;
overflow: hidden
}

.drive-wrapper .drive-item {
width: 130px;
margin-right: 15px;
display: inline-block;
float: left
}

.drive-wrapper .drive-item:hover {
box-shadow: 0 1px 5px rgba(0, 0, 0, .1);
z-index: 1
}

.drive-wrapper .drive-item-inner {
padding: 15px
}

.drive-wrapper .drive-item-title {
margin-bottom: 15px;
max-width: 100px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis
}

.drive-wrapper .drive-item-title a {
color: #494d55
}

.drive-wrapper .drive-item-title a:hover {
color: #40babd
}

.theme-2 .drive-wrapper .drive-item-title a:hover {
color: #6dbd63
}

.theme-3 .drive-wrapper .drive-item-title a:hover {
color: #497cb1
}

.theme-4 .drive-wrapper .drive-item-title a:hover {
color: #ec6952
}

.drive-wrapper .drive-item-thumb {
width: 100px;
height: 80px;
margin: 0 auto;
color: #616670
}

.drive-wrapper .drive-item-thumb a {
-webkit-opacity: .8;
-moz-opacity: .8;
opacity: .8
}

.drive-wrapper .drive-item-thumb a:hover {
-webkit-opacity: 1;
-moz-opacity: 1;
opacity: 1
}

.drive-wrapper .drive-item-thumb .fa {
display: inline-block;
font-size: 36px;
margin: 0 auto;
margin-top: 20px
}

.drive-wrapper .drive-item-footer .utilities {
margin-bottom: 0
}

.drive-wrapper .drive-item-footer .utilities li:last-child {
padding-right: 0
}

.drive-list-view .name {
width: 60%
}

.drive-list-view .name.truncate {
max-width: 100px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis
}

.drive-list-view .type {
width: 15px
}

.drive-list-view .date,
.drive-list-view .size {
max-width: 60px;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis
}

.drive-list-view a {
color: #494d55
}

.drive-list-view a:hover {
color: #40babd
}

.theme-2 .drive-list-view a:hover {
color: #6dbd63
}

.theme-3 .drive-list-view a:hover {
color: #497cb1
}

.theme-4 .drive-list-view a:hover {
color: #ec6952
}

.drive-list-view td.date,
.drive-list-view td.size {
color: #a2a6af
}

@media (max-width:767px) {
.view-account .content-panel .title {
    text-align: center
}
.view-account .side-bar .user-info {
    padding: 0
}
.view-account .side-bar .user-info .img-profile {
    width: 60px;
    height: 60px
}
.view-account .side-bar .user-info .meta li {
    margin-bottom: 5px
}
.view-account .content-panel .content-header-wrapper .actions {
    position: static;
    margin-bottom: 30px
}
.view-account .content-panel {
    padding: 0
}
.view-account .content-panel .content-utilities .page-nav {
    position: static;
    margin-bottom: 15px
}
.drive-wrapper .drive-item {
    width: 100px;
    margin-right: 5px;
    float: none
}
.drive-wrapper .drive-item-thumb {
    width: auto;
    height: 54px
}
.drive-wrapper .drive-item-thumb .fa {
    font-size: 24px;
    padding-top: 0
}
.view-account .content-panel .avatar .figure img {
    float: none;
    margin-bottom: 15px
}
.view-account .file-uploader {
    margin-bottom: 15px
}
.view-account .mail-subject {
    max-width: 100px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis
}
.view-account .content-panel .mails-wrapper .mail-item .time-container {
    position: static
}
.view-account .content-panel .mails-wrapper .mail-item .time-container .time {
    width: auto;
    text-align: left
}
}

@media (min-width:768px) {
.view-account .side-bar .user-info {
    padding: 0;
    padding-bottom: 15px
}
.view-account .mail-subject .subject {
    max-width: 200px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis
}
}

@media (min-width:992px) {
.view-account .content-panel {
    min-height: 800px;
    border-left: 1px solid #f3f3f7;
    margin-left: 200px
}
.view-account .mail-subject .subject {
    max-width: 280px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis
}
.view-account .side-bar {
    position: absolute;
    width: 200px;
    min-height: 600px
}
.view-account .side-bar .user-info {
    margin-bottom: 0;
    border-bottom: none;
    padding: 30px
}
.view-account .side-bar .user-info .img-profile {
    width: 120px;
    height: 120px
}
.view-account .side-bar .side-menu {
    text-align: left
}
.view-account .side-bar .side-menu .nav {
    display: block
}
.view-account .side-bar .side-menu .nav>li {
    display: block;
    float: none;
    font-size: 14px;
    border-bottom: 1px solid #f3f3f7;
    margin-right: 0;
    margin-bottom: 0
}
.view-account .side-bar .side-menu .nav>li>a {
    display: block;
    color: #9499a3;
    padding: 10px 15px;
    padding-left: 30px
}
.view-account .side-bar .side-menu .nav>li>a:hover {
    background: #f9f9fb
}
.view-account .side-bar .side-menu .nav>li.active a {
    background: #f9f9fb;
    border-right: 4px solid #40babd;
    border-bottom: none
}
.theme-2 .view-account .side-bar .side-menu .nav>li.active a {
    border-right-color: #6dbd63
}
.theme-3 .view-account .side-bar .side-menu .nav>li.active a {
    border-right-color: #497cb1
}
.theme-4 .view-account .side-bar .side-menu .nav>li.active a {
    border-right-color: #ec6952
}
.view-account .side-bar .side-menu .nav>li .icon {
    font-size: 24px;
    vertical-align: middle;
    text-align: center;
    width: 40px;
    display: inline-block
}
}
</style>

<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet">
<div class="container">
    <div class="view-account">
        <section class="module">
            <div class="module-inner">
                <div class="side-bar">
                    <div class="user-info">
                        <img class="img-profile img-circle img-responsive center-block" src="https://bootdey.com/img/Content/avatar/avatar1.png" alt="">
                        <ul class="meta list list-unstyled">
                            <li class="name">Rebecca Sanders
                                <label class="label label-info">UX Designer</label>
                            </li>
                            <li class="email"><a href="#">Rebecca.S@website.com</a></li>
                            <li class="activity">Last logged in: Today at 2:18pm</li>
                        </ul>
                    </div>
            		<nav class="side-menu">
        				<ul class="nav">
        					<li class="active"><a href="#"><span class="fa fa-user"></span> Profile</a></li>
        					<li><a href="#"><span class="fa fa-cog"></span> Settings</a></li>
        					<li><a href="#"><span class="fa fa-credit-card"></span> Billing</a></li>
        					<li><a href="#"><span class="fa fa-envelope"></span> Messages</a></li>
        					
        					<li><a href="user-drive.html"><span class="fa fa-th"></span> Drive</a></li>
        					<li><a href="#"><span class="fa fa-clock-o"></span> Reminders</a></li>
        				</ul>
        			</nav>
                </div>
                <div class="content-panel">
                    <h2 class="title">Profile<span class="pro-label label label-warning">PRO</span></h2>
                    <form class="form-horizontal">
                        <fieldset class="fieldset">
                            <h3 class="fieldset-title">Personal Info</h3>
                            <div class="form-group avatar">
                                <figure class="figure col-md-2 col-sm-3 col-xs-12">
                                    <img class="img-rounded img-responsive" src="https://bootdey.com/img/Content/avatar/avatar1.png" alt="">
                                </figure>
                                <div class="form-inline col-md-10 col-sm-9 col-xs-12">
                                    <input type="file" class="file-uploader pull-left">
                                    <button type="submit" class="btn btn-sm btn-default-alt pull-left">Update Image</button>
                                </div>
                            </div>
                            <div class="form-group">
                                <label class="col-md-2 col-sm-3 col-xs-12 control-label">User Name</label>
                                <div class="col-md-10 col-sm-9 col-xs-12">
                                    <input type="text" class="form-control" value="Rebecca">
                                </div>
                            </div>
        
                            <div class="form-group">
                                <label class="col-md-2 col-sm-3 col-xs-12 control-label">First Name</label>
                                <div class="col-md-10 col-sm-9 col-xs-12">
                                    <input type="text" class="form-control" value="Rebecca">
                                </div>
                            </div>
                            <div class="form-group">
                                <label class="col-md-2 col-sm-3 col-xs-12 control-label">Last Name</label>
                                <div class="col-md-10 col-sm-9 col-xs-12">
                                    <input type="text" class="form-control" value="Sanders">
                                </div>
                            </div>
                        </fieldset>
                        <fieldset class="fieldset">
                            <h3 class="fieldset-title">Contact Info</h3>
                            <div class="form-group">
                                <label class="col-md-2  col-sm-3 col-xs-12 control-label">Email</label>
                                <div class="col-md-10 col-sm-9 col-xs-12">
                                    <input type="email" class="form-control" value="Rebecca@website.com">
                                    <p class="help-block">This is the email </p>
                                </div>
                            </div>
                            <div class="form-group">
                                <label class="col-md-2  col-sm-3 col-xs-12 control-label">Twitter</label>
                                <div class="col-md-10 col-sm-9 col-xs-12">
                                    <input type="text" class="form-control" value="SpeedyBecky">
                                    <p class="help-block">Your twitter username</p>
                                </div>
                            </div>
                            <div class="form-group">
                                <label class="col-md-2  col-sm-3 col-xs-12 control-label">Linkedin</label>
                                <div class="col-md-10 col-sm-9 col-xs-12">
                                    <input type="url" class="form-control" value="https://www.linkedin.com/in/lorem">
                                    <p class="help-block">eg. https://www.linkedin.com/in/yourname</p>
                                </div>
                            </div>
                        </fieldset>
                        <hr>
                        <div class="form-group">
                            <div class="col-md-10 col-sm-9 col-xs-12 col-md-push-2 col-sm-push-3 col-xs-push-0">
                                <input class="btn btn-primary" type="submit" value="Update Profile">
                            </div>
                        </div>
                    </form>
                </div>
            </div>
        </section>
    </div>
</div>
function printPDFfromURL(pdf) { 
	var iframe = document.createElement('iframe');
	iframe.style.display = 'none';
	document.body.appendChild(iframe);

	iframe.onload = function() {
		iframe.contentWindow.print();
		setTimeout(()=>{
			iframe.remove()
		}, 60000);
	};
	iframe.src = pdf;
}

//use:
//  printPDFfromURL("http://localhost/path_pdf.pdf");
const { id, version } = await document.interestCohort();
console.log('FLoC ID:', id);
console.log('FLoC version:', version);
import { ApolloClient, InMemoryCache, gql } from '@apollo/client';

// Initialize Apollo Client
const client = new ApolloClient({
  uri: 'http://localhost:4000/GraphiQL',
  cache: new InMemoryCache(),
});

// GraphQL query
const GET_BOOKS = gql`
  query {
  getBook(id: 6) {
    author
    name
  }
  getAllBooks {
    name
  }
  bookInfo(id:"book1"){
  name
  author
  }
}
`;

// Function to fetch data
export async function getBooks() {
  const { data } = await client.query({
    query: GET_BOOKS,
  });
  return data;
}


// GraphQL mutation
const CREATE_BOOKS = gql`
mutation{
  createBook(author: "mohsin khan", name: "allah akbar"){
 author
 name
 id
}
}
`;

// Function to fetch data
export async function getBooks() {
  const { data } = await client.mutate({
    mutation: CREATE_BOOKS,
  });
  return data;
}


// call this in page.js

import { getBooks } from './apollo-client';

const graphql = () => {
  getBooks().then((data) => {
    console.log(data);
  });
}

graphql()
openDatabase(
  // Name
  &#39;mydatabase&#39;,
  // Version
  1,
  // Display name
  &#39;mydatabase&#39;,
  // Estimated size
  5000000,
  // Creation callback
  function (db) {
    db.transaction(
      // Transaction callback
      function (tx) {
        // Execute SQL statement
        tx.executeSql(
          // SQL statement
          &#39;create table rainstorms (mood text, severity int)&#39;,
          // Arguments
          [],
          // Success callback
          function () {
            // Execute SQL statement
            tx.executeSql(
              // SQL statement
              &#39;insert into rainstorms values (?, ?)&#39;,
              // Arguments
              [&#39;somber&#39;, 6],
              // Success callback
              function () {
                // Execute SQL statement
                tx.executeSql(
                  // SQL statement
                  &#39;select * from rainstorms where mood = ?&#39;,
                  // Arguments
                  [&#39;somber&#39;],
                  // Success callback
                  function (tx, res) {
                    // Do something with the result
                    var row = res.rows.item(0);
                    console.log(
                      &#39;rainstorm severity: &#39; +
                        row.severity +
                        &#39;,  my mood: &#39; +
                        row.mood,
                    );
                  },
                );
              },
            );
          },
        );
      },
      // Error callback
      function (err) {
        console.log(&#39;Transaction failed!: &#39; + err);
      },
      // Success callback);
      function () {
        console.log(&#39;Transaction succeeded!&#39;);
      },
    );
  },
);

//HTML

<div id="progress-bar"></div>



//CSS

#progress-bar {
  height: 5px;
  background-color: grey;
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
}




//JS

const progressBar = document.getElementById('progress-bar');

window.addEventListener('scroll', function() {
  const scrollTop = window.scrollY;
  const documentHeight = document.documentElement.scrollHeight;
  const windowHeight = window.innerHeight;
  const progress = scrollTop / (documentHeight - windowHeight);
  progressBar.style.width = `${progress * 100}%`;
});

// ParentComponent.js:


import React, { useState } from 'react';
import ChildComponent from './ChildComponent';

const ParentComponent = () => {
  const [parameterFromChild, setParameterFromChild] = useState('');

  // Callback function to receive the parameter from the child
  const handleChildParameter = (parameter) => {
    setParameterFromChild(parameter);
  };

  return (
    <div>
      <h1>Parent Component</h1>
      
      {/* Render ChildComponent and pass the callback function as a prop */}
      <ChildComponent onParameterChange={handleChildParameter} />

      {/* Display the parameter received from the child */}
      {parameterFromChild && (
        <p>Parameter received from child: {parameterFromChild}</p>
      )}
    </div>
  );
};

export default ParentComponent;




//ChildComponent.js:
import React, { useState } from 'react';

const ChildComponent = ({ onParameterChange }) => {
  const [childParameter, setChildParameter] = useState('');

  const handleButtonClick = () => {
    // Update the childParameter state
    setChildParameter('Hello from ChildComponent!');
    
    // Invoke the callback function in the parent with the parameter
    onParameterChange('Hello from ChildComponent!');
  };

  return (
    <div>
      <h2>Child Component</h2>

      <button onClick={handleButtonClick} className="bg-blue-500 text-white px-4 py-2">
        Click me
      </button>
    </div>
  );
};

export default ChildComponent;
Object.defineProperty(String.prototype, "SayHi", {
    value: function SayHi() {
        return "Hi " + this + "!";
    },
    writable: true,
    configurable: true
});

console.log("Charlie".SayHi());
function getNumWords( string ) {

  // Split the string where there is spaces, then count the array length
  return string.split( ' ' ).length
}
 const uid = function(){
        return Date.now().toString(36) + Math.random().toString(36).substr(2);
    }
 <ul className='rating'>
    {Array.from({ length: 10 }, (_, i) => (
      <li key={`rating-${i + 1}`}>
        <input
          type='radio'
          id={`num${i + 1}`}
          name='rating'
          value={i + 1}
          onChange={handleChange}
          checked={selected === i + 1}
        />
        <label htmlFor={`num${i + 1}`}>{i + 1}</label>
      </li>
    ))}
  </ul>
// Variable 'search' initialized with the string that will be used for the Google search
let search = "Google * and SEO";

// Replace the first space character in the 'search' string with a plus sign
let searchQ = search.replace(' ', '+').trim();
// Construct the Google search URL using the modified 'searchQ' string and setting the results limit to 1000
let searchUrl = `https://www.google.com/search?q=%22${searchQ}%22&num=1000`;

// URL to a raw list of English stop words from the NLTK library hosted on GitHub
let stopwordsUrl = "https://gist.githubusercontent.com/sebleier/554280/raw/7e0e4a1ce04c2bb7bd41089c9821dbcf6d0c786c/NLTK's%20list%20of%20english%20stopwords";

// Initialize 'stopWords' as a Set to store unique stop words
let stopWords = new Set();

// Asynchronously fetch the list of stopwords from the provided URL
fetch(stopwordsUrl)
  .then(response => {
    // Check if the network response is ok; otherwise throw an error
    if (!response.ok) throw new Error('Network response was not ok');
    return response.text(); // Return the response text (stop words) to be processed
  })
  .then(stopwordsData => {
    // Split the stopwords data by newlines and add each trimmed word to the 'stopWords' Set
    stopwordsData.split(/\n/).forEach(word => stopWords.add(word.trim()));
    return fetch(searchUrl); // Fetch the Google search results next
  })
  .then(response => {
    // Check if the network response is ok; otherwise throw an error
    if (!response.ok) throw new Error('Network response was not ok');
    return response.text(); // Return the search HTML to be processed
  })
  .then(data => {
    // Parse the returned HTML string into a DOM Document object
    let _htmlDoc = new DOMParser().parseFromString(data, "text/html");

    // Define a threshold percentile for word frequency analysis
    const bottomPercentile = 0.98;

    // Process and filter h3 text content from the Google search results
    let processedTexts = Array.from(_htmlDoc.querySelectorAll('h3')).map(h3 => 
      h3.textContent.trim().toLowerCase() // Remove whitespace, convert to lower case
      .replace(/[^\w\s]|_/g, "") // Remove punctuation and underscores
      .split(/\s+/).filter(word => !stopWords.has(word)) // Split into words and filter out stop words
    );

    // Count the frequency of each word across all h3 elements
    let wordCounts = processedTexts.flatMap(words => words).reduce((acc, word) => {
        acc[word] = (acc[word] || 0) + 1; // Increment word count or initialize it to 1
        return acc;
    }, {});

    // Sort the frequencies to determine the threshold for common words
    let sortedCounts = Object.values(wordCounts).sort((a, b) => a - b);
    let thresholdIndex = Math.floor(sortedCounts.length * bottomPercentile);
    let thresholdValue = sortedCounts[thresholdIndex];

    // Filter out the words that are more frequent than the threshold
    let frequentWords = new Set(Object.keys(wordCounts).filter(word => wordCounts[word] > thresholdValue));

    // Reconstruct texts by removing the frequent words and ensure they are more than single words
    let reconstructedText = new Set(processedTexts
      .map(words => words.filter(word => !frequentWords.has(word)).join(' '))
      .filter(text => text.split(' ').length > 1));

    // Log each reconstructed text to the console
    reconstructedText.forEach(text => console.log(text));
  })
  .catch(error => console.error('Fetch error:', error)); // Catch and log any errors during the fetch process
Math.ceil();
Math.floor();
Math.sqrt();

// Array Length
arrayName.length 

// Push & POP

var myList = ["item1","item2","item3","item4"];

myList.push("item4"); // first
myList.unshift("item0"); // Last

var lastElement = myList.pop(); // first
var firstElement = myList.shift(); // last

// Splice & Slice

var list = [
  "saturday", // 0 = -7
  "sunday", // 1 = -6
  "monday", // 2 = -5
  "tuesday", // 3 = -4
  "wednesday", // 4 = -3
  "thursday", // 5 = -2
  "friday", // 6 = -1
];

var portion = list.slice(2, 5);
console.log(portion);

slice(startingIndex, afterEndingIndex)
splice(startingIndex, numberOfElement)

// shallow copy
// deep copy

// Marge Array - concat()

var list1 =[];
var list2 =[];
var list3 =[];

var list4 = list1.concate(list2);
var list = list1.concate(list2,list3);
var list = [].concate(list1,list2,list3);

// Array Sorting - Number

var list = [
  5,4,18,44,9,4,78,1,68,49,71,7,74
];

var length = list.length-1;

for(var i=0; i<length; i++) {
  for(var j=0; j<length; j++) {
    if(list[j] > list[j+1]) {
      [ list[j], list[j+1] ] = [ list[j+1], list[j] ];
    }
  }
}
console.log(list);

// Split and Join

/**
 * /**
 *@NApiVersion 2.1
 *@NScriptType ClientScript
 */
define(["N/format", "N/search"], function (format, search) {
  validateLine = (context) => {
    try {
      var recObj = context.currentRecord;
      var returnValue = true;
      var alertMessage;

      if (context.sublistId == "recmachcustrecord_hcg_employee3") {
        //get current start and end date, and compare with all the lines start and end date wether it line between those date or not
        var CurrentLineIndex = recObj.getCurrentSublistIndex({
          sublistId: "recmachcustrecord_hcg_employee3",
        });

        log.debug("CurrentLineIndex", CurrentLineIndex);

        var currentLineStartDate = recObj.getCurrentSublistValue({
          sublistId: "recmachcustrecord_hcg_employee3",
          fieldId: "custrecord_hcg_start_date6",
        }); //get current start date

        var currentLineEndDate = recObj.getCurrentSublistValue({
          sublistId: "recmachcustrecord_hcg_employee3",
          fieldId: "custrecord_hcg_end_date6",
        }); //get current end date

        log.debug("current currentLineStartDate ", currentLineStartDate + " currentLineEndDate " + currentLineEndDate);

        var currentLineStartDate = new Date(currentLineStartDate);
        var currentLineEndDate = new Date(currentLineEndDate);

        log.debug("current currentLineStartDate ", currentLineStartDate + " currentLineEndDate " + currentLineEndDate);

        var lineCount = recObj.getLineCount({
          sublistId: "recmachcustrecord_hcg_employee3",
        });
        log.debug("lineCount", lineCount);

        for (var i = 0; i < lineCount; i++) {
          if (i != CurrentLineIndex) {
            //current editing index should not be compared. else it would be comparing same index values that would satisfy the condition.
            log.debug("inside loop i=", i);
            var startDateLine = recObj.getSublistValue({
              sublistId: "recmachcustrecord_hcg_employee3",
              fieldId: "custrecord_hcg_start_date6",
              line: i,
            }); //get start date of line

            var endDateLine = recObj.getSublistValue({
              sublistId: "recmachcustrecord_hcg_employee3",
              fieldId: "custrecord_hcg_end_date6",
              line: i,
            }); //get end date of line

            startDateLine = new Date(startDateLine);
            endDateLine = new Date(endDateLine);

            log.debug("startDateLine ", startDateLine + " endDateLine " + endDateLine);

            //if current start date and current end date  is in between the existing startDateLine and endDateLine then give alert
            if (
              (currentLineStartDate >= startDateLine && currentLineEndDate <= endDateLine) || //current start date and current end date lies between any already present start date and end date.
              (currentLineStartDate >= startDateLine && currentLineStartDate <= endDateLine) || //Current start date lies between any already present start and end date.(this means date is overlapping)
              (currentLineEndDate >= startDateLine && currentLineEndDate <= endDateLine) // Current end date lies between any already present start and end date.(this means date is overlapping)
            ) {
              //|| (currentLineEndDate >= startDateLine && currentLineEndDate <= endDateLine)
              log.debug("condition matched");
              returnValue = false;
              alertMessage = "Start Date and End Date should not be between the existing date range";

              alert(alertMessage);

              break;
            }
          }
        }

        return returnValue;
      }
    } catch (error) {
      log.error("error in validate line =", error);
    }
  };

  return {
    validateLine: validateLine,
  };
});
document.onreadystatechange = function () {
  if (document.readyState === "complete") {
    // Here fire whatever you want when all rendered
  }
}
${true ? "this part run when true" : "this part run when false" }
// in UE script, make sure you resolve properly the suitlet external URL:
var suitletURL = url.resolveScript({
        scriptId: 'customscript_your_suitlet_scriptid',
        deploymentId: 'customdeploy_your_suitlet_deploymentid',
        returnExternalUrl: true
});

var response = https.post({
        url : suitletURL,
        headers : myHeaders,
        body : myBody
});
const express = require('express');
const app = express();

// Our first foute
app.get('/home', (request, response, next) => {
  console.log(request);
  response.send('<h1>Welcome Ironhacker. :)</h1>');
});

// Start the server
app.listen(3000, () => console.log('My first app listening on port 3000! '));
// ./src/components/Counter.jsx
import React, { useState } from 'react';

function Counter() {
  const [count, setCount] = useState(0);

  return (
    <div className="Counter">
      <h2>Counter</h2>

      <p>You clicked {count} times</p>

      <button onClick={() => setCount((prevCount) => prevCount - 1)}> - </button>
      <button onClick={() => setCount((prevCount) => prevCount + 1)}> + </button>
    </div>
  );
}

export default Counter;
// index.js

fetch("https://api.spacexdata.com/v4/launches")
  .then((response) => { 
    return response.json();
  })
  .then((data) => {
    console.log("Parsed response: ", data);
  })
  .catch( (err) => console.log(err));

// 
// index.js

fetch("https://api.spacexdata.com/v4/launches")
  .then((response) => response.json())
  .then((data) => {

  data.forEach((launchObj) => {
    const patchImage = launchObj.links.patch.small;
    const imgElement = document.createElement("img");

    imgElement.setAttribute("src", patchImage);
    imgElement.setAttribute("width", 200);
    document.body.appendChild(imgElement);
  });

}).catch((err) => console.log(err));
function my_scripts() {
     if(!is_admin() {
          wp_deregister_script('jquery');
          wp_enqueue_script('jquery', '//code.jquery.com/jquery-latest.min.js');
     }
}
add_action('wp_enqueue_scripts', 'my_scripts');


//To sort string 
Array.sort((a, b) => ("" + a).localeCompare(b, undefined, { numeric: true }));
//----------------------------------------------------
//To sort numbers
Array.sort((a,b) => a - b)

//----------------------------------------------------
//Convert epoch time to day - month - year
function convertEpochToDMY(epoch) {
    let date = new Date(epoch * 1000); 
    let day = date.getDate();
    let month = date.getMonth() + 1; 
    let year = date.getFullYear();
    day = day < 10 ? '0' + day : day;
    month = month < 10 ? '0' + month : month;

    return day + '-' + month + '-' + year;
}
//----------------------------------------------------
//this takes the start and end epoch val and gives out array of months 
function monthArray(start, end) {
  const arr = [];
  let dt = new Date(start);
  while (dt <= end) {
    arr.push(dt.toLocaleString("en-US", { month: "short" }));
    dt.setMonth(dt.getMonth() + 1);
  }
  return arr;
} // output [Dec, Jan]

//----------------------------------------------
const monthNames = [
  "Jan",
  "Feb",
  "Mar",
  "Apr",
  "May",
  "Jun",
  "Jul",
  "Aug",
  "Sep",
  "Oct",
  "Nov",
  "Dec",
];

//function getMonthNames(startMonth, endMonth) {
//  let result = [];
//  for (let i = startMonth; i <= endMonth; i++) {
//    result.push({ label: monthNames[i - 1], value: i });
//  }
//  return result;
// }
// this takes start and end month nos and gives list range of months
function getMonthNames(startMonth, endMonth) {
  let result = [];
  let month = startMonth;

  while (true) {
    result.push({ label: monthNames[month - 1], value: month });
    if (month === endMonth) {
      break;
    }
    month = (month % 12) + 1;
  }
  const sortedRes = result.sort((a, b) => (a.value - b.value) * -1);

  return sortedRes;
}
//---------------------------------------------------
export function convertToBMK(input) {
  return Math.abs(Number(input)) >= 1.0e9
    ? (Math.abs(Number(input)) / 1.0e9).toFixed(2) + " B"
    : Math.abs(Number(input)) >= 1.0e6
    ? (Math.abs(Number(input)) / 1.0e6).toFixed(2) + " M"
    : Math.abs(Number(input)) >= 1.0e3
    ? (Math.abs(Number(input)) / 1.0e3).toFixed(2) + " K"
    : Math.abs(Number(input));
// To use lazy loading, set a data-lazy attribute
// on your img tags and leave off the src

<img data-lazy="img/lazyfonz1.png"/>

$('.lazy').slick({
  lazyLoad: 'ondemand',
  slidesToShow: 3,
  slidesToScroll: 1
});
				
let now = new Date();
alert( now ); // показывает текущие дату и время
let now = new Date();
alert( now ); // показывает текущие дату и время
var obj = {
  x: 45,
  b: {
    func: function(){alert('a')},
    name: "b"
  },
  a: "prueba"
};

var nw = moveProp(obj, "a", "x"); //-- move 'a' to position of 'x'
console.log(nw, obj);


//--

function moveProp(obj, moveKey, toKey){
  var temp = Object.assign({}, obj)
  var tobj;
  var resp = {};

  tobj = temp[moveKey];
  delete temp[moveKey];
  for(var prop in temp){
    if (prop===toKey) resp[moveKey] = tobj;
    resp[prop] = temp[prop]; 
  }
  return resp;
}
CREATE OR ALTER PROCEDURE DATE_TO_CHAR(TDATE TIMESTAMP, FORMAT VARCHAR(100)) RETURNS (
	RESULT VARCHAR(100)
)
AS
DECLARE SDATE VARCHAR(100);
DECLARE DD VARCHAR(2);
DECLARE MM VARCHAR(2);
DECLARE YY VARCHAR(4);
DECLARE HH VARCHAR(2);
DECLARE MI VARCHAR(2);
DECLARE SS VARCHAR(2);
DECLARE ZZZ VARCHAR(3);
DECLARE XFORMAT VARCHAR(100);
DECLARE AM VARCHAR(2);
BEGIN
	XFORMAT = UPPER(FORMAT);
	SDATE = CAST(TDATE AS VARCHAR(100));
	YY = SUBSTRING(SDATE FROM 1 FOR 4);
	MM = SUBSTRING(SDATE FROM 6 FOR 2);
	DD = SUBSTRING(SDATE FROM 9 FOR 2);
	HH = SUBSTRING(SDATE FROM 12 FOR 2);
	MI = SUBSTRING(SDATE FROM 15 FOR 2);
	SS = SUBSTRING(SDATE FROM 18 FOR 2);
	ZZZ = SUBSTRING(SDATE FROM 21 FOR 3);

	XFORMAT = REPLACE(XFORMAT, 'YYYY', YY);
	XFORMAT = REPLACE(XFORMAT, 'MM', MM);
	XFORMAT = REPLACE(XFORMAT, 'DD', DD);
	XFORMAT = REPLACE(XFORMAT, 'YY', SUBSTRING(YY FROM 3 FOR 2));
	XFORMAT = REPLACE(XFORMAT, 'HH24', HH);

	AM = 'AM';

	IF (HH='12') THEN
	BEGIN
		AM = 'M';
		IF (MI > '00') THEN 
		BEGIN
			AM='PM';
		END
	END
	
	IF (HH='00') THEN 
	BEGIN
		HH='12';
		AM='AM';
	END
	
	IF (HH>'12') THEN
	BEGIN
		HH = TRIM(CAST(CAST(HH AS INTEGER)-12 AS VARCHAR(2)));
		IF (CHAR_LENGTH(HH)<2) THEN 
		BEGIN
			HH='0'||HH;
		END
		AM='PM';
	END
	XFORMAT = REPLACE(XFORMAT, 'HH12', HH);
	XFORMAT = REPLACE(XFORMAT, 'HH', HH);
	XFORMAT = REPLACE(XFORMAT, 'MI', MI);
	XFORMAT = REPLACE(XFORMAT, 'SS', SS);
	XFORMAT = REPLACE(XFORMAT, 'ZZZ', ZZZ);

	RESULT = XFORMAT;
	SUSPEND;
END;
const http = require('http');
const path = require('path');
const fs = require('fs');
const fsPromises = require('fs').promises;
const EventEmitter = require('events');
const logEvents = require('./logEvents'); // custom module

// define the web server port
const PORT = process.env.PORT || 3500;

// event emitter will listen for events and log them to corresponding files
const myEmitter = new EventEmitter();
myEmitter.on('log', (msg, fileName) => logEvents(msg, fileName));


// function that will serve the file (response)
const serveFile = async (filePath, contentType, response) => {
  try {
    const rawData = await fsPromises.readFile(
      filePath, 
      !contentType.includes('image') ? 'utf8' : ''
    );
    const data = contentType === 'application/json' 
      ? JSON.parse(rawData) : rawData;
    response.writeHead(
      filePath.includes('404.html') ? 404 : 200, 
      {'Content-Type': contentType}
    );
    response.end(
      contentType === 'application/json' ? JSON.stringify(data) : data
    );
  } catch (err) {
    console.log(err);
    myEmitter.emit('log', `${err.name}: ${err.message}`, 'errLog.txt');
    response.statusCode = 500; // internal server error
    response.end();
  }
}
// create and configure the server
const server = http.createServer((req, res) => {
  console.log(req.url, req.method);
  myEmitter.emit('log', `${req.url}\t${req.method}`, 'reqLog.txt');

  // store file extension of the request url
  const extension = path.extname(req.url);

  let contentType;

  // manage contentType according to file extension of the url
  switch (extension) {
    case '.css':
      contentType = 'text/css';
      break;
    case '.js':
      contentType = 'text/javascript';
      break;
    case '.json':
      contentType = 'application/json';
      break;
    case '.jpg':
      contentType = 'image/jpeg';
      break;
    case '.png':
      contentType = 'image/png';
      break;
    case '.txt':
      contentType = 'text/plain';
      break;
    default:
      contentType = 'text/html';
  }

  let filePath =
    contentType === 'text/html' && req.url === '/'
      ? path.join(__dirname, 'views', 'index.html')
      : contentType === 'text/html' && req.url.slice(-1) === '/' // if last character in url is '/'
        ? path.join(__dirname, 'views', req.url, 'index.html') // req.url will specify the subdir
        : contentType === 'text/html' // if req.url is not a slash and last char not a slash
          ? path.join(__dirname, 'views', req.url) // just look for url in the views folder
          : path.join(__dirname, req.url); // if url not in views, just use req.url

  // makes .html extension not required int the browser
  if (!extension && req.url.slice(-1) !== '/') filePath += '.html';

  // serve the file if it exists
  const fileExists = fs.existsSync(filePath);
  if (fileExists) {
    serveFile(filePath, contentType, res);
  } 
  // if file does not exist, response will vary
  else {
    switch (path.parse(filePath).base) {
      case 'old-page.html':
        res.writeHead(301, {'Location': 'new-page.html'}); // redirect to new page
        res.end(); // end the response
        break;
      case 'www-page.html':
        res.writeHead(301, {'Location': '/'}); // redirect to root page
        res.end(); // end the response
        break;
      default:
        // serve a 404 response
        serveFile(path.join(__dirname, 'views', '404.html'), 'text/html', res);
    };
    // https://nodejs.org/api/path.html#pathparsepath
  }
});

server.listen(PORT, () => console.log(`Server running and listening on port ${PORT}`));
var HampLoanerAjaxUtils = Class.create();
HampLoanerAjaxUtils.prototype = Object.extendsObject(global.AbstractAjaxProcessor, {
	validateDates: function() {
		var MAX_MONTHS_START_DATE = 3; // Allow reservations with start date within 3 months
		var MAX_MONTHS_RETURN_DATE = 6; // Allow reservations with return date within 6 months from start date

		var startDateUserFormat = this.getParameter('sysparm_startdate');
		var startDate = HAMUtils.getDateInInternalFormat(startDateUserFormat);

		var returnDateUserFormat = this.getParameter('sysparm_returndate');
		var returnDate = HAMUtils.getDateInInternalFormat(returnDateUserFormat);

		var gDate = new GlideDateTime();
		var currentDate = gDate.getLocalDate();
		var res = {};
		var sdt;
		if (!gs.nil(startDate)) {
			sdt = new GlideDateTime(startDate);
			var cdt = new GlideDateTime(currentDate);
			var maxsdt = new GlideDateTime(currentDate);
			maxsdt.addMonthsUTC(MAX_MONTHS_START_DATE);
			if (sdt.before(cdt)) {
				res.isStartDateValid = false;
				res.startDateErrorMsg = gs.getMessage(
					'{0} is not valid. Select a start date on or after current date', [startDate]
				);
			} else if (sdt.after(maxsdt)) {
				res.isStartDateValid = false;
				res.startDateErrorMsg = gs.getMessage(
					'{0} is not valid. Select a start date within {1} months from current date',
					[startDate, String(MAX_MONTHS_START_DATE)]
				);
			} else {
				res.isStartDateValid = true;
			}
		}
		if (!gs.nil(returnDate)) {
			sdt = new GlideDateTime(startDate);
			var rdt = new GlideDateTime(returnDate);
			var maxrdt = new GlideDateTime(startDate);
			maxrdt.addMonthsUTC(MAX_MONTHS_RETURN_DATE);
			if (rdt.onOrBefore(sdt)) {
				res.isReturnDateValid = false;
				res.returnDateErrorMsg = gs.getMessage(
					'{0} is not valid. Select a return date after the selected start date', [returnDate]
				);
			} else if (rdt.after(maxrdt)) {
				res.isReturnDateValid = false;
				res.returnDateErrorMsg = gs.getMessage(
					'{0} is not valid. Select a return date within {1} months from the selected start date',
					[returnDate, String(MAX_MONTHS_RETURN_DATE)]
				);
			} else {
				res.isReturnDateValid = true;
			}
		}
		return JSON.stringify(res);
	},
	isLoanerModelsExist: function () {
		var location = this.getParameter('sysparm_location');
		if (!gs.nil(this.getParameter('sysparm_model'))) {
			var model = this.getParameter('sysparm_model');
			if (new sn_hamp.HampLoanerUtils().isLoanerAssetExist(location, model)) {
				return 'yes';
			}
		}
		if (new sn_hamp.HampLoanerUtils().isLoanerAssetExist(location)) {
			return 'modelNotPresent';
		}
		return 'noLoanerModels';
	},
	isLoanerAssetAvailable: function () {
		var model = this.getParameter('sysparm_model');
		var location = this.getParameter('sysparm_location');
		var startDateUserFormat = this.getParameter('sysparm_start_date');
		var returnDateUserFormat = this.getParameter('sysparm_return_date');
		var leadTimeInDays = this.getParameter('sysparm_lead_time');

		var startDate = HAMUtils.getDateInInternalFormat(startDateUserFormat);
		var returnDate = HAMUtils.getDateInInternalFormat(returnDateUserFormat);

		var isLoanerAssetAvailable = new sn_hamp.HAMAssetReservationUtils().isLoanerAssetAvailableBetweenDates(
			model,
			location,
			startDate,
			returnDate,
			leadTimeInDays
		);

		var message = '';
		if (!isLoanerAssetAvailable) {
			message = gs.getMessage(
				'There are no loaner assets available for this time period. If you choose to submit, your request will join a waitlist.' // eslint-disable-line
			);
		}

		return JSON.stringify({
			isAvailable: isLoanerAssetAvailable,
			message: message,
		});
	},
	getLoanerOrder: function() {
		var sysId = this.getParameter('sysparm_loaner');
		var loanerId;
		var tableName = this.getParameter('sysparm_table');
		if (tableName === sn_hamp.HampLoanerUtils.LOANER_TASK_TABLE) {
			loanerId = new global.GlideQuery(sn_hamp.HampLoanerUtils.LOANER_TASK_TABLE)
				.withAcls()
				.where('sys_id', sysId)
				.select('loaner_order')
				.toArray(1);
			loanerId = loanerId[0].loaner_order;
		} else {
			loanerId = sysId;
		}
		var response = new global.GlideQuery(sn_hamp.HampLoanerUtils.LOANER_ORDER_TABLE)
			.withAcls()
			.where('sys_id', loanerId)
			.selectOne('asset.sys_id', 'asset.display_name', 'asset_stockroom')
			.get();
		return JSON.stringify(response);
	},
	type: 'HampLoanerAjaxUtils',
});
var HampLoanerUtils = Class.create();
HampLoanerUtils.prototype = {
	initialize: function () { },
	getModelsWithLoanerAssets: function (location) {
		var filter;
		var modelsarray = [];
		var assetsGa = new GlideAggregate('alm_asset');
		HampLoanerUtils.addLoanerBaseQuery(assetsGa, location);
		assetsGa.addQuery('install_status', 'NOT IN', HampLoanerUtils.ASSET_IN_USE_STATUSES);
		assetsGa.addQuery('excluded_from_ham', false);
		assetsGa.setGroup(true);
		assetsGa.groupBy('model.sys_id');
		assetsGa.query();
		while (assetsGa.next()) {
			modelsarray.push(assetsGa.getValue('model.sys_id'));
		}
		var loanerOrdersGa = new GlideAggregate(HampLoanerUtils.LOANER_ORDER_TABLE);
		HampLoanerUtils.addInUseFunctioningAssetsQuery(loanerOrdersGa, location, '');
		loanerOrdersGa.setGroup(true);
		loanerOrdersGa.groupBy('model.sys_id');
		loanerOrdersGa.query();
		while (loanerOrdersGa.next()) {
			modelsarray.push(loanerOrdersGa.getValue('model.sys_id'));
		}
		if(HAMUtils.HAS_ONLY_TNI_ENTITLEMENT) {
			var filteredModels = HAMUtils.filterOutNonTNIModels(modelsarray);
			filter = 'sys_idIN' + filteredModels;
		}
		else {
			filter = 'sys_idIN' + modelsarray;
		}
		return filter;
	},
	getAllLoanerAssetsOfStockroom: function (stockroomGr) {
		var assets = [];
		assets = assets.concat(this.getAllLoanerAssetsInStockroom(stockroomGr));
		assets = assets.concat(this.getAllInUseLoanerAssetsOfAStockroom(stockroomGr));
		return assets;
	},
	getAllLoanerAssetsInStockroom: function (stockroomGr) {
		var eamModelExt = HAMUtils.getEAMModelClasses();
		var eamAssetExt = HAMUtils.getEAMAssetClasses();
		var assetsGa = new GlideAggregate('alm_asset');
		assetsGa.addQuery('asset_function', 'loaner');
		assetsGa.addQuery('stockroom', stockroomGr.getUniqueValue());
		// Exclude EAM assets and EAM models
		assetsGa.addQuery('model.sys_class_name', 'NOT IN', eamModelExt);
		assetsGa.addQuery('sys_class_name', 'NOT IN', eamAssetExt);
		assetsGa.setGroup(true);
		assetsGa.groupBy('sys_id');
		assetsGa.query();

		var assetsarray = [];
		while (assetsGa.next()) {
			assetsarray.push(assetsGa.getValue('sys_id'));
		}
		return assetsarray;
	},
	getAllInUseLoanerAssetsOfAStockroom: function (stockroomGr) {
		var loanerOrdersGa = new GlideAggregate(HampLoanerUtils.LOANER_ORDER_TABLE);
		loanerOrdersGa.addQuery('asset_stockroom', stockroomGr.getUniqueValue());
		loanerOrdersGa.addQuery('asset.install_status', HAMConstants.ASSET_STATUSES.IN_USE);
		loanerOrdersGa.addQuery('asset.asset_function', 'loaner');
		loanerOrdersGa.addQuery('stage', HampLoanerUtils.STAGE_DEPLOYED);
		loanerOrdersGa.setGroup(true);
		loanerOrdersGa.groupBy('asset.sys_id');
		loanerOrdersGa.query();

		var assetsarray = [];
		while (loanerOrdersGa.next()) {
			assetsarray.push(loanerOrdersGa.getValue('asset.sys_id'));
		}
		return assetsarray;
	},
	getFunctioningAssets: function (location, model) {
		var functioningAssets = [];
		functioningAssets = functioningAssets.concat(this.getInStockFunctioningAssets(location, model));
		functioningAssets = functioningAssets.concat(this.getInUseFunctioningAssets(location, model));
		return functioningAssets;
	},
	getInStockFunctioningAssets: function (location, model) {
		var assetsGa = new GlideAggregate('alm_asset');
		HampLoanerUtils.addLoanerBaseQuery(assetsGa, location, model);
		HampLoanerUtils.addInStockFunctioningAssetsQuery(assetsGa);
		assetsGa.setGroup(true);
		assetsGa.groupBy('sys_id');
		assetsGa.query();

		var assetsarray = [];
		while (assetsGa.next()) {
			assetsarray.push(assetsGa.getValue('sys_id'));
		}
		return assetsarray;
	},
	getInUseFunctioningAssets: function (location, model) {
		var loanerOrdersGa = new GlideAggregate(HampLoanerUtils.LOANER_ORDER_TABLE);
		HampLoanerUtils.addInUseFunctioningAssetsQuery(loanerOrdersGa, location, model);
		loanerOrdersGa.setGroup(true);
		loanerOrdersGa.groupBy('asset.sys_id');
		loanerOrdersGa.query();

		var assetsarray = [];
		while (loanerOrdersGa.next()) {
			assetsarray.push(loanerOrdersGa.getValue('asset.sys_id'));
		}
		return assetsarray;
	},
	getActiveAssetAllocations: function (location, model, startDate, returnDate, leadTime, forLoanerOrder) {
		var loanerOrdersGa = new GlideAggregate(HampLoanerUtils.LOANER_ORDER_TABLE);
		loanerOrdersGa.addQuery('location', location);
		loanerOrdersGa.addQuery('model', model);
		if (forLoanerOrder) {
			loanerOrdersGa.addQuery('sys_id', '!=', forLoanerOrder);
		}

		HampLoanerUtils.addLoanerOrdersOverlapQuery(loanerOrdersGa, startDate, returnDate, leadTime);
		HampLoanerUtils.addDomainFilterQuery(loanerOrdersGa);

		var activeStages = [HampLoanerUtils.STAGE_NEW, HampLoanerUtils.STAGE_PREPARE, HampLoanerUtils.STAGE_DEPLOYED];
		loanerOrdersGa.addQuery('stage', activeStages);

		loanerOrdersGa.setGroup(true);
		loanerOrdersGa.groupBy('asset.sys_id');
		loanerOrdersGa.query();

		var assetsarray = [];
		while (loanerOrdersGa.next()) {
			assetsarray.push(loanerOrdersGa.getValue('asset.sys_id'));
		}
		return assetsarray;
	},
	getAssetsAvailableToAllocate: function (location, model, startDate, returnDate, leadTime, forLoanerOrder) {
		var functioningAssets = this.getFunctioningAssets(location, model);
		// eslint-disable-next-line max-len
		var activeAllocations = this.getActiveAssetAllocations(location, model, startDate, returnDate, leadTime, forLoanerOrder);
		var availableAssets = [];
		for (var i = 0; i < functioningAssets.length; i++) {
			if (activeAllocations.indexOf(functioningAssets[i]) === -1) {
				availableAssets.push(functioningAssets[i]);
			}
		}
		return availableAssets;
	},
	getLoanerAssets: function (current) {
		var loanerOrderGr = null;
		if (current.getTableName() === HampLoanerUtils.LOANER_ORDER_TABLE) {
			loanerOrderGr = current;
		} else if (current.getTableName() === HampLoanerUtils.LOANER_TASK_TABLE) {
			loanerOrderGr = current.loaner_order;
		}
		if (gs.nil(loanerOrderGr)) {
			return '';
		}

		var location = loanerOrderGr.location;
		var model = loanerOrderGr.model;
		var startDate = loanerOrderGr.start_date;
		var returnDate = loanerOrderGr.return_date;
		var leadTime = loanerOrderGr.lead_time;

		var assetsarray = this.getAssetsAvailableToAllocate(location, model, startDate, returnDate, leadTime);
		var filter = 'sys_idIN' + assetsarray;
		return filter;
	},
	updateAssetPrepared: function (current) {
		new global.GlideQuery('sn_hamp_loaner_asset_order')
			.where('sys_id', current.loaner_order)
			.update({
				asset_prepared: true,
			});
	},
	updateAssetStockroomOnLoanerOrder: function (loanerTaskGr) {
		var assetStockroom = loanerTaskGr.loaner_order.asset.stockroom;
		if (!gs.nil(assetStockroom)) {
			new global.GlideQuery(HampLoanerUtils.LOANER_ORDER_TABLE)
				.where('sys_id', loanerTaskGr.loaner_order)
				.update({
					asset_stockroom: assetStockroom,
				});
		}
	},
	updateReturnedOn: function (current) {
		var gDate = new GlideDateTime();
		new global.GlideQuery('sn_hamp_loaner_asset_order')
			.where('sys_id', current.loaner_order)
			.update({
				returned_on: gDate.getLocalDate(),
			});
	},
	updateAsset: function (assetId, assetData, isConsumable) {
		if (isConsumable) { delete assetData.work_notes; }

		new global.GlideQuery('alm_asset')
			.where('sys_id', assetId)
			.update(assetData);

		if (assetData.work_notes) {
			var assetGr = HAMUtils.getAsGlideRecord(HAMConstants.ALM_ASSET_TABLE, assetId);
			assetGr.work_notes = assetData.work_notes;
			assetGr.update();
		}
	},
	cancelLoanerOrder: function (loanerOrderId) {
		var isAssetDeployed = new global.GlideQuery(HampLoanerUtils.LOANER_TASK_TABLE)
			.where('loaner_order', loanerOrderId)
			.where('task_name', 'deploy')
			.where('state', 3)
			.selectOne()
			.isPresent();
		if (isAssetDeployed) {
			gs.addErrorMessage(gs.getMessage('Loaner asset order cannot be cancelled once the asset is deployed'));
			return;
		}

		var loanerOrderGr = new global.GlideQuery('sn_hamp_loaner_asset_order')
			.where('sys_id', loanerOrderId)
			.toGlideRecord();
		loanerOrderGr.query();
		loanerOrderGr.next();
		loanerOrderGr.stage = 'cancelled';
		loanerOrderGr.work_notes = gs.getMessage('Loaner order is cancelled by {0}', gs.getUserDisplayName());
		loanerOrderGr.update();

		new global.GlideQuery('sn_hamp_loaner_asset_task')
			.where('loaner_order', loanerOrderId)
			.where('active', true)
			.updateMultiple({
				state: 4,
			});
	},
	triggerLoanerFlow: function (loanerOrder) {
		var defaultFlow = 'sn_hamp.loaner_asset_request_flow';
		var LOANER_DECISION_ID = 'f9a23e38739310107e88ef66fbf6a7db';
		var decisionInputs = {};
		decisionInputs.loaner_asset_order = loanerOrder.sys_id;
		var flow = HAMUtils.getFlowFromDecisionTable(LOANER_DECISION_ID, decisionInputs, defaultFlow);
		var inputs = {};
		inputs.current = loanerOrder;
		inputs.table_name = 'sn_hamp_loaner_asset_order';
		var flowContextID = sn_hamp.HAMUtils.triggerFlowAsyncronously(flow, inputs);
		if (!gs.nil(flowContextID)) {
			new global.GlideQuery(HampLoanerUtils.LOANER_ORDER_TABLE)
				.where('sys_id', loanerOrder.sys_id)
				.update({
					flow_context: flowContextID,
				});
		}
	},
	earlyReturnLoanerAsset: function (loanerOrder, loanerAsset, returnedOn, stockroom, isAssetFunctional) {
		var loanerGq = new global.GlideQuery(HampLoanerUtils.LOANER_ORDER_TABLE)
			.where('sys_id', loanerOrder);
		var loanerGr = loanerGq.toGlideRecord();
		loanerGr.query();
		loanerGr.next();
		var returnedOnInternalFormat = HAMUtils.getDateInInternalFormat(returnedOn);
		loanerGq.update({
			asset_returned: 'Y',
			returned_on: returnedOnInternalFormat,
			is_asset_functional: isAssetFunctional,
		});
		var reclaimTaskId;
		new global.GlideQuery(HampLoanerUtils.LOANER_TASK_TABLE)
			.where('loaner_order', loanerOrder)
			.where('task_name', 'reclaim')
			.selectOne('sys_id')
			.ifPresent(function (task) {
				reclaimTaskId = task.sys_id;
			});
		if (!gs.nil(reclaimTaskId)) {
			new global.GlideQuery(HampLoanerUtils.LOANER_TASK_TABLE)
				.where('sys_id', reclaimTaskId)
				.update({
					state: 3,
					assigned_to: gs.getUserID(),
					return_stockroom: stockroom,
				});
		} else {
			var loanerTaskGr = new GlideRecord('sn_hamp_loaner_asset_task');
			loanerTaskGr.initialize();
			loanerTaskGr.setValue('parent', loanerOrder);
			loanerTaskGr.setValue('loaner_order', loanerOrder);
			loanerTaskGr.setValue('task_name', 'reclaim');
			loanerTaskGr.setValue('state', 3);
			loanerTaskGr.setValue('assigned_to', gs.getUserID());
			loanerTaskGr.setValue('return_stockroom', stockroom);
			loanerTaskGr.setValue('short_description', gs.getMessage('Reclaim loaner asset from user'));
			// eslint-disable-next-line max-len
			loanerTaskGr.setValue('description', gs.getMessage('Reclaim loaner asset from user and return to loaner pool'));
			reclaimTaskId = loanerTaskGr.insert();
		}

		var reclaimLoanerTaskGr = HAMUtils.getAsGlideRecord(HampLoanerUtils.LOANER_TASK_TABLE, reclaimTaskId);
		this.updateAssetOnReturn(reclaimLoanerTaskGr);
	},
	updateAssetOnReturn: function (loanerTaskGr /* reclaim task */) {
		var returnStockroom = String(loanerTaskGr.return_stockroom);

		var loanerOrderGr = loanerTaskGr.loaner_order;
		var isAssetFunctional = String(loanerOrderGr.is_asset_functional);

		var loanerAssetGr = loanerOrderGr.asset;
		var loanerAssetID = loanerAssetGr.sys_id;

		var assetUpdateJSON = {};
		assetUpdateJSON = {
			install_status: parseInt(HAMConstants.ASSET_STATUSES.IN_STOCK, 10),
			substatus: HAMConstants.ASSET_SUB_STATUSES.AVAILABLE,
			stockroom: returnStockroom,
			reserved_for: null,
			assigned_to: null,
			assigned: null,
			install_date: null,
			managed_by: null,
		};

		var msgParams = [loanerAssetGr.getDisplayValue(), loanerTaskGr.getDisplayValue()];
		if (isAssetFunctional === 'N') {
			assetUpdateJSON.substatus = HAMConstants.ASSET_SUB_STATUSES.PENDING_REPAIR;
			// eslint-disable-next-line max-len
			assetUpdateJSON.work_notes = gs.getMessage('Asset {0} updated to state In stock and substate Pending repair as part of task {1}', msgParams);
		} else {
			// eslint-disable-next-line max-len
			assetUpdateJSON.work_notes = gs.getMessage('Asset {0} updated to state In stock and substate Available as part of task {1}', msgParams);
		}

		// Check if the asset is part of another loaner order
		var otherLoanerOrder = HampLoanerUtils.getAnotherLoanerOrderWithAsset(loanerAssetID, loanerOrderGr);

		// If asset is part of another loaner orders, then do not clear process fields
		// as it would result in consumable records getting merged.
		if (gs.nil(otherLoanerOrder)) {
			assetUpdateJSON.process_table = null;
			assetUpdateJSON.process_id = null;
		}

		this.updateAsset(loanerAssetID, assetUpdateJSON, HAMUtils.isConsumableClassAsset(loanerAssetGr));

		// If not part of another loaner order, return. Else stamp other loaner order details on asset
		if (gs.nil(otherLoanerOrder)) { return; }

		var otherLoanerOrderStage = String(otherLoanerOrder.stage);
		if (otherLoanerOrderStage === HampLoanerUtils.STAGE_NEW
			|| otherLoanerOrderStage === HampLoanerUtils.STAGE_PREPARE) {
			assetUpdateJSON = {
				install_status: parseInt(HAMConstants.ASSET_STATUSES.IN_STOCK, 10),
				substatus: HAMConstants.ASSET_SUB_STATUSES.RESERVED,
				stockroom: returnStockroom,
				reserved_for: String(otherLoanerOrder.requested_for),
				assigned_to: null,
				assigned: null,
				install_date: null,
				managed_by: null,
				process_table: otherLoanerOrder.getTableName(),
				process_id: otherLoanerOrder.getUniqueValue(),
			};

			if (isAssetFunctional === 'N') {
				assetUpdateJSON.substatus = HAMConstants.ASSET_SUB_STATUSES.PENDING_REPAIR;
			} else {
				assetUpdateJSON.work_notes = this.getAssetReservedWorkNote(loanerAssetGr, otherLoanerOrder);
			}

			this.updateAsset(loanerAssetID, assetUpdateJSON, HAMUtils.isConsumableClassAsset(loanerAssetGr));
		}
	},
	updateAssetOnPrepareCompletion: function (prepareTaskGr) {
		var loanerOrderGr = prepareTaskGr.loaner_order;
		var requestedFor = String(loanerOrderGr.requested_for);

		var loanerAssetGr = loanerOrderGr.asset;
		var loanerAssetID = String(loanerAssetGr.sys_id);

		var msgParams = [loanerAssetGr.getDisplayValue(), prepareTaskGr.getDisplayValue()];
		// eslint-disable-next-line max-len
		var preparedWorkNote = gs.getMessage('Asset {0} updated to state In stock and substate Pending install as part of task {1}', msgParams);

		var assetUpdateJSON = {
			install_status: parseInt(HAMConstants.ASSET_STATUSES.IN_STOCK, 10),
			substatus: HAMConstants.ASSET_SUB_STATUSES.PENDING_INSTALL,
			reserved_for: requestedFor,
			process_table: HampLoanerUtils.LOANER_ORDER_TABLE,
			process_id: String(loanerOrderGr.sys_id),
			work_notes: preparedWorkNote,
		};

		this.updateAsset(loanerAssetID, assetUpdateJSON, HAMUtils.isConsumableClassAsset(loanerAssetGr));
	},
	updateAssetOnDeployCompletion: function (deployTaskGr) {
		var loanerOrderGr = deployTaskGr.loaner_order;

		var loanerAssetGr = loanerOrderGr.asset;
		var loanerAssetID = String(loanerAssetGr.sys_id);

		var msgParams = [loanerAssetGr.getDisplayValue(), deployTaskGr.getDisplayValue()];
		var deployedWorkNote = gs.getMessage('Asset {0} updated to state In Use as part of task {1}', msgParams);

		var installStatus;
		if (HAMUtils.isConsumableClassAsset(loanerAssetGr)) {
			installStatus = parseInt(HAMConstants.ASSET_STATUSES.CONSUMED, 10);
		} else {
			installStatus = parseInt(HAMConstants.ASSET_STATUSES.IN_USE, 10);
		}

		var timeNow = new GlideDateTime().toString();
		var assetUpdateJSON = {
			install_status: installStatus,
			substatus: null,
			location: String(loanerOrderGr.location),
			work_notes: deployedWorkNote,
			assigned: timeNow,
			install_date: timeNow,
			process_table: HampLoanerUtils.LOANER_ORDER_TABLE,
			process_id: String(loanerOrderGr.sys_id),
		};

		if (String(loanerOrderGr.request_type) !== HampLoanerUtils.LOANER_ORDER_TYPE_THIRD_PARTY) {
			assetUpdateJSON.assigned_to = String(loanerOrderGr.requested_for);
		}

		if (String(loanerOrderGr.request_type) === HampLoanerUtils.LOANER_ORDER_TYPE_THIRD_PARTY) {
			// Explictily marking null to overcome glidequery issue.
			// current.reserved_for.nil() returns false even though reserved_for is null
			assetUpdateJSON.managed_by = String(loanerOrderGr.opened_by);
			assetUpdateJSON.assigned_to = null;
			assetUpdateJSON.reserved_for = null;
		}

		this.updateAsset(loanerAssetID, assetUpdateJSON, HAMUtils.isConsumableClassAsset(loanerAssetGr));
	},
	canOrderBeCancelled: function (loanerOrder) {
		if (gs.hasRole('inventory_user')) {
			return true;
		}
		var canCancel = false;
		new global.GlideQuery('sn_hamp_loaner_asset_order')
			.where('sys_id', loanerOrder)
			.selectOne('opened_by', 'requested_for')
			.ifPresent(function (rec) {
				if (rec.opened_by === gs.getUserID() || rec.requested_for === gs.getUserID()) {
					canCancel = true;
				}
			});
		return canCancel;
	},
	isAssetAvailable: function (current) {
		var loanerOrderGr;
		if (current.getTableName() === HampLoanerUtils.LOANER_ORDER_TABLE) {
			loanerOrderGr = current;
		} else if (current.getTableName() === HampLoanerUtils.LOANER_TASK_TABLE) {
			loanerOrderGr = current.loaner_order;
		}
		var selectedAsset = String(loanerOrderGr.asset);
		var availableAssets = this.getAssetsAvailableToAllocate(
			loanerOrderGr.location,
			loanerOrderGr.model,
			loanerOrderGr.start_date,
			loanerOrderGr.return_date,
			loanerOrderGr.lead_time,
			loanerOrderGr.sys_id
		);
		if (availableAssets.indexOf(selectedAsset) !== -1) {
			return true;
		}
		return false;
	},
	canAccess: function (loanerOrder) {
		var res = new global.GlideQuery(HampLoanerUtils.LOANER_TASK_TABLE)
			.where('loaner_order', loanerOrder.sys_id)
			.where('assigned_to', gs.getUserID())
			.selectOne()
			.isPresent();
		return res;
	},
	isLoanerAssetExist: function (location, model) {
		var assets = new GlideRecord('alm_asset');
		HampLoanerUtils.addLoanerBaseQuery(assets, location, model);
		assets.addQuery('install_status', 'NOT IN', HampLoanerUtils.ASSET_IN_USE_STATUSES);
		assets.addQuery('excluded_from_ham', false)
		assets.query();
		if (assets.hasNext()) {
			return true;
		}

		var loanerOrdersGa = new GlideAggregate(HampLoanerUtils.LOANER_ORDER_TABLE);
		HampLoanerUtils.addInUseFunctioningAssetsQuery(loanerOrdersGa, location, '');
		loanerOrdersGa.query();
		return loanerOrdersGa.hasNext();
	},
	getFunctioningLoanerAssetsCount: function (location, model) {
		var inStockFunctioningAssets = this.getInStockFunctioningLoanerAssetsCount(location, model);
		var inUseFunctioningAssets = this.getInUseFunctioningLoanerAssetsCount(location, model);
		return (inStockFunctioningAssets + inUseFunctioningAssets);
	},
	getInStockFunctioningLoanerAssetsCount: function (location, model) {
		var assetsGa = new GlideAggregate('alm_asset');
		HampLoanerUtils.addLoanerBaseQuery(assetsGa, location, model);
		HampLoanerUtils.addInStockFunctioningAssetsQuery(assetsGa);
		assetsGa.addQuery('excluded_from_ham', false);
		assetsGa.addAggregate('SUM', 'quantity');
		assetsGa.groupBy('model');
		assetsGa.query();
		if (assetsGa.next()) {
			return (parseInt(assetsGa.getAggregate('SUM', 'quantity'), 10));
		}
		return 0;
	},
	getInUseFunctioningLoanerAssetsCount: function (location, model) {
		var loanerOrdersGa = new GlideAggregate(HampLoanerUtils.LOANER_ORDER_TABLE);
		HampLoanerUtils.addInUseFunctioningAssetsQuery(loanerOrdersGa, location, model);
		loanerOrdersGa.addAggregate('COUNT');
		loanerOrdersGa.query();
		if (loanerOrdersGa.next()) {
			return (parseInt(loanerOrdersGa.getAggregate('COUNT'), 10));
		}
		return 0;
	},
	isWaitlistedEditable: function (loanerOrderGr) {
		var stage = loanerOrderGr.getValue('stage');
		if (stage === HampLoanerUtils.STAGE_NEW) {
			return true;
		}
		if (stage === HampLoanerUtils.STAGE_PREPARE) {
			var prepareTask = new global.GlideQuery(HampLoanerUtils.LOANER_TASK_TABLE)
				.where('loaner_order', loanerOrderGr.getUniqueValue())
				.where('task_name', HampLoanerUtils.TASK_PREPARE)
				.select('state')
				.toArray(1);
			if (prepareTask[0] && parseInt(prepareTask[0].state, 10) === HampLoanerUtils.TASK_CLOSED_COMPLETE) {
				return false;
			}
			return true;
		}
		return false;
	},
	isPrepareTaskClosedComplete: function (loanerOrderGr) {
		var stage = loanerOrderGr.getValue('stage');
		if (stage === HampLoanerUtils.STAGE_NEW) {
			return false;
		}
		var prepareTask = new global.GlideQuery(HampLoanerUtils.LOANER_TASK_TABLE)
			.where('loaner_order', loanerOrderGr.getUniqueValue())
			.where('task_name', HampLoanerUtils.TASK_PREPARE)
			.select('state')
			.toArray(1);
		if (prepareTask[0] && parseInt(prepareTask[0].state, 10) === HampLoanerUtils.TASK_CLOSED_COMPLETE) {
			return true;
		}
		return false;
	},
	isLoanerFieldEditable: function (loanerOrderGr, field) {
		switch (field) {
		case 'asset':
			return !this.isPrepareTaskClosedComplete(loanerOrderGr);
		case 'model':
			return !this.isPrepareTaskClosedComplete(loanerOrderGr);
		default:
			return true;
		}
	},
	getAssetReservedWorkNote: function (assetGr, loanerOrderGr) {
		var msgParams = [assetGr.getDisplayValue(), loanerOrderGr.getDisplayValue()];
		// eslint-disable-next-line max-len
		var workNote = gs.getMessage('Asset {0} updated to state In stock and substate Reserved due to selection on loaner asset order {1}', msgParams);
		return workNote;
	},
	compareOrdersStartDates: function (loanerOrder1, loanerOrder2) {
		return HAMUtils.compareDates(String(loanerOrder1.start_date), String(loanerOrder2.start_date));
	},
	setAssetStatusOnSelection: function (loanerOrderGr, selectedAssetGr) {
		var selectedAssetID = selectedAssetGr.sys_id.toString();
		var selectionWorkNote = this.getAssetReservedWorkNote(selectedAssetGr, loanerOrderGr);

		var otherLoanerOrder;
		var assetUpdateJSON = {};

		if (HAMUtils.isConsumableClassAsset(selectedAssetGr)) {
			var processedConsumableID = HampLoanerUtils.splitConsumableOnLoanerOrder(loanerOrderGr);
			if (selectedAssetID !== processedConsumableID) {
				// A new consumable with required attributes record is created in this case.
				loanerOrderGr.setValue('asset', processedConsumableID);
			}
		}
		var setAssetID = loanerOrderGr.getValue('asset');

		// Check if selected asset is already part of another loaner order.
		otherLoanerOrder = HampLoanerUtils.getAnotherLoanerOrderWithAsset(selectedAssetID, loanerOrderGr);

		// If it is part of another loaner order, but the other loaner order start date comes first, do nothing.
		// Else update the consumable with incoming loaner asset order details.
		if (!gs.nil(otherLoanerOrder) && this.compareOrdersStartDates(loanerOrderGr, otherLoanerOrder) !== '>') {
			return;
		}

		assetUpdateJSON = {
			install_status: parseInt(HAMConstants.ASSET_STATUSES.IN_STOCK, 10),
			substatus: HAMConstants.ASSET_SUB_STATUSES.RESERVED,
			reserved_for: String(loanerOrderGr.requested_for),
			process_table: HampLoanerUtils.LOANER_ORDER_TABLE,
			process_id: loanerOrderGr.getUniqueValue(),
			work_notes: selectionWorkNote,
		};
		this.updateAsset(setAssetID, assetUpdateJSON, HAMUtils.isConsumableClassAsset(selectedAssetGr));
	},
	setAssetStatusOnRemoval: function (loanerOrderGr, assetGr, isCancelledOrDeleted) {
		// If loaner asset orders not in New, Prepare are deleted, do nothing.
		if (isCancelledOrDeleted === HampLoanerUtils.LOANER_ORDER_ACTION_DELETED) {
			var loanerOrderStage = String(loanerOrderGr.stage);
			if (!((loanerOrderStage === HampLoanerUtils.STAGE_NEW)
				|| (loanerOrderStage === HampLoanerUtils.STAGE_PREPARE))) { return; }
		}

		var assetId = assetGr.sys_id.toString();
		var otherLoanerOrderStage;
		var dateComp;

		// If the asset is removed from the loaner asset order which is not the one with earliest start date
		// do nothing
		var otherLoanerOrder = HampLoanerUtils.getAnotherLoanerOrderWithAsset(assetId, loanerOrderGr);
		if (!gs.nil(otherLoanerOrder)) {
			otherLoanerOrderStage = String(otherLoanerOrder.stage);
			if (otherLoanerOrderStage === HampLoanerUtils.STAGE_DEPLOYED) { return; }

			dateComp = this.compareOrdersStartDates(loanerOrderGr, otherLoanerOrder);
			if (dateComp === '<' && (otherLoanerOrderStage === HampLoanerUtils.STAGE_NEW
				|| otherLoanerOrderStage === HampLoanerUtils.STAGE_PREPARE)) { return; }
		}

		// If the asset is removed from the loaner asset order with the earliest start date
		// move the asset to a state of available
		var msgParams = [assetGr.getDisplayValue(), loanerOrderGr.getDisplayValue()];
		var removalWorkNote;
		if (isCancelledOrDeleted === HampLoanerUtils.LOANER_ORDER_ACTION_CANCELLED) {
			// eslint-disable-next-line max-len
			removalWorkNote = gs.getMessage('Asset {0} updated to state In stock and substate Available due to cancellation of loaner asset order {1}', msgParams);
		} else if (isCancelledOrDeleted === HampLoanerUtils.LOANER_ORDER_ACTION_DELETED) {
			// eslint-disable-next-line max-len
			removalWorkNote = gs.getMessage('Asset {0} updated to state In stock and substate Available due to deletion of loaner asset order {1}', msgParams);
		} else {
			// eslint-disable-next-line max-len
			removalWorkNote = gs.getMessage('Asset {0} updated to state In stock and substate Available due to removal from loaner asset order {1}', msgParams);
		}

		var assetUpdateJSON = {};
		assetUpdateJSON = {
			install_status: parseInt(HAMConstants.ASSET_STATUSES.IN_STOCK, 10),
			substatus: HAMConstants.ASSET_SUB_STATUSES.AVAILABLE,
			reserved_for: null,
			process_table: null,
			process_id: null,
			work_notes: removalWorkNote,
		};

		this.updateAsset(assetId, assetUpdateJSON, HAMUtils.isConsumableClassAsset(assetGr));

		// If the asset is part of another active loaner order with a greater start date,
		// set the asset as reserved for that order.
		if (!gs.nil(otherLoanerOrder)) {
			otherLoanerOrderStage = String(otherLoanerOrder.stage);
			if (dateComp === '>' && (otherLoanerOrderStage === HampLoanerUtils.STAGE_NEW
				|| otherLoanerOrderStage === HampLoanerUtils.STAGE_PREPARE)) {
				var selectionWorkNote = this.getAssetReservedWorkNote(assetGr, otherLoanerOrder);
				assetUpdateJSON = {
					install_status: parseInt(HAMConstants.ASSET_STATUSES.IN_STOCK, 10),
					substatus: HAMConstants.ASSET_SUB_STATUSES.RESERVED,
					reserved_for: String(otherLoanerOrder.requested_for),
					work_notes: selectionWorkNote,
					process_table: otherLoanerOrder.getTableName(),
					process_id: otherLoanerOrder.getUniqueValue(),
				};
				this.updateAsset(assetId, assetUpdateJSON, HAMUtils.isConsumableClassAsset(assetGr));
			}
		}
	},
	showLoanerAssetOrdersListOnAsset: function (assetGr) {
		/** ***********************************************************************************
			* Hiding loaner order related list for consumables if they are not supported by process columns
			*********************************************************************************** */
		if (HAMUtils.isConsumableClassAsset(assetGr) && !HAMUtils.isConsumablesSupportedByProcess()) {
			return false;
		}
		if (assetGr.getValue('asset_function') === HAMConstants.ASSET_FUNCTION.LOANER) {
			return true;
		}

		var showLoanerAssetOrders = false;
		if (HAMUtils.isConsumableClassAsset(assetGr)) {
			/** ***********************************************************************************
			* Consumable history can only be got in conjunction with install status and stockroom.
			*********************************************************************************** */
			if (assetGr.getValue('install_status') === HAMConstants.ASSET_STATUSES.IN_STOCK) {
				showLoanerAssetOrders = new global.GlideQuery(HampLoanerUtils.LOANER_ORDER_TABLE)
					.whereNotNull('asset')
					.where('model', assetGr.getValue('model'))
					.where('asset_stockroom', assetGr.getValue('stockroom'))
					.selectOne()
					.isPresent();
			}
			return showLoanerAssetOrders;
		}

		/** ***********************************************************************************
		* In case of Asset, Hardware, Facility, Bundle class, check if record is in orders.
		*********************************************************************************** */
		showLoanerAssetOrders = new global.GlideQuery(HampLoanerUtils.LOANER_ORDER_TABLE)
			.where('asset', assetGr.getUniqueValue())
			.selectOne()
			.isPresent();
		return showLoanerAssetOrders;
	},
	type: 'HampLoanerUtils',
};
HampLoanerUtils.addDomainFilterQuery = function (records) {
	if (global.ModelUtils.isDomainSeparationEnabled()) {
		var domainID = new global.AssetManagementBaseJob().getCurrentDomainSysId();
		records.addQuery('sys_domain', domainID);
	}
};
HampLoanerUtils.getLoanerCommonBaseQuery = function (location, model) {
	var assets = new GlideAggregate('alm_asset');
	assets.addQuery('asset_function', 'loaner');
	if (!(HAMUtils.isConsumablesSupportedByProcess())) {
		var consumableExt = HAMUtils.getTableExtensions(HAMConstants.ALM_CONSUMABLE_TABLE);
		assets.addQuery('sys_class_name', 'NOT IN', consumableExt);
	}
	// Exclude EAM assets and EAM models
	var eamModelExt = HAMUtils.getEAMModelClasses();
	assets.addQuery('model.sys_class_name', 'NOT IN', eamModelExt);
	var eamAssetExt = HAMUtils.getEAMAssetClasses();
	assets.addQuery('sys_class_name', 'NOT IN', eamAssetExt);
	assets.addQuery('sys_class_name', '!=', 'alm_license');
	if (!gs.nil(model)) {
		assets.addQuery('model', model);
	}
	HampLoanerUtils.addDomainFilterQuery(assets);
	return assets.getEncodedQuery();
};
HampLoanerUtils.getLoanerBaseQueryWithLocation = function (location, commonBaseQuery) {
	var baseQueryWithLocation = commonBaseQuery;
	if (!gs.nil(location)) {
		baseQueryWithLocation += '^location=' + location;
		baseQueryWithLocation += '^NQ' + commonBaseQuery + '^locationISEMPTY^stockroom.location=' + location;
	}
	return baseQueryWithLocation;
};
HampLoanerUtils.addLoanerBaseQuery = function (assets, location, model) {
	var commonBaseQuery = HampLoanerUtils.getLoanerCommonBaseQuery(location, model);
	var baseQueryWithLocation = HampLoanerUtils.getLoanerBaseQueryWithLocation(location, commonBaseQuery);
	assets.addEncodedQuery(baseQueryWithLocation);
};
HampLoanerUtils.addInStockFunctioningAssetsQuery = function (assets) {
	// Assets are considered functioning if the state and substatus are:
	// state: in_stock (6) | substatus: available, reserved, pending_install
	// OR state: in_use (1)
	var validInstallStatus = HAMConstants.ASSET_STATUSES.IN_STOCK;
	var validSubstatus = [
		HAMConstants.ASSET_SUB_STATUSES.AVAILABLE,
		HAMConstants.ASSET_SUB_STATUSES.RESERVED,
		HAMConstants.ASSET_SUB_STATUSES.PENDING_INSTALL,
	];
	assets.addQuery('install_status', validInstallStatus);
	assets.addQuery('substatus', validSubstatus)
		.addOrCondition('substatus', '');
	HampLoanerUtils.addDomainFilterQuery(assets);
};
HampLoanerUtils.addInUseFunctioningAssetsQuery = function (loanerOrders, location, model) {
	var validStatus = [HAMConstants.ASSET_STATUSES.IN_USE];
	if (HAMUtils.isConsumablesSupportedByProcess()) {
		validStatus.push(HAMConstants.ASSET_STATUSES.CONSUMED);
	}
	loanerOrders.addQuery('location', location);
	if (!gs.nil(model)) {
		loanerOrders.addQuery('model', model);
	}
	loanerOrders.addQuery('asset.install_status', validStatus);
	loanerOrders.addQuery('asset.asset_function', 'loaner');
	loanerOrders.addQuery('stage', HampLoanerUtils.STAGE_DEPLOYED);
	HampLoanerUtils.addDomainFilterQuery(loanerOrders);
};
HampLoanerUtils.convertDateStringToDateObj = function (dateString) {
	var date = new Date();
	date.setFullYear(dateString.substring(0, 4));
	date.setMonth(dateString.substring(5, 7) - 1);
	date.setDate(dateString.substring(8, 10));
	date.setHours(0, 0, 0, 0);
	return date;
};
HampLoanerUtils.convertDateObjToDateString = function (date) {
	var yearStr = String(date.getFullYear());
	var monthStr = String(date.getMonth() + 1);
	if (monthStr.length === 1) { monthStr = '0' + monthStr; }
	var dateStr = String(date.getDate());
	if (dateStr.length === 1) { dateStr = '0' + dateStr; }
	return yearStr + '-' + monthStr + '-' + dateStr;
};
HampLoanerUtils.getPreparationStartDate = function (startDate, leadTime) {
	var leadTimeInDays = parseInt(leadTime, 10);
	var minusDays = 0 - leadTimeInDays;

	var preparationStartDateObj = HampLoanerUtils.convertDateStringToDateObj(String(startDate));
	if (leadTimeInDays > 0) {
		preparationStartDateObj.setDate(preparationStartDateObj.getDate() + minusDays);
	}
	var preparationStartDateStr = HampLoanerUtils.convertDateObjToDateString(preparationStartDateObj);

	var currentDateStr = new GlideDateTime().getLocalDate().toString();
	var currentDateObj = HampLoanerUtils.convertDateStringToDateObj(currentDateStr);

	if ((preparationStartDateObj.getTime() - currentDateObj.getTime()) <= 0) {
		return currentDateStr;
	}
	return preparationStartDateStr;
};
HampLoanerUtils.addLoanerOrdersOverlapQuery = function (loanerOrders, startDate, returnDate, leadTime, isGlideQuery) {
	var preparationStartDate = HampLoanerUtils.getPreparationStartDate(startDate, leadTime);
	if (isGlideQuery) {
		var enhancedQuery = loanerOrders.where('preparation_start_date', '<=', returnDate);
		enhancedQuery = enhancedQuery.where('return_date', '>=', preparationStartDate);
		return enhancedQuery;
	}
	loanerOrders.addQuery('start_date', '<=', returnDate);
	loanerOrders.addQuery('return_date', '>=', preparationStartDate);
	return loanerOrders;
};
HampLoanerUtils.convertUTCtoTimezone = function (utcTime, timeZone) {
	if (!gs.nil(timeZone)) {
		var gr = new GlideScheduleDateTime(utcTime);
		var currentTime = gr.convertTimeZone('UTC', timeZone);
		return new GlideDateTime(currentTime);
	}
	return utcTime;
};
HampLoanerUtils.getTimezoneOfLocation = function (location) {
	var locObj = new global.GlideQuery('cmn_location')
		.get(location, ['time_zone']);
	if (!gs.nil(locObj) && !gs.nil(locObj._value) && !gs.nil(locObj._value.time_zone)) {
		return locObj._value.time_zone;
	}
	return '';
};
HampLoanerUtils.splitConsumableOnLoanerOrder = function (loanerOrderGr) {
	var quantity = 1; // Only consumables with quantity 1 can be requested as of now.

	var consumableID = loanerOrderGr.getValue('asset');
	var consumableGr = HAMUtils.getAsGlideRecord(HAMConstants.ALM_ASSET_TABLE, consumableID);
	var newConsumableID = consumableID;

	if (quantity < parseInt(consumableGr.getValue('quantity'), 10)) {
		newConsumableID = new global.Consumables().split(
			consumableID,
			quantity,
			consumableGr.getValue('install_status'),
			HAMConstants.ASSET_SUB_STATUSES.RESERVED,
			'',
			consumableGr.getValue('stockroom'),
			consumableGr.getValue('location'),
			'',
			'loaner', {
				process_table: loanerOrderGr.getTableName(),
				process_id: loanerOrderGr.getUniqueValue(),
				reserved_for: loanerOrderGr.getValue('requested_for'),
			}
		);
	}
	return newConsumableID;
};
HampLoanerUtils.consumableMergeConditionCheck = function (consumableGr) {
	var canMerge = true;
	if (consumableGr.getValue('process_table') === HampLoanerUtils.LOANER_ORDER_TABLE
		&& !gs.nil(consumableGr.getValue('process_id'))) {
		canMerge = false;
	}
	return canMerge;
};
HampLoanerUtils.getAnotherLoanerOrderWithAsset = function (assetId, excludeLoanerOrderGr) {
	var loanerOrder = '';
	var assetExists = new global.GlideQuery(HampLoanerUtils.LOANER_ORDER_TABLE)
		.where('asset', assetId)
		.where('sys_id', '!=', String(excludeLoanerOrderGr.sys_id))
		.where('stage', 'IN', [
			HampLoanerUtils.STAGE_NEW,
			HampLoanerUtils.STAGE_PREPARE,
			HampLoanerUtils.STAGE_DEPLOYED,
		])
		.where('is_waitlisted', false)
		.orderBy('start_date')
		.toGlideRecord();
	assetExists.setLimit(1);
	assetExists.query();
	if (assetExists.next()) {
		loanerOrder = assetExists;
	}
	return loanerOrder;
};
HampLoanerUtils.canCloseLoanerTask = function (loanerTaskGr) {
	var hasAccess = gs.getUser().hasRole('itil') || gs.hasRole('inventory_user')
	|| String(loanerTaskGr.assigned_to) === gs.getUserID();
	return (hasAccess && (loanerTaskGr.getValue('state') === '1' || loanerTaskGr.getValue('state') === '2'));
};
HampLoanerUtils.validateFieldsForLoaner = function (loanerTaskGr) {
	var message;
	var msgParams = [];
	if ((loanerTaskGr.getValue('task_name') === 'prepare') && loanerTaskGr.getValue('state') !== '4') {
		// check mandatory fields are filled on Prepare task
		if (!loanerTaskGr.loaner_order.asset) {
			msgParams.push(loanerTaskGr.loaner_order.asset.getLabel());
		}
		if (msgParams.length > 0) {
			message = gs.getMessage('The following mandatory fields are not filled in: {0}', msgParams.join(', '));
			gs.addErrorMessage(message);
		}
		if (loanerTaskGr.loaner_order.asset) {
			message = (new sn_hamp.HAMLicensingUtility()).getExcludedAssetErrorMessage(loanerTaskGr.loaner_order.asset);
			if(!gs.nil(message)) {
				msgParams.push(message);
				//Next 2 lines have been added as a workaround to avoid 2 error messages from appearing in Classic workspace, will be removed once platform fix is done.
				var inputURL = String(gs.action.getGlideURI());
				if (inputURL.indexOf('.do?') === -1) {
					gs.addErrorMessage(message);
				}
			}
		}
	} else if ((loanerTaskGr.getValue('task_name') === 'reclaim') && loanerTaskGr.getValue('state') !== '4') {
		// check mandatory fields are filled on Reclaim task
		if (!loanerTaskGr.getValue('return_stockroom')) {
			msgParams.push(loanerTaskGr.return_stockroom.getLabel());
		}
		if (msgParams.length > 0) {
			message = gs.getMessage('The following mandatory fields are not filled in: {0}', msgParams.join(', '));
			gs.addErrorMessage(message);
		}
		var msg;
		if (loanerTaskGr.loaner_order.asset_returned.toString() === 'N') {
			// eslint-disable-next-line max-len
			msg = gs.getMessage('To complete the task, update {0} value to Yes', loanerTaskGr.loaner_order.asset_returned.getLabel());
			msgParams.push(loanerTaskGr.loaner_order.asset_returned.getLabel());
			gs.addErrorMessage(msg);
		}
		if (loanerTaskGr.loaner_order.is_asset_functional.toString() === '') {
			// eslint-disable-next-line max-len
			msg = gs.getMessage('To complete the task, update {0} value to either Yes or No', loanerTaskGr.loaner_order.is_asset_functional.getLabel());
			msgParams.push(loanerTaskGr.loaner_order.is_asset_functional.getLabel());
			gs.addErrorMessage(msg);
		}
	}
	if (msgParams.length === 0) {
		if (loanerTaskGr.getValue('state') !== '4') {
			loanerTaskGr.state = 3;
		}
		loanerTaskGr.update();
	}
	if (loanerTaskGr.getValue('state') !== '3') { // redirect to task page only if its incomplete
		return loanerTaskGr;
	}
	return loanerTaskGr.loaner_order.getRefRecord();
};
HampLoanerUtils.LOANER_ORDER_TABLE = 'sn_hamp_loaner_asset_order';
HampLoanerUtils.LOANER_TASK_TABLE = 'sn_hamp_loaner_asset_task';
HampLoanerUtils.STAGE_NEW = 'new';
HampLoanerUtils.STAGE_PREPARE = 'prepare';
HampLoanerUtils.STAGE_DEPLOYED = 'deployed';
HampLoanerUtils.STAGE_COMPLETED = 'completed';
HampLoanerUtils.STAGE_CANCELLED = 'cancelled';
HampLoanerUtils.TASK_CLOSED_COMPLETE = 3;
HampLoanerUtils.TASK_PREPARE = 'prepare';
HampLoanerUtils.LOANER_ORDER_ACTION_CANCELLED = 'cancelled';
HampLoanerUtils.LOANER_ORDER_ACTION_DELETED = 'deleted';
HampLoanerUtils.LOANER_ORDER_TYPE_THIRD_PARTY = 'for_third_party_user';
HampLoanerUtils.ASSET_IN_USE_STATUSES = [HAMConstants.ASSET_STATUSES.IN_USE,
	HAMConstants.ASSET_STATUSES.CONSUMED];
var HAMAssetReservationUtils = Class.create();
HAMAssetReservationUtils.prototype = {
	initialize: function () { },

	isLoanerAssetAvailableBetweenDates: function (model, location, fromStartDate, toReturnDate, leadTime) { // eslint-disable-line
		var assetsAvailable = new sn_hamp.HampLoanerUtils().getFunctioningLoanerAssetsCount(location, model);
		if (assetsAvailable === 0) { return false; }

		var startDate = String(fromStartDate);
		var returnDate = String(toReturnDate);
		var leadTimeInDays = parseInt(leadTime, 10);
		var preparationStartDate = HampLoanerUtils.getPreparationStartDate(startDate, leadTimeInDays);

		var overlappingOrdersStartDates = [preparationStartDate];
		var overlappingOrdersEndDates = [returnDate];

		var overlappingOrdersGq = new global.GlideQuery('sn_hamp_loaner_asset_order')
			.where('model', model)
			.where('location', location)
			.where('is_waitlisted', false)
			.where('stage', '!=', HampLoanerUtils.STAGE_COMPLETED)
			.where('stage', '!=', HampLoanerUtils.STAGE_CANCELLED);
		overlappingOrdersGq = HampLoanerUtils.addLoanerOrdersOverlapQuery(
			overlappingOrdersGq,
			startDate,
			returnDate,
			leadTimeInDays,
			true /* isGlideQuery */
		);

		overlappingOrdersGq.select('preparation_start_date', 'return_date')
			.forEach(function (loanerOrder) {
				overlappingOrdersStartDates.push(loanerOrder.preparation_start_date);
				overlappingOrdersEndDates.push(loanerOrder.return_date);
			});

		overlappingOrdersStartDates.sort();
		overlappingOrdersEndDates.sort();

		var totalRequests = overlappingOrdersStartDates.length;
		var assetsReturned = 0;
		var assetsDeparted = 0;
		var assetsNeeded = 0;

		while ((assetsDeparted < totalRequests) && (assetsReturned < totalRequests)) {
			if (overlappingOrdersStartDates[assetsDeparted] <= overlappingOrdersEndDates[assetsReturned]) {
				assetsNeeded += 1;
				assetsDeparted += 1;
			} else if (overlappingOrdersStartDates[assetsDeparted] > overlappingOrdersEndDates[assetsReturned]) {
				assetsNeeded -= 1;
				assetsReturned += 1;
			}
			if (assetsNeeded > assetsAvailable) {
				return false;
			}
		}
		return true;
	},

	type: 'HAMAssetReservationUtils',
};
<script setup lang="ts">
import { shallowRef } from 'vue';
import { RouterLink } from 'vue-router';
import IconAngle from './icons/IconAngle.vue';
import IconEmail from './icons/IconEmail.vue';
import IconEmployeeGroup from './icons/IconEmployeeGroup.vue';
import IconExclamation from './icons/IconExclamation.vue';
import IconHome from './icons/IconHome.vue';

const isSidebarOpen = shallowRef<Boolean>(false)

function toggleSidebar() {
  isSidebarOpen.value = !isSidebarOpen.value;
}

</script>

<template>
  <div class="wrapper">
    <aside :vue:is-open="isSidebarOpen">
      <ul class="sidebar-head">
        <li>
          <img src="@/assets/logo.png" alt="logo" width="32" height="32">
        </li>
        <li>
          <button class="sidebar-toggle" :class="isSidebarOpen ? 'toggle-button' : ''">
            <IconAngle @click="toggleSidebar" />
          </button>
        </li>
      </ul>

      <h4 :transparent="!isSidebarOpen">Menu</h4>

      <ul>
        <li>
          <router-link to="/">
            <IconHome />
            <Transition name="fade">
              <span v-show="isSidebarOpen">Home</span>
            </Transition>
          </router-link>
        </li>
        <li>
          <router-link to="/about">
            <IconExclamation />
            <Transition name="fade">
              <span v-show="isSidebarOpen">About</span>
            </Transition>
          </router-link>
        </li>
        <li>
          <router-link to="/team">
            <IconEmployeeGroup />
            <Transition name="fade">
              <span v-show="isSidebarOpen">Team</span>
            </Transition>
          </router-link>
        </li>
        <li>
          <router-link to="/contact">
            <IconEmail />
            <Transition name="fade">
              <span v-show="isSidebarOpen">Contact</span>
            </Transition>
          </router-link>
        </li>
      </ul>
    </aside>
  </div>
</template>

<style scoped lang="scss">
@use '@/assets/scss/colors' as clr;

$sidebar-width: 4rem;
$toggle-duration: 300ms;
$sidebar-padding-inline-start: 1rem;

aside {
  color: clr.$primary;
  background: clr.$bg-dark;
  display: flex;
  flex-direction: column;
  min-height: 100vh;
  padding-block: 1rem;
  transition: all $toggle-duration;
  width: $sidebar-width;
}

aside[vue\:is-open=true] {
  width: 3 * $sidebar-width;
}

ul {
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
  padding-block-end: 1rem;
}

img {
  object-fit: contain;
}

li {
  min-width: fit-content;
  cursor: pointer;
  padding-inline-start: $sidebar-padding-inline-start;

  &:hover {
    color: clr.$secondary;
    background-color: lighten($color: clr.$bg-dark, $amount: 5);
  }

  & a {
    // border-right: 0.25rem solid white;
    display: flex;
    align-items: center;
    column-gap: 0.75rem;
    position: relative;
    padding-block: 0.5rem;
  }

  a.router-link-exact-active::after {
    content: '';
    position: absolute;
    right: 0;
    width: 0.25rem;
    height: 100%;
    background-color: clr.$secondary;
  }
}
.sidebar-head {
  position: relative;
  // padding-block-end: 4rem;
}

.sidebar-toggle {
  padding-inline-start: $sidebar-padding-inline-start;
}

h4 {
  padding-block-end: 1rem;
  padding-inline-start: $sidebar-padding-inline-start;
  user-select: none;
  pointer-events: none;
  opacity: 0.5;
  text-transform: uppercase;
  font-size: 0.75rem;
  letter-spacing: 0.125ch;
  transition: opacity $toggle-duration;
}

h4[transparent=true] {
  opacity: 0;
}

button {
  cursor: pointer;
  position: absolute;
  transition-duration: $toggle-duration;
  transition-property: transform, left, top;
  left: 0;
  top: 1rem;
  transform: translateX(0%) translateY(2rem) rotateZ(0deg);

  &.toggle-button {
    left: 100%;
    top: 0;
    transform: translateX(-100%) translateY(0rem) rotateZ(180deg);
  }
}

.fade-enter-active,
.fade-leave-active {
  transition-property: opacity, transform;
  transition-duration: $toggle-duration;
}

.fade-enter-from,
.fade-leave-to {
  opacity: 0;
  transform: translateX(-100%);
}
</style>
import { onMounted, onUnmounted, ref } from 'vue'

function useScreenOrientation() {
  const portrait = window.matchMedia('(orientation: portrait)')
  const orientation = ref(portrait.matches ? 'portrait' : 'landscape')

  function orientationListener(e: MediaQueryListEvent) {
    orientation.value = e.matches ? 'portrait' : 'landscape'
  }

  onMounted(() => {
    portrait.addEventListener('change', orientationListener)
  })

  onUnmounted(() => {
    portrait.removeEventListener('change', orientationListener)
  })

  return orientation
}

export {
  useScreenOrientation,
  useScreenOrientation as default,
}
<template>
  <div
    :style="styleGeneral"
    aria-label="container-scroll"
    :class="`container ${this.scroll ? 'containerScroll' : ''}`"
  >
    <div
      aria-label="subcontainer-scroll"
      ref="component"
      class="subcontainer"
      :style="styleSubcontainer"
    >
      <slot />
    </div>
  </div>
</template>

<script>
import ResizeObserver from 'resize-observer-polyfill';

export default {
  name: 'ScrollShadow',
  data() {
    let styleGeneral = this.styleContainer;
    styleGeneral += `--scrollColor:${this.scrollColor};`;
    styleGeneral += `--shadow:${this.isShadow ? this.shadow : ''};`;
    styleGeneral += `--scrollPadding:${this.scrollPadding};`;
    styleGeneral += `--scrollWidth:${this.scrollWidth};`;
    styleGeneral += `--scrollColorHover:${this.scrollColorHover}`;

    return {
      scroll: false,
      component: null,
      RO: null,
      styleGeneral,
      classGeneral: 'container'
    };
  },
  props: {
    styleContainer: { type: String, default: '' },
    styleSubcontainer: { type: String, default: '' },
    // Scroll color
    scrollColor: { type: String, default: '#c5c5c5' },
    // Left scroll padding
    scrollPadding: { type: String, default: '0px' },
    // Scroll Width
    scrollWidth: { type: String, default: '8px' },
    // Scroll color when hover
    scrollColorHover: { type: String, default: '#a6a6a6' },
    shadow: {
      type: String,
      default:
        '0 2px 4px rgba(0, 0, 0, 0.2) inset, 0 -2px 4px rgba(0, 0, 0, 0.2) inset'
    },
    // Verify shadow is visible
    isShadow: { type: Boolean, default: true }
  },
  mounted() {
    const refComponent = this.$refs.component;

    const RO = new ResizeObserver(() => {
      if (refComponent.clientHeight < refComponent.scrollHeight) {
        this.scroll = true;
      } else {
        this.scroll = false;
      }
    });

    RO.observe(refComponent);
  }
};
</script>

<style scoped>
.containerScroll {
  box-shadow: var(--shadow);
}
.container {
  width: 100%;
  overflow-y: hidden;
  box-sizing: border-box;
  display: flex;
}
.subcontainer {
  padding-right: var(--scrollPadding);
  overflow-y: auto;
  flex: 1;
  scrollbar-color: var(--scrollColor);
  scrollbar-width: thin;
}
.subcontainer::-webkit-scrollbar {
  width: var(--scrollWidth);
  background: transparent;
}
.subcontainer::-webkit-scrollbar-track {
  background: 'transparent';
}
.subcontainer::-webkit-scrollbar-thumb {
  background: var(--scrollColor);
  border-radius: 5px;
  overflow: hidden;
}
.subcontainer::-webkit-scrollbar-thumb:hover {
  background: var(--scrollColorHover);
}
</style>
 Save
const randomID = new Date().getTime().toString().substring(3, 10)
[0:01:10.271] Script completed in scope global: script
Script execution history and recovery available here
Time: 0:00:00.165 id: esri_1[glide.20] primary_hash=-1044066828 (connpid=16123892) for: SELECT cmdb0.`sys_id` FROM cmdb cmdb0  WHERE cmdb0.`sys_class_path` LIKE '/!!%' AND cmdb0.`sys_class_name` = 'cmdb_ci_computer' AND cmdb0.`serial_number` IS NOT NULL  AND cmdb0.`asset` IS NULL  /* esri069, gs:71C93306939A7D102D82BF1C5CBA10DC, tx:6ef93f46939a7d102d82bf1c5cba1041, hash:-1044066828 */ 
[0:00:00.015] Compacting large row block (file.write: alm_asset 10000 rows 160000 saveSize)
[0:00:00.015] Compacting large row block (file.write: alm_asset 10000 rows 160000 saveSize)
[0:00:00.015] Compacting large row block (file.write: alm_asset 10000 rows 160000 saveSize)
[0:00:00.014] Compacting large row block (file.write: alm_asset 10000 rows 160000 saveSize)
[0:00:00.015] Compacting large row block (file.write: alm_asset 10000 rows 160000 saveSize)
[0:00:00.014] Compacting large row block (file.write: alm_asset 10000 rows 160000 saveSize)
[0:00:00.015] Compacting large row block (file.write: alm_asset 10000 rows 160000 saveSize)
[0:00:00.014] Compacting large row block (file.write: alm_asset 10000 rows 160000 saveSize)
[0:00:00.015] Compacting large row block (file.write: alm_asset 10000 rows 160000 saveSize)
[0:00:00.015] Compacting large row block (file.write: alm_asset 10000 rows 160000 saveSize)
[0:00:00.380] id: esri_1[glide.2 (connpid=16123874)] for: DBQuery#loadResultSet[alm_asset: ci=NULL^serial_numberISNOTEMPTY]
Time: 0:00:00.115 id: esri_1[glide.2] primary_hash=-1351908010 (connpid=16123874) for: SELECT alm_asset0.`sys_id` FROM alm_asset alm_asset0  WHERE alm_asset0.`ci` IS NULL  AND alm_asset0.`serial_number` IS NOT NULL  /* esri069, gs:71C93306939A7D102D82BF1C5CBA10DC, tx:6ef93f46939a7d102d82bf1c5cba1041, hash:-1351908010 */ 
[0:00:00.002] Expanding large row block (file.read: alm_asset, 10000 rows, 160000 dataSize)
[0:00:00.012] Compacting large row block (file.write: alm_asset 7492 rows 119872 saveSize)
*** Script: Match found: KVP4DGD29L
*** Script: Match found: C02TF7AMGTFM
*** Script: Match found: M7L4HFRXHD
*** Script: Match found: C02NPB7YG3QD
*** Script: Match found: VWV6XW22X1
*** Script: Match found: A92F011004613
*** Script: Match found: KVHH0QQG2X
*** Script: Match found: 632024000026
*** Script: Match found: A7PU011009006
*** Script: Match found: 000000000000000000000000000000000000000000047
*** Script: Match found: C02FN47VMD6R
*** Script: Match found: 12CVBY3
*** Script: Match found: 87
*** Script: Match found: H6GB762
*** Script: Match found: 58CXNH2
*** Script: Match found: CN88EBW0Q6
*** Script: Match found: MMYF.105266..ATI
*** Script: Match found: C02GJ0TXMD6R
*** Script: Match found: MTFYHCDT25
*** Script: Match found: C02DRAZZMD6R
*** Script: Match found: BBEC.502477..ATI
*** Script: Match found: FVFHJ0YVQ05P
*** Script: Match found: MNYF.101492..ATI
*** Script: Match found: FP22PYXQ4Q
*** Script: Match found: 54XXN73
*** Script: Match found: JXPWV6JJW0
*** Script: Match found: CNCCDDN19L
*** Script: Match found: XH9FMFJ7LK
*** Script: Match found: VQGKV4M06K
*** Script: Match found: LX7LD29CJY
*** Script: Match found: C02FN470MD6R
*** Script: Match found: C02FN47UMD6R
*** Script: Match found: X124YW9FNQ
*** Script: Match found: 87
*** Script: Match found: C02FN01MML88
*** Script: Match found: MQ6DY4T3V5
*** Script: Match found: MTF3VKG6LJ
*** Script: Match found: M7L7GH9VP4
*** Script: Match found: GCDJF2PY6N
*** Script: Match found: 81
*** Script: Match found: C44MRXWXW7
*** Script: Match found: XL4L471K9C
*** Script: Match found: YMQWQQKGF2
*** Script: Match found: C02TK2GYHF1R
*** Script: Match found: N2W0CXP2N4
*** Script: Match found: NGF7DW4R2M
*** Script: Match found: C02GJ0TVMD6R
*** Script: Match found: K32QD4J57H
*** Script: Match found: XL6L3906KV
*** Script: Match found: 76L17S2
*** Script: Match found: X7NW6QW291
*** Script: Match found: XL9DFYQHF7
*** Script: Match found: 87YR0S2
*** Script: Match found: H2WH313GQ6P0
*** Script: Match found: TV3V3PJWHL
*** Script: Match found: RV0NL40JLX
*** Script: Match found: FVFGG1C7Q05N
*** Script: Match found: J9H96QQF4X
*** Script: Match found: C02DRAZ6MD6R
*** Script: Match found: N95WP9167Q
*** Script: Match found: 70
*** Script: Match found: 57
*** Script: Match found: 86MWNZ3
*** Script: Match found: C02XK13JJGH6
*** Script: Match found: FTX1639R35M
*** Script: Match found: XWY34GTXM5
*** Script: Match found: C02H325DDV7P
*** Script: Match found: LQJ565TGGN
*** Script: Match found: C02YJ0PCJGH6
*** Script: Match found: 1P5J082
*** Script: Match found: C02DK4JZMD6R
*** Script: Match found: HW59XP92TX
*** Script: Match found: D25LL0J3F8JC
*** Script: Match found: T0WK941VHW
*** Script: Match found: C02G37PEMD6R
*** Script: Match found: C5KPMH3
*** Script: Match found: 64167FB9AD8C
*** Script: Match found: BBEC.509353..ATI
*** Script: Match found: C02X655XJGH6
*** Script: Match found: KVP4DGD29L
*** Script: Match found: 65063D3
*** Script: Match found: T637QHYVGY
*** Script: Match found: C02WL09EHTDF
*** Script: Match found: VVKKXXHHH9
*** Script: Match found: C02FP6P5MD6R
*** Script: Match found: C02G7111MD6R
*** Script: Match found: C02XV34VJHD3
*** Script: Match found: M6XCV9L75C
*** Script: Match found: FTX1607AJH8
*** Script: Match found: P6D4PGXK0J
*** Script: Match found: 80
*** Script: Match found: VK6D96XQLG
*** Script: Match found: FVFHJ2U5Q05P
*** Script: Match found: 80
*** Script: Match found: WDFCWJFQ14
*** Script: Match found: C6TZX23
*** Script: Match found: C02DG12VMD6R
*** Script: Match found: 000000000000000000000000000000000000000000047
*** Script: Match found: C02F75NCQ05N
*** Script: Match found: C02G710QMD6R
*** Script: Match found: C07YD0XYJYVY
*** Script: Match found: H2WHR0QUQ6NW
*** Script: Match found: JR36GH2
*** Script: Match found: A61H011005986
*** Script: Match found: FVFHJ0YZQ05P
*** Script: Match found: C02FN5LRMD6R
*** Script: Match found: H4TH20GRPN7C
*** Script: Match found: 9BDJ0T2
*** Script: Match found: G1C2614P7X
*** Script: Match found: VJ92GLW9Y5
*** Script: Match found: C994WR3FXP
*** Script: Match found: 81
*** Script: Match found: JQ0K44MJWH
*** Script: Match found: C02DC2CBPN7C
*** Script: Match found: GLCM7YL6T7
*** Script: Match found: WDCWV26THJ
*** Script: Match found: C07SN1CUG1J1
*** Script: Match found: 442539942
*** Script: Match found: C02FN47DMD6R
*** Script: Match found: C02DRB00MD6R
*** Script: Match found: 10
*** Script: Match found: IUEC.731218.ATI
*** Script: Match found: D7KQX9GQFV
*** Script: Match found: BFHS9Y2
*** Script: Match found: H4TFD0PHPN7C
*** Script: Match found: C02XV43FJGH6
*** Script: Match found: C02G325SQ05R
*** Script: Match found: 51
*** Script: Match found: XGQGTH29LW
*** Script: Match found: C02FN46DMD6R
*** Script: Match found: YD4WQ3LK9V
*** Script: Match found: GVQ397X30G
*** Script: Match found: JPBCG4W12Z
*** Script: Match found: C02FH82GMD6R
*** Script: Match found: C02FN01SML88
*** Script: Match found: C02DM0XRMD6T
*** Script: Match found: C02GC58WQ05N
*** Script: Match found: WVCJC64L54
*** Script: Match found: TK7K21796N
*** Script: Match found: V59V52CWX6
*** Script: Match found: C02FG6DFMD6R
*** Script: Match found: 81
*** Script: Match found: NHXQ7K92T7
*** Script: Match found: X162DL03XV
*** Script: Match found: GL9QVJ2P40
*** Script: Match found: 81
*** Script: Match found: YJJGR4G9DD
*** Script: Match found: XK1FWXDFX7
*** Script: Match found: WW4PLX2X33
*** Script: Match found: FYVP6RL1F2
*** Script: Match found: C02NQ0D5G3QD
*** Script: Match found: 82
*** Script: Match found: G4FXJFJ2DN
*** Script: Match found: C02WJ37XHTDF
*** Script: Match found: 82
*** Script: Match found: A5C4011118436
*** Script: Match found: A93E011006607
*** Script: Match found: PH9RF722M2
*** Script: Match found: 28LLPN3
[0:00:00.002] Expanding large row block (file.read: alm_asset, 10000 rows, 160000 dataSize)
[0:00:00.015] Compacting large row block (file.write: alm_asset 10000 rows 160000 saveSize)
*** Script: Match found: QGPJ7G2V32
*** Script: Match found: PD4NCJJKJ6
*** Script: Match found: H2WFR8DAQ6NV
*** Script: Match found: PW54V3QWKV
*** Script: Match found: 4DZMRQ3
*** Script: Match found: C02FK4MGMD6R
*** Script: Match found: H2WFL0UDPJJ9
*** Script: Match found: Q2KCF2Q3KF
*** Script: Match found: JJ47QD71RH
*** Script: Match found: HTFPKHGCHK
*** Script: Match found: 20
*** Script: Match found: JX0LPN3
*** Script: Match found: PXLC43L30F
*** Script: Match found: RQYC6Q2WC5
*** Script: Match found: C02FL08PMD6R
*** Script: Match found: 792102000543
*** Script: Match found: WNTDT6TFD6
*** Script: Match found: C02DR9KGMD6R
*** Script: Match found: C02FN3XVMD6R
*** Script: Match found: WPKT91FPYF
*** Script: Match found: Q6J5R9NXJP
*** Script: Match found: C07SN0U6G1J2
*** Script: Match found: H4TG815FPN7C
*** Script: Match found: GD700WJPG1
*** Script: Match found: JJ7C3G2
*** Script: Match found: FXF7562
*** Script: Match found: N12HY2VD6P
*** Script: Match found: TKQHK06T4P
*** Script: Match found: H2WHP12QQ6NW
*** Script: Match found: 82
*** Script: Match found: WCAZAA747453
*** Script: Match found: YP6GK0461V
*** Script: Match found: C02G37P6MD6R
*** Script: Match found: W2GTC6JXCF
*** Script: Match found: MJ0G9WFY
*** Script: Match found: 6V4BXG2
*** Script: Match found: C02G711LMD6R
*** Script: Match found: FVFGP4SQQ05N
*** Script: Match found: FYVP6RL1F2
*** Script: Match found: C02FN01JML88
*** Script: Match found: QHX2MP2KTM
*** Script: Match found: A92F011006067
*** Script: Match found: 7B2KNN3
*** Script: Match found: H2WJF0EYQ6P0
*** Script: Match found: C02XV4HFJGH6
*** Script: Match found: R26W1QVKFV
*** Script: Match found: C02F11H2Q05N
*** Script: Match found: 27
*** Script: Match found: C02DF4ECMD6R
*** Script: Match found: LW44M7P73W
*** Script: Match found: G2KXGF3Y3M
*** Script: Match found: KJVNY9097C
*** Script: Match found: P21T2CYLX2
*** Script: Match found: 70
*** Script: Match found: 4NZ31Q2
*** Script: Match found: JJ954J3
*** Script: Match found: Y4475HK333
*** Script: Match found: NDXXPYX276
*** Script: Match found: 46
*** Script: Match found: QY54WWYG9C
*** Script: Match found: XDX44MVKCQ
*** Script: Match found: 06F930G
*** Script: Match found: FVFHJ0ZKQ05P
*** Script: Match found: GG102145
*** Script: Match found: 632016000060
*** Script: Match found: VH242MG2P6
*** Script: Match found: C02DC03NML86
*** Script: Match found: WNTDT6TFD6
*** Script: Match found: WVHT4QKYQ5
*** Script: Match found: Q7H7YJNJ0W
*** Script: Match found: W4TJ3Q13Y1
*** Script: Match found: 29
*** Script: Match found: DTF6WW1
*** Script: Match found: C02RH01JG8WM
*** Script: Match found: XCR9QMM6TV
*** Script: Match found: 27
*** Script: Match found: 9WFL0T2
*** Script: Match found: XH2JQ3C7G2
*** Script: Match found: YC3WDQ03YP
*** Script: Match found: P2PHHY2C9D
*** Script: Match found: WFQGWF9G0V
*** Script: Match found: H2WH312GQ6P0
*** Script: Match found: RXM9XH09QR
*** Script: Match found: JJ47QD71RH
*** Script: Match found: H2WJJ04LQ6P0
*** Script: Match found: 82
*** Script: Match found: C02M61CKFD59
*** Script: Match found: 4P321Q2
*** Script: Match found: C02FN46TMD6R
*** Script: Match found: 721523000029
*** Script: Match found: TJFX1W7Q4X
*** Script: Match found: C02DC02PML86
*** Script: Match found: C02GK0QRMD6T
*** Script: Match found: C07QM0A6G1J1
*** Script: Match found: TQWRWG292J
*** Script: Match found: 1Q5VBY3
*** Script: Match found: H2WJF0H1Q6P0
*** Script: Match found: VDGQ0HFWTY
*** Script: Match found: VDHJ7QK549
*** Script: Match found: 82
*** Script: Match found: FVFHJ0ZPQ05P
*** Script: Match found: WVNQWN66T2
*** Script: Match found: C02Z70KBLVDM
*** Script: Match found: C02DR9KKMD6R
*** Script: Match found: C02NQ0EQG3QD
*** Script: Match found: C02DG12WMD6R
*** Script: Match found: VP7XKW0232
*** Script: Match found: LQJ565TGGN
*** Script: Match found: A5C4011116895
*** Script: Match found: RXYLV6C07P
*** Script: Match found: WP4QYQ9N9D
*** Script: Match found: C02NQ055G3QD
*** Script: Match found: C02G37PAMD6R
*** Script: Match found: 000000000000000000000000000000000000000000047
*** Script: Match found: 27WGLQ2
*** Script: Match found: C07SN0TTG1J2
*** Script: Match found: C02GJ0TTMD6R
*** Script: Match found: C02YJ2JTJGH6
*** Script: Match found: MXF9DK210Q
*** Script: Match found: Q4NNF7L9CF
*** Script: Match found: VNB3Y51823
*** Script: Match found: H2WJF0WVQ6P0
*** Script: Match found: P9L7XWDHVQ
*** Script: Match found: LXMVH6KMH4
*** Script: Match found: C02DT1FEMD6R
*** Script: Match found: C02M60YPFD59
*** Script: Match found: W4R93MH71R
*** Script: Match found: 632024000027
*** Script: Match found: C02DG12NMD6R
*** Script: Match found: C02FN47QMD6R
*** Script: Match found: C02TK249HF1R
*** Script: Match found: X1VQC22GM7
*** Script: Match found: 9ZGPM53
*** Script: Match found: A4Y4011019972
*** Script: Match found: LHXCXQMMPH
*** Script: Match found: V0QPJ6P9HW
*** Script: Match found: QQF9PT94WW
*** Script: Match found: C02G37P7MD6R
*** Script: Match found: C02VL2REHTDF
*** Script: Match found: 51
*** Script: Match found: C02C32EELVDM
*** Script: Match found: XT9KX3XH9X
*** Script: Match found: MXBCMCP0TZ
*** Script: Match found: C02G7119MD6R
*** Script: Match found: FYVP6RL1F2
*** Script: Match found: C07DC09XPJJ9
*** Script: Match found: FVWF9HJ70N
*** Script: Match found: TDLX93TY02
*** Script: Match found: C19KWVY3HK
*** Script: Match found: G17MJP21CP
*** Script: Match found: C02G711AMD6R
*** Script: Match found: C02FN46YMD6R
*** Script: Match found: V4W2T0917F
*** Script: Match found: HTM6NPHT7W
*** Script: Match found: X54WFQLNWM
*** Script: Match found: 6KWL4W3
*** Script: Match found: TMQQH6NV26
*** Script: Match found: XGFWJJ6WM4
*** Script: Match found: NYXVMJ9GH6
*** Script: Match found: JVJC9KQ0QT
*** Script: Match found: C02G7118MD6R
*** Script: Match found: C02FN465MD6R
*** Script: Match found: DYXNHWW73W
*** Script: Match found: C02RH01WG8WM
*** Script: Match found: 66QLRQ2
*** Script: Match found: X19GY2WYLH
*** Script: Match found: NJ6417KLJH
*** Script: Match found: A7AK011001248
[0:00:00.003] Expanding large row block (file.read: alm_asset, 10000 rows, 160000 dataSize)
[0:00:00.016] Compacting large row block (file.write: alm_asset 10000 rows 160000 saveSize)
*** Script: Match found: FOC1802U1BW
*** Script: Match found: WCAWZ1332959
*** Script: Match found: A7AK011007413
*** Script: Match found: 54
*** Script: Match found: W4M9561L42
*** Script: Match found: FGHPZ33
*** Script: Match found: 3PMLHR2
*** Script: Match found: QK9QXWXCW4
*** Script: Match found: LPY3H9Y5LX
*** Script: Match found: YT6927PPGP
*** Script: Match found: DFJW4WPG2X
*** Script: Match found: Q00HT0CFCG
*** Script: Match found: C02M60YPFD59
*** Script: Match found: A7AK011001244
*** Script: Match found: R7Q4KVKG9J
*** Script: Match found: P14RYY0WTG
*** Script: Match found: D25V60J5J1GP
*** Script: Match found: 48S07S2
*** Script: Match found: C07FT1VQQ6P0
*** Script: Match found: FVFHJ1GTQ05P
*** Script: Match found: HTF6WW1
*** Script: Match found: J31MVM21WH
*** Script: Match found: PNR46WGMXG
*** Script: Match found: VQXXPNX7M9
*** Script: Match found: C02DG132MD6R
*** Script: Match found: FVFHK3D1Q05P
*** Script: Match found: FVFHJ0ZJQ05P
*** Script: Match found: 82
*** Script: Match found: C02Z70L1LVDM
*** Script: Match found: T75527XTF7
*** Script: Match found: LX97LFCQMC
*** Script: Match found: A7PU011009087
*** Script: Match found: H2WFT0T7Q6P0
*** Script: Match found: H4LY921XV3
*** Script: Match found: VNB3B49463
*** Script: Match found: H2WHK0VEQ6NW
*** Script: Match found: 87KWMR2
*** Script: Match found: XCR9HD6YV7
*** Script: Match found: C02YJ20PJGH6
*** Script: Match found: X939JQGJXD
*** Script: Match found: C02FN47GMD6R
*** Script: Match found: 3952GC2
*** Script: Match found: 47MSMV2
*** Script: Match found: CNGXC24539
*** Script: Match found: H2WJ10ZSQ6P0
*** Script: Match found: HWMQLQWN6J
*** Script: Match found: C02FK1QEMD6R
*** Script: Match found: 9X5S4X3
*** Script: Match found: 27
*** Script: Match found: C02FN01FML88
*** Script: Match found: YL0JFV5WR4
*** Script: Match found: TWG70RVYW3
*** Script: Match found: C02DG12RMD6R
*** Script: Match found: C02FN46PMD6R
*** Script: Match found: HNRGJB2
*** Script: Match found: Q0V7TKX0WJ
*** Script: Match found: J09YFC45P9
*** Script: Match found: C02M60YSFD59
*** Script: Match found: D4X7RLXQRX
*** Script: Match found: 82
*** Script: Match found: H2WJF0LVQ6P0
*** Script: Match found: 26LLPN3
*** Script: Match found: VM2T6KX1XY
*** Script: Match found: P34MCYKQJR
*** Script: Match found: YQ27FH3XL4
*** Script: Match found: CND8F2S0KG
*** Script: Match found: J29N02V70X
*** Script: Match found: JP26HC747T
*** Script: Match found: FVFHN2CQQ05P
*** Script: Match found: W25X46R95X
*** Script: Match found: WGQXW0XC92
*** Script: Match found: 85JLZD3
*** Script: Match found: C02DT0BGMD6R
*** Script: Match found: C02DP89MMD6R
*** Script: Match found: BBEC.538181..ATI
*** Script: Match found: N0G19WNPJL
*** Script: Match found: C02DRAZLMD6R
*** Script: Match found: VQV04JX5N6
*** Script: Match found: C02F30BPMD6R
*** Script: Match found: Y6GCXTLJ7K
*** Script: Match found: R9NFP069VC
*** Script: Match found: 8DGTLS1
*** Script: Match found: JFX6XM43VJ
*** Script: Match found: H2WJJ010Q6P0
*** Script: Match found: PJY9V3HX3T
*** Script: Match found: G7DGMFWJKP
*** Script: Match found: CQ1FTP6KF4
*** Script: Match found: Q7V5H7LPWX
*** Script: Match found: HQM217L09T
*** Script: Match found: QMFWQ425XH
*** Script: Match found: C02G37NUMD6R
*** Script: Match found: V9TT6G7QF1
*** Script: Match found: DD136120226006
*** Script: Match found: NNFGP09G6K
*** Script: Match found: C07QM0A7G1J1
*** Script: Match found: WF4219TK76
*** Script: Match found: C1MPJ6MAG944
*** Script: Match found: JJ2444N3X2
*** Script: Match found: L7QD9LFH12
*** Script: Match found: LVL49RCXL2
*** Script: Match found: WMAZA8295008
*** Script: Match found: C02MD323FD59
*** Script: Match found: 81
*** Script: Match found: HTHQLVVNH7
*** Script: Match found: YVP2H639W3
*** Script: Match found: XP4Y2T97K7
*** Script: Match found: H2WJF0L3Q6P0
*** Script: Match found: H2WJF1GBQ6P0
*** Script: Match found: R59T3C2J4X
*** Script: Match found: CNDX247497
*** Script: Match found: YY39QGJ4N4
*** Script: Match found: XFMGVF499W
*** Script: Match found: V43WP9RXHY
*** Script: Match found: C02FN46AMD6R
*** Script: Match found: CJ4RYQ7WCY
*** Script: Match found: XN65G6X3HT
*** Script: Match found: 000000000000000000000000000000000000000000047
*** Script: Match found: 4BJD2Z3
*** Script: Match found: JMJ6DY4W39
*** Script: Match found: C02G7117MD6R
*** Script: Match found: FVFGP4U2Q05N
*** Script: Match found: C02G6132Q05R
*** Script: Match found: 81
*** Script: Match found: YR372XCY39
*** Script: Match found: VJWNVVQM23
*** Script: Match found: M24CQXYTG2
*** Script: Match found: 12D6SN2
*** Script: Match found: C02CK052MD6R
*** Script: Match found: 632015000581
*** Script: Match found: 632016000061
*** Script: Match found: VT090H62D0
*** Script: Match found: M46233YMVP
*** Script: Match found: 80511200093
*** Script: Match found: YDJ2WH97DP
*** Script: Match found: H2WJH0K8Q6P0
*** Script: Match found: R47WH362G6
*** Script: Match found: CN57DF30BP
*** Script: Match found: C02T5195H040
*** Script: Match found: C07QM0A5G1J1
*** Script: Match found: 27
*** Script: Match found: 2DNC3G2
*** Script: Match found: C02KF1D8FFT4
*** Script: Match found: 9TF6WW1
*** Script: Match found: 27
*** Script: Match found: YK9DN2P6HG
*** Script: Match found: CND9D4GB4R
*** Script: Match found: FNHT6M39TH
*** Script: Match found: R4NY0W029P
*** Script: Match found: KT2HCWC091
*** Script: Match found: 4NZ31Q2
*** Script: Match found: 93N1NV2
*** Script: Match found: QV7VQ0K7D1
*** Script: Match found: FOC1802X1J6
*** Script: Match found: XD23RVW7XM
*** Script: Match found: HPD4YXY42J
*** Script: Match found: 82
*** Script: Match found: FV73QGCXMK
*** Script: Match found: H7GYYDHJ70
*** Script: Match found: 54
*** Script: Match found: H00W2XT72L
*** Script: Match found: H2WF113XQ6NV
*** Script: Match found: PMT2FT9MY9
*** Script: Match found: C02G711DMD6R
*** Script: Match found: H2WJF0FBQ6P0
*** Script: Match found: 7FGZ6S2
*** Script: Match found: HYF4W12DX4
*** Script: Match found: GXRR97F205
*** Script: Match found: 000000000000000000000000000000000000000000047
*** Script: Match found: C02LL723FD59
*** Script: Match found: XGCH7RTXLL
*** Script: Match found: C02GM16EMD6R
*** Script: Match found: Y96KFLVXKM
*** Script: Match found: C02G710LMD6R
*** Script: Match found: C02Z22GNLVCF
*** Script: Match found: VG6XF2JXH5
*** Script: Match found: C02DRCY3MD6R
[0:00:00.002] Expanding large row block (file.read: alm_asset, 10000 rows, 160000 dataSize)
[0:00:00.019] Compacting large row block (file.write: alm_asset 10000 rows 160000 saveSize)
*** Script: Match found: M24L7RD2VP
*** Script: Match found: VRCYVYTQKC
*** Script: Match found: TV5VYXNW9P
*** Script: Match found: CNGCQ88043
*** Script: Match found: C02RT2SFG8WM
*** Script: Match found: Q6P1W6TH9P
*** Script: Match found: CW9F2P46Q0
*** Script: Match found: C02G7113MD6R
*** Script: Match found: C07YD0Y1JYVY
*** Script: Match found: K72M7N6H1J
*** Script: Match found: FC7GWCWFTP
*** Script: Match found: C4ZXTQ3
*** Script: Match found: NHYXFKW6WD
*** Script: Match found: C02G37PGMD6R
*** Script: Match found: 88SGN32
*** Script: Match found: TY7DNQ7952
*** Script: Match found: 10C2F8A
*** Script: Match found: C02DT1FGMD6R
*** Script: Match found: C02GD2HCMD6R
*** Script: Match found: QN2PF6V2D0
*** Script: Match found: C02G711JMD6R
*** Script: Match found: 000000000000000000000000000000000000000000047
*** Script: Match found: J4QJGD7K7Q
*** Script: Match found: JX2L3VXPWD
*** Script: Match found: 81
*** Script: Match found: C02DC0YMML86
*** Script: Match found: 70
*** Script: Match found: V73TC7N1XY
*** Script: Match found: X7D91L64DX
*** Script: Match found: FM2NKVCWJ9
*** Script: Match found: A5C4011118467
*** Script: Match found: F79C07LTXN
*** Script: Match found: CN59NFW0VS
*** Script: Match found: QTF43RP0WP
*** Script: Match found: A61D011004605
*** Script: Match found: MXH5XKXVKX
*** Script: Match found: C02FN46ZMD6R
*** Script: Match found: H244GC2
*** Script: Match found: WQP24TW7KK
*** Script: Match found: T90HJCM90P
*** Script: Match found: C07SN0TXG1J2
*** Script: Match found: 55
*** Script: Match found: A5C4011123823
*** Script: Match found: YRCVW0VP36
*** Script: Match found: GCBHMV2
*** Script: Match found: T6JWK057XM
*** Script: Match found: W9HFWNRF2W
*** Script: Match found: CHKP5S3
*** Script: Match found: W0FLMJ70YG
*** Script: Match found: 1
*** Script: Match found: 6X9XFC2
*** Script: Match found: FVFHJ0YYQ05P
*** Script: Match found: WG7DY66G1F
*** Script: Match found: H2WH30QKQ6P0
*** Script: Match found: DD136120224012
*** Script: Match found: C02GK0HDMD6T
*** Script: Match found: FY621R0Q26
*** Script: Match found: 29
*** Script: Match found: CNBH100389
*** Script: Match found: FVFHJ0ZNQ05P
*** Script: Match found: V46VKTVHWL
*** Script: Match found: HPXYVP37RX
*** Script: Match found: 12Q0S22
*** Script: Match found: C02FF0ESMD6R
*** Script: Match found: WC4KVF4F99
*** Script: Match found: QL6F9RM630
*** Script: Match found: H2WJQ03HQ6P0
*** Script: Match found: C02DG139MD6R
*** Script: Match found: 27
*** Script: Match found: X742HYD9MQ
*** Script: Match found: C5TSMH3
*** Script: Match found: FOC1802U1CR
*** Script: Match found: G37RYL9Q0W
*** Script: Match found: RYQ7MFDWY1
*** Script: Match found: QTJNVW67XL
*** Script: Match found: C02FN46WMD6R
*** Script: Match found: A7PU011007186
*** Script: Match found: C02FLAAEMD6R
*** Script: Match found: G4FKJM2
*** Script: Match found: C02G703JML88
*** Script: Match found: FOC1802Y7C4
*** Script: Match found: 6SSKMV2
*** Script: Match found: FVFF699AQ6LR
*** Script: Match found: C77DPY2
*** Script: Match found: A61H011005971
*** Script: Match found: 86
*** Script: Match found: W4Y7H1JFDH
*** Script: Match found: C02G37KQMD6R
*** Script: Match found: 70
*** Script: Match found: YQY6TJ4LYD
*** Script: Match found: 8VTY373
*** Script: Match found: G7DSYD3
*** Script: Match found: C02FN01TML88
*** Script: Match found: C02FN47EMD6R
*** Script: Match found: YQ167QD6RV
*** Script: Match found: D3C2GC2
*** Script: Match found: 87
*** Script: Match found: P4426Y6T4N
*** Script: Match found: H2WJF0L8Q6P0
*** Script: Match found: JLH214PRY9
*** Script: Match found: P9HK3YPL44
*** Script: Match found: C02TK2GYHF1R
*** Script: Match found: C02FN35JQ05N
*** Script: Match found: QL3WNH7Y7Y
*** Script: Match found: WCKPX0Q0QF
*** Script: Match found: 347GQ73
*** Script: Match found: R46Q71F2PW
*** Script: Match found: C02F734PMD6R
*** Script: Match found: C02G132JMD6R
*** Script: Match found: QN6N07CNV9
*** Script: Match found: FG60PFJXH6
*** Script: Match found: H2WH312QQ6P0
*** Script: Match found: C02DG12ZMD6R
*** Script: Match found: LH6N5VKMXX
*** Script: Match found: LVL49RCXL2
*** Script: Match found: R66907XDGQ
*** Script: Match found: WRFPMF7050
*** Script: Match found: Y33V932GY7
*** Script: Match found: A5AY011012590
*** Script: Match found: TWGDGP42HY
*** Script: Match found: CNDCGB8006
*** Script: Match found: YR4D4LFTXN
*** Script: Match found: JMR6RN2
*** Script: Match found: 792108000013
*** Script: Match found: C02DR3BRMD6R
*** Script: Match found: XD2700PH70
*** Script: Match found: VX1X90G6L7
*** Script: Match found: C02DV1L2MD6R
*** Script: Match found: C02DRAYWMD6R
*** Script: Match found: D25QR09YGQ17
*** Script: Match found: XCKQC5707Q
*** Script: Match found: WC435P694R
*** Script: Match found: D25LG2USF8JC
*** Script: Match found: V0VQ95WJNW
*** Script: Match found: HV29PD67TC
*** Script: Match found: DS/NTW-094TKJ-1280
*** Script: Match found: C02D90PYMD6R
*** Script: Match found: C02DT0V4MD6R
*** Script: Match found: W0WXHL79V2
*** Script: Match found: H2WJF1G8Q6P0
*** Script: Match found: X27VXVN77V
*** Script: Match found: Y0H993CQV2
*** Script: Match found: Q1W1Q0QXGC
*** Script: Match found: VWFYCQQJW6
*** Script: Match found: C02DC8B3MD6R
*** Script: Match found: P7HFW2TXGC
*** Script: Match found: MQTXD0YJXP
*** Script: Match found: 81
*** Script: Match found: QVMQQWJKTM
*** Script: Match found: VF5293F41X
*** Script: Match found: C02G711BMD6R
*** Script: Match found: 85
*** Script: Match found: H2WJF04AQ6P0
*** Script: Match found: 18
*** Script: Match found: JH6HF4V264
*** Script: Match found: FX6QK00P6F
*** Script: Match found: PXY29QKJJM
*** Script: Match found: VM9XDH2CX2
*** Script: Match found: WU2Q10076150
*** Script: Match found: 63MSMV2
*** Script: Match found: 7HDKJM2
*** Script: Match found: W1JQCJWFD9
*** Script: Match found: C02DJ0NKMD6R
*** Script: Match found: 70.L1XX.801169..TWCC
*** Script: Match found: 3Y3SVV3
*** Script: Match found: C02RT2PKG8WM
*** Script: Match found: H3KW67P59R
*** Script: Match found: A61H011006924
*** Script: Match found: C07SN0TXG1J2
*** Script: Match found: GQ65900MR6
*** Script: Match found: C02GD0E4ML7M
*** Script: Match found: YV7CYQ5K7M
*** Script: Match found: C02FF1TNMD6T
*** Script: Match found: FVFHJ0ZTQ05P
*** Script: Match found: F5V2MD4G9X
*** Script: Match found: FM5VBY3
*** Script: Match found: C02G7115MD6R
*** Script: Match found: WPWR49QT25
*** Script: Match found: C07YH30BJYW0
[0:00:00.004] Expanding large row block (file.read: alm_asset, 10000 rows, 160000 dataSize)
[0:00:00.016] Compacting large row block (file.write: alm_asset 10000 rows 160000 saveSize)
*** Script: Match found: YHY77N47HW
*** Script: Match found: C02FN01HML88
*** Script: Match found: A5C4011110994
*** Script: Match found: R6XVJR7740
*** Script: Match found: KPD46NG634
*** Script: Match found: XDDXP21721
*** Script: Match found: C02DG12TMD6R
*** Script: Match found: 20
*** Script: Match found: 632015000580
*** Script: Match found: XL6NHLH2RF
*** Script: Match found: TH92JJ9H2G
*** Script: Match found: WMHW9GWRXT
*** Script: Match found: JCWQFX6WL6
*** Script: Match found: TR4JR2N9RR
*** Script: Match found: C02TG07ZGY6N
*** Script: Match found: 70
*** Script: Match found: CNBCK8Z133
*** Script: Match found: 9FWTBY3
*** Script: Match found: 255H4E317P260729
*** Script: Match found: WGKXJGXNQM
*** Script: Match found: TNVTVKKWMY
*** Script: Match found: C02GJ0TJMD6R
*** Script: Match found: NX7JQMGKN1
*** Script: Match found: D25XV7U1J1GQ
*** Script: Match found: VWXWFCV7WV
*** Script: Match found: C02FN46RMD6R
*** Script: Match found: 85
*** Script: Match found: JJM4H62FDH
*** Script: Match found: PT9DXWXWXP
*** Script: Match found: 012076570857
*** Script: Match found: IUEC.769364.ATI
*** Script: Match found: C02QJ3PHG8WM
*** Script: Match found: K2M5F6HY9G
*** Script: Match found: QM407WGJGV
*** Script: Match found: MT991G6V6D
*** Script: Match found: W76HJMV43P
*** Script: Match found: Y5HYTXR5G9
*** Script: Match found: 1007P12
*** Script: Match found: C02FN5KCMD6R
*** Script: Match found: Y49TGR6VWY
*** Script: Match found: 31KKJ72
*** Script: Match found: QD3YPVF3V7
*** Script: Match found: C07S80KCG1J1
*** Script: Match found: X676T41KGF
*** Script: Match found: C07XKVHBJYVW
*** Script: Match found: C02FD6JDQ05N
*** Script: Match found: R4MD21V7FY
*** Script: Match found: VNB8H3416G
*** Script: Match found: C02G6133Q05R
*** Script: Match found: 000000000000000000000000000000000000000000047
*** Script: Match found: C02G711GMD6R
*** Script: Match found: FVFHJ0ZEQ05P
*** Script: Match found: 70
*** Script: Match found: BCPPSQ2
*** Script: Match found: LVVXJ5F6LX
*** Script: Match found: QX7MCYFKQH
*** Script: Match found: 54
*** Script: Match found: DMGMC671F1
*** Script: Match found: X3XX36G2YK
*** Script: Match found: T0WFYX9C7N
*** Script: Match found: NC2X921FGP
*** Script: Match found: W7PW6LC743
*** Script: Match found: C02KJ0MTFFT4
*** Script: Match found: 4RBWJ02
*** Script: Match found: C02G710KMD6R
*** Script: Match found: 95
*** Script: Match found: PJVHL0FR9N
*** Script: Match found: C02DG1LXMD6T
*** Script: Match found: C02G90A8MD6R
*** Script: Match found: H2WJH05CQ6P0
*** Script: Match found: C02FN471MD6R
*** Script: Match found: H2WJF0F7Q6P0
*** Script: Match found: C02FK1D2MD6R
*** Script: Match found: HFF996719T
*** Script: Match found: PYJY09Q43F
*** Script: Match found: AA2M011006164
*** Script: Match found: PVPJHGKJ23
*** Script: Match found: C02G37P2MD6R
*** Script: Match found: WCAV55658037
*** Script: Match found: JF5VBY3
*** Script: Match found: VNB3S06397
*** Script: Match found: 721828000008
*** Script: Match found: G17DP9P9DK
*** Script: Match found: FY6LM64076
*** Script: Match found: WJGW62HCVJ
*** Script: Match found: HHG73PJ47Y
*** Script: Match found: C02FN46CMD6R
*** Script: Match found: XRX27M073L
*** Script: Match found: D764M6C627
*** Script: Match found: C02XK19RJGH6
*** Script: Match found: H02MPWLFPF
*** Script: Match found: 10272DP
*** Script: Match found: C02DF2JFMD6R
*** Script: Match found: A5C2011107365
*** Script: Match found: V6954FMYKR
*** Script: Match found: XKRQX6LL6K
*** Script: Match found: C02GJ0TKMD6R
*** Script: Match found: WRW2N2XR6J
*** Script: Match found: H2WJF0CFQ6P0
*** Script: Match found: A7AK011001334
*** Script: Match found: 1VHT3M3
*** Script: Match found: YDY9P4NPJ1
*** Script: Match found: C1FJJRFNJG
*** Script: Match found: NY731YQPWH
*** Script: Match found: 2SS4PX2
*** Script: Match found: TTM271500AC
*** Script: Match found: Y6Q5CQ03PJ
*** Script: Match found: C02DG12MMD6R
*** Script: Match found: C02G37KPMD6R
*** Script: Match found: GWP0D42
*** Script: Match found: NYQR3GPL6W
*** Script: Match found: FV34GC2
*** Script: Match found: C02ZK3ZNLVDQ
*** Script: Match found: 81
*** Script: Match found: K4GQY007L5
*** Script: Match found: 9MQ5QN2
*** Script: Match found: XL4JY3DJRP
*** Script: Match found: T34T59VR4K
*** Script: Match found: C02G711FMD6R
*** Script: Match found: C02VL20PHTDF
*** Script: Match found: C02DT2V0ML7L
*** Script: Match found: C02G711HMD6R
*** Script: Match found: C02GJ0TQMD6R
*** Script: Match found: N0G9369P6K
*** Script: Match found: FVFGH5DMQ05P
*** Script: Match found: FOC1802Y7BG
*** Script: Match found: G0X9VHXJ07
*** Script: Match found: C02XV441JGH6
*** Script: Match found: FHY29GCQ5P
*** Script: Match found: FHPPSQ2
*** Script: Match found: C02F51SKML85
*** Script: Match found: 0
*** Script: Match found: C02G37M3MD6R
*** Script: Match found: H2WHV0TNQ6P0
*** Script: Match found: 3Y4S0G2
*** Script: Match found: 4QVCP72
*** Script: Match found: C02FN01TML88
*** Script: Match found: NY694GQXKD
*** Script: Match found: C02ZQ7VVMD6R
*** Script: Match found: B3DD7Y2
*** Script: Match found: 1007P12
*** Script: Match found: 6X9XFC2
*** Script: Match found: HLHYNK3
*** Script: Match found: C02G37NPMD6R
*** Script: Match found: Y6DXMFH63K
*** Script: Match found: QQDCPWVWGT
*** Script: Match found: 000000000000000000000000000000000000000000047
*** Script: Match found: C07DC00APJJ9
*** Script: Match found: C02G37NXMD6R
*** Script: Match found: C02FL4KMMD6R
*** Script: Match found: KQT4W4XQPK
*** Script: Match found: 4ZS7R53
*** Script: Match found: A4Y4011021594
*** Script: Match found: H2WHV0EFPJJ9
*** Script: Match found: RVQDT4GYYG
*** Script: Match found: C02G7110MD6R
*** Script: Match found: C02G37PCMD6R
*** Script: Match found: XDVHMFJ6RF
*** Script: Match found: C163HQJPGF
*** Script: Match found: C02DG12YMD6R
*** Script: Match found: 81
*** Script: Match found: C07S80L3G1J1
*** Script: Match found: C02FN2HHMD6T
*** Script: Match found: 4H5VBY3
*** Script: Match found: A61F011011875
*** Script: Match found: PGD9MJFCQV
*** Script: Match found: YVHWKG1HXG
*** Script: Match found: C02M60YFFD59
*** Script: Match found: C02DR9HWMD6R
*** Script: Match found: FB0MRL1
*** Script: Match found: CTGDWHFJ0L
*** Script: Match found: NMFWGC76H4
*** Script: Match found: C02GK0QJMD6T
*** Script: Match found: 69B0R72
*** Script: Match found: C02DQ27TMD6R
*** Script: Match found: HK7J33GMVQ
*** Script: Match found: C02XK10XJHD3
*** Script: Match found: M4N4D7X343
[0:00:00.002] Expanding large row block (file.read: alm_asset, 10000 rows, 160000 dataSize)
[0:00:00.014] Compacting large row block (file.write: alm_asset 10000 rows 160000 saveSize)
*** Script: Match found: HL9XQT2R03
*** Script: Match found: FK2CXYRWV4
*** Script: Match found: CPYR9Y2
*** Script: Match found: H2WJF048Q6P0
*** Script: Match found: GGX5M4XMPP
*** Script: Match found: QWTGY41WGM
*** Script: Match found: BZZTBY3
*** Script: Match found: C02FN47PMD6R
*** Script: Match found: C02DR9WEMD6R
*** Script: Match found: F0VQ0FHCYF
*** Script: Match found: D25NM00EF8J5
*** Script: Match found: C02DRAZ3MD6R
*** Script: Match found: D25WK06RJ1GQ
*** Script: Match found: C02TF7M7GTFM
*** Script: Match found: 82
*** Script: Match found: 80
*** Script: Match found: FOC1752X04X
*** Script: Match found: C02G703AML88
*** Script: Match found: GGK372W647
*** Script: Match found: G4YVW04QDT
*** Script: Match found: 29
*** Script: Match found: WD7V00X2NH
*** Script: Match found: XHLXYTR20X
*** Script: Match found: R77NTP9265
*** Script: Match found: KP4506QRHC
*** Script: Match found: 81
*** Script: Match found: C07FN1QQQ6P0
*** Script: Match found: D25RH01WGQ17
*** Script: Match found: WM6Y4L4V3F
*** Script: Match found: C02FN01QML88
*** Script: Match found: C02M60WPFD59
*** Script: Match found: QQT6KM7PFD
*** Script: Match found: H2WH30U0Q6P0
*** Script: Match found: KXQ37HR4YG
*** Script: Match found: C02F959EMD6R
*** Script: Match found: 20
*** Script: Match found: HD2NQPJ21M
*** Script: Match found: C02G37KRMD6R
*** Script: Match found: C02YH3EUJHD3
*** Script: Match found: C02NQ05HG3QD
*** Script: Match found: C02G710NMD6R
*** Script: Match found: GY75P67WH9
*** Script: Match found: C02MD325FD59
*** Script: Match found: 12YLR22
*** Script: Match found: H57MXH6374
*** Script: Match found: ESRIINC-1
*** Script: Match found: C02FN47RMD6R
*** Script: Match found: DH85VV3
*** Script: Match found: XVFKYCT4K3
*** Script: Match found: GTF6WW1
*** Script: Match found: H2WG30Y0Q6P0
*** Script: Match found: PMJPL2LK71
*** Script: Match found: CNRXJ84620
*** Script: Match found: 2L1WBY3
*** Script: Match found: CNDF112327
*** Script: Match found: C02FJ3T9MD6R
*** Script: Match found: C07YD0YEJYVY
*** Script: Match found: GX5YY4Y17H
*** Script: Match found: 96
*** Script: Match found: C02DG12LMD6R
*** Script: Match found: R3K0G9N2FY
*** Script: Match found: 41Q9LQ2
*** Script: Match found: W6YQ0NJ63P
*** Script: Match found: 84
*** Script: Match found: C02MD3CEFD59
*** Script: Match found: 4P041Q2
*** Script: Match found: Y9J5W3T5W0
*** Script: Match found: RPQCV4QNW4
*** Script: Match found: A5C4011117186
*** Script: Match found: C02F72UEML85
*** Script: Match found: WD9NNXXFQ2
*** Script: Match found: 8J1HK13
*** Script: Match found: H2WJF0LQQ6P0
*** Script: Match found: C02XJ4EBJGH6
*** Script: Match found: C02DRCN8MD6R
*** Script: Match found: A5C4011122489
*** Script: Match found: C02W52WQHTDF
*** Script: Match found: C02M60XGFD59
*** Script: Match found: C02FN5LUMD6R
*** Script: Match found: C07YH30BJYW0
*** Script: Match found: C02GJ0TUMD6R
*** Script: Match found: W63HPX79D2
*** Script: Match found: C239L33
*** Script: Match found: FOC1802U1E3
*** Script: Match found: XCR9HD6YV7
*** Script: Match found: F194C69FM9
*** Script: Match found: FVFGP4ZQQ05N
*** Script: Match found: C02RF1AGG8WM
*** Script: Match found: C02G37KSMD6R
*** Script: Match found: R27CYR9CYP
*** Script: Match found: XX7713KYQ5
*** Script: Match found: VNB3Y52070
*** Script: Match found: DL1WBY3
*** Script: Match found: W7H0FPDW2H
*** Script: Match found: 4P131Q2
*** Script: Match found: C02G711CMD6R
*** Script: Match found: P4K7YF3P34
*** Script: Match found: JD26M4N9N9
*** Script: Match found: PG94CFX2HP
*** Script: Match found: C02RV22CG8WM
*** Script: Match found: C02DG12MMD6R
*** Script: Match found: XFMG6QRYV6
*** Script: Match found: Y57RJ2V7X4
*** Script: Match found: W4TWKHK40W
*** Script: Match found: YDQ1GD9N4R
*** Script: Match found: 90
*** Script: Match found: C02FN46JMD6R
*** Script: Match found: JD7N0QJ2C7
*** Script: Match found: JPW2K2YWYL
*** Script: Match found: KVQ6GLF7G9
*** Script: Match found: JXRRVV3
*** Script: Match found: C07S80JFG1J1
*** Script: Match found: 1420P73
*** Script: Match found: BBYF.103372..ATI
*** Script: Match found: 82
*** Script: Match found: C02DG136MD6R
*** Script: Match found: XC2CW7T32M
*** Script: Match found: L5J3WRRW2H
*** Script: Match found: QNRY4359XM
*** Script: Match found: 3QZ5GH2
*** Script: Match found: 26
*** Script: Match found: VTQ0WGN4LD
*** Script: Match found: 90
*** Script: Match found: 564W8B3
*** Script: Match found: 1-80-119056
*** Script: Match found: FVFHJ0ZFQ05P
*** Script: Match found: DNBLYY2
*** Script: Match found: VNXV9WV0MX
*** Script: Match found: 20
*** Script: Match found: QXX7F023XH
*** Script: Match found: C02FG13XMD6R
*** Script: Match found: TKHYJPFJ2D
*** Script: Match found: VFJ7LN9264
*** Script: Match found: H2WH30M7Q6P0
*** Script: Match found: KX097DJFY3
*** Script: Match found: Y2N32CVM6J
*** Script: Match found: HNV34X5679
*** Script: Match found: H2WJF0LCQ6P0
*** Script: Match found: 4X1YBY3
*** Script: Match found: LL7DL2K4NT
*** Script: Match found: XRH4H2NQ0L
*** Script: Match found: FOC1802U1EJ
*** Script: Match found: P4G639VY94
*** Script: Match found: PKGW671JPG
*** Script: Match found: H2WJF0WKQ6P0
*** Script: Match found: TH95D1T16P
*** Script: Match found: V47L099XK4
*** Script: Match found: C02DQ04HML86
*** Script: Match found: H2WHJ20SQ6NV
*** Script: Match found: VN7W9DF6XM
*** Script: Match found: C02NQ01AG3QD
*** Script: Match found: C02G6131Q05R
*** Script: Match found: N9WY499521
*** Script: Match found: DKKKN32
*** Script: Match found: Y7HCQC4HT4
*** Script: Match found: CXJM60N006
*** Script: Match found: 442043635
*** Script: Match found: T2QQ4MH656
*** Script: Match found: FVFHJ2TSQ05P
*** Script: Match found: GXH94097XM
*** Script: Match found: 06F931G
*** Script: Match found: 48Y7T13
*** Script: Match found: W2MVF673M9
[0:00:00.003] Expanding large row block (file.read: alm_asset, 10000 rows, 160000 dataSize)
[0:00:00.015] Compacting large row block (file.write: alm_asset 10000 rows 160000 saveSize)
*** Script: Match found: KG6DG3J6YQ
*** Script: Match found: AUA343513
*** Script: Match found: X1HJKYF6LD
*** Script: Match found: R5HQ5642RN
*** Script: Match found: 5TF6WW1
*** Script: Match found: C02FN605MD6R
*** Script: Match found: C02CJ075LVDM
*** Script: Match found: D56W2HC4Q2
*** Script: Match found: CXDCQ423TH
*** Script: Match found: NC3W1746P9
*** Script: Match found: C02G7037ML88
*** Script: Match found: 94
*** Script: Match found: C02QW11NG8WM
*** Script: Match found: Y1VX5Y09RG
*** Script: Match found: J7C16RJKWX
*** Script: Match found: 55
*** Script: Match found: 10272DP
*** Script: Match found: C02FL9MQMD6R
*** Script: Match found: 82
*** Script: Match found: CPH7NQF12D
*** Script: Match found: C07FN1GPQ6P0
*** Script: Match found: 5CJD2Z3
*** Script: Match found: C02G711EMD6R
*** Script: Match found: C02FN472MD6R
*** Script: Match found: N1603P440N
*** Script: Match found: C02VL2YBHTDF
*** Script: Match found: C02KJ1QFFFT4
*** Script: Match found: C02FL2USMD6R
*** Script: Match found: HVY22H04RK
*** Script: Match found: RNJM62FHYH
*** Script: Match found: H3HN4X0MWN
*** Script: Match found: C02RG35XG8WM
*** Script: Match found: BBYF.102335..ATI
*** Script: Match found: A5C4011114438
*** Script: Match found: V060HYF2TM
*** Script: Match found: C02FN47TMD6R
*** Script: Match found: NKXQ7XHP3Q
*** Script: Match found: VM294WW4WH
*** Script: Match found: CNGCF8W0M3
*** Script: Match found: 000000000000000000000000000000000000000000047
*** Script: Match found: JL7TJ616XD
*** Script: Match found: A7PU011009096
*** Script: Match found: DJCJJM2
*** Script: Match found: 2UA7062FT3
*** Script: Match found: C02DG134MD6R
*** Script: Match found: V5623T5HJR
*** Script: Match found: C02GH3SHMD6R
*** Script: Match found: 4TF6WW1
*** Script: Match found: PH7G66GYQR
*** Script: Match found: FVFGP4YAQ05N
*** Script: Match found: C02JW0ZDDKQ5
*** Script: Match found: QTYYDJ9VXY
*** Script: Match found: FOC1802U1E0
*** Script: Match found: 7HCKXD3
*** Script: Match found: C02G7116MD6R
*** Script: Match found: N42724D69R
*** Script: Match found: C02YJ0W0JHD3
*** Script: Match found: C02G711MMD6R
*** Script: Match found: D659R4DY7H
*** Script: Match found: A7PU011005282
*** Script: Match found: 7CWXBY3
*** Script: Match found: FXXHGXJ67R
*** Script: Match found: NXWFPRH7F5
*** Script: Match found: G2M0XVFTVH
*** Script: Match found: CXH9V5L9JY
*** Script: Match found: C02YH3ETJHD3
*** Script: Match found: BKBDR73
*** Script: Match found: C02D11U3MD6R
*** Script: Match found: 81
*** Script: Match found: 82
*** Script: Match found: 64167FB9AE07
*** Script: Match found: 33PMQN2
*** Script: Match found: Y13790Q09H
*** Script: Match found: XLLQ4NQWL3
*** Script: Match found: NXPYYHT4JH
*** Script: Match found: AJ101802
*** Script: Match found: 97
*** Script: Match found: 20
*** Script: Match found: C02GJ3B8MD6R
*** Script: Match found: C02FN47CMD6R
*** Script: Match found: 5CZBC42
*** Script: Match found: C02G40JBMD6R
*** Script: Match found: H2WJH0CVQ6P0
*** Script: Match found: 49QYQQ2
*** Script: Match found: CND8F7QB1Z
*** Script: Match found: VWFYCQQJW6
*** Script: Match found: 97
*** Script: Match found: R12XJR3TDW
*** Script: Match found: D8PFHR2
*** Script: Match found: FVFGP4T6Q05N
*** Script: Match found: W4P6X53P3J
*** Script: Match found: GLWXBY3
*** Script: Match found: ACC2011020454
*** Script: Match found: CNBG203206
*** Script: Match found: 29
*** Script: Match found: MXCCF4K193
*** Script: Match found: D359YPKJQX
*** Script: Match found: YFG6N79K0G
*** Script: Match found: H2WJF0CEQ6P0
*** Script: Match found: RTH92662RL
*** Script: Match found: VCT138276
*** Script: Match found: X1KXDD2N9C
*** Script: Match found: 4LSLYY2
*** Script: Match found: BA100562
*** Script: Match found: FVFGP4ZJQ05N
*** Script: Match found: M630NJ1QHQ
*** Script: Match found: XJKXCL25FW
*** Script: Match found: 2JWXBY3
*** Script: Match found: D25XV7TYJ1GQ
*** Script: Match found: H3756MYG65
*** Script: Match found: 2UA75217H6
*** Script: Match found: USQC053754
*** Script: Match found: C02GJ3F3MD6R
*** Script: Match found: WQ699FY3Q3
*** Script: Match found: 000000000000000000000000000000000000000000047
*** Script: Match found: C02FD5UJMD6R
*** Script: Match found: HC546Q04X5
*** Script: Match found: 4T9WJ02
*** Script: Match found: C02DRAZ7MD6R
*** Script: Match found: XTXJJR9165
*** Script: Match found: G7QQMCQ6PN
*** Script: Match found: FOC1803U04J
*** Script: Match found: KG0X4Q5XHV
*** Script: Match found: K0G4VG9MVR
*** Script: Match found: A61H011010603
*** Script: Match found: GV254VLH3J
*** Script: Match found: G70R03X6R5
*** Script: Match found: 26
*** Script: Match found: C02C32EGLVDM
*** Script: Match found: LF7016WF45
*** Script: Match found: VMF7607PTQ
*** Script: Match found: YRW99396F1
*** Script: Match found: WRNYPYH6J9
*** Script: Match found: 792209000770
*** Script: Match found: C02CK051MD6R
*** Script: Match found: V43WP9RXHY
*** Script: Match found: C02DRCZ3MD6R
*** Script: Match found: 80
*** Script: Match found: NVGVXFDQGL
*** Script: Match found: W09WHTKHXD
*** Script: Match found: CCSXFC2
*** Script: Match found: C02QW121G8WM
*** Script: Match found: WQ1XY70RR9
*** Script: Match found: C02QG2AXG8WM
*** Script: Match found: 4Z8TRQ2
*** Script: Match found: 20
*** Script: Match found: 69B0R72
*** Script: Match found: JVK99Y3
*** Script: Match found: XP9M6MW5J9
*** Script: Match found: W9Q5K6D22C
*** Script: Match found: Q22G12P96R
*** Script: Match found: H1X8L13
*** Script: Match found: CBT5K13
*** Script: Match found: C02G710MMD6R
*** Script: Match found: FOC1802U19J
*** Script: Match found: R43J26V55X
*** Script: Match found: N9019R59C4
*** Script: Match found: C02ZK46YLVDQ
*** Script: Match found: HM9TF6JWMG
*** Script: Match found: FXH0J7T7JC
*** Script: Match found: X9572P7Q9R
*** Script: Match found: C02G88PPMD6R
*** Script: Match found: C02DG137MD6R
*** Script: Match found: C02ZK46YLVDQ
*** Script: Match found: 70
*** Script: Match found: C6W9PY2
*** Script: Match found: 10272CP
*** Script: Match found: 36
*** Script: Match found: C1F739R1XP
*** Script: Match found: JHLFCGJWL3
*** Script: Match found: C02DRAZBMD6R
*** Script: Match found: N6NXHFVY41
*** Script: Match found: VWY0X7K4HD
*** Script: Match found: C02FN462MD6R
*** Script: Match found: C02NQ00JG3QD
*** Script: Match found: N40J0X44DP
*** Script: Match found: 3X74QN2
*** Script: Match found: PQ3PMGKQXL
*** Script: Match found: C07DC00BPJJ9
*** Script: Match found: A7PU011008244
*** Script: Match found: C02D8620MD6R
*** Script: Match found: RYW09CH00D
*** Script: Match found: 46TMFB2
*** Script: Match found: BG6NDY3
*** Script: Match found: C02FN47FMD6R
*** Script: Match found: C02G37P4MD6R
*** Script: Match found: C02CJ0K3LVDM
*** Script: Match found: HJLFK63
*** Script: Match found: M6GD9D52TV
*** Script: Match found: VQ05Q79DCR
*** Script: Match found: H244GC2
*** Script: Match found: C02FP1HKMD6R
*** Script: Match found: 82
*** Script: Match found: G4QT956KXF
*** Script: Match found: C02DQ17BMD6R
*** Script: Match found: PQ7KVXX6HW
*** Script: Match found: M7744X42GP
*** Script: Match found: CJWWV4G1V9
*** Script: Match found: F222106930
*** Script: Match found: FLMC3G2
*** Script: Match found: H2WJF0MRQ6P0
*** Script: Match found: 7CMW373
*** Script: Match found: W1K3G6MGJ2
[0:00:00.002] Expanding large row block (file.read: alm_asset, 10000 rows, 160000 dataSize)
[0:00:00.015] Compacting large row block (file.write: alm_asset 10000 rows 160000 saveSize)
*** Script: Match found: C02WL0C6HTDF
*** Script: Match found: A5C4011117165
*** Script: Match found: HP26XQC29X
*** Script: Match found: C07SN0TWG1J2
*** Script: Match found: 1NBLYY2
*** Script: Match found: CZC14822SF
*** Script: Match found: YRH647FF6N
*** Script: Match found: 2GHKN7ZQ
*** Script: Match found: MXBPMBC216
*** Script: Match found: A7PU011008933
*** Script: Match found: Q2H76P9RNY
*** Script: Match found: XR2R6DP9M3
*** Script: Match found: YKG21H00WW
*** Script: Match found: S227686X6B35081
*** Script: Match found: C2CVBY3
*** Script: Match found: VLWTJVV6KJ
*** Script: Match found: N335020GQM
*** Script: Match found: A7PY011001404
*** Script: Match found: C6V8PY2
*** Script: Match found: N9KQ0H6XD3
*** Script: Match found: C02GJ0TWMD6R
*** Script: Match found: CGF3FN2P6Q
*** Script: Match found: FY4LMV2
*** Script: Match found: C02FN019ML88
*** Script: Match found: 000000000000000000000000000000000000000000047
*** Script: Match found: C02FN47GMD6R
*** Script: Match found: C02DG135MD6R
*** Script: Match found: XC74Y1J9WJ
*** Script: Match found: 71
*** Script: Match found: 80
*** Script: Match found: FVFHJ0Z9Q05P
*** Script: Match found: 55
*** Script: Match found: C02DV359Q05N
*** Script: Match found: C02DK5GRMD6R
*** Script: Match found: R2FQ9F21N2
*** Script: Match found: GM434WCX9C
*** Script: Match found: XJ2YQ4NQ25
*** Script: Match found: M4T6NP27P0
*** Script: Match found: C02D120BMD6R
*** Script: Match found: G44M79PYTV
*** Script: Match found: C02G3219MD6R
*** Script: Match found: JQD3WV3
*** Script: Match found: XQCQ99P9HP
*** Script: Match found: FVG49R76CR
*** Script: Match found: 000000000000000000000000000000000000000000047
*** Script: Match found: FVFHK09SQ05P
*** Script: Match found: WVFNKH95F4
*** Script: Match found: 6VF6WW1
*** Script: Match found: C02G950DMD6R
*** Script: Match found: NR32LKV22M
*** Script: Match found: C02G7791MD6R
*** Script: Match found: H2WJF0KUQ6P0
*** Script: Match found: CX5PYY1
*** Script: Match found: VWNVF1QJH7
*** Script: Match found: JYR3XWYJ3M
*** Script: Match found: YW06X5XVTY
*** Script: Match found: J48D2J3
*** Script: Match found: Q6Q74F4LLF
*** Script: Match found: NDCWV3CXM7
*** Script: Match found: C02D117CMD6R
*** Script: Match found: H2WJF0B8Q6P0
*** Script: Match found: CND1G31191
*** Script: Match found: Y2V5L93G5W
*** Script: Match found: C02PJ100G3QP
*** Script: Match found: HX95K13
*** Script: Match found: 15PDLQ2
*** Script: Match found: C02QW1D4G8WM
*** Script: Match found: C71DPY2
*** Script: Match found: JPBCC1D22G
*** Script: Match found: 9ZFBG72
*** Script: Match found: FOC1802X1HW
*** Script: Match found: C02DRAYYMD6R
*** Script: Match found: C02FN47JMD6R
*** Script: Match found: HKDFN32
*** Script: Match found: DD136120225010
*** Script: Match found: FD9V6WRXGJ
*** Script: Match found: 7HDKJM2
*** Script: Match found: 5T85GC2
*** Script: Match found: C02C98MDMD6R
*** Script: Match found: 1TF6WW1
*** Script: Match found: A5C4011117775
*** Script: Match found: MJ09A6MA
*** Script: Match found: YKXXVXGWP1
*** Script: Match found: FVFHJ0ZLQ05P
*** Script: Match found: H2WH60C6PJJ9
*** Script: Match found: HYVJKXQW3H
*** Script: Match found: PV623PYTR6
*** Script: Match found: D0Q19D6MPY
*** Script: Match found: 29
*** Script: Match found: C02G7112MD6R
*** Script: Match found: FXXQ421XYW
*** Script: Match found: XLN642N4QJ
*** Script: Match found: 49QYQQ2
*** Script: Match found: C02DG12JMD6R
*** Script: Match found: JTF6WW1
*** Script: Match found: F4JX8Y3
*** Script: Match found: VWR0X99VP9
*** Script: Match found: Y5F97957VY
*** Script: Match found: C02G37P8MD6R
*** Script: Match found: J4XYQ5J3VX
*** Script: Match found: A7PU011004433
*** Script: Match found: D70GXK2
*** Script: Match found: 70
*** Script: Match found: XLPGH6YC7F
*** Script: Match found: CQ9GKW7GY7
*** Script: Match found: HGGF6GWQGJ
*** Script: Match found: YD6R7QXLXM
*** Script: Match found: K596RQLGDM
*** Script: Match found: C02FN01RML88
*** Script: Match found: FOC1803Y0X3
*** Script: Match found: JC4S9Y2
*** Script: Match found: C02ZK40NLVDQ
*** Script: Match found: A7PU011006133
*** Script: Match found: C02Z70D4LVDM
*** Script: Match found: C02G711NMD6R
*** Script: Match found: TYQDKGMGJ0
*** Script: Match found: 81
*** Script: Match found: C02F73UWMD6R
*** Script: Match found: 87
*** Script: Match found: C02DR858MD6R
*** Script: Match found: DNBLYY2
*** Script: Match found: C02QH2PLG8WM
*** Script: Match found: RD2YDWYD72
*** Script: Match found: NXQ70QJD91
*** Script: Match found: C1FJJRFNJG
*** Script: Match found: H2WJF0B3Q6P0
*** Script: Match found: CCZRRF2
*** Script: Match found: FVFGV1YDQ05Q
*** Script: Match found: C02DG131MD6R
*** Script: Match found: W4FQD4L7W7
*** Script: Match found: C02FN01KML88
*** Script: Match found: 51
*** Script: Match found: CNBH111369
*** Script: Match found: C02G711PMD6R
*** Script: Match found: JRLKMV2
*** Script: Match found: H27F3Y4NX3
*** Script: Match found: C1MPJ6MCG944
*** Script: Match found: JAE214104V4
*** Script: Match found: JPRC98Z07Q
*** Script: Match found: 9VF6WW1
*** Script: Match found: T749VW149Y
*** Script: Match found: C02G703HML88
*** Script: Match found: H2WFM16NPJJ9
*** Script: Match found: V0M4D2KXXV
*** Script: Match found: RTHHGX6JH1
*** Script: Match found: 1
*** Script: Match found: YVXJL7V1Q3
*** Script: Match found: LD79VTYYV0
*** Script: Match found: 5QKFZV1
*** Script: Match found: FSF6WW1
*** Script: Match found: GJ6T46W4VM
*** Script: Match found: C02DQ201MD6R
*** Script: Match found: CDWXBY3
*** Script: Match found: C02FN5KFMD6R
*** Script: Match found: C02FN01DML88
*** Script: Match found: WV56YXP0GG
*** Script: Match found: H2WH30MEQ6P0
*** Script: Match found: PC7R1PXJ2N
*** Script: Match found: 346SHM2
*** Script: Match found: C02QG2AXG8WM
*** Script: Match found: C02DRAYXMD6R
*** Script: Match found: P047LKXLG4
*** Script: Match found: NX4V0QWFM2
*** Script: Match found: PC4CQDHJ06
*** Script: Match found: 4RLQJ02
*** Script: Match found: C02G710ZMD6R
*** Script: Match found: T9WC6LGXFJ
*** Script: Match found: C02NPB98G3QD
*** Script: Match found: A7AK011002770
*** Script: Match found: YYXFXG779T
*** Script: Match found: FOC1803U05H
*** Script: Match found: H2WJF0CDQ6P0
*** Script: Match found: C02DQ27SMD6R
*** Script: Match found: H12DHJYZPN7C
*** Script: Match found: 2GFZBY3
*** Script: Match found: JK216FFHL2
*** Script: Match found: B9Q5K13
[0:00:00.003] Expanding large row block (file.read: alm_asset, 10000 rows, 160000 dataSize)
[0:00:00.015] Compacting large row block (file.write: alm_asset 10000 rows 160000 saveSize)
*** Script: Match found: FOC1749Y1E5
*** Script: Match found: R9FR4NMW9L
*** Script: Match found: 85
*** Script: Match found: R6YPF0JWY9
*** Script: Match found: C02G710XMD6R
*** Script: Match found: 1
*** Script: Match found: HY55264KHY
*** Script: Match found: J9D4YXM36F
*** Script: Match found: 4QN6WW1
*** Script: Match found: GK7H9R3
*** Script: Match found: A7PU011009169
*** Script: Match found: HP1VYVYW24
*** Script: Match found: N96J2X9N9X
*** Script: Match found: 7HCKXD3
*** Script: Match found: C02XV42XJGH6
*** Script: Match found: V2HXV09914
*** Script: Match found: C02FN477MD6R
*** Script: Match found: 5V4PL33
*** Script: Match found: 29
*** Script: Match found: C02ZX4WWMD6T
*** Script: Match found: JPBCC520QB
*** Script: Match found: A5C4011121722
*** Script: Match found: C02NQ0DLG3QD
*** Script: Match found: C02KJ1R2FFT4
*** Script: Match found: H2WHP0K8Q6NW
*** Script: Match found: C02XT3ZNJGH5
*** Script: Match found: C02XK11WJHD3
*** Script: Match found: L023TDQ6QF
*** Script: Match found: JM6G9R7MLV
*** Script: Match found: X2C4C02NJK
*** Script: Match found: YJXRL2YGQM
*** Script: Match found: 20
*** Script: Match found: C02G711QMD6R
*** Script: Match found: GQD616HXGK
*** Script: Match found: H2WJF0LXQ6P0
*** Script: Match found: PTPCGGWG62
*** Script: Match found: CND0353DFM
*** Script: Match found: JLC72TJ25D
*** Script: Match found: C02YJ2KZJGH6
*** Script: Match found: P2JWT700DK
*** Script: Match found: 10JN6Y2
*** Script: Match found: C02GD0DUML7M
*** Script: Match found: 5CG0286P3M
*** Script: Match found: YQJLY494RT
*** Script: Match found: VLW6JG6CQQ
*** Script: Match found: H2WJF0LDQ6P0
*** Script: Match found: H2WJF0MZQ6P0
*** Script: Match found: V3W2NX7W5G
*** Script: Match found: C02DT1FTMD6R
*** Script: Match found: 49.HMXX.000863.COXC
*** Script: Match found: FWPVHW532P
*** Script: Match found: GRWSFC2
*** Script: Match found: PMHFW0JR9J
*** Script: Match found: H2WG72SBQ6NY
*** Script: Match found: GW4TV3W494
*** Script: Match found: QTLCFH7WML
*** Script: Match found: C02FN01NML88
*** Script: Match found: C02FN47LMD6R
*** Script: Match found: 64167FB892D8
*** Script: Match found: HXYH4756DN
*** Script: Match found: T5W5C29D4Q
*** Script: Match found: WGLC9CR32W
*** Script: Match found: C02DG133MD6R
*** Script: Match found: CND8F1Q628
*** Script: Match found: FW5C7VC2YF
*** Script: Match found: 5VF6WW1
*** Script: Match found: WWY3Y2KWRL
*** Script: Match found: 3VY03W2
*** Script: Match found: RD6C49F7KF
*** Script: Match found: CNDCGB80TT
*** Script: Match found: P56YM07T6X
*** Script: Match found: 80
*** Script: Match found: QTFCU30210014
*** Script: Match found: XCRHH67XFH
*** Script: Match found: C07J106DPJJ9
*** Script: Match found: 82
*** Script: Match found: FVFHJ0ZMQ05P
*** Script: Match found: XH02X56VD2
*** Script: Match found: C4Q713567
*** Script: Match found: GW2VWWR7J0
*** Script: Match found: C02FC3XPMD6R
*** Script: Match found: 77GCY33
*** Script: Match found: 6KQ2GC2
*** Script: Match found: GK9721N7JW
*** Script: Match found: C02YJ2HPJGH6
*** Script: Match found: 48Y9T13
*** Script: Match found: P9T0H2WQN6
*** Script: Match found: JGGRZD3
*** Script: Match found: FTF6WW1
*** Script: Match found: YHX7F6K7Q0
*** Script: Match found: FOC1803U001
*** Script: Match found: D5737JT72L
*** Script: Match found: K640YX516L
*** Script: Match found: NLFYFVF091
*** Script: Match found: HPN6WW1
*** Script: Match found: C02FN474MD6R
*** Script: Match found: VL99NG0G63
*** Script: Match found: VGPHWQXGTC
*** Script: Match found: C02FN46UMD6R
*** Script: Match found: F141M63
*** Script: Match found: C07D92FPPJJ9
*** Script: Match found: R40KN7M70K
*** Script: Match found: TXF7NKW7QG
*** Script: Match found: X6QNQG6LM9
*** Script: Match found: C02G37NSMD6R
*** Script: Match found: V4H3HJC6QC
*** Script: Match found: FOC1802Y2AE
*** Script: Match found: C02S33EMG8WM
*** Script: Match found: PN2M2CH6XD
*** Script: Match found: WX7R466T2H
*** Script: Match found: H2CG6T07Q2
*** Script: Match found: 5X8DR73
*** Script: Match found: 9BJD2Z3
*** Script: Match found: VT4GK66DQL
*** Script: Match found: C02FN5KVMD6R
*** Script: Match found: C02FN604MD6R
*** Script: Match found: H2WJQ054Q6P0
*** Script: Match found: 000000000000000000000000000000000000000000047
*** Script: Match found: T63044Y1VX
*** Script: Match found: VVVQN4DX4N
*** Script: Match found: FM2M934YX3
*** Script: Match found: Y62CV2KE
*** Script: Match found: C07DC0EMPJJ9
*** Script: Match found: A61H011006926
*** Script: Match found: C02FN5KDMD6R
*** Script: Match found: FOC1748Z56F
*** Script: Match found: BKKBRQ3
*** Script: Match found: XQNWQXD46J
*** Script: Match found: C07YD0YDJYVY
*** Script: Match found: JN6349GCFD
*** Script: Match found: P7X36VYY24
*** Script: Match found: 2GHLZQ3M
*** Script: Match found: C02FN47NMD6R
*** Script: Match found: DD136120226002
*** Script: Match found: H2WFK02APJJ9
*** Script: Match found: QTFCU3021003F
*** Script: Match found: A7R0017013089
*** Script: Match found: 720VBY3
*** Script: Match found: C02G7114MD6R
*** Script: Match found: J363YY3YXM
*** Script: Match found: H2WJH06TQ6P0
*** Script: Match found: JPBFR11456
*** Script: Match found: C02DRCN9MD6R
*** Script: Match found: XRQY29QT54
*** Script: Match found: Y6QQCH4QRX
*** Script: Match found: A61H011011320
*** Script: Match found: 442593696
*** Script: Match found: C02GJ0TSMD6R
*** Script: Match found: C02FN467MD6R
*** Script: Match found: 70
*** Script: Match found: C02DRAZXMD6R
*** Script: Match found: C02JJHKJ77
*** Script: Match found: XGWMHYHGD2
*** Script: Match found: CFVP37GWCJ
*** Script: Match found: P211FQCLY6
*** Script: Match found: K6L61LC6TQ
*** Script: Match found: 0643F4A
*** Script: Match found: HT6D9RLVJV
*** Script: Match found: VX910JC2FR
*** Script: Match found: C02G710TMD6R
*** Script: Match found: 4Z8TRQ2
*** Script: Match found: C02G37PBMD6R
*** Script: Match found: 950A9157
[0:00:00.002] Expanding large row block (file.read: alm_asset, 10000 rows, 160000 dataSize)
[0:00:00.016] Compacting large row block (file.write: alm_asset 10000 rows 160000 saveSize)
*** Script: Match found: CNDF112387
*** Script: Match found: H6YV0F927G
*** Script: Match found: HCV2X65GXT
*** Script: Match found: H2WH313QQ6P0
*** Script: Match found: DGVJHJN7FX
*** Script: Match found: 81
*** Script: Match found: V7LYVX1WGM
*** Script: Match found: D43CHQQ3YN
*** Script: Match found: LMHG1HWHX5
*** Script: Match found: 440819944
*** Script: Match found: KMQKN93993
*** Script: Match found: 6BLVZH3
*** Script: Match found: G6MC4J7GFT
*** Script: Match found: 70
*** Script: Match found: C02XN4EGJGH6
*** Script: Match found: 4KKQ0Z2
*** Script: Match found: XYW57CJPX7
*** Script: Match found: H2WJH0EGQ6P0
*** Script: Match found: C02GD0DNML7M
*** Script: Match found: C6TCPY2
*** Script: Match found: FRXYQTJ3J0
*** Script: Match found: 27
*** Script: Match found: H2WJF0M6Q6P0
*** Script: Match found: 4P041Q2
*** Script: Match found: H2WHV0U5Q6P0
*** Script: Match found: 87
*** Script: Match found: H7Y02H75H9
*** Script: Match found: C07D92ZBPJJ9
*** Script: Match found: JZM1NV2
*** Script: Match found: XDL7LL7C30
*** Script: Match found: A4Y4011003708
*** Script: Match found: FW0QLX2
*** Script: Match found: A61H011010566
*** Script: Match found: HD65F0WQMT
*** Script: Match found: G16XXYL77H
*** Script: Match found: J6LPY9775Y
*** Script: Match found: C07QM0A2G1J1
*** Script: Match found: HXTJQ6667K
*** Script: Match found: FOC1803X04N
*** Script: Match found: T9G4YDQDX4
*** Script: Match found: 4KKQ0Z2
*** Script: Match found: H2WH30TFQ6P0
*** Script: Match found: QNH3YD06TM
*** Script: Match found: BCWN3132
*** Script: Match found: C02FN464MD6R
*** Script: Match found: 7HDKJM2
*** Script: Match found: C02DC0YPML86
*** Script: Match found: GN5VBY3
*** Script: Match found: 4SF6WW1
*** Script: Match found: FOC1802X1GY
*** Script: Match found: FVFHJ0Z2Q05P
*** Script: Match found: 35TJMV2
*** Script: Match found: R2QKPWY91J
*** Script: Match found: GMXQPVVQTT
*** Script: Match found: C02G703BML88
*** Script: Match found: 99X1L33
*** Script: Match found: FOC1802U1CZ
*** Script: Match found: R37CR46HJ7
*** Script: Match found: C02GJ0TRMD6R
*** Script: Match found: C02C9AHTMD6R
*** Script: Match found: 20
*** Script: Match found: 80511200121
*** Script: Match found: 2MFR4X3
*** Script: Match found: C02FN01AML88
*** Script: Match found: C02C40NTMD6R
*** Script: Match found: C02NQ0DPG3QD
*** Script: Match found: BSF6WW1
*** Script: Match found: JTFJ7MM93Y
*** Script: Match found: P2Q1H72619
*** Script: Match found: A7PU011006104
*** Script: Match found: PV75FHL2DF
*** Script: Match found: NTQPY4M17J
*** Script: Match found: 81
*** Script: Match found: FOC1802Y79N
*** Script: Match found: JPDCDCQ16W
*** Script: Match found: J17YH16L4H
*** Script: Match found: V9T69KQ3CP
*** Script: Match found: 80
*** Script: Match found: C02F959BMD6R
*** Script: Match found: C02CCDNXMD6M
*** Script: Match found: T7RQP9PVDQ
*** Script: Match found: C02FN01BML88
*** Script: Match found: H2WGN1ZRQ6P0
*** Script: Match found: C07SN0TTG1J2
*** Script: Match found: C02FL4UAMD6R
*** Script: Match found: PDY71F02L0
*** Script: Match found: C02FN473MD6R
*** Script: Match found: 1
*** Script: Match found: GSF6WW1
*** Script: Match found: C02DRAZTMD6R
*** Script: Match found: PP2FV5V6FT
*** Script: Match found: KVKXMT99HK
*** Script: Match found: C02FJ3DUMD6R
*** Script: Match found: VQX626XQ2J
*** Script: Match found: C02G37PDMD6R
*** Script: Match found: V4NVG2RCP7
*** Script: Match found: WFX9921JP4
*** Script: Match found: A5C4011115513
*** Script: Match found: D6K7M72
*** Script: Match found: FOC1802U1DT
*** Script: Match found: MJ05VG98
*** Script: Match found: RQ60PJH6JF
*** Script: Match found: 5WN6H62
*** Script: Match found: C07S80L4G1J1
*** Script: Match found: C02GK0QSMD6T
*** Script: Match found: TQ9VFH93D7
*** Script: Match found: THYF7PVWJ9
*** Script: Match found: C02C9AGAMD6R
*** Script: Match found: 6SJFQ53
*** Script: Match found: C02TF3UFGTFM
*** Script: Match found: C02GG2PTMD6R
*** Script: Match found: Q0V7TKX0WJ
*** Script: Match found: 2WVS9Y2
*** Script: Match found: 10272CP
*** Script: Match found: W3WTGV21N9
*** Script: Match found: C02DG12SMD6R
*** Script: Match found: C02DT1FUMD6R
*** Script: Match found: VDGQ0HFWTY
*** Script: Match found: C02GJ1CJML85
*** Script: Match found: C02FF38JMD6T
*** Script: Match found: VT2D7MGK2J
*** Script: Match found: MQHR9G721V
*** Script: Match found: D67D269T7L
*** Script: Match found: FOC1915R28T
*** Script: Match found: C02GC5GGQ05N
*** Script: Match found: C02FN47AMD6R
*** Script: Match found: A7AK011002096
*** Script: Match found: WL7XKF7L44
*** Script: Match found: 44CJ3F3
*** Script: Match found: 7823D0P
*** Script: Match found: C02GJ0TNMD6R
*** Script: Match found: LQHXHP6D91
*** Script: Match found: C02DG12XMD6R
*** Script: Match found: QRYWKPFCYF
*** Script: Match found: PCWCW9F2VQ
*** Script: Match found: H2WH30TBQ6P0
*** Script: Match found: C02DR8HTMD6T
*** Script: Match found: JQ6CQQHR7Q
*** Script: Match found: A5C4011118439
*** Script: Match found: WGJPLQ6YH1
*** Script: Match found: LDW4Q043F1
*** Script: Match found: 81
*** Script: Match found: CNCCDB30HQ
*** Script: Match found: C02GD1Q3Q05N
*** Script: Match found: C02FN47HMD6R
*** Script: Match found: H4492Y332T
*** Script: Match found: C02CK0DFMD6R
*** Script: Match found: C02FC0UJMD6T
*** Script: Match found: LNQ6DK4QP4
*** Script: Match found: YYH2R14V2Q
*** Script: Match found: H2WHR0TMQ6P0
*** Script: Match found: KN2J4GPWGP
*** Script: Match found: QQN4LFHWKP
*** Script: Match found: WV09TP7P7R
*** Script: Match found: JSF6WW1
*** Script: Match found: MLYF.115768..ATI
*** Script: Match found: FVFHJ0YSQ05P
*** Script: Match found: 5CG8125XTL
*** Script: Match found: H2WJF0K6Q6P0
*** Script: Match found: C02DQ1RRMD6R
*** Script: Match found: GW3N2C2XJJ
*** Script: Match found: C02D90W5MD6R
*** Script: Match found: C02F55REMD6R
*** Script: Match found: C02DT1FFMD6R
*** Script: Match found: GG3L1M2
*** Script: Match found: G17CM619TK
*** Script: Match found: C02DH1DMMD6R
*** Script: Match found: C02DC0YNML86
*** Script: Match found: 8CG83335KL
*** Script: Match found: DNQVD9H44P
*** Script: Match found: C02KJ1Q7FFT4
*** Script: Match found: C02FN466MD6R
[0:00:00.002] Expanding large row block (file.read: alm_asset, 7492 rows, 119872 dataSize)
[0:00:00.015] Compacting large row block (file.write: alm_asset 10000 rows 160000 saveSize)
*** Script: Match found: CN0CS02637
*** Script: Match found: BTF6WW1
*** Script: Match found: C02G711KMD6R
*** Script: Match found: KT25FPPVQ0
*** Script: Match found: VTR2410F23
*** Script: Match found: H1959JYT23
*** Script: Match found: 7MN9KD3
*** Script: Match found: 70
*** Script: Match found: W4PJLF95RY
*** Script: Match found: QQ01QJXY0J
*** Script: Match found: C02FN479MD6R
*** Script: Match found: 87KWMR2
*** Script: Match found: FVFHJ2U6Q05P
*** Script: Match found: C02DRCZ8MD6R
*** Script: Match found: C02CK0FJMD6T
*** Script: Match found: N9CJGDH9NQ
*** Script: Match found: KY9QP5P6P0
*** Script: Match found: C02FN5LSMD6R
*** Script: Match found: MG7329P0RT
*** Script: Match found: CNDF245911
*** Script: Match found: N6XWKLGKVF
*** Script: Match found: 3VPR4X3
*** Script: Match found: 86
*** Script: Match found: C2FD3J3
*** Script: Match found: VJ9KMXXWHK
*** Script: Match found: PWFK72FHYR
*** Script: Match found: J69JFVWXHP
*** Script: Match found: CM86CP2
*** Script: Match found: H4C0D3W7F1
*** Script: Match found: N4CYYP4F33
*** Script: Match found: J36WHWYXJ2
*** Script: Match found: 2GQRYD3
*** Script: Match found: 5GZC0N2
*** Script: Match found: A5C4011118473
*** Script: Match found: H2WJF0MYQ6P0
*** Script: Match found: C02YW35RLVDQ
*** Script: Match found: WTWWXL4W5P
*** Script: Match found: C02G703KML88
*** Script: Match found: C02G37P1MD6R
*** Script: Match found: T9GJD2LTWY
*** Script: Match found: GV206WMYY9
*** Script: Match found: QVV6KP2R63
*** Script: Match found: T0YXR59FJD
*** Script: Match found: L9YVWJ5G6C
*** Script: Match found: 3TF6WW1
*** Script: Match found: C02CH2R6JV40
*** Script: Match found: HJQVQMM61W
*** Script: Match found: 81
*** Script: Match found: C02FN460MD6R
*** Script: Match found: FOC1915R23Z
*** Script: Match found: V2QCTP4X15
*** Script: Match found: RQ2T297GXD
*** Script: Match found: QV9W63XL2R
*** Script: Match found: C02YH3EUJHD3
*** Script: Match found: 792209000878
*** Script: Match found: 627WXY2
*** Script: Match found: FOC1803X057
*** Script: Match found: C02DG138MD6R
*** Script: Match found: C02CJ0JZLVDM
*** Script: Match found: A7PU011007166
*** Script: Match found: C02QN21MG8WL
*** Script: Match found: P03T24L2YM
*** Script: Match found: H4TGV1PGPN7C
*** Script: Match found: XRVQWQVV6N
*** Script: Match found: C02FN46GMD6R
*** Script: Match found: Q7XLFJ9TLX
*** Script: Match found: C02C9AP6MD6R
*** Script: Match found: B14650355
*** Script: Match found: 97
*** Script: Match found: 27
*** Script: Match found: YN3LY72LR6
*** Script: Match found: 55
*** Script: Match found: Y5XK9J5F9C
*** Script: Match found: FOC1802X1GK
*** Script: Match found: C02DG12PMD6R
*** Script: Match found: CQ1FTP6KF4
*** Script: Match found: 18
*** Script: Match found: NIT206949
*** Script: Match found: C02G710SMD6R
*** Script: Match found: C02FN018ML88
*** Script: Match found: A90H041002771
*** Script: Match found: A4Y4011006641
*** Script: Match found: C1MRT459H3QK
*** Script: Match found: H2WFL0W3PJJ9
*** Script: Match found: FOC1803U003
*** Script: Match found: WPX47RM61X
*** Script: Match found: C02FN46VMD6R
*** Script: Match found: J0N9QYMXY7
*** Script: Match found: C02G710PMD6R
*** Script: Match found: 4Q56L33
*** Script: Match found: VD907HJP2G
*** Script: Match found: 6TF6WW1
*** Script: Match found: DD136120224014
*** Script: Match found: C02FN469MD6R
*** Script: Match found: C02G83QKMD6R
*** Script: Match found: H2WF10K7Q6P0
*** Script: Match found: BKPZ6S2
*** Script: Match found: C02K80H0FFT4
*** Script: Match found: 6BJD2Z3
*** Script: Match found: AA2J041009708
*** Script: Match found: FOC1802Y30D
*** Script: Match found: CNDG154057
*** Script: Match found: JAE21400372
*** Script: Match found: HCG6VDJKFF
*** Script: Match found: VQK7QH63JQ
*** Script: Match found: XDQ6902RYM
*** Script: Match found: C34NXV3PQW
*** Script: Match found: C07SN0TWG1J2
*** Script: Match found: XL1F3FQXTR
*** Script: Match found: Y14F96YKFG
*** Script: Match found: 2M5VBY3
*** Script: Match found: C07DC06VPJJ9
*** Script: Match found: C02DR9VUMD6R
*** Script: Match found: A5C4011118462
*** Script: Match found: WJKCFYXG32
*** Script: Match found: 2VF6WW1
*** Script: Match found: PKW49PVT7R
*** Script: Match found: CR3HT9MCF6
*** Script: Match found: FT5N1T3
*** Script: Match found: CZC5062QCZ
*** Script: Match found: 5XLF7Y2
*** Script: Match found: XJ7V4VHFFP
*** Script: Match found: A61H011007824
*** Script: Match found: XYVYM92QXT
*** Script: Match found: C02FN46EMD6R
*** Script: Match found: 55
*** Script: Match found: 37SBCP2
*** Script: Match found: HYY2YTVFQQ
*** Script: Match found: C02FP160Q05N
*** Script: Match found: 29
*** Script: Match found: FOC1803U056
*** Script: Match found: 73
*** Script: Match found: GWPWC42
*** Script: Match found: FXNQ4X3
*** Script: Match found: C07SN0U6G1J2
*** Script: Match found: W2X9HCF477
*** Script: Match found: Y4PJ4M2VFY
*** Script: Match found: A5C4011122198
*** Script: Match found: VTJVXFVXYN
*** Script: Match found: C69V76YQR2
*** Script: Match found: KJF9Q0TW9V
// Create a GlideRecord for the 'cmdb_ci' table
var cmdbCiGr = new GlideRecord('cmdb_ci');
cmdbCiGr.addEncodedQuery('sys_class_name=cmdb_ci_computer^serial_numberISNOTEMPTY^assetISEMPTY');
cmdbCiGr.query();

// Create a GlideRecord for the 'alm_asset' table
var almAssetGr = new GlideRecord('alm_asset');
almAssetGr.addEncodedQuery('ci=NULL^serial_numberISNOTEMPTY');
almAssetGr.query();

// Loop through 'alm_asset' records and check for matching serial numbers in 'cmdb_ci'
while (almAssetGr.next()) {
    var serialNumber = almAssetGr.serial_number;

    // Create a new GlideRecord for 'cmdb_ci' and query based on serial number
    var cmdbCiGrBySerial = new GlideRecord('cmdb_ci');
    cmdbCiGrBySerial.addQuery('serial_number', serialNumber);
    cmdbCiGrBySerial.query();

    if (cmdbCiGrBySerial.next()) {
        // Do something with the matching records
        gs.log('Match found: ' + serialNumber);
    }
}
const express = require("express");
const { z } = require("zod");

const app = express();

app.use(express.json());

const LoginSchema = z.object({
  // In this example we will only validate the request body.
  body: z.object({
    // email should be valid and non-empty
    email: z.string().email(),
    // password should be at least 6 characters
    password: z.string().min(6),
  }),
});

const validate = (schema) => (req, res, next) => {
  try {
    schema.parse({
      body: req.body,
      query: req.query,
      params: req.params,
    });

    next();
  } catch (err) {
    return res.status(400).send(err.errors);
  }
};

app.post("/login", validate(LoginSchema), (req, res) => {
  return res.json({ ...req.body });
});

app.listen(1337, () => console.log(`> Ready on http://localhost:${1337}`));
size_x = transform.position[0]*2;
size_y = transform.position[1];

x_offset = effect("Offset")("Shift Center To")[0]+(time*(size_x/thisComp.duration));

if(time < (thisComp.duration/2)){
	y_offset = ease(time, 0, thisComp.duration/2, size_y, size_y*2);
} else {
	y_offset = ease(time, thisComp.duration/2, thisComp.duration, size_y*2, size_y);
}

[x_offset, y_offset];
 
import React from 'react';
const knex = require('knex');

// we require this pakages to use this - knex , oracledb , pg , pg-query-stream
// we tried with prisma but got stucked in fetching data


function page() {
  const db = async () => {
    const database = knex({
      client: 'pg',
      connection: {
        host: '1.2.3.4',
        port: 5432,
        user: 'username',
        password: 'password',
        database: 'databasename'
      }
    });

    const a = await database.from('analytics.u_kpi_essentialdata').select();
    console.log('test---', a);
  };
  db();

  return (
    <div>
      <div>page</div>
      <div> naks</div>
    </div>
  );
}

export default page;
/**
 * Calculates the sale price of a value at a given discount.
 * The sale price is formatted as US dollars.
 *
 * @param {number} input The value to discount.
 * @param {number} discount The discount to apply, such as .5 or 50%.
 * @return The sale price formatted as USD.
 * @customfunction
 */
function salePrice(input, discount) {
  let price = input - (input * discount);
  let dollarUS = Intl.NumberFormat("en-US", {
    style: "currency",
    currency: "USD",
});
  return dollarUS.format(price);
}
<x:Envelope
    xmlns:x="http://schemas.xmlsoap.org/soap/envelope/"
    xmlns:ws="http://www.nfevargem.com.br/ws.vargem/">
    <x:Header/>
    <x:Body>
        <ws:setInvoice>
            <ws:strJsonInvoice>[
   {
      "im":"002269",
      "NumeroNota":"004009",
      "DataEmissao":"2023-10-30",
      "NomeTomador":"INSTITUTO BRASILEIRO DE CIENCIA E TECNOLOGIA MAHARISHI IBCTM",
      "tipoDocTomador":"J",
      "documentoTomador":"31533629000120",
      "InscricaoEstadualTomador":"",
      "logradouroTomador":"Avenida Nove de Julho",
      "numeroTomador":"5955",
      "complementoTomador":"Loja A1 A15",
      "bairroTomador":"Jardim Paulista",
      "CEPTomador":"01407200",
      "cidadeTomador":"Sao Paulo",
      "ufTomador":"SP",
      "PAISTomador":"BRASIL",
      "emailTomador":"flavia.baptista@yahoo.com.br",
      "logradouroServico":"Estrada das Furnas",
      "numeroServico":"SN",
      "complementoServico":"",
      "bairroServico":"Bairro das Furnas",
      "CEPServico":"37640000",
      "cidadeServico":"Extrema",
      "ufServico":"MG",
      "issRetido":"1",
      "devidoNoLocal":"1",
      "observacao":"-",
      "INSS":"0.00",
      "IRPJ":"0.00",
      "CSLL":"0.00",
      "COFINS":"0.00",
      "PISPASEP":"0.00",
      "PAISServico":"BRASIL",
      "descricao":"FCK 25,0 MPA  BRITA 0\/1 ABAT. 10+-2 = 42,00 m3 x 440,00 = R$ 18.480,00 REM 11631-11632-11634-11635-11638-11640-11643-Estrada das Furnas, S\/N  Bairro das Furnas - Extrema\r\nTAXA DE BOMBA = 1,00 m3 x 2.400,00 = R$ 2.400,00 REM 11631-11632-11634-11635-11638-11640-11643-742 (DIA 20\/10 - 48,00 m3 - BOMBA ESTACIONARIA)\r\nTAXA DE BOMBA = 1,00 tx x 300,00 = R$ 300,00 DIFERENCA DE TAXA REF REMESSA 620 DE 20\/09\/2023\r\nREMESSA  DE MATERIAL R$ 10.590,00\r\nEXECUCAO DE SERVICOS R$ 10.590,00\r\nRETENCAO ISS R$ 211,80 (2.00%)\r\nVENCIMENTOS:\r\n004009 - R$ 20.968,20 - 26\/10\/2023 - CARTEIRA\r\nPredio 2\r\nVENDEDOR: Eliano Alves Martins",
      "atividade":"00702",
      "valor":"21180.00",
      "aliquota":"2.00",
      "deducaoMaterial":"10590.00",
      "descontoCondicional":"0.00",
      "descontoIncondicional":"0.00",
      "valorDeducao":"10590.00",
      "baseCalculo":"10590.00",
      "valorIss":"211.80",
      "valorTotalNota":"21180.00",
      "tipoEnquadramento":"",
      "tipoIss":"M",
      "hashMd5":""
   }
]</ws:strJsonInvoice>
            <ws:strToken>d439eb5be97874d72569582b84ebc8ba</ws:strToken>
        </ws:setInvoice>
    </x:Body>
</x:Envelope>
import express from "express";
const router = express.Router();
import multer from "multer";
import productModel from "../model/productModel.js";

const Storage = multer.diskStorage({
  destination: "upload",
  filename: (req, file, cb) => {
    cb(null, file.originalname);
  },
});

const upload = multer({
  storage: Storage,
}).single("image");

router.post("/product", (req, res) => {
  upload(req, res, (err) => {
    if (err) {
      console.log(err);
    } else {
      const product = new productModel({
        name: req.body.name,
        image: {
          data: req.file.filename,
          contentType: "image/png",
        },
      });
      product
        .save()
        .then(() => res.send("successfully created"))
        .catch((err) => res.send("error in creating product"));
    }
  });
});

export default router;
const text3 = document.querySelector('.text3');
const img3 = document.querySelector('.img3');

function animateElement(element, offset) {
    const elementPosition = element.getBoundingClientRect().top;
    const screenPosition = window.innerHeight / offset;

    if (elementPosition < screenPosition) {
        element.classList.add('animate');
    } else {
        element.classList.remove('animate');
    }
}

function animate() {
    animateElement(text3, 1.3);
    animateElement(img3, 1.3);
}

window.addEventListener('scroll', animate);
class Func {
  constructor(a, b) {
    this.a = a
    this.b = b
  }

  getSum() {
    return this.a + this.b
  }
}

let x = new Func(3, 4)
let arr1 = [1, 2, 3]
let arr2 = ['a', 'b', 'c']
let arr3 = [...arr1, ...arr2]

console.log(arr3) // [1, 2, 3, "a", "b", "c"]
<link rel="stylesheet" type="text/css" href="plugin/codemirror/lib/codemirror.css"> <body>	<textarea class="codemirror-textarea"></textarea></body> <script> $(document).ready(function(){    var codeText = $(".codemirror-textarea")[0];    var editor = CodeMirror.fromTextArea(codeText, {        lineNumbers : true    });}); </script> <script type="text/javascript" src="plugin/codemirror/lib/codemirror.js"></script>
async function fun() {  return fetch('https://jsonplaceholder.typicode.com/todos/1').then(res => res.json());} const data  = await fun();
[Unit]
Description=My app

[Service]
ExecStart=/var/www/myapp/app.js
Restart=always
User=nobody
# Note Debian/Ubuntu uses 'nogroup', RHEL/Fedora uses 'nobody'
Group=nogroup
Environment=PATH=/usr/bin:/usr/local/bin
Environment=NODE_ENV=production
WorkingDirectory=/var/www/myapp

[Install]
WantedBy=multi-user.target
function el(arr) {
  let i = 0;
  return function gen() {
    if (i < arr.length) {
      let val = arr[i];
      i += 1;
      return val;
    }
  }
}
const myArray = [1, 2, 3];
const myGenerator = el(myArray);

console.log(myGenerator()); // 1
console.log(myGenerator()); // 2
console.log(myGenerator()); // 3
console.log(myGenerator()); // undefined
function el(arr) {
  let i = 0;
  return function gen() {
    if (i < arr.length) {
      let val = arr[i];
      i += 1;
      return val;
    }
  }
}
const myArray = [1, 2, 3];
const myGenerator = el(myArray);

console.log(myGenerator()); // 1
console.log(myGenerator()); // 2
console.log(myGenerator()); // 3
console.log(myGenerator()); // undefined
function el(arr) {
  let i = 0;
  return function gen() {
    if (i < arr.length) {
      let val = arr[i];
      i += 1;
      return val;
    }
  }
}
const myArray = [1, 2, 3];
const myGenerator = el(myArray);

console.log(myGenerator()); // 1
console.log(myGenerator()); // 2
console.log(myGenerator()); // 3
console.log(myGenerator()); // undefined
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>WEB TITLE</title>
    <!-- CSS -->
    <link rel="stylesheet" href="style.css">
    <!-- FONT AWESOME -->
    <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css" integrity="sha512-z3gLpd7yknf1YoNbCzqRKc4qyor8gaKU1qmn+CShxbuBusANI9QpRohGBreCFkKxLhei6S9CQXFEbbKuqLg0DA==" crossorigin="anonymous" referrerpolicy="no-referrer" />
    <!-- MATERIAL ICON -->
    <link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined" rel="stylesheet">
    <!-- AOS LINK -->
    <link href="https://unpkg.com/aos@2.3.1/dist/aos.css" rel="stylesheet">
</head>
<body>


    <!-- WEB CONTENTS GOES HERE -->
    
    

    <!-- JAVASCRIPT -->
    <script src="script.js"></script>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script src="https://unpkg.com/aos@2.3.1/dist/aos.js"></script>
    <script>
        AOS.init();
      </script>
</body>
</html>
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Code Snippet</title>
    <!-- CSS -->
    <link rel="stylesheet" href="style.css">
    <!-- MATERIAL ICON -->
    <link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined" rel="stylesheet">
    <!-- AOS LINK -->
    <link href="https://unpkg.com/aos@2.3.1/dist/aos.css" rel="stylesheet">
</head>
<body>
    

    <!-- JAVASCRIPT -->
    <script src="script.js"></script>
    <script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
    <script src="https://unpkg.com/aos@2.3.1/dist/aos.js"></script>
    <script>
        AOS.init();
      </script>
</body>
</html>
(function (root, factory) {
	if (typeof define === "function" && define.amd) {
		define("onDomReady", factory(root));
	} else if (typeof exports === "object") {
		module.onDomReady = factory(root);
	} else {
		root.onDomReady = factory(root);
	}
})(this, function (root) {
    "use strict";
    
    var win = window,
        doc = win.document,
        docElem = doc.documentElement,
        
        LOAD = "load",
        FALSE = false,
        ONLOAD = "on"+LOAD,
        COMPLETE = "complete",
        READYSTATE = "readyState",
        ATTACHEVENT = "attachEvent",
        DETACHEVENT = "detachEvent",
        ADDEVENTLISTENER = "addEventListener",
        DOMCONTENTLOADED = "DOMContentLoaded",
        ONREADYSTATECHANGE = "onreadystatechange",
        REMOVEEVENTLISTENER = "removeEventListener",
        
        isEventListener = ADDEVENTLISTENER in doc,
        isDomReady = FALSE,
        domReadyCallBacks = [];
        
    var exports = function (func) {
        function defer (func, wait) {
            setTimeout(func, +wait >= 0 ? wait : 1);
        }
        
        function ready (func) {
            if (!isDomReady) {
                if (!doc.body) {
                    return defer(ready);
                }
                
                isDomReady = true;

                while (func = domReadyCallBacks.shift()) {
                    defer(func);
                }
            }
        }
        
        function detach() {
            if (isEventListener) {
                doc[REMOVEEVENTLISTENER](DOMCONTENTLOADED, completed, FALSE);
                win[REMOVEEVENTLISTENER](LOAD, completed, FALSE);
            } else {
                doc[DETACHEVENT](ONREADYSTATECHANGE, completed);
                win[DETACHEVENT](ONLOAD, completed);
            }
        }
        
        function completed (event) {
            if (isEventListener || event.type === LOAD || doc[READYSTATE] === COMPLETE) {
                detach();
                ready();
            }
        }
        
        if (doc[READYSTATE] === COMPLETE) {
            defer(ready);
        } else if (isEventListener) {
            doc[ADDEVENTLISTENER](DOMCONTENTLOADED, completed, FALSE);
            win[ADDEVENTLISTENER](LOAD, completed, FALSE);
        } else {
            doc[ATTACHEVENT](ONREADYSTATECHANGE, completed);
            win[ATTACHEVENT](ONLOAD, completed );
        }
        
        isDomReady ? defer(func) : domReadyCallBacks.push(func);
    };
    
    return exports;
});

// An example of the use of function onDomReady.
onDomReady(function(){
    console.log("DOM IS READY");
});
/**
 *    @module
 *    @author daemon.devin <daemon.devin@gmail.com>
 *
 *    @param {String}   file - The path of the file you want to load.
 *    @param {Function} callback (optional) - Called after script load.
 */
var loader = loader || (Function() {
    return {
    	
    	load: function(file, callback) {

            var script = document.createElement('script');
            script.src = file, script.async = true;
            
  			// If defined, execute the callback after checking 
  			// if the script has been successfully loaded.
            if (callback !== undefined) {
            	
            	// IE calls `script.onreadystatechange()` continuously
            	// as the script loads. Use `script.onreadystatechange()`
            	// to check if the script has finished loading.
	        script.onreadystatechange = function() {
	                
	            // When the script finishes loading, IE sets 
	            // `script.readyState` to either 'loaded' or 'complete'.
	            if (script.readyState === 'loaded' ||
	                script.readyState === 'complete') {
	                    
                  	// Set `onreadystatechange()` to null to prevent 
                  	// it from firing again.
	                script.onreadystatechange = null;
	                    
	                // Execute the callback.
	                callback (file );
	            }
	        };
	            
	        // The following is one of the reasons IE is infereor
            // to all modern browsers.
	        script.onload = function () {
	            callback ( file );
	        };
            }
            
  			// Add the loaded script to the end of the document 
  			// so it won't hinder the rest of the page from loading.
            document.body.appendChild(script);
        } 
    };
}());
// Define your class
class MyModule {
  constructor($) {
    this.$ = $;
  }
  
  // Add methods and properties here
}

// Environment detection and initialization
(function() {
  if (typeof require === 'function' && typeof exports === 'object' && typeof module === 'object') {
    // CommonJS
    module.exports = MyModule;
  } else if (typeof define === 'function' && define.amd) {
    // AMD
    define(['jquery'], function($) {
      return new MyModule($);
    });
  } else {
    // Global
    if (typeof window.jQuery !== 'undefined') {
      window.MyModule = MyModule;
    }
  }
})();
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import NoSuchElementException, TimeoutException
import csv

URL = "https://www.theinfatuation.com/new-york/guides"

chrome_options = webdriver.ChromeOptions()
chrome_options.add_experimental_option("detach", True)

print("Starting the browser...")
driver = webdriver.Chrome(options=chrome_options)
driver.get(URL)

# Close the modal if it appears
try:
    wait = WebDriverWait(driver, 10)
    no_thanks_button = wait.until(
        EC.element_to_be_clickable(
            (By.CSS_SELECTOR, "button[data-click='close'][aria-label='No thanks; close the dialog']"))
    )
    no_thanks_button.click()
    print("Closed the modal!")
except TimeoutException:
    print("No modal to close!")

# close the bottom overlay
try:
    overlay_close_button = WebDriverWait(driver, 10).until(
        EC.element_to_be_clickable((By.ID, "bx-close-inside-2272826"))
    )
    driver.execute_script("arguments[0].click();", overlay_close_button)
    print("Closed the overlay!")
except TimeoutException:
    print("Overlay not found or already closed.")


# Click load more 10 times
for _ in range(10):
    try:
        load_more_button = WebDriverWait(driver, 10).until(
            EC.element_to_be_clickable((By.CSS_SELECTOR, "div.css-xi606m"))
        )
        load_more_button.click()
        print(f"Clicked load more {_+1} times.")

        # Adding a sleep duration to allow data to be rendered
        time.sleep(5)
    except TimeoutException:
        print(
            f"Couldn't click 'load more' the {_+1}-th time. Continuing with the available data.")
        break

# Extract data
guide_elements = driver.find_elements(
    By.CSS_SELECTOR, "a[data-testid='detailedStory-link']")
guide_data = [guide.get_attribute('href') for guide in guide_elements]

# CSV output setup
with open("output.csv", "w", newline="") as csvfile:
    fieldnames = ["Article Title", "URL", "Restaurants", "Date"]
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
    writer.writeheader()

    for link in guide_data:
        driver.get(link)
        try:
            # CSS selector to get the article title
            title = driver.find_element(
                By.CSS_SELECTOR, "h1 > .styles_title__QfDF5").text
            # Extracting the date
            date_element = driver.find_element(
                By.CSS_SELECTOR, "div.styles_contributorsList__EKq26 time")
            date = date_element.get_attribute("datetime")
            # CSS selector to get restaurant names
            restaurants = [restaurant.text for restaurant in driver.find_elements(
                By.CSS_SELECTOR, "h2.chakra-heading.styles_mainHeading__e4VAy.flatplan_venue-heading.css-67umdg")]

            # Print data
            print("Article Title:", title)
            print("URL:", link)
            print("Restaurants:", ", ".join(restaurants))
            print("Date:", date)
            print("------")

            writer.writerow({"Article Title": title, "URL": link,
                            "Restaurants": ", ".join(restaurants), "Date": date})
        except NoSuchElementException:
            print(
                f"Couldn't retrieve complete data for article at URL: {link}")

driver.quit()
const kue = require('kue');
const queue = kue.createQueue();

const addEmailJob = (email, subject, html) => {
  const job = queue.create('email', {
    email,
    subject,
    html
  })
    .save((error) => {
      if (error) {
        console.error(error);
      } else {
        console.log(`Email job added to queue: ${email}`);
}
});
};

// Add 50,000 email jobs to the queue
const emailList = [
{ email: 'recipient1@example.com', subject: 'Test email 1', html: '<p>This is a test email 1</p>' },
{ email: 'recipient2@example.com', subject: 'Test email 2', html: '<p>This is a test email 2</p>' },
// ...
{ email: 'recipient50000@example.com', subject: 'Test email 50000', html: '<p>This is a test email 50000</p>' }
];

emailList.forEach((emailData) => {
addEmailJob(emailData.email, emailData.subject, emailData.html);
});
const kue = require('kue');
const queue = kue.createQueue();
const sendEmail = require('./send-email'); // The script from step 3

queue.process('email', (job, done) => {
sendEmail(job.data.email, job.data.subject, job.data.html);
done();
});
for (int index = 0; index < array.length; index++){
  
}
import {
  Chart as ChartJS,
  CategoryScale,
  LinearScale,
  PointElement,
  LineElement,
  Title,
  Tooltip,
  Legend
} from 'chart.js';
import { Line } from 'react-chartjs-2';       


function HraHero() {
  return (
    <Line
      className='bg-white h-3/4 w-full'
      options={{
        responsive: true,
        plugins: {
          legend: false
        },
        scales: {
          x: {
            ticks: {
              color: 'orange'
            },
            title: {
              display: true,
              text: 'Years of Growth',
              color: '#00aeef',
              font: {
                size: 14
              }
            }
          },
          y: {
            ticks: {
              callback: function (value, i) {
                if (i == 0) {
                  return value + ' k';
                }

                return value + ' Lakhs';
              }
            },
            title: {
              display: true,
              text: 'Amount Invested',
              color: '#154d83',
              font: {
                size: 14
              }
            },
            border: {
              dash: [6, 4]
            }
          }
        }
      }}
      data={{
        labels: [
          2022, 2024, 2026, 2028, 2030, 2032, 2034, 2036, 2038, 2040, 2042
        ],
        datasets: [
          {
            data: [0, 2, 3, 5, 10, 15, 20, 25, 30, 35],
            borderColor: '#f47920',
            tension: 0.1,
            pointRadius: '6',
            pointHoverRadius: '6',
            pointBackgroundColor: '#00aeef',
            pointHoverBackgroundColor: '#f47920'
          }
        ]
      }}
    />
  );
}

export default HraHero
import {
  Chart as ChartJS,
  CategoryScale,
  LinearScale,
  PointElement,
  LineElement,
  Title,
  Tooltip,
  Legend
} from 'chart.js';
import { Line } from 'react-chartjs-2';       


function HraHero() {
   ChartJS.register(
    CategoryScale,
    LinearScale,
    PointElement,
    LineElement,
    Title,
    Tooltip,
    Legend
  );
  
  return (
    <Line
      className='bg-white h-3/4 w-full'
      options={{
        responsive: true,
        plugins: {
          legend: false
        },
        scales: {
          x: {
            ticks: {
              color: 'orange'
            },
            title: {
              display: true,
              text: 'Years of Growth',
              color: '#00aeef',
              font: {
                size: 14
              }
            }
          },
          y: {
            ticks: {
              callback: function (value, i) {
                if (i == 0) {
                  return value + ' k';
                }

                return value + ' Lakhs';
              }
            },
            title: {
              display: true,
              text: 'Amount Invested',
              color: '#154d83',
              font: {
                size: 14
              }
            },
            border: {
              dash: [6, 4]
            }
          }
        }
      }}
      data={{
        labels: [
          2022, 2024, 2026, 2028, 2030, 2032, 2034, 2036, 2038, 2040, 2042
        ],
        datasets: [
          {
            data: [0, 2, 3, 5, 10, 15, 20, 25, 30, 35],
            borderColor: '#f47920',
            tension: 0.1,
            pointRadius: '6',
            pointHoverRadius: '6',
            pointBackgroundColor: '#00aeef',
            pointHoverBackgroundColor: '#f47920'
          }
        ]
      }}
    />
  );
}

export default HraHero
 const numbersArray = Array.from({length: 20}, ((_, index) => index + 1));
1.To check which Git credentials are configured in your system, you can use the following command in the terminal:

```bash
git config --list
```

2. To permanently remove the user.email and user.name settings from your Git configuration, you can use the following commands in the terminal:

```bash
git config --global --unset user.email
git config --global --unset user.name
```

3. Then run the git config --list command to check your Git configuration, the output will not include the user.email and user.name settings.

var delayInMilliseconds = 1000; //1 second

setTimeout(function() {
  //your code to be executed after 1 second
}, delayInMilliseconds);
//var is not required. ,1000 is OK
async function gptFunctions(prompts, model, functions){
    const plan = readFile("public/generated/shared_deps.md")
    await openai.chat.completions.create({
        messages: [{ role: "system", content: s.appSystemPrompt+"Given the prompt and the plan, return a list of strings corresponding to the new files that will be generated."}
        ,
            {
                "role": "user",
                "content": " I want a:" +s.prompt,
            },
            {
                "role": "user",
                "content": " The plan we have agreed on is:"+s.plan,
            },
        ],
        model: model,
        functions: [{'name': 'file_paths', 'description': 'Construct a list of file names.', 'parameters': {'type': 'object', 'properties': {'files_to_edit': {'type': 'array', 'items': {'type': 'string'}}}, 'required': ['files_to_edit']}}],
        function_call:{"name":"file_paths"}
      }).then((response) => {       
        let temp = JSON.parse(response.choices[0].message.function_call.arguments).files_to_edit;
        
        console.log(temp);
        
        
      }).catch((error) => {
        console.log(error);
      });
}
var audio = new Audio('audio_file.mp3');
audio.play();
/*!
 *  replaceme.js - text rotating component in vanilla JavaScript
 *  @version 1.1.0
 *  @author Adrian Klimek
 *  @link https://adrianklimek.github.io/replaceme/
 *  @copyright Addrian Klimek 2016
 *  @license MIT
 */
!function(a,b){"use strict";function c(a,b){for(var c in b)b.hasOwnProperty(c)&&(a[c]=b[c]);return a}function d(){"function"==typeof b&&b.fn.extend({ReplaceMe:function(a){return this.each(function(){new e(this,a)})}})}function e(a,b){var d={animation:"animated fadeIn",speed:2e3,separator:",",hoverStop:!1,clickChange:!1,loopCount:"infinite",autoRun:!0,onInit:!1,onChange:!1,onComplete:!1};if("object"==typeof b?this.options=c(d,b):this.options=d,"undefined"==typeof a)throw new Error('ReplaceMe [constructor]: "element" parameter is required');if("object"==typeof a)this.element=a;else{if("string"!=typeof a)throw new Error('ReplaceMe [constructor]: wrong "element" parameter');this.element=document.querySelector(a)}this.init()}e.prototype.init=function(){"function"==typeof this.options.onInit&&this.options.onInit(),this.words=this.escapeHTML(this.element.innerHTML).split(this.options.separator),this.count=this.words.length,this.position=this.loopCount=0,this.running=!1,this.bindAll(),this.options.autoRun===!0&&this.start()},e.prototype.bindAll=function(){this.options.hoverStop===!0&&(this.element.addEventListener("mouseover",this.pause.bind(this)),this.element.addEventListener("mouseout",this.start.bind(this))),this.options.clickChange===!0&&this.element.addEventListener("click",this.change.bind(this))},e.prototype.changeAnimation=function(){this.change(),this.loop=setTimeout(this.changeAnimation.bind(this),this.options.speed)},e.prototype.start=function(){this.running!==!0&&(this.running=!0,this.changeWord(this.words[this.position]),this.position++),this.loop=setTimeout(this.changeAnimation.bind(this),this.options.speed)},e.prototype.change=function(){return this.position>this.count-1&&(this.position=0,this.loopCount++,this.loopCount>=this.options.loopCount)?void this.stop():(this.changeWord(this.words[this.position]),this.position++,void("function"==typeof this.options.onChange&&this.options.onChange()))},e.prototype.stop=function(){this.running=!1,this.position=this.loopCount=0,this.pause(),"function"==typeof this.options.onComplete&&this.options.onComplete()},e.prototype.pause=function(){clearTimeout(this.loop)},e.prototype.changeWord=function(a){this.element.innerHTML='<span class="'+this.options.animation+'" style="display:inline-block;">'+a+"</span>"},e.prototype.escapeHTML=function(a){var b=/<\/?\w+\s*[^>]*>/g;return b.test(a)===!0?a.replace(b,""):a},a.ReplaceMe=e,d()}(window,window.jQuery);
   const sibling = el.previousElementSibling; // parent wrapper
    
      if (sibling) {
        const classList = sibling.getAttribute('class');
        if (classList !== null && classList !== undefined && classList !== '') {
          if (sibling.classList.contains(navLinkClass)) {
           	// do something
          }
        }
      }
SELECT C.CON_IN_CODIGO,     
       (SELECT MAX(FA.PFA_DT_INICIAL)
          FROM GLO_PROCESSO_FLUXO_ANDA FA
         INNER JOIN GLO_PROCESSO_FLUXO FL
            ON FA.PFLU_IN_CODIGO = FL.PFLU_IN_CODIGO
           AND FL.PFLU_CHAVE_PK = C.CON_IN_CODIGO
           AND FL.PFLU_NOMETABELA = 'RH_FORM_CONTRATACAO') DATA_MOV
  FROM RH_FORM_CONTRATACAO C  
 WHERE UPPER(c.CON_ST_STATUS) NOT IN('FINALIZADO','CANCELADO')
 and (SELECT MAX(FA.PFA_DT_INICIAL)
          FROM GLO_PROCESSO_FLUXO_ANDA FA
         INNER JOIN GLO_PROCESSO_FLUXO FL
            ON FA.PFLU_IN_CODIGO = FL.PFLU_IN_CODIGO
           AND FL.PFLU_CHAVE_PK = C.CON_IN_CODIGO
           AND FL.PFLU_NOMETABELA = 'RH_FORM_CONTRATACAO') < ADD_MONTHS(SYSDATE,-2);
           
function incrementStats() {
    const counters = document.querySelectorAll('.counter');

    counters.forEach((counter) => {
        counter.innerText = 0;

        const updateCounter = () => {
            const target = +counter.getAttribute('data-target'); // the "+" here casts the returned text to a number
            const c = +counter.innerText;
            const increment = target / 200;

            if (c < target) {
                counter.innerText = Math.ceil(c + increment);
                setTimeout(updateCounter, 1);
                // here the function is calling itself until "c"
                // reaches the "data-target", making it recursive
            } else {
                counter.innerText = target;
            }
        };

        updateCounter();
    });
}

document.addEventListener('DOMContentLoaded', incrementStats);
  '<a href="' ||
          APEX_UTIL.PREPARE_URL(p_url           => 'f?p=' || :APP_ID ||
                                                   ':836:' || :APP_SESSION ||
                                                   '::NO:836:P836_ID:' ||
                                                   (SELECT ID
                                                      FROM SGQ_VISITA_OBRA_ITENS_CHECK
                                                     WHERE ID_SGQ_VISITA_OBRA_ITENS = I.ID),
                                p_checksum_type => 'SESSION') ||
          '"><span aria-hidden="true" class="fa fa-check-square-o"></span></i></i></a>'
// #1 Main Composition

// Offset > Shift Center To
x_offset = effect("Offset")("Shift Center To")[0];
y_offset = effect("Offset")("Shift Center To")[1];
posterizeTime(thisComp.layer("Null 7").effect("posterize adjusment 2, 15")("Slider"));
x = Math.round(random(-10,10));
y = x*240;
[x_offset, y_offset+y];

// Adjustment Layer Position
temp = transform.position[0];
[temp + (240*index)-240, transform.position[1]]

// #2 Inside Each Pre-Composed Row of Squares with Random Opacity

// Each Square Position
offset = 240;
[position[0]+offset*index-120,position[1]];

// Each Square Opacity
posterizeTime(thisComp.layer("Null 5").effect("posterize")("Slider"));
seedRandom(index+thisComp.layer("Null 5").effect("seed")("Slider"));
random(0,100);

// #3 Inside Pre-Composition of Rows

// Each Row Position
offset = 240;
[position[0],position[1]+offset*index-240];
/* log all background images on a page to the console */
let bgimg = performance.getEntriesByType('resource')
  .filter(rs => rs.initiatorType == 'css')
  .map(rs => {
  return {
    name: rs.name,
    initiator: rs.initiatorType
  }
}) || [];

(bgimg.length > 0)?
    console.table(bgimg):
    console.log('No background images on this page!');
x = 0;
modulo = thisComp.layer("Null 3").effect("modulo (recomienzo)")("Slider"); // segundos en la timeline

for (x; x <= time; x += 0.5) {
	if ((x - inPoint) % modulo == 0){
		if(time >= x + 0.5){
			transform.opacity = 0;
		} else {
			transform.opacity = 100;
		}
	}
}
function runTypingEffect() {
    const text = 'I am Chuck Winters.';
    const typingElement = document.getElementById('typing-text');
    const typingDelay = 100;

    typeText(text, typingElement, typingDelay);
}

function typeText(text, typingElement, typingDelay) {
  for (let i = 0; i < text.length; i++) {
    setTimeout(() => {
      typingElement.textContent += text.charAt(i);
    }, typingDelay * i);
  }
}

document.addEventListener('DOMContentLoaded', runTypingEffect)