<?php
/*
session_start(); if (empty($_SESSION['token'])) {$_SESSION['token'] = bin2hex(random_bytes(32));}
*/
?>

<!-- 
https://discourse.gohugo.io/t/how-can-i-include-php-code-in-hugo/28589
https://www.w3schools.com/php/php_sessions.asp
-->

<!-- 

PROJECT: Startup Hugo
VERSION: 1.0.0
AUTHOR: Gethugothemes
AUTHOR WEBSITE: https://gethugothemes.com

-->

<!DOCTYPE html>
<html lang="ru-RU" itemscope itemtype="http://schema.org/WebPage">

<head>
<?php
    //header('Location: /message_sent/');
    //exit;
?>
	<meta charset="utf-8">
<title>Примеры использования PHP с Hugo</title>




 






  
    
  
  <base href="https://webpractica.netlify.app/demo/primery-ispolzovaniya-php-s-hugo/index.php">











<link rel="alternate" hreflang="ru" href="/demo/primery-ispolzovaniya-php-s-hugo/index.php">





<link rel="alternate" hreflang="en" href="/en/demo/examples-of-using-php-with-hugo/index.php">





<link rel="alternate" hreflang="zh" href="/zh/demo/examples-of-using-php-with-hugo-zh/index.php">






<link rel="alternate" hreflang="x-default" href="/demo/primery-ispolzovaniya-php-s-hugo/index.php">



<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=5">
<meta name="description" content="Примеры использования языка PHP с генератором статических сайтов Hugo">



<meta name="author" content="Веб практика">
<meta name="generator" content="Hugo 0.131.0">
  

<meta name="theme-name" content="webpractica" />


















<link rel="icon" type="image/svg+xml" href="/images/favicon.svg">



<link rel="manifest" href="/manifest.webmanifest">
<meta name="msapplication-TileColor" content="#655e7a">
<meta name="theme-color" content="#fff">





 
 


    


  

  



  



















  
    
  



  
  
   
   
   
   
    
   
  



  
    
    
    
    
  










  
  
  
  
  
  
  
  
  
  
  
  
  

  
  
  
  
  
  
    
  






<meta property="og:image" content="https://webpractica.netlify.app/demo/primery-ispolzovaniya-php-s-hugo/img/hugo_php_n_hu4459685206710135929.jpg" />
<meta property="og:image:width" content="1200">
<meta property="og:image:height" content="630">

<meta name="twitter:image" content="https://webpractica.netlify.app/demo/primery-ispolzovaniya-php-s-hugo/img/hugo_php_n_hu4459685206710135929.jpg" />











<meta name="twitter:title" content="Примеры использования PHP с Hugo" />
<meta name="twitter:description"
  content="Примеры использования языка PHP с генератором статических сайтов Hugo" />





  

  

  

  

  



	
  
    










  
    
  



<meta property="og:url" content="https://webpractica.netlify.app/demo/primery-ispolzovaniya-php-s-hugo/index.php">
  <meta property="og:site_name" content="Разработка и создание быстрых и безопасных веб-сайтов | WebPractica">
  <meta property="og:title" content="Примеры использования PHP с Hugo">

  <meta property="og:description" content="Примеры использования языка PHP с генератором статических сайтов Hugo">


  <meta property="og:locale" content="ru_RU">
  <meta property="og:type" content="article">
    <meta property="article:section" content="demo">
    <meta property="article:published_time" content="2024-07-26T14:55:00+03:00">
    <meta property="article:modified_time" content="2024-12-26T15:31:00+03:00">
    <meta property="article:tag" content="Хьюго">



  



























  




























	<!-- 	
	.Type=demo<br>
	.Section=demo<br>
	.Layout=php_test<br>
	-->

	<style type=text/css>/*!* Font Awesome Free 5.15.3 by @fontawesome - https://fontawesome.com * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)*/.fab,.fas{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}.fa-fw{text-align:center;width:1.25em}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.fa-calendar-week:before{content:"\f784"}.fa-check:before{content:"\f00c"}.fa-clock:before{content:"\f017"}.fa-cog:before{content:"\f013"}.fa-cogs:before{content:"\f085"}.fa-exclamation-triangle:before{content:"\f071"}.fa-facebook:before{content:"\f09a"}.fa-globe-asia:before{content:"\f57e"}.fa-info:before{content:"\f129"}.fa-info-circle:before{content:"\f05a"}.fa-map-marker-alt:before{content:"\f3c5"}.fa-pencil-alt:before{content:"\f303"}.fa-shipping-fast:before{content:"\f48b"}.fa-sitemap:before{content:"\f0e8"}.fa-star:before{content:"\f005"}.fa-tachometer-alt:before{content:"\f3fd"}.fa-tags:before{content:"\f02c"}.fa-telegram-plane:before{content:"\f3fe"}.fa-times:before{content:"\f00d"}.fa-tools:before{content:"\f7d9"}.fa-user:before{content:"\f007"}.fa-user-graduate:before{content:"\f501"}.fa-users-cog:before{content:"\f509"}@font-face{font-family:"font awesome 5 brands";font-style:normal;font-weight:400;font-display:block;src:url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/webfonts/fa-brands-400.eot);src:url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/webfonts/fa-brands-400.eot?#iefix)format("embedded-opentype"),url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/webfonts/fa-brands-400.woff2)format("woff2"),url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/webfonts/fa-brands-400.woff)format("woff"),url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/webfonts/fa-brands-400.ttf)format("truetype"),url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/webfonts/fa-brands-400.svg#fontawesome)format("svg")}.fab{font-family:"font awesome 5 brands";font-weight:400}@font-face{font-family:"font awesome 5 free";font-style:normal;font-weight:900;font-display:block;src:url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/webfonts/fa-solid-900.eot);src:url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/webfonts/fa-solid-900.eot?#iefix)format("embedded-opentype"),url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/webfonts/fa-solid-900.woff2)format("woff2"),url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/webfonts/fa-solid-900.woff)format("woff"),url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/webfonts/fa-solid-900.ttf)format("truetype"),url(https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.3/webfonts/fa-solid-900.svg#fontawesome)format("svg")}.fas{font-family:"font awesome 5 free";font-weight:900}@charset "UTF-8";/*@import "../plugins/bootstrap/scss/mixins/banner";*/:root{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000000;--bs-white:#ffffff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f5f5f5;--bs-dark:#212529;--bs-primary-rgb:13, 110, 253;--bs-secondary-rgb:108, 117, 125;--bs-success-rgb:25, 135, 84;--bs-info-rgb:13, 202, 240;--bs-warning-rgb:255, 193, 7;--bs-danger-rgb:220, 53, 69;--bs-light-rgb:245, 245, 245;--bs-dark-rgb:33, 37, 41;--bs-primary-text-emphasis:#052c65;--bs-secondary-text-emphasis:#2b2f32;--bs-success-text-emphasis:#0a3622;--bs-info-text-emphasis:#055160;--bs-warning-text-emphasis:#664d03;--bs-danger-text-emphasis:#58151c;--bs-light-text-emphasis:#495057;--bs-dark-text-emphasis:#495057;--bs-primary-bg-subtle:#cfe2ff;--bs-secondary-bg-subtle:#e2e3e5;--bs-success-bg-subtle:#d1e7dd;--bs-info-bg-subtle:#cff4fc;--bs-warning-bg-subtle:#fff3cd;--bs-danger-bg-subtle:#f8d7da;--bs-light-bg-subtle:#fcfcfd;--bs-dark-bg-subtle:#ced4da;--bs-primary-border-subtle:#9ec5fe;--bs-secondary-border-subtle:#c4c8cb;--bs-success-border-subtle:#a3cfbb;--bs-info-border-subtle:#9eeaf9;--bs-warning-border-subtle:#ffe69c;--bs-danger-border-subtle:#f1aeb5;--bs-light-border-subtle:#e9ecef;--bs-dark-border-subtle:#adb5bd;--bs-white-rgb:255, 255, 255;--bs-black-rgb:0, 0, 0;--bs-font-sans-serif:system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", "Noto Sans", "Liberation Sans", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--bs-font-monospace:SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--bs-gradient:linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-color-rgb:33, 37, 41;--bs-body-bg:#fff;--bs-body-bg-rgb:255, 255, 255;--bs-emphasis-color:#000000;--bs-emphasis-color-rgb:0, 0, 0;--bs-secondary-color:rgba(33, 37, 41, 0.75);--bs-secondary-color-rgb:33, 37, 41;--bs-secondary-bg:#e9ecef;--bs-secondary-bg-rgb:233, 236, 239;--bs-tertiary-color:rgba(33, 37, 41, 0.5);--bs-tertiary-color-rgb:33, 37, 41;--bs-tertiary-bg:#f8f9fa;--bs-tertiary-bg-rgb:248, 249, 250;--bs-heading-color:inherit;--bs-link-color:#0d6efd;--bs-link-color-rgb:13, 110, 253;--bs-link-decoration:underline;--bs-link-hover-color:#0a58ca;--bs-link-hover-color-rgb:10, 88, 202;--bs-code-color:#d63384;--bs-highlight-color:#212529;--bs-highlight-bg:#fff3cd;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#ACB9C4;--bs-border-color-translucent:rgba(0, 0, 0, 0.175);--bs-border-radius:0.375rem;--bs-border-radius-sm:0.25rem;--bs-border-radius-lg:0.5rem;--bs-border-radius-xl:1rem;--bs-border-radius-xxl:2rem;--bs-border-radius-2xl:var(--bs-border-radius-xxl);--bs-border-radius-pill:50rem;--bs-box-shadow:0 0.5rem 1rem rgba(0, 0, 0, 0.15);--bs-box-shadow-sm:0 0.125rem 0.25rem rgba(0, 0, 0, 0.075);--bs-box-shadow-lg:0 1rem 3rem rgba(0, 0, 0, 0.175);--bs-box-shadow-inset:inset 0 1px 2px rgba(0, 0, 0, 0.075);--bs-focus-ring-width:0.25rem;--bs-focus-ring-opacity:0.25;--bs-focus-ring-color:rgba(13, 110, 253, 0.25);--bs-form-valid-color:#198754;--bs-form-valid-border-color:#198754;--bs-form-invalid-color:#dc3545;--bs-form-invalid-border-color:#dc3545}*,*::before,*::after{box-sizing:border-box}@media(prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:transparent}hr{margin:1rem 0;color:inherit;border:0;border-top:var(--bs-border-width)solid;opacity:.25}h6,.h6,h5,.h5,h4,.h4,h3,.h3,h2,.h2,h1,.h1{margin-top:0;margin-bottom:.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color)}h1,.h1{font-size:calc(1.375rem + 1.5vw)}@media(min-width:1200px){h1,.h1{font-size:2.5rem}}h2,.h2{font-size:calc(1.325rem + .9vw)}@media(min-width:1200px){h2,.h2{font-size:2rem}}h3,.h3{font-size:calc(1.3rem + .6vw)}@media(min-width:1200px){h3,.h3{font-size:1.75rem}}h4,.h4{font-size:calc(1.275rem + .3vw)}@media(min-width:1200px){h4,.h4{font-size:1.5rem}}h5,.h5{font-size:1.25rem}h6,.h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}ol,ul{padding-left:2rem}ol,ul{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}b,strong{font-weight:bolder}sup{position:relative;font-size:.75em;line-height:0;vertical-align:baseline}sup{top:-.5em}a{color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,1));text-decoration:underline}a:hover{--bs-link-color-rgb:var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:.875em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}figure{margin:0 0 1rem}img{vertical-align:middle}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}select{word-wrap:normal}select:disabled{opacity:1}button{-webkit-appearance:button}button:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::file-selector-button{font:inherit;-webkit-appearance:button}.list-inline{padding-left:0;list-style:none}.list-inline-item{display:inline-block}.list-inline-item:not(:last-child){margin-right:.5rem}.img-fluid{max-width:100%;height:auto}.figure{display:inline-block}.container,.container-fluid,.container-xxl{--bs-gutter-x:1.5rem;--bs-gutter-y:0;width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-right:auto;margin-left:auto}@media(min-width:576px){.container{max-width:540px}}@media(min-width:768px){.container{max-width:720px}}@media(min-width:992px){.container{max-width:960px}}@media(min-width:1200px){.container{max-width:1140px}}@media(min-width:1400px){.container-xxl,.container{max-width:1320px}}:root{--bs-breakpoint-xs:0;--bs-breakpoint-sm:576px;--bs-breakpoint-md:768px;--bs-breakpoint-lg:992px;--bs-breakpoint-xl:1200px;--bs-breakpoint-xxl:1400px}.row{--bs-gutter-x:1.5rem;--bs-gutter-y:0;display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}.row>*{flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x) * .5);padding-left:calc(var(--bs-gutter-x) * .5);margin-top:var(--bs-gutter-y)}.col{flex:1 0}.row-cols-1>*{flex:none;width:100%}.g-4{--bs-gutter-x:1.5rem}.g-4{--bs-gutter-y:1.5rem}@media(min-width:576px){.row-cols-sm-2>*{flex:none;width:50%}.col-sm-6{flex:none;width:50%}.col-sm-12{flex:none;width:100%}}@media(min-width:768px){.row-cols-md-3>*{flex:none;width:33.33333333%}.col-md-3{flex:none;width:25%}.col-md-4{flex:none;width:33.33333333%}.col-md-5{flex:none;width:41.66666667%}.col-md-6{flex:none;width:50%}.col-md-7{flex:none;width:58.33333333%}.col-md-8{flex:none;width:66.66666667%}.col-md-12{flex:none;width:100%}.offset-md-6{margin-left:50%}}@media(min-width:992px){.col-lg-12{flex:none;width:100%}}.form-control{display:block;width:100%;padding:.375rem .75rem;font-size:1rem;font-weight:400;line-height:1.5;color:var(--bs-body-color);appearance:none;background-color:var(--bs-body-bg);background-clip:padding-box;border:var(--bs-border-width)solid var(--bs-border-color);border-radius:var(--bs-border-radius);transition:border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.form-control{transition:none}}.form-control:focus{color:var(--bs-body-color);background-color:var(--bs-body-bg);border-color:#86b7fe;outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.form-control::-webkit-date-and-time-value{min-width:85px;height:1.5em;margin:0}.form-control::-webkit-datetime-edit{display:block;padding:0}.form-control::placeholder{color:var(--bs-secondary-color);opacity:1}.form-control:disabled{background-color:var(--bs-secondary-bg);opacity:1}.form-control::file-selector-button{padding:.375rem .75rem;margin:-.375rem -.75rem;margin-inline-end:.75rem;color:var(--bs-body-color);background-color:var(--bs-tertiary-bg);pointer-events:none;border-color:inherit;border-style:solid;border-width:0;border-inline-end-width:var(--bs-border-width);border-radius:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.form-control::file-selector-button{transition:none}}.form-control:hover:not(:disabled):not([readonly])::file-selector-button{background-color:var(--bs-secondary-bg)}textarea.form-control{min-height:calc(1.5em + .75rem + calc(var(--bs-border-width) * 2))}.btn{--bs-btn-padding-x:0.75rem;--bs-btn-padding-y:0.375rem;--bs-btn-font-family: ;--bs-btn-font-size:1rem;--bs-btn-font-weight:400;--bs-btn-line-height:1.5;--bs-btn-color:var(--bs-body-color);--bs-btn-bg:transparent;--bs-btn-border-width:var(--bs-border-width);--bs-btn-border-color:transparent;--bs-btn-border-radius:var(--bs-border-radius);--bs-btn-hover-border-color:transparent;--bs-btn-box-shadow:inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);--bs-btn-disabled-opacity:0.65;--bs-btn-focus-box-shadow:0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), .5);display:inline-block;padding:var(--bs-btn-padding-y)var(--bs-btn-padding-x);font-family:var(--bs-btn-font-family);font-size:var(--bs-btn-font-size);font-weight:var(--bs-btn-font-weight);line-height:var(--bs-btn-line-height);color:var(--bs-btn-color);text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;border:var(--bs-btn-border-width)solid var(--bs-btn-border-color);border-radius:var(--bs-btn-border-radius);background-color:var(--bs-btn-bg);transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out}@media(prefers-reduced-motion:reduce){.btn{transition:none}}.btn:hover{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color)}.btn:focus-visible{color:var(--bs-btn-hover-color);background-color:var(--bs-btn-hover-bg);border-color:var(--bs-btn-hover-border-color);outline:0;box-shadow:var(--bs-btn-focus-box-shadow)}:not(.btn-check)+.btn:active,.btn:first-child:active,.btn.show{color:var(--bs-btn-active-color);background-color:var(--bs-btn-active-bg);border-color:var(--bs-btn-active-border-color)}:not(.btn-check)+.btn:active:focus-visible,.btn:first-child:active:focus-visible,.btn.show:focus-visible{box-shadow:var(--bs-btn-focus-box-shadow)}.btn:disabled{color:var(--bs-btn-disabled-color);pointer-events:none;background-color:var(--bs-btn-disabled-bg);border-color:var(--bs-btn-disabled-border-color);opacity:var(--bs-btn-disabled-opacity)}.collapse:not(.show){display:none}.dropdown{position:relative}.dropdown-toggle{white-space:nowrap}.dropdown-toggle::after{display:inline-block;margin-left:.255em;vertical-align:.255em;content:"";border-top:.3em solid;border-right:.3em solid transparent;border-bottom:0;border-left:.3em solid transparent}.dropdown-toggle:empty::after{margin-left:0}.dropdown-menu{--bs-dropdown-zindex:1000;--bs-dropdown-min-width:10rem;--bs-dropdown-padding-x:0;--bs-dropdown-padding-y:0.5rem;--bs-dropdown-spacer:0.125rem;--bs-dropdown-font-size:1rem;--bs-dropdown-color:var(--bs-body-color);--bs-dropdown-bg:var(--bs-body-bg);--bs-dropdown-border-color:var(--bs-border-color-translucent);--bs-dropdown-border-radius:var(--bs-border-radius);--bs-dropdown-border-width:var(--bs-border-width);--bs-dropdown-inner-border-radius:calc(var(--bs-border-radius) - var(--bs-border-width));--bs-dropdown-divider-bg:var(--bs-border-color-translucent);--bs-dropdown-divider-margin-y:0.5rem;--bs-dropdown-box-shadow:var(--bs-box-shadow);--bs-dropdown-link-color:var(--bs-body-color);--bs-dropdown-link-hover-color:var(--bs-body-color);--bs-dropdown-link-hover-bg:var(--bs-tertiary-bg);--bs-dropdown-link-active-color:#ffffff;--bs-dropdown-link-active-bg:#0d6efd;--bs-dropdown-link-disabled-color:var(--bs-tertiary-color);--bs-dropdown-item-padding-x:1rem;--bs-dropdown-item-padding-y:0.25rem;--bs-dropdown-header-color:#6c757d;--bs-dropdown-header-padding-x:1rem;--bs-dropdown-header-padding-y:0.5rem;position:absolute;z-index:var(--bs-dropdown-zindex);display:none;min-width:var(--bs-dropdown-min-width);padding:var(--bs-dropdown-padding-y)var(--bs-dropdown-padding-x);margin:0;font-size:var(--bs-dropdown-font-size);color:var(--bs-dropdown-color);text-align:left;list-style:none;background-color:var(--bs-dropdown-bg);background-clip:padding-box;border:var(--bs-dropdown-border-width)solid var(--bs-dropdown-border-color);border-radius:var(--bs-dropdown-border-radius)}.dropdown-item{display:block;width:100%;padding:var(--bs-dropdown-item-padding-y)var(--bs-dropdown-item-padding-x);clear:both;font-weight:400;color:var(--bs-dropdown-link-color);text-align:inherit;text-decoration:none;white-space:nowrap;background-color:transparent;border:0;border-radius:var(--bs-dropdown-item-border-radius,0)}.dropdown-item:hover,.dropdown-item:focus{color:var(--bs-dropdown-link-hover-color);background-color:var(--bs-dropdown-link-hover-bg)}.dropdown-item:active{color:var(--bs-dropdown-link-active-color);text-decoration:none;background-color:var(--bs-dropdown-link-active-bg)}.dropdown-item:disabled{color:var(--bs-dropdown-link-disabled-color);pointer-events:none;background-color:transparent}.dropdown-menu.show{display:block}.nav{--bs-nav-link-padding-x:1rem;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-link-color);--bs-nav-link-hover-color:var(--bs-link-hover-color);--bs-nav-link-disabled-color:var(--bs-secondary-color);display:flex;flex-wrap:wrap;padding-left:0;margin-bottom:0;list-style:none}.nav-link{display:block;padding:var(--bs-nav-link-padding-y)var(--bs-nav-link-padding-x);font-size:var(--bs-nav-link-font-size);font-weight:var(--bs-nav-link-font-weight);color:var(--bs-nav-link-color);text-decoration:none;background:0 0;border:0;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out}@media(prefers-reduced-motion:reduce){.nav-link{transition:none}}.nav-link:hover,.nav-link:focus{color:var(--bs-nav-link-hover-color)}.nav-link:focus-visible{outline:0;box-shadow:0 0 0 .25rem rgba(13,110,253,.25)}.nav-link:disabled{color:var(--bs-nav-link-disabled-color);pointer-events:none;cursor:default}.navbar{--bs-navbar-padding-x:0;--bs-navbar-padding-y:0.5rem;--bs-navbar-color:rgba(var(--bs-emphasis-color-rgb), 0.65);--bs-navbar-hover-color:rgba(var(--bs-emphasis-color-rgb), 0.8);--bs-navbar-disabled-color:rgba(var(--bs-emphasis-color-rgb), 0.3);--bs-navbar-active-color:rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-padding-y:0.3125rem;--bs-navbar-brand-margin-end:1rem;--bs-navbar-brand-font-size:1.25rem;--bs-navbar-brand-color:rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-brand-hover-color:rgba(var(--bs-emphasis-color-rgb), 1);--bs-navbar-nav-link-padding-x:0.5rem;--bs-navbar-toggler-padding-y:0.25rem;--bs-navbar-toggler-padding-x:0.75rem;--bs-navbar-toggler-font-size:1.25rem;--bs-navbar-toggler-icon-bg:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%2833, 37, 41, 0.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");--bs-navbar-toggler-border-color:rgba(var(--bs-emphasis-color-rgb), 0.15);--bs-navbar-toggler-border-radius:var(--bs-border-radius);--bs-navbar-toggler-focus-width:0.25rem;--bs-navbar-toggler-transition:box-shadow 0.15s ease-in-out;position:relative;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;padding:var(--bs-navbar-padding-y)var(--bs-navbar-padding-x)}.navbar>.container,.navbar>.container-fluid,.navbar>.container-xxl{display:flex;flex-wrap:inherit;align-items:center;justify-content:space-between}.navbar-brand{padding-top:var(--bs-navbar-brand-padding-y);padding-bottom:var(--bs-navbar-brand-padding-y);margin-right:var(--bs-navbar-brand-margin-end);font-size:var(--bs-navbar-brand-font-size);color:var(--bs-navbar-brand-color);text-decoration:none;white-space:nowrap}.navbar-brand:hover,.navbar-brand:focus{color:var(--bs-navbar-brand-hover-color)}.navbar-nav{--bs-nav-link-padding-x:0;--bs-nav-link-padding-y:0.5rem;--bs-nav-link-font-weight: ;--bs-nav-link-color:var(--bs-navbar-color);--bs-nav-link-hover-color:var(--bs-navbar-hover-color);--bs-nav-link-disabled-color:var(--bs-navbar-disabled-color);display:flex;flex-direction:column;padding-left:0;margin-bottom:0;list-style:none}.navbar-nav .nav-link.show{color:var(--bs-navbar-active-color)}.navbar-nav .dropdown-menu{position:static}.navbar-collapse{flex-basis:100%;flex-grow:1;align-items:center}.navbar-toggler{padding:var(--bs-navbar-toggler-padding-y)var(--bs-navbar-toggler-padding-x);font-size:var(--bs-navbar-toggler-font-size);line-height:1;color:var(--bs-navbar-color);background-color:transparent;border:var(--bs-border-width)solid var(--bs-navbar-toggler-border-color);border-radius:var(--bs-navbar-toggler-border-radius);transition:var(--bs-navbar-toggler-transition)}@media(prefers-reduced-motion:reduce){.navbar-toggler{transition:none}}.navbar-toggler:hover{text-decoration:none}.navbar-toggler:focus{text-decoration:none;outline:0;box-shadow:0 0 0 var(--bs-navbar-toggler-focus-width)}.navbar-toggler-icon{display:inline-block;width:1.5em;height:1.5em;vertical-align:middle;background-image:var(--bs-navbar-toggler-icon-bg);background-repeat:no-repeat;background-position:50%;background-size:100%}@media(min-width:992px){.navbar-expand-lg{flex-wrap:nowrap;justify-content:flex-start}.navbar-expand-lg .navbar-nav{flex-direction:row}.navbar-expand-lg .navbar-nav .dropdown-menu{position:absolute}.navbar-expand-lg .navbar-nav .nav-link{padding-right:var(--bs-navbar-nav-link-padding-x);padding-left:var(--bs-navbar-nav-link-padding-x)}.navbar-expand-lg .navbar-collapse{display:flex!important;flex-basis:auto}.navbar-expand-lg .navbar-toggler{display:none}}.card{--bs-card-spacer-y:1rem;--bs-card-spacer-x:1rem;--bs-card-title-spacer-y:0.5rem;--bs-card-title-color: ;--bs-card-subtitle-color: ;--bs-card-border-width:var(--bs-border-width);--bs-card-border-color:var(--bs-border-color-translucent);--bs-card-border-radius:var(--bs-border-radius);--bs-card-box-shadow: ;--bs-card-inner-border-radius:calc(var(--bs-border-radius) - (var(--bs-border-width)));--bs-card-cap-padding-y:0.5rem;--bs-card-cap-padding-x:1rem;--bs-card-cap-bg:rgba(var(--bs-body-color-rgb), 0.03);--bs-card-cap-color: ;--bs-card-height: ;--bs-card-color: ;--bs-card-bg:var(--bs-body-bg);--bs-card-img-overlay-padding:1rem;--bs-card-group-margin:0.75rem;position:relative;display:flex;flex-direction:column;min-width:0;height:var(--bs-card-height);color:var(--bs-body-color);word-wrap:break-word;background-color:var(--bs-card-bg);background-clip:border-box;border:var(--bs-card-border-width)solid var(--bs-card-border-color);border-radius:var(--bs-card-border-radius)}.card>hr{margin-right:0;margin-left:0}.card-body{flex:auto;padding:var(--bs-card-spacer-y)var(--bs-card-spacer-x);color:var(--bs-card-color)}/*@import "../plugins/bootstrap/scss/carousel";*/.text-bg-secondary{color:#fff!important;background-color:RGBA(var(--bs-secondary-rgb),var(--bs-bg-opacity,1))!important}.sticky-top{position:sticky;top:0;z-index:1020}.d-block{display:block!important}.translate-middle{transform:translate(-50%,-50%)!important}.border-1{border-width:1px!important}.h-100{height:100%!important}.justify-content-center{justify-content:center!important}.m-2{margin:.5rem!important}.mt-4{margin-top:1.5rem!important}.mt-5{margin-top:3rem!important}.me-3{margin-right:1rem!important}.mb-1{margin-bottom:.25rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}.ms-2{margin-left:.5rem!important}.ms-auto{margin-left:auto!important}.p-0{padding:0!important}.p-4{padding:1.5rem!important}.pt-1{padding-top:.25rem!important}.pt-3{padding-top:1rem!important}.pt-4{padding-top:1.5rem!important}.pt-5{padding-top:3rem!important}.pe-2{padding-right:.5rem!important}.pb-1{padding-bottom:.25rem!important}.pb-2{padding-bottom:.5rem!important}.pb-3{padding-bottom:1rem!important}.pb-5{padding-bottom:3rem!important}.ps-2{padding-left:.5rem!important}.text-center{text-align:center!important}.text-primary{--bs-text-opacity:1;color:rgba(var(--bs-primary-rgb),var(--bs-text-opacity))!important}.text-success{--bs-text-opacity:1;color:rgba(var(--bs-success-rgb),var(--bs-text-opacity))!important}.text-danger{--bs-text-opacity:1;color:rgba(var(--bs-danger-rgb),var(--bs-text-opacity))!important}.text-muted{--bs-text-opacity:1;color:var(--bs-secondary-color)!important}.bg-primary{--bs-bg-opacity:1;background-color:rgba(var(--bs-primary-rgb),var(--bs-bg-opacity))!important}.rounded-pill{border-radius:var(--bs-border-radius-pill)!important}@media(min-width:576px){.d-sm-none{display:none!important}}@media(min-width:1400px){.px-xxl-0{padding-right:0!important;padding-left:0!important}}@font-face{font-family:roboto;src:local("Roboto"),local("Roboto-Regular"),url(../fonts/Roboto-Regular.woff2)format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:roboto;src:local("Roboto Italic"),local("Roboto-Italic"),url(../fonts/Roboto-Italic.woff2)format("woff2");font-weight:400;font-style:italic;font-display:swap}body{line-height:1.5;font-family:roboto,sans-serif;-webkit-font-smoothing:antialiased}h1,.h1,h2,.h2,h3,.h3,h4,.h4,h5,.h5,h6,.h6{font-family:roboto,sans-serif}h1,.h1,h2,.h2,h3,.h3,h4,.h4,h5,.h5,h6,.h6{font-weight:400}h1,.h1{font-size:40px}@media(max-width:768px){h1,.h1{font-size:34px}}@media(max-width:480px){h1,.h1{font-size:28px}}@media(max-width:400px){h1,.h1{font-size:26px}}h2,.h2{font-size:28px}@media(max-width:480px){h2,.h2{font-size:22px}}h3,.h3{font-size:20px}h4,.h4{font-size:18px}h5,.h5{font-size:17px}h6,.h6{font-size:16px}p{color:#444;font-size:15px;font-family:roboto,sans-serif}ul{margin:0;padding-left:0;list-style-type:none}img{max-width:100%;height:auto}a,a:focus,a:hover{text-decoration:none;outline:0;color:#655e7a}.form-control{box-shadow:none;border-radius:0}.form-control:focus{box-shadow:none;border:1px solid #655e7a}.btn-main,.btn-small{background:#655e7a;color:#fff;display:inline-block;font-size:14px;letter-spacing:1px;padding:14px 35px;text-transform:uppercase;border-radius:0;-webkit-transition:all .2s ease;-moz-transition:all .2s ease;-ms-transition:all .2s ease;-o-transition:all .2s ease;transition:all .2s ease}.btn-main:hover,.btn-small:hover{background:#353240;color:#fff}.btn-solid-border{border:1px solid #fff;background:0 0;color:#fff}.btn-solid-border:hover{border:1px solid #655e7a;background:#655e7a}.btn-small{padding:10px 25px;font-size:12px}.btn:active:focus,.btn:focus{outline:0}.mt-20{margin-top:20px}.mt-30{margin-top:30px}.mt-40{margin-top:40px}.btn:focus{color:#d9d9d9}.bg-primary{background:#655e7a!important}.bg-primary-dark{background:#4d485d!important}.bg-primary-darker{background:#353240!important}.section{padding:100px 0}@media(max-width:768px){.section{padding-top:20px;padding-bottom:20px}}.section-sm{padding:70px 0}.title{padding:20px 0 30px}.title h2,.title .h2{font-size:18px;text-align:center;text-transform:uppercase;letter-spacing:2px}.section-title{margin-bottom:70px}@media(max-width:768px){.section-title{margin-bottom:20px}}.section-title h2,.section-title .h2{text-transform:uppercase;font-weight:600;margin:0;padding:30px 0}.section-title p{font-style:italic;color:#626262;font-family:roboto,serif}.section-subtitle{font-size:28px;font-weight:600;margin-bottom:30px}@media(max-width:400px){.section-subtitle{font-size:26px}}@media(max-width:480px){.section-subtitle{font-size:24px}}.page-title{padding:100px 0}.page-title .block{text-align:center}.page-title .block h1,.page-title .block .h1,.page-title .block h2,.page-title .block .h2,.page-title .block h3,.page-title .block .h3,.page-title .block h4,.page-title .block .h4,.page-title .block h5,.page-title .block .h5,.page-title .block h6,.page-title .block .h6{color:#fff;margin-top:0;text-transform:uppercase}.page-title .block p{margin-bottom:30px;color:#b5b5b5;font-size:18px;line-height:1.5em;font-weight:300}.page-wrapper{padding:70px 0}@media(max-width:768px){.page-wrapper{padding-top:20px;padding-bottom:20px}}.overly,.page-title{position:relative}.overly:before,.page-title:before{content:"";position:absolute;left:0;top:0;bottom:0;right:0;width:100%;height:100%;background:#292732;opacity:.8}.sticky-top{position:sticky;top:0}@media(max-width:992px){.sticky-top{position:static}}@media(min-width:992px){.row .no-float{display:table-cell;float:none}}.tim-opacity{opacity:.99}@media(max-width:1200px){.tim-opacity{background-attachment:unset}}.admonition{position:relative;background-color:rgba(68,138,255,.1);border:.05rem solid #adb5bd;border-radius:.2rem;box-shadow:var(--md-shadow-z2);display:flow-root;font-size:.87rem;margin:1.5625em 0;padding:0 .8rem .8rem;page-break-inside:avoid}.admonition .admonition-title{font-weight:700;margin:0 -.75rem;padding:.25rem 1.8rem;border-bottom:1px solid rgba(68,138,255,.1);background-color:rgba(68,138,255,.25)}.admonition .admonition-content{padding:.9rem 0 .1rem}.admonition .admonition-content p{margin-top:.2rem;margin-bottom:0;padding-bottom:.2rem}.admonition .admonition-content code{background-color:inherit}.admonition i.icon{font-size:.85rem;color:#448aff;position:absolute;top:.6rem;left:.4rem}.admonition.note{border-left-color:#448aff}.admonition.note i.icon{color:#448aff}.admonition.info{border-left-color:#00b8d4}.admonition.info i.icon{color:#00b8d4}.admonition.warning{border-left-color:#ff9100}.admonition.warning i.icon{color:#ff9100}.admonition.important{border-left-color:#651fff}.admonition.important i.icon{color:#651fff}.admonition.note{background-color:rgba(68,138,255,.1)}.admonition.note .admonition-title{border-bottom-color:rgba(68,138,255,.1);background-color:rgba(68,138,255,.25)}.admonition.info{background-color:rgba(0,184,212,.1)}.admonition.info .admonition-title{border-bottom-color:rgba(0,184,212,.1);background-color:rgba(0,184,212,.25)}.admonition.warning{background-color:rgba(255,145,0,.1)}.admonition.warning .admonition-title{border-bottom-color:rgba(255,145,0,.1);background-color:rgba(255,145,0,.25)}.admonition.important{background-color:rgba(101,31,255,.1)}.admonition.important .admonition-title{border-bottom-color:rgba(101,31,255,.1);background-color:rgba(101,31,255,.25)}.admonition:last-child{margin-bottom:.75rem}header{min-height:100px;background:#fff;padding:20px 0}@media(max-width:992px){header{min-height:90px}}header .navbar{margin-bottom:0;border:0}header .navbar-brand{padding-top:5px}.navigation{background:#fff;padding:20px 0}.navigation .navbar{margin-bottom:0;border:0}.navigation .navbar-brand{padding-top:5px}.navigation .navbar{background:0 0;border:0}.navigation .navbar .navbar-nav{padding-top:10px}.navigation .navbar .navbar-nav a{color:#5b5b5b;padding:10px 15px;font-weight:500;font-size:14px;text-transform:uppercase}.navigation .navbar .navbar-nav a:hover,.navigation .navbar .navbar-nav a:focus{color:#000;background:0 0}.navigation .navbar .navbar-nav a.current{color:#000;pointer-events:none;cursor:default}.navigation .navbar .navbar-nav select{margin:10px 15px}.navigation .navbar .current>.dropdown-toggle{color:#000}.navigation .navbar .dropdown-menu{border-radius:0;border:none;left:-5px;box-shadow:0 0 25px rgba(0,0,0,8%)}.navigation .navbar .dropdown-menu a{text-transform:none;font-weight:400;color:#7c7c7c;padding:10px 20px;-webkit-transition:color .1s ease,padding .3s ease;-moz-transition:color .1s ease,padding .3s ease;-ms-transition:color .1s ease,padding .3s ease;-o-transition:color .1s ease,padding .3s ease;transition:color .1s ease,padding .3s ease}.navigation .navbar .dropdown-menu a:hover{background:#655e7a;color:#fff;padding-left:25px}.navigation .navbar .dropdown-menu a.current{padding-left:25px;color:#fff;background:#655e7a}.slider{background-repeat:no-repeat;background-size:cover;background-attachment:fixed;background-position:50%;padding:170px 0 200px;position:relative}@media(max-width:1200px){.slider{background-attachment:unset;padding:150px 0}}.slider .block{color:#e0e0e0;text-align:center}.slider .block h1,.slider .block .h1{font-weight:100;font-size:45px;line-height:1.33em;letter-spacing:.2em;padding-bottom:15px;text-transform:uppercase}@media(max-width:768px){.slider .block h1,.slider .block .h1{font-size:35px}}@media(max-width:480px){.slider .block h1,.slider .block .h1{font-size:28px}}@media(max-width:400px){.slider .block h1,.slider .block .h1{font-size:26px}}.slider .block p{margin-bottom:30px;color:#b5b5b5;font-size:18px;line-height:1.5em;font-weight:300}@media(max-width:480px){.slider .block p{font-size:14px}}@media(max-width:480px){.slider .block .btn{font-size:12px}}.call-to-action{text-align:center;padding:70px 0}@media(max-width:768px){.call-to-action{padding-top:20px;padding-bottom:20px}}.call-to-action h2,.call-to-action .h2{color:#fff;margin:0;padding:30px 0}.call-to-action p{color:#fff}.call-to-action .btn-main,.call-to-action .btn-small{padding:15px 35px;font-size:12px;margin-top:30px;margin-bottom:30px}.service{text-align:center;padding:90px 0}@media(max-width:768px){.service{padding-top:20px;padding-bottom:20px}}.service .service-item{padding-bottom:30px}.service .service-item i{font-size:50px;color:#655e7a}.service .service-item h3,.service .service-item .h3{padding-top:15px;margin:0;margin-top:10px;font-weight:500;text-transform:uppercase}.service .service-item p{padding-top:10px;margin:0}.service-about p{line-height:normal}.service-about li{list-style-type:circle}.service-arrow .block{padding:70px 30px}.service-arrow .block .h1,.service-arrow .block .h2,.service-arrow .block .h3,.service-arrow .block h1,.service-arrow .block h2,.service-arrow .block h3{margin-top:20px;margin-bottom:10px}.service-arrow .block i{font-size:40px}.service-arrow .block p{color:#fff}.feature{background:url(../img/feature-bg.jpg);background-position:50% 94px;display:block;position:relative;background-attachment:fixed;background-repeat:no-repeat;background-position:50%;background-size:cover;padding:100px 0}@media(max-width:1200px){.feature{padding-top:20px;padding-bottom:20px;background-attachment:unset}}.feature h2,.feature .h2{margin:0;padding-top:30px;padding-bottom:30px}.feature p{margin-bottom:20px}.technologies{padding:0 0 100px}.technologies .section-title{margin-bottom:0}.testimonial{padding:100px 0}@media(max-width:768px){.testimonial{padding-top:20px;padding-bottom:20px}}.contact-form{padding-top:70px;padding-bottom:35px}.contact-form .block .form-group{padding-bottom:15px;margin:0}.contact-form .block .form-group .form-control{background:#f4f4f4;height:60px;border:1px solid #eef2f6;box-shadow:none;width:100%}.contact-form .block .form-group-2{margin-bottom:13px}.contact-form .block .form-group-2 textarea{background:#f4f4f4;height:135px;border:1px solid #eef2f6;box-shadow:none;width:100%}.contact-form .block .form-group-h{display:none}.contact-form .block button{width:100%;height:60px;background:#474747;border:none;color:#fff;font-size:18px}.address-block{margin-bottom:40px}.address-block li{position:relative;padding-left:30px;margin-bottom:10px}.address-block li i{position:absolute;left:0;font-size:20px;line-height:20px}.address-block li div{display:inline-block;vertical-align:top}.social-icons{margin-top:40px}.social-icons li{display:inline-block;margin:0 6px}.social-icons a{display:inline-block}.social-icons i{color:#2c2c2c;margin-right:25px;font-size:25px}.contact-box{padding-top:35px;padding-bottom:58px}.contact-box .block img{width:100%}.contact-box .block h2,.contact-box .block .h2{font-weight:300;color:#000;font-size:28px;padding-bottom:30px}.contact-box .block p{color:#5c5c5c;display:block}.about .block h2,.about .block .h2{padding-top:30px;padding-bottom:30px;margin:0}.about .block p{padding-top:0;line-height:28px}.about .block img{width:100%}.about .about-img{overflow:hidden}.about .about-img:hover img{transform:scale3D(1.1,1.1,1);opacity:1}.about .about-img img{opacity:.9;-webkit-transition:all .5s ease-out;-moz-transition:all .5s ease-out;-ms-transition:all .5s ease-out;-o-transition:all .5s ease-out;transition:all .5s ease-out}.about a{text-decoration-line:underline}.about .section-title{margin-bottom:0}.post.post-single{border:none;margin-bottom:0}.post.post-single .post-title{margin-top:0}@media(max-width:768px){.post.post-single .post-title{margin-top:20px}}.post.post-single .post-thumb{margin-top:30px}.post-excerpt h3 a,.post-excerpt .h3 a{color:#000}.post-excerpt p{margin:0 0 30px}.bg-1{background-size:cover;background-position:50%;background-repeat:no-repeat;background-attachment:fixed}@media(max-width:1200px){.bg-1{background-attachment:unset}}.bg-2{background-size:cover;background-position:50%;background-attachment:fixed}@media(max-width:1200px){.bg-2{background-attachment:unset}}.widget{margin-bottom:65px}@media(max-width:768px){.widget{margin-bottom:35px}}.widget .widget-title{margin-top:0;margin-bottom:15px;font-size:16px;color:#333;font-weight:500;border-bottom:1px solid #acb9c4}.widget.widget-latest-post .media .media-object{width:100px;height:auto}.widget.widget-latest-post .media .media-heading a{color:#000;font-size:16px}.widget.widget-latest-post .media p{font-size:12px;color:#7c7c7c}@media(max-width:992px){.widget.widget-latest-post{padding-top:20px}}.widget.widget-category ul li{padding-top:10px;padding-bottom:10px}.widget.widget-category ul li a{color:#4d4d4d;padding:10px;padding-left:20px;padding-right:20px;-webkit-transition:padding .3s ease,border .3s ease;-moz-transition:padding .3s ease,border .3s ease;-ms-transition:padding .3s ease,border .3s ease;-o-transition:padding .3s ease,border .3s ease;transition:padding .3s ease,border .3s ease}.widget.widget-category ul li a:before{padding-right:10px}.widget.widget-category ul li a:hover{color:#655e7a;padding-left:25px}.widget.widget-category ul li a:active{padding-left:24px;border:1px solid #655e7a;border-radius:30px;-webkit-transition:padding 0s ease-in-out;-moz-transition:padding 0s ease-in-out;-ms-transition:padding 0s ease-in-out;-o-transition:padding 0s ease-in-out;transition:padding 0s ease-in-out}.widget.widget-category ul li a.current{color:#fff;background:#655e7a;border:1px solid #655e7a;border-radius:30px;pointer-events:none;cursor:default}.widget.widget-tag ul li{margin-bottom:10px;display:inline-block;margin-right:5px}.widget.widget-tag ul li a{color:#4d4d4d;display:inline-block;padding:8px 15px;border:1px solid #acb9c4;border-radius:30px;font-size:14px;-webkit-transition:background-color .3s ease,border .3s ease,color .1s ease;-moz-transition:background-color .3s ease,border .3s ease,color .1s ease;-ms-transition:background-color .3s ease,border .3s ease,color .1s ease;-o-transition:background-color .3s ease,border .3s ease,color .1s ease;transition:background-color .3s ease,border .3s ease,color .1s ease}.widget.widget-tag ul li a:hover{color:#655e7a;background:rgba(101,94,122,.3);border:1px solid rgba(101,94,122,.3)}.widget.widget-tag ul li a:active{color:#655e7a;border:1px solid #655e7a;background:#fff;-webkit-transition:background-color .1s ease;-moz-transition:background-color .1s ease;-ms-transition:background-color .1s ease;-o-transition:background-color .1s ease;transition:background-color .1s ease}.widget.widget-tag ul li a.current{color:#fff;background:#655e7a;border:1px solid #655e7a;pointer-events:none;cursor:default}.widget.widget-project-category{text-align:center}.widget.widget-project-category ul li{margin-bottom:10px;display:inline-block;margin-right:5px}.widget.widget-project-category ul li a{color:gray;display:inline-block;padding:8px 15px;border:1px solid #acb9c4;font-size:14px;-webkit-transition:background-color .3s ease,border .3s ease,color .1s ease;-moz-transition:background-color .3s ease,border .3s ease,color .1s ease;-ms-transition:background-color .3s ease,border .3s ease,color .1s ease;-o-transition:background-color .3s ease,border .3s ease,color .1s ease;transition:background-color .3s ease,border .3s ease,color .1s ease}.widget.widget-project-category ul li a:hover{color:#655e7a;background:rgba(101,94,122,.3);border:1px solid rgba(101,94,122,.3)}.widget.widget-project-category ul li a:active{color:#655e7a;border:1px solid #655e7a;background:#fff;-webkit-transition:background-color .1s ease;-moz-transition:background-color .1s ease;-ms-transition:background-color .1s ease;-o-transition:background-color .1s ease;transition:background-color .1s ease}.widget.widget-project-category ul li a.current{color:#fff;background:#655e7a;border:1px solid #655e7a;pointer-events:none;cursor:default}.post{background:#fff;margin-bottom:55px}@media(max-width:768px){.post{margin-bottom:20px}}.post .post-media.post-thumb img{width:100%;height:auto}.post .post-title{margin-top:25px;text-transform:uppercase}.post .post-title a{color:#655e7a}.post .post-title a:hover{color:#655e7a}.post .post-meta{font-size:13px;margin-top:10px}.post .post-meta ul li{display:inline-block;color:#5d5d5d;margin-right:20px;font-size:12px;letter-spacing:.5px}.post .post-meta ul li a{text-decoration:underline;color:#5d5d5d!important}.post .post-meta ul li a:hover{text-decoration:underline;color:#655e7a!important}.post .post-content{margin-top:20px}.post .post-content p{line-height:26px;color:#434343!important;margin:0 0 1rem}.post .post-content a{text-decoration-line:underline}.post .post-content ul{font-size:15px;padding:0 20px 20px;font-family:roboto,sans-serif;list-style:circle}.post .post-content ol{font-size:15px;padding:10px 20px;font-family:roboto,sans-serif}.post .post-content .btn-main,.post .post-content .btn-small{padding:10px 20px;margin:15px 0;font-size:12px}.post .post-content h6,.post .post-content .h6,.post .post-content h5,.post .post-content .h5,.post .post-content h4,.post .post-content .h4,.post .post-content h3,.post .post-content .h3,.post .post-content h2,.post .post-content .h2,.post .post-content h1,.post .post-content .h1{margin-top:.5rem;margin-bottom:1rem;text-decoration:underline;text-decoration-color:#2125298f;text-underline-position:under}.post .post-content pre{background:#f1f1f1;padding:.5em;hyphens:none;position:relative;border-width:1px;border-color:#ccc;border-style:solid}.post .post-content pre code{display:block;padding:1.5em;border-radius:3px;overflow-x:auto}.post .post-content code{font-size:1em}.page-404{display:flex;align-items:center;min-height:calc(100vh - (100px + 205px));text-align:center}@media(max-width:992px){.page-404{min-height:calc(100vh - (90px + 205px))}}.page-404 h1,.page-404 .h1{font-size:300px;font-weight:700}@media(max-width:768px){.page-404 h1,.page-404 .h1{font-size:150px}}@media(max-width:480px){.page-404 h1,.page-404 .h1{font-size:130px}}@media(max-width:400px){.page-404 h1,.page-404 .h1{font-size:90px}}.page-404 h2,.page-404 .h2{text-transform:uppercase;font-size:20px;letter-spacing:4px;font-weight:700;margin-top:30px}.page-404 .btn-main,.page-404 .btn-small{margin-top:40px;margin-bottom:50px}.page-message-sent{display:flex;align-items:center;min-height:calc(100vh - (100px + 205px));text-align:center}@media(max-width:992px){.page-message-sent{min-height:calc(100vh - (90px + 205px))}}.page-message-sent h1,.page-message-sent .h1{font-size:50px;font-weight:700}@media(max-width:480px){.page-message-sent h1,.page-message-sent .h1{font-size:40px}}@media(max-width:400px){.page-message-sent h1,.page-message-sent .h1{font-size:30px}}.page-message-sent h2,.page-message-sent .h2{text-transform:uppercase;font-size:20px;font-weight:700;letter-spacing:1px;margin-top:30px}.page-message-sent .btn-main,.page-message-sent .btn-small{margin-top:40px;margin-bottom:50px}.page-message-sent img{width:50%;max-height:200px;margin-top:40px;margin-bottom:40px}.footer{background:#f1f1f1;min-height:205px;text-align:center;padding-top:67px}.footer p{font-size:13px;line-height:25px;color:#5e5e5e}.footer a{color:#595959}.footer .container_footer{padding-bottom:67px}.footer .container_footer h2,.footer .container_footer .h2{text-transform:uppercase;font-weight:600;margin:0;padding:50px 0}.footer .container_footer .data_footer{overflow:auto;white-space:nowrap;background:#fff}.footer .container_footer .data_footer a{display:inline-block;margin-right:3rem}.footer .container_footer .data_footer img{height:70px}.footer .footer-menu{padding-bottom:25px}.footer .footer-menu ul{margin:0;padding:0}.footer .footer-menu ul li{display:inline-block;padding:0 20px}.footer .footer-menu ul li a{display:inline-block;color:#494949}.footer .footer-menu ul li a:hover{color:#000}.footer .copyright a{font-weight:600}:root{--primary-color:#137083;--secondary-color:#42aec3}.technologies .tbl1{background:#e3e3e3}.technologies .tbl2{background:#f1f1f1}.technologies hr{border:none;border-top:3px double #333;color:#333;overflow:visible;text-align:center;height:5px}.technologies hr::after{background:#fff;content:'§';padding:0 4px;position:relative;top:-13px}.block li{margin-bottom:1rem}.box-shadow{padding:20px;box-shadow:inset 0 -3em 3em rgba(0,0,0,.1),0 0 0 2px white,.3em .3em 1em rgba(0,0,0,.3)}#TableOfContents ul{padding-left:10px}.box-shadow h3,.box-shadow .h3{padding-left:30px}</style>

	
</head>

<body>
	<!-- cache partial only in production -->
	
<header class="navigation">
  <div class="container-fluid">
    
    <nav class="navbar navbar-expand-lg">
      <div class="container-fluid">
        
        
        <a class="navbar-brand show" href="/">
          












 
 











<img loading="prelaod" decoding="async" class="img-fluid" width="165" height="41" src="/images/logo.svg" alt="Разработка и создание быстрых и безопасных веб-сайтов | WebPractica" onerror="this.onerror=null;this.src=''">




        </a>        
        
        <button type="button" class="navbar-toggler" data-bs-toggle="collapse" data-bs-target="#navigation" aria-controls="navigation" aria-expanded="true" aria-label="Toggle navigation">
        <span class="navbar-toggler-icon"></span>
        
        </button>

      

      <div class="collapse navbar-collapse" id="navigation">
        
        <ul class="navbar-nav ms-auto">
          
          
          
          
          
          
          
          <li class="nav-item">
            <a class="nav-link " 
              href="/">Главная</a>
          </li>
          
          
          
          
          
          
          <li class="nav-item">
            <a class="nav-link " 
              href="/o-nas/">О нас</a>
          </li>
          
          
          
          
          
          
          <li class="nav-item">
            <a class="nav-link " 
              href="/uslugi/">Услуги</a>
          </li>
          
          
          
          
          
          
          <li class="nav-item">
            <a class="nav-link " 
              href="/blog/">Блог</a>
          </li>
          
          
          
          
          
          
          <li class="nav-item dropdown 
          
          
          
          
          
          
          
          
          ">
            
              <a class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-expanded="false"> Инфо </a>
            <ul class="dropdown-menu">
              
              
              
              <li><a class="nav-link dropdown-item " 
                href="/demo/">Демо</a></li>
              
              
              
              <li><a class="nav-link dropdown-item " 
                href="/kontakt/">Kontakt</a></li>
              
            </ul>
          </li>
          
          
          
          
          
          
          <li class="nav-item">
            <a class="nav-link " 
              href="/contact/">Контакт</a>
          </li>
          
          
          <li>
            
            
            <select class="m-2 border-1" id="select-language" aria-label="Select-language" onchange="location = this.value;">
              
              
              
              
              
              
              
              
              <option id="ru" value="/demo/primery-ispolzovaniya-php-s-hugo/index.php" selected>Russian
              </option>
              
              
              
              
              
              
              
              
              
              
              
              
              
              
              
              <option id="en" value="/en/demo/examples-of-using-php-with-hugo/index.php">English</option>
              
              
              
              
              
              
              
              
              
              
              
              
              
              
              
              <option id="zh" value="/zh/demo/examples-of-using-php-with-hugo-zh/index.php">Chinese</option>
              
              
              
              
            </select>
            
          </li>
        </ul>
      </div>
      </div>
    </nav>
  </div>
</header>

	
	
	

	<!-- Google Tag Manager (noscript) -->
	

	<main>
		
		




  
  
  
    
      
       
      
    
  

<section class="page-title bg-2"  style="background-image: url('/demo/primery-ispolzovaniya-php-s-hugo/img/hugo_php_blank_hu18350711579289425659.webp');" >

  <div class="container">
    <div class="row">
      <div class="col-md-12">
        <div class="block tim-opacity">
          
          
          
            
          

          
          

            
              
              
                



                  <h1>Примеры использования PHP с Hugo</h1>
                  
                  <p>Примеры использования языка PHP с генератором статических сайтов Hugo</p>
                  

                
              

            
          

          
        </div>
      </div>
    </div>
  </div>
</section> 





 





<!--
-v------------------------------<br>
Default single<br>
-^------------------------------<br>
-->
<!--
.Section = demo<br>
.Type = demo<br>
.Layout = php_test<br>
-->
<section class="page-wrapper">
  <div class="container">
    <div class="row">
      <div class="col-md-8">
        <div class="post post-single">
          <h2 class="post-title">Примеры использования PHP с Hugo</h2>
          <div class="post-meta">
            <ul>
              <li><i class="fas fa-calendar-week"></i> <b>Обновлено: </b> 26 июля 2024 г.</li>
              <li><i class="fas fa-user"></i>
                <!--Автор публикаций - -->
                <!-- Pages(28) Pages(3) .author <a class="text-primary" href="/author/tim">tim</a>-->
                
                  <b>Автор: </b>
                
                 <a class="text-primary" href="/author/tim">Тим</a>
              </li>
              <li><i class="fas fa-clock"></i> 4 минуты на чтение</li>
              <li><i class="fas fa-tags"></i>
                <!--<a href="/tags/hugo">hugo</a>-->
                <a href="/tags/hugo">Хьюго</a>
              </li>
            </ul>
          </div>
          <div class="post-thumb">
            <!--<img class="img-responsive" src="/img/hugo_php_n.jpg" alt="Примеры использования PHP с Hugo">-->

            
              <!-- (images.GaussianBlur 1) 
              ($img.Filter (slice images.Grayscale (images.Process "resize 234x webp q85 Lanczos") )).RelPermalink }}  234w,
              ($img.Process "resize 456x q85 webp #fff lanczos").RelPermalink }}  324w,
              sizes="(min-width: 1400px) 636px, (min-width: 1200px) 546px, (min-width: 1000px) 456px, (min-width: 780px) 324px, (min-width: 580px) 296px, calc(100vw - 88px)"
              
              -->
              <img  fetchpriority="high"  class="img-responsive" srcset='
                /demo/primery-ispolzovaniya-php-s-hugo/img/hugo_php_n_hu4967336618160166344.webp  456w,
                /demo/primery-ispolzovaniya-php-s-hugo/img/hugo_php_n_hu8801466131507151523.webp  516w,
                /demo/primery-ispolzovaniya-php-s-hugo/img/hugo_php_n_hu1198265706889351277.webp  616w,
                /demo/primery-ispolzovaniya-php-s-hugo/img/hugo_php_n_hu5562215528715105877.webp  736w,
                /demo/primery-ispolzovaniya-php-s-hugo/img/hugo_php_n_hu6605586790767213047.webp  856w
                ' sizes="(min-width: 1400px) 856px, (min-width: 1200px) 736px, (min-width: 1000px) 616px, (min-width: 780px) 456px, (min-width: 580px) 516px , calc(100vw - 24px)" src="/demo/primery-ispolzovaniya-php-s-hugo/img/hugo_php_n.jpg" width="1920" height="1080" alt="Примеры использования PHP с Hugo"    loading="eager" >
          </div>

          
            <div class="mt-4 mb-3 box-shadow" >
              <h3>Содержание:</h3>
              <nav id="TableOfContents">
  <ul>
    <li>
      <ul>
        <li>
          <ul>
            <li><a href="#примеры-вызова-файлов-php-в-шаблоне-singlephp">Примеры вызова файлов <strong>PHP</strong> в шаблоне single.php</a>
              <ul>
                <li><a href="#php_test_01php"><em>php_test_01.php</em></a></li>
                <li><a href="#php_test_02php"><em>php_test_02.php</em></a></li>
              </ul>
            </li>
            <li><a href="#пример-получения-доступа-к-переменным-сайта-в-shortcode">Пример получения доступа к переменным сайта в <strong>shortcode</strong></a></li>
            <li><a href="#пример-передачи-параметра-front-matter-в-шорткод">Пример передачи параметра <strong>front matter</strong> в шорткод</a></li>
            <li><a href="#пример-передачи-параметра-сайта-в-шорткод">Пример передачи параметра сайта в шорткод</a></li>
            <li><a href="#пример-вызова-php-в-шорткоде">Пример вызова <strong>PHP</strong> в <em>шорткоде</em></a></li>
            <li><a href="#пример-доступа-к-переменным-и-параметрам-hugo-из-кода-php-в-шорткоде">Пример доступа к переменным и параметрам Hugo из кода <strong>PHP</strong> в <em>шорткоде</em></a></li>
            <li><a href="#пример-создания-токена">Пример создания токена:</a></li>
            <li><a href="#пример-использования-php-в-шаблоне-hugo">Пример использования PHP в шаблоне Hugo</a></li>
          </ul>
        </li>
      </ul>
    </li>
  </ul>
</nav>
            </div>
          

          <div class="post-content post-excerpt">
          <b id="id01">Demo 01</b><br>
          <?php
// https://www.geeksforgeeks.org/how-to-detect-browser-language-in-php/
// Как определить язык браузера в PHP?
echo 'Detect Browser Language in PHP - ';
echo '<em><strong>' . substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2) . '</strong></em>';
echo '<br>';
// Если на вашем сайте есть разные страницы для разных языков , вы можете использовать этот метод для перенаправления страницы в соответствии с языком браузера пользователя.

  // $lang = substr($_SERVER['HTTP_ACCEPT_LANGUAGE'], 0, 2);

  // // Redirect browser 
  // header("Location: https://www.geeksforgeeks.org/" . $lang . "/index.php");    
  // exit;

  // ------------------------------------------------------------------

// https://www.codexworld.com/mobile-device-detection-in-php/
// Check if the "mobile" word exists in User-Agent 
// $useragent = $_SERVER [ 'HTTP_USER_AGENT' ];  
$useragent = $_SERVER["HTTP_USER_AGENT"]; 
$isMob = is_numeric(strpos(strtolower($useragent), "mobile")); 
  
// Check if the "tablet" word exists in User-Agent 
$isTab = is_numeric(strpos(strtolower($useragent), "tablet")); 
 
// Platform check  
$isWin = is_numeric(strpos(strtolower($useragent), "windows")); 
$isAndroid = is_numeric(strpos(strtolower($useragent), "android")); 
$isIPhone = is_numeric(strpos(strtolower($useragent), "iphone")); 
$isIPad = is_numeric(strpos(strtolower($useragent), "ipad")); 
$isIOS = $isIPhone || $isIPad; 
 
if($isMob){ 
    if($isTab){ 
        echo 'Using <em><strong>Tablet</strong></em> Device'; 
    }else{ 
        echo 'Using <em><strong>Mobile</strong></em> Device'; 
    } 
}else{ 
    echo 'Using <em><strong>Desktop</strong></em>'; 
} 

echo '<br> Detect platform - ';
if($isIOS){ 
    echo '<em><strong>iOS</strong></em>'; 
}elseif($isAndroid){ 
    echo '<em><strong>ANDROID</strong></em>'; 
}elseif($isWin){ 
    echo '<em><strong>WINDOWS</strong></em>'; 
}
            ?>

<br>
<br>

          <b id="id02">Demo 02</b><br>  
          <?php
// Как получить IP-адрес клиента в PHP
// How to get the client IP address in PHP
// https://stackoverflow.com/questions/3003145/how-to-get-the-client-ip-address-in-php

//$_SERVER['REMOTE_ADDR'] - This contains the real IP address of the client. That is the most reliable value you can find from the user.';
echo "REMOTE_ADDR - ";
if (!empty($_SERVER['REMOTE_ADDR'])) {
	echo '<em><strong>' . $_SERVER['REMOTE_ADDR'] . '</strong></em>';}
else {
	echo "<em><strong>UNKNOWN</strong></em>";}
echo '<br>';

//$_SERVER['HTTP_CLIENT_IP'] - This will fetch the IP address when the user is from shared Internet services. 
echo "HTTP_CLIENT_IP - ";
if (!empty($_SERVER['HTTP_CLIENT_IP'])) {
	echo '<em><strong>' . $_SERVER['HTTP_CLIENT_IP'] . '</strong></em>';}
else {
	echo "<em><strong>UNKNOWN</strong></em>";}

echo '<br>';

	//$_SERVER['HTTP_X_FORWARDED_FOR'] - This will fetch the IP address from the user when he/she is behind the proxy.
	echo "HTTP_X_FORWARDED_FOR - ";
if (!empty($_SERVER['HTTP_X_FORWARDED'])) {
	echo '<em><strong>' . $_SERVER['HTTP_X_FORWARDED_FOR'] . '</strong></em>';}
else {
	echo "<em><strong>UNKNOWN</strong></em>";}
echo '<br>';
            ?>

<br>
<!-- ----------------------- -->
<br>
  

          <p>Для демонстрации примеров использования PHP с Hugo, необходимо чтобы на сервере вашего хостинга была обеспечена поддержка PHP!</p>
<div  class='php'   title='Demo PHP' >
<?php echo 'Текущая версия PHP - <em><strong>' . phpversion() . '</em></strong>'; ?>
</div>  
<blockquote>
<p>[!NOTE]
Прежде чем просматривать представленные здесь примеры, рекомендуется ознакомиться со статьей <a href="/blog/ispolzovanie-php-v-hugo/" title="Использование PHP в Hugo">&ldquo;Использование PHP в Hugo&rdquo;</a></p>
</blockquote>
<h4 id="примеры-вызова-файлов-php-в-шаблоне-singlephp">Примеры вызова файлов <strong>PHP</strong> в шаблоне single.php</h4>
<p>Исполняемые PHP-коды находятся в файлах:</p>
<h5 id="php_test_01php"><em>php_test_01.php</em></h5>
<p>Программа определяет язык вашего текущего браузера, тип устройства (мобильное устройство/планшет/настольный компьютер) и платформу (windows/android/iOS) с помощью PHP.
Создайте <code>static/php/php_test_01.php</code>:</p>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-php" data-lang="php"><span style="display:flex;"><span><span style="color:#f92672">&lt;?</span><span style="color:#a6e22e">php</span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">echo</span> <span style="color:#e6db74">&#39;Detect Browser Language in PHP - &#39;</span>;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">echo</span> <span style="color:#e6db74">&#39;&lt;em&gt;&lt;strong&gt;&#39;</span> <span style="color:#f92672">.</span> <span style="color:#a6e22e">substr</span>($_SERVER[<span style="color:#e6db74">&#39;HTTP_ACCEPT_LANGUAGE&#39;</span>], <span style="color:#ae81ff">0</span>, <span style="color:#ae81ff">2</span>) <span style="color:#f92672">.</span> <span style="color:#e6db74">&#39;&lt;/strong&gt;&lt;/em&gt;&#39;</span>;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">echo</span> <span style="color:#e6db74">&#39;&lt;br&gt;&#39;</span>;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#75715e">// Check if the &#34;mobile&#34; word exists in User-Agent 
</span></span></span><span style="display:flex;"><span><span style="color:#75715e">// $useragent = $_SERVER [ &#39;HTTP_USER_AGENT&#39; ];  
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>$useragent <span style="color:#f92672">=</span> $_SERVER[<span style="color:#e6db74">&#34;HTTP_USER_AGENT&#34;</span>]; 
</span></span><span style="display:flex;"><span>$isMob <span style="color:#f92672">=</span> <span style="color:#a6e22e">is_numeric</span>(<span style="color:#a6e22e">strpos</span>(<span style="color:#a6e22e">strtolower</span>($useragent), <span style="color:#e6db74">&#34;mobile&#34;</span>)); 
</span></span><span style="display:flex;"><span>  
</span></span><span style="display:flex;"><span><span style="color:#75715e">// Check if the &#34;tablet&#34; word exists in User-Agent 
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>$isTab <span style="color:#f92672">=</span> <span style="color:#a6e22e">is_numeric</span>(<span style="color:#a6e22e">strpos</span>(<span style="color:#a6e22e">strtolower</span>($useragent), <span style="color:#e6db74">&#34;tablet&#34;</span>)); 
</span></span><span style="display:flex;"><span> 
</span></span><span style="display:flex;"><span><span style="color:#75715e">// Platform check  
</span></span></span><span style="display:flex;"><span><span style="color:#75715e"></span>$isWin <span style="color:#f92672">=</span> <span style="color:#a6e22e">is_numeric</span>(<span style="color:#a6e22e">strpos</span>(<span style="color:#a6e22e">strtolower</span>($useragent), <span style="color:#e6db74">&#34;windows&#34;</span>)); 
</span></span><span style="display:flex;"><span>$isAndroid <span style="color:#f92672">=</span> <span style="color:#a6e22e">is_numeric</span>(<span style="color:#a6e22e">strpos</span>(<span style="color:#a6e22e">strtolower</span>($useragent), <span style="color:#e6db74">&#34;android&#34;</span>)); 
</span></span><span style="display:flex;"><span>$isIPhone <span style="color:#f92672">=</span> <span style="color:#a6e22e">is_numeric</span>(<span style="color:#a6e22e">strpos</span>(<span style="color:#a6e22e">strtolower</span>($useragent), <span style="color:#e6db74">&#34;iphone&#34;</span>)); 
</span></span><span style="display:flex;"><span>$isIPad <span style="color:#f92672">=</span> <span style="color:#a6e22e">is_numeric</span>(<span style="color:#a6e22e">strpos</span>(<span style="color:#a6e22e">strtolower</span>($useragent), <span style="color:#e6db74">&#34;ipad&#34;</span>)); 
</span></span><span style="display:flex;"><span>$isIOS <span style="color:#f92672">=</span> $isIPhone <span style="color:#f92672">||</span> $isIPad; 
</span></span><span style="display:flex;"><span> 
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span>($isMob){ 
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">if</span>($isTab){ 
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">echo</span> <span style="color:#e6db74">&#39;Using &lt;em&gt;&lt;strong&gt;Tablet&lt;/strong&gt;&lt;/em&gt; Device&#39;</span>; 
</span></span><span style="display:flex;"><span>    }<span style="color:#66d9ef">else</span>{ 
</span></span><span style="display:flex;"><span>        <span style="color:#66d9ef">echo</span> <span style="color:#e6db74">&#39;Using &lt;em&gt;&lt;strong&gt;Mobile&lt;/strong&gt;&lt;/em&gt; Device&#39;</span>; 
</span></span><span style="display:flex;"><span>    } 
</span></span><span style="display:flex;"><span>}<span style="color:#66d9ef">else</span>{ 
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">echo</span> <span style="color:#e6db74">&#39;Using &lt;em&gt;&lt;strong&gt;Desktop&lt;/strong&gt;&lt;/em&gt;&#39;</span>; 
</span></span><span style="display:flex;"><span>} 
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">echo</span> <span style="color:#e6db74">&#39;&lt;br&gt; Detect platform - &#39;</span>;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span>($isIOS){ 
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">echo</span> <span style="color:#e6db74">&#39;&lt;em&gt;&lt;strong&gt;iOS&lt;/strong&gt;&lt;/em&gt;&#39;</span>; 
</span></span><span style="display:flex;"><span>}<span style="color:#66d9ef">elseif</span>($isAndroid){ 
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">echo</span> <span style="color:#e6db74">&#39;&lt;em&gt;&lt;strong&gt;ANDROID&lt;/strong&gt;&lt;/em&gt;&#39;</span>; 
</span></span><span style="display:flex;"><span>}<span style="color:#66d9ef">elseif</span>($isWin){ 
</span></span><span style="display:flex;"><span>    <span style="color:#66d9ef">echo</span> <span style="color:#e6db74">&#39;&lt;em&gt;&lt;strong&gt;WINDOWS&lt;/strong&gt;&lt;/em&gt;&#39;</span>; 
</span></span><span style="display:flex;"><span>}
</span></span><span style="display:flex;"><span>            <span style="color:#75715e">?&gt;</span><span style="color:#960050;background-color:#1e0010">
</span></span></span></code></pre></div><p><em>Использование</em>:</p>
<pre tabindex="0"><code>{{ define &#34;main&#34; }}
&lt;section class=&#34;container&#34;&gt;
  &lt;h1&gt;{{ .Title }}&lt;/h1&gt;

  {{ readFile &#34;static/php/php_test_01.php&#34; | safeHTML }}
  ...
  {{ .Content }}

&lt;/section&gt;
{{end}}
</code></pre><p><a href="#id01" title="Результат работы php_test_01.php"><em>Результат&hellip;</em></a></p>
<h5 id="php_test_02php"><em>php_test_02.php</em></h5>
<p>Программа определяет IP-адрес клиента c помощью PHP</p>
<ul>
<li><code>$_SERVER[&lsquo;REMOTE_ADDR&rsquo;]</code> определяет реальный IP-адрес подключающейся стороны. Это самое надежное значение, которое вы можете найти.</li>
<li><code>$_SERVER[&lsquo;HTTP_CLIENT_IP&rsquo;]</code> определяет IP-адрес, когда пользователь находится в общедоступных интернет-сервисах, но это значение легко подделать.</li>
<li><code>$_SERVER[&lsquo;HTTP_X_FORWARDED_FOR&rsquo;]</code> определяет IP-адрес пользователя, когда он/она находится за прокси-сервером (это значение легко подделать).<br>
Создайте <code>static/php/php_test_02.php</code>:</li>
</ul>
<div class="highlight"><pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;"><code class="language-php" data-lang="php"><span style="display:flex;"><span><span style="color:#f92672">&lt;?</span><span style="color:#a6e22e">php</span>
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">echo</span> <span style="color:#e6db74">&#34;REMOTE_ADDR - &#34;</span>;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span> (<span style="color:#f92672">!</span><span style="color:#66d9ef">empty</span>($_SERVER[<span style="color:#e6db74">&#39;REMOTE_ADDR&#39;</span>])) {
</span></span><span style="display:flex;"><span>	<span style="color:#66d9ef">echo</span> <span style="color:#e6db74">&#39;&lt;em&gt;&lt;strong&gt;&#39;</span> <span style="color:#f92672">.</span> $_SERVER[<span style="color:#e6db74">&#39;REMOTE_ADDR&#39;</span>] <span style="color:#f92672">.</span> <span style="color:#e6db74">&#39;&lt;/strong&gt;&lt;/em&gt;&#39;</span>;}
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">else</span> {
</span></span><span style="display:flex;"><span>	<span style="color:#66d9ef">echo</span> <span style="color:#e6db74">&#34;&lt;em&gt;&lt;strong&gt;UNKNOWN&lt;/strong&gt;&lt;/em&gt;&#34;</span>;}
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">echo</span> <span style="color:#e6db74">&#39;&lt;br&gt;&#39;</span>;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">echo</span> <span style="color:#e6db74">&#34;HTTP_CLIENT_IP - &#34;</span>;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span> (<span style="color:#f92672">!</span><span style="color:#66d9ef">empty</span>($_SERVER[<span style="color:#e6db74">&#39;HTTP_CLIENT_IP&#39;</span>])) {
</span></span><span style="display:flex;"><span>	<span style="color:#66d9ef">echo</span> <span style="color:#e6db74">&#39;&lt;em&gt;&lt;strong&gt;&#39;</span> <span style="color:#f92672">.</span> $_SERVER[<span style="color:#e6db74">&#39;HTTP_CLIENT_IP&#39;</span>] <span style="color:#f92672">.</span> <span style="color:#e6db74">&#39;&lt;/strong&gt;&lt;/em&gt;&#39;</span>;}
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">else</span> {
</span></span><span style="display:flex;"><span>	<span style="color:#66d9ef">echo</span> <span style="color:#e6db74">&#34;&lt;em&gt;&lt;strong&gt;UNKNOWN&lt;/strong&gt;&lt;/em&gt;&#34;</span>;}
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">echo</span> <span style="color:#e6db74">&#39;&lt;br&gt;&#39;</span>;
</span></span><span style="display:flex;"><span>
</span></span><span style="display:flex;"><span>	<span style="color:#66d9ef">echo</span> <span style="color:#e6db74">&#34;HTTP_X_FORWARDED_FOR - &#34;</span>;
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">if</span> (<span style="color:#f92672">!</span><span style="color:#66d9ef">empty</span>($_SERVER[<span style="color:#e6db74">&#39;HTTP_X_FORWARDED&#39;</span>])) {
</span></span><span style="display:flex;"><span>	<span style="color:#66d9ef">echo</span> <span style="color:#e6db74">&#39;&lt;em&gt;&lt;strong&gt;&#39;</span> <span style="color:#f92672">.</span> $_SERVER[<span style="color:#e6db74">&#39;HTTP_X_FORWARDED_FOR&#39;</span>] <span style="color:#f92672">.</span> <span style="color:#e6db74">&#39;&lt;/strong&gt;&lt;/em&gt;&#39;</span>;}
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">else</span> {
</span></span><span style="display:flex;"><span>	<span style="color:#66d9ef">echo</span> <span style="color:#e6db74">&#34;&lt;em&gt;&lt;strong&gt;UNKNOWN&lt;/strong&gt;&lt;/em&gt;&#34;</span>;}
</span></span><span style="display:flex;"><span><span style="color:#66d9ef">echo</span> <span style="color:#e6db74">&#39;&lt;br&gt;&#39;</span>;
</span></span><span style="display:flex;"><span>            <span style="color:#75715e">?&gt;</span><span style="color:#960050;background-color:#1e0010">
</span></span></span></code></pre></div><p><em>Использование</em>:</p>
<pre tabindex="0"><code>{{ define &#34;main&#34; }}
&lt;section class=&#34;container&#34;&gt;
  &lt;h1&gt;{{ .Title }}&lt;/h1&gt;

  ...
  {{ readFile &#34;static/php/php_test_02.php&#34; | safeHTML }}
  {{ .Content }}

&lt;/section&gt;
{{end}}
</code></pre><p><a href="#id02" title="Результат работы php_test_02.php"><em>Результат&hellip;</em></a>
<br></p>
<h4 id="пример-получения-доступа-к-переменным-сайта-в-shortcode">Пример получения доступа к переменным сайта в <strong>shortcode</strong></h4>
<p>Создайте <em>shortcode</em> <code>layouts/shortcodes/siteurl.html</code>:</p>
<pre tabindex="0"><code>{{ .Page.Site.BaseURL }}
</code></pre><p><em>Использование</em>:</p>
<pre tabindex="0"><code>---
# front-matter
---
1. Go to your site&#39;s url {{&lt; siteurl &gt;}}
2. ...
</code></pre><p><em>Результат</em>:</p>
<pre tabindex="0"><code>1. Go to your site&#39;s url /
2. ...
</code></pre><br>
<h4 id="пример-передачи-параметра-front-matter-в-шорткод">Пример передачи параметра <strong>front matter</strong> в шорткод</h4>
<p>Создайте <em>shortcode</em> <code>layouts/shortcodes/param_page.html</code>:</p>
<pre tabindex="0"><code>{{- with index .Page.Params (.Get 0 ) -}}
{{- . -}}
{{- end -}}
</code></pre><p><em>Использование</em>:</p>
<pre tabindex="0"><code>---
# front-matter
---
1. Title: {{% param_page &#34;title&#34; %}}
2. Authors: ({{% param_page &#34;author&#34; %}})
</code></pre><p><em>Результат</em>:</p>
<pre tabindex="0"><code>1. Title: Примеры использования PHP с Hugo
2. Authors: [tim]
</code></pre><br>
<h4 id="пример-передачи-параметра-сайта-в-шорткод">Пример передачи параметра сайта в шорткод</h4>
<p>Создайте <em>shortcode</em> <code>layouts/shortcodes/param_site.html</code>:</p>
<pre tabindex="0"><code>{{- with index .Page.Site.Params (.Get 0 ) -}}
{{- . -}}
{{- end -}}
</code></pre><p><em>Использование</em>:</p>
<pre tabindex="0"><code>---
# front-matter
---
1. copyright: ({{% param_site &#34;copyright&#34; %}})
2. description: {{% param_site &#34;description&#34; %}}
</code></pre><p><em>Результат</em>:</p>
<pre tabindex="0"><code>1. copyright: © WebPractica, 2024
2. description: Мы поможем вам создать быстрый и безопасный веб-сайт с использованием Hugo, генератором статических сайтов, написанным на Go.
</code></pre><br>
<h4 id="пример-вызова-php-в-шорткоде">Пример вызова <strong>PHP</strong> в <em>шорткоде</em></h4>
<p>Создайте <em>shortcode</em> <code>layouts/shortcodes/php.html</code>:</p>
<pre tabindex="0"><code>&lt;div {{ if ( .Get &#34;class&#34; ) }} class=&#39;{{ .Get &#34;class&#34; }}&#39; {{ end }} {{ if ( .Get &#34;title&#34; ) }} title=&#39;{{ .Get &#34;title&#34; }}&#39; {{ end }}&gt;
  {{ .Inner | safeHTML }}
&lt;/div&gt;
</code></pre><p><em>Использование</em>:</p>
<pre tabindex="0"><code>{{&lt; php &gt;}}
&lt;?php
  echo &#39;Your browser: &lt;br&gt;&#39; . $_SERVER[&#39;HTTP_USER_AGENT&#39;];
?&gt;
{{&lt; /php &gt;}}
</code></pre><div  >
<p><em>Результат</em>:</p>
<?php
  echo 'Your browser: <br>' . $_SERVER['HTTP_USER_AGENT'];
?>
</div>
<br>
<h4 id="пример-доступа-к-переменным-и-параметрам-hugo-из-кода-php-в-шорткоде">Пример доступа к переменным и параметрам Hugo из кода <strong>PHP</strong> в <em>шорткоде</em></h4>
<p>В шорткоде <code>php</code>, для получения значений переменных и параметров Hugo используем шорткоды: <code>param_page</code>, <code>param_site</code> и <code>siteurl</code> (код шорткодов приведен выше).</p>
<p><em>Использование</em>:</p>
<pre tabindex="0"><code>{{% php class=&#34;php&#34; title=&#34;Demo PHP&#34; %}}
&lt;?php
$mem_php_title=&#39;{{% param_page &#34;title&#34; %}}&#39;;
echo &#39;Title: &#39; . &#39;{{% param_page &#34;title&#34; %}}&#39;;
echo &#39;&lt;br&gt;Authors: &#39; . &#39;{{% param_page &#34;author&#34; %}}&#39; . &#39; on the site &#39; . &#39;{{&lt; siteurl &gt;}}&#39;;
echo &#39;&lt;br&gt;Copyright: &#39; . &#39;{{% param_site &#34;copyright&#34; %}}&#39;;
?&gt;
&lt;br&gt;&lt;br&gt;
{{% /php %}}
</code></pre><p><em>Результат</em>:</p>
<div  class='php'   title='Demo PHP' >
<?php
$mem_php_title='Примеры использования PHP с Hugo';
echo 'Title: ' . 'Примеры использования PHP с Hugo';
echo '<br>Authors: ' . '[tim]' . ' on the site ' . '/';
echo '<br>Copyright: ' . '© WebPractica, 2024';
?><br>
<br>
</div>
<h4 id="пример-создания-токена">Пример создания токена:</h4>
<p>Пример рассмотрен на форуме - <a href="https://discourse.gohugo.io/t/how-can-i-include-php-code-in-hugo/28589" title="Как включить PHP-код для генерации токенов" target="_blank" rel="nofollow noopener noreferrer">Как я могу включить PHP-код в Hugo?</a></p>
<p>Добавляем перед HTML-кодом в <code>baseof.php</code> и сохраняем строку в переменной сеанса <code>($_SESSION[&rsquo;token&rsquo;])</code>:</p>
<pre tabindex="0"><code>&lt;?php
session_start(); if (empty($_SESSION[&#39;token&#39;])) {$_SESSION[&#39;token&#39;] = bin2hex(random_bytes(32));}
?&gt;
</code></pre><p>Выполняем шорткод <code>php</code>:</p>
<pre tabindex="0"><code>{{&lt; php &gt;}}
&lt;?php
if (empty($_SESSION[&#39;token&#39;])) {$_SESSION[&#39;token&#39;] = bin2hex(random_bytes(32));}$token = $_SESSION[&#39;token&#39;]; $_SESSION[&#34;author&#34;] = &#34;[tim]&#34;; echo &#39;&lt;small&gt;Token: &#39; . $token . &#39;&lt;br&gt;&#39;; print_r($_SESSION) . &#39;&lt;/small&gt;&#39;;
?&gt;
{{&lt; /php &gt;}}
</code></pre><p>Пример результата:<br>
<small>
Token: e7d88d1e9f3146d7dc8a061f56a39fefeb4e013c6b25c3134a26e1b5b6bbc359<br>
Array ( [token] =&gt; e7d88d1e9f3146d7dc8a061f56a39fefeb4e013c6b25c3134a26e1b5b6bbc359 [author] =&gt; [tim] )</small>
<br><br></p>
<h4 id="пример-использования-php-в-шаблоне-hugo">Пример использования PHP в шаблоне Hugo</h4>
<p>Вставьте <strong>PHP</strong> в шаблон <code>Single.php</code></p>
<pre tabindex="0"><code>  &lt;?php
  echo &#39;Your browser: &lt;br&gt;&#39; . $_SERVER[&#39;HTTP_USER_AGENT&#39;];
  echo &#39;&lt;br&gt;Author: &#39; . &#39;{{ .Params.author }}&#39;;
  ?&gt;
</code></pre><p><em>Результат</em>:</p>


            <?php
            echo 'Your browser: <br>' . $_SERVER['HTTP_USER_AGENT'];
            echo '<br>Author: ' . '[tim]';
            ?>

          </div>
          
        </div>
      </div>
      <div class="col-md-4 box-shadow">
        <aside class="sidebar"><div class="widget widget-latest-post">
    <h4 class="widget-title">Последние статьи</h4>
    
    
    <div class="media">
      
      
      
      
      
        <a class="pull-left" href="/blog/kak-nastroit-open-server-panel-versii-6-dlya-otpravki-email-na-php-cherez-vneshnij-smtp-server/">
        
        
        
        <img class="media-object"  class="img-responsive" srcset='
        /blog/kak-nastroit-open-server-panel-versii-6-dlya-otpravki-email-na-php-cherez-vneshnij-smtp-server/img/send_mail_2_hu10142386793972310974.webp  100w,
        /blog/kak-nastroit-open-server-panel-versii-6-dlya-otpravki-email-na-php-cherez-vneshnij-smtp-server/img/send_mail_2_hu2130432444449772342.webp  200w
        ' sizes="(min-width: 1400px) 100px, (min-width: 1200px) 100px, (min-width: 1000px) 100px, (min-width: 780px) 100px, (min-width: 580px) 100px" src="/blog/kak-nastroit-open-server-panel-versii-6-dlya-otpravki-email-na-php-cherez-vneshnij-smtp-server/img/send_mail_2.jpg" width="1344" height="768" alt="Как настроить Open Server Panel версии 6 для отправки email на PHP через внешний SMTP-сервер"   loading="lazy" >
        </a>


      <div class="media-body">
        <h4 class="media-heading"><a href="/blog/kak-nastroit-open-server-panel-versii-6-dlya-otpravki-email-na-php-cherez-vneshnij-smtp-server/">Как настроить Open Server Panel версии 6 для отправки email на PHP через внешний SMTP-сервер</a></h4>
        <p>Для отправки email в PHP используется фунция …</p>
      </div>
    </div>
    
    <div class="media">
      
      
      
      
      
        <a class="pull-left" href="/blog/ispolzovanie-php-v-hugo/">
        
        
        
        <img class="media-object"  class="img-responsive" srcset='
        /blog/ispolzovanie-php-v-hugo/img/ispolzovanie-php-v-hugo-ru_hu3183712724179607827.webp  100w,
        /blog/ispolzovanie-php-v-hugo/img/ispolzovanie-php-v-hugo-ru_hu1051430961183707971.webp  200w
        ' sizes="(min-width: 1400px) 100px, (min-width: 1200px) 100px, (min-width: 1000px) 100px, (min-width: 780px) 100px, (min-width: 580px) 100px" src="/blog/ispolzovanie-php-v-hugo/img/ispolzovanie-php-v-hugo-ru.png" width="1920" height="1080" alt="Использование PHP в Hugo"   loading="lazy" >
        </a>


      <div class="media-body">
        <h4 class="media-heading"><a href="/blog/ispolzovanie-php-v-hugo/">Использование PHP в Hugo</a></h4>
        <p>Существуют ограничения на использование …</p>
      </div>
    </div>
    
    <div class="media">
      
      
      
      
      
        <a class="pull-left" href="/blog/ispolzovanie-veb-servera-php-lokalno-c-hugo/">
        
        
        
        <img class="media-object"  class="img-responsive" srcset='
        /blog/ispolzovanie-veb-servera-php-lokalno-c-hugo/img/forward-businessman-globe-world-europe-africa-1434861-pxhere.com_hu16548886650239203714.webp  100w,
        /blog/ispolzovanie-veb-servera-php-lokalno-c-hugo/img/forward-businessman-globe-world-europe-africa-1434861-pxhere.com_hu2784968958037376803.webp  200w
        ' sizes="(min-width: 1400px) 100px, (min-width: 1200px) 100px, (min-width: 1000px) 100px, (min-width: 780px) 100px, (min-width: 580px) 100px" src="/blog/ispolzovanie-veb-servera-php-lokalno-c-hugo/img/forward-businessman-globe-world-europe-africa-1434861-pxhere.com.jpg" width="1835" height="1200" alt="Использование веб-сервера PHP локально c Hugo"   loading="lazy" >
        </a>


      <div class="media-body">
        <h4 class="media-heading"><a href="/blog/ispolzovanie-veb-servera-php-lokalno-c-hugo/">Использование веб-сервера PHP локально c Hugo</a></h4>
        <p>Если PHP будет использоваться в Hugo, например, …</p>
      </div>
    </div>
    
    <div class="media">
      
      
      
      
      
        <a class="pull-left" href="/blog/razmeshchenie-veb-sajta-hugo-na-hostinge-s-pomoshchyu-rsync/">
        
        
        
        <img class="media-object"  class="img-responsive" srcset='
        /blog/razmeshchenie-veb-sajta-hugo-na-hostinge-s-pomoshchyu-rsync/img/computer-cloud-technology-web-internet-machine-1116555-pxhere.com_hu15868093781272808198.webp  100w,
        /blog/razmeshchenie-veb-sajta-hugo-na-hostinge-s-pomoshchyu-rsync/img/computer-cloud-technology-web-internet-machine-1116555-pxhere.com_hu6153053724525264035.webp  200w
        ' sizes="(min-width: 1400px) 100px, (min-width: 1200px) 100px, (min-width: 1000px) 100px, (min-width: 780px) 100px, (min-width: 580px) 100px" src="/blog/razmeshchenie-veb-sajta-hugo-na-hostinge-s-pomoshchyu-rsync/img/computer-cloud-technology-web-internet-machine-1116555-pxhere.com.jpg" width="2160" height="1440" alt="Размещение веб-сайта Hugo на хостинге с помощью Rsync"   loading="lazy" >
        </a>


      <div class="media-body">
        <h4 class="media-heading"><a href="/blog/razmeshchenie-veb-sajta-hugo-na-hostinge-s-pomoshchyu-rsync/">Размещение веб-сайта Hugo на хостинге с помощью Rsync</a></h4>
        <p>Генератор статических файлов Hugo может быть …</p>
      </div>
    </div>
    
  </div>
<div class="widget widget-category">
  <h4 class="widget-title">Категории</h4>
  <ul class="widget-category-list">
    <li><a href="/categories/razrabotka/">Разработка<sup class="badge ms-2 ps-2 pt-1 pb-1 pe-2 text-bg-secondary translate-middle rounded-pill">4</sup></a></li>
    <li><a href="/categories/tekhnicheskaya-podderzhka/">Техническая поддержка<sup class="badge ms-2 ps-2 pt-1 pb-1 pe-2 text-bg-secondary translate-middle rounded-pill">1</sup></a></li>
  </ul>
</div>
<div class="widget widget-tag">
  <h4 class="widget-title">Теги</h4>
  <ul class="widget-tag-list">
    <li><a href="/tags/hugo/">Хьюго<sup class="badge ms-2 ps-2 pt-1 pb-1 pe-2 text-bg-secondary translate-middle rounded-pill">5</sup></a></li>
    <li><a href="/tags/php/">php<sup class="badge ms-2 ps-2 pt-1 pb-1 pe-2 text-bg-secondary translate-middle rounded-pill">3</sup></a></li>
    <li><a href="/tags/settings/">Настройки<sup class="badge ms-2 ps-2 pt-1 pb-1 pe-2 text-bg-secondary translate-middle rounded-pill">4</sup></a></li>
  </ul>
</div>
</aside>

      </div>
    </div>
  </div>
</section>





	</main>

	<!-- cache partial only in production -->
	
	<footer class="footer">
  <div class="container">
    <div class="row">
      <div class="col-md-12">

        
        
        
        
        
        
          
        
          
            
              
                <section class="container_footer">
    <h2>Этот сайт был создан с использованием бесплатных инструментов </h2>
    <div class="data_footer pt-3 pb-2">

        
            <a href="https://gohugo.io" class="logo" target="_blank" rel="nofollow noreferrer noopener">
                
                    
                    
                    <img  fetchpriority="low"   src='/images/footer/hugo-logo_hu1472892126594225432.webp' width="268" height="70" class="img-responsive" alt="Логотип Hugo" title="Генератор статических сайтов Hugo"  loading="lazy" >
                
            </a>
        
            <a href="https://discourse.gohugo.io/" class="logo" target="_blank" rel="nofollow noreferrer noopener">
                
                    
                    
                    <img  fetchpriority="low"   src='/images/footer/hugoforum_hu12355212928739054713.webp' width="135" height="70" class="img-responsive" alt="Форум Hugo" title="Форум Hugo"  loading="lazy" >
                
            </a>
        
            <a href="https://getbootstrap.com" class="logo" target="_blank" rel="nofollow noreferrer noopener">
                
                    
                    
                    <img  fetchpriority="low"   src='/images/footer/bootstrap-logo_hu11667520873959985094.webp' width="88" height="70" class="img-responsive" alt="Логотип Bootstrap" title="Bootstrap 5"  loading="lazy" >
                
            </a>
        
            <a href="https://code.visualstudio.com/" class="logo" target="_blank" rel="nofollow noreferrer noopener">
                
                    
                    
                    <img  fetchpriority="low"   src='/images/footer/visualstudio-code-logo_hu17338707535885598113.webp' width="70" height="70" class="img-responsive" alt="Visualstudio-Code Logo" title="Visualstudio-Code"  loading="lazy" >
                
            </a>
        
            <a href="https://decapcms.org/" class="logo" target="_blank" rel="nofollow noreferrer noopener">
                
                    
                    
                    <img  fetchpriority="low"   src='/images/footer/decap-logo_hu14021954088602530849.webp' width="243" height="70" class="img-responsive" alt="CMS Decap Logo" title="Система управления контентом Decap"  loading="lazy" >
                
            </a>
        
            <a href="https://www.google.com/intl/ru_ru/chrome/" class="logo" target="_blank" rel="nofollow noreferrer noopener">
                
                    
                    
                    <img  fetchpriority="low"   src='/images/footer/google-chrome-logo_hu3032081409808161570.webp' width="70" height="70" class="img-responsive" alt="Google Chrome Logo" title="Google Chrome"  loading="lazy" >
                
            </a>
        
            <a href="https://github.com/" class="logo" target="_blank" rel="nofollow noreferrer noopener">
                
                    
                    
                    <img  fetchpriority="low"   src='/images/footer/github-mark_hu17218373858816844149.webp' width="70" height="70" class="img-responsive" alt="GitHub icon" title="GitHub"  loading="lazy" >
                
            </a>
        
            <a href="https://fontawesome.com/" class="logo" target="_blank" rel="nofollow noreferrer noopener">
                
                    
                    
                    <img  fetchpriority="low"   src='/images/footer/fontawesome_hu14638503059308408553.webp' width="74" height="70" class="img-responsive" alt="font awesome" title="Font Awesome"  loading="lazy" >
                
            </a>
        
            <a href="https://www.blender.org/" class="logo" target="_blank" rel="nofollow noreferrer noopener">
                
                    
                    
                    <img  fetchpriority="low"   src='/images/footer/blender_community_badge_orange_hu12439722789741529327.webp' width="54" height="70" class="img-responsive" alt="Blender Badge" title="Blender"  loading="lazy" >
                
            </a>
        


        
</section>    
                
                  
                
                
            
            


        <div class="footer-menu">
          <ul class="menulinks">
            
            <li><a href="/o-nas/">О нас</a></li>
            
            <li><a href="/uslugi/">Услуги</a></li>
            
            <li><a href="/contact/">Контакт</a></li>
            
          </ul>
        </div>
        
          
          

          

        
        <p class="copyright">© Веб практика, 2024</p>
      </div>
    </div>
  </div>
</footer>
	











  
  
  
  


  
    
    
  



<script crossorigin="anonymous" defer="defer" integrity="sha512-KGlcUSzsf635nBJHfzGRSSFhG0NIeg3FTWGxvLih6GqKK/GRROSrHsSBeJQGGqURAOmPAASnqtpdjrUQwRM12g==" type="application/javascript">/*!
  * Bootstrap v5.3.2 (https://getbootstrap.com/)
  * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)
  * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)
  */!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e="undefined"!=typeof globalThis?globalThis:e||self).bootstrap=t()}(this,function(){"use strict";const w=new Map,pt={set(e,t,n){w.has(e)||w.set(e,new Map);const s=w.get(e);s.has(t)||0===s.size?s.set(t,n):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(s.keys())[0]}.`)},get:(e,t)=>w.has(e)&&w.get(e).get(t)||null,remove(e,t){if(!w.has(e))return;const n=w.get(e);n.delete(t),0===n.size&&w.delete(e)}},ft="transitionend",At=e=>(e&&window.CSS&&window.CSS.escape&&(e=e.replace(/#([^\s"#']+)/g,(e,t)=>`#${CSS.escape(t)}`)),e),zt=e=>{e.dispatchEvent(new Event(ft))},j=e=>!!e&&"object"==typeof e&&(void 0!==e.jquery&&(e=e[0]),void 0!==e.nodeType),x=e=>j(e)?e.jquery?e[0]:e:"string"==typeof e&&e.length>0?document.querySelector(At(e)):null,V=e=>{if(!j(e)||0===e.getClientRects().length)return!1;const n="visible"===getComputedStyle(e).getPropertyValue("visibility"),t=e.closest("details:not([open])");if(!t)return n;if(t!==e){const n=e.closest("summary");if(n&&n.parentNode!==t)return!1;if(null===n)return!1}return n},O=e=>!e||e.nodeType!==Node.ELEMENT_NODE||!!e.classList.contains("disabled")||(void 0!==e.disabled?e.disabled:e.hasAttribute("disabled")&&"false"!==e.getAttribute("disabled")),Dt=e=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof e.getRootNode){const t=e.getRootNode();return t instanceof ShadowRoot?t:null}return e instanceof ShadowRoot?e:e.parentNode?Dt(e.parentNode):null},ce=()=>{},oe=e=>{e.offsetHeight},Bt=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,mt=[],d=()=>"rtl"===document.documentElement.dir,u=e=>{var t=()=>{const t=Bt();if(t){const n=e.NAME,s=t.fn[n];t.fn[n]=e.jQueryInterface,t.fn[n].Constructor=e,t.fn[n].noConflict=()=>(t.fn[n]=s,e.jQueryInterface)}};"loading"===document.readyState?(mt.length||document.addEventListener("DOMContentLoaded",()=>{for(const e of mt)e()}),mt.push(t)):t()},o=(e,t=[],n=e)=>"function"==typeof e?e(...t):n,Vt=(e,t,n=!0)=>{if(!n)return void o(e);const a=(e=>{if(!e)return 0;let{transitionDuration:t,transitionDelay:n}=window.getComputedStyle(e);const s=Number.parseFloat(t),o=Number.parseFloat(n);return s||o?(t=t.split(",")[0],n=n.split(",")[0],1e3*(Number.parseFloat(t)+Number.parseFloat(n))):0})(t)+5;let s=!1;const i=({target:n})=>{n===t&&(s=!0,t.removeEventListener(ft,i),o(e))};t.addEventListener(ft,i),setTimeout(()=>{s||zt(t)},a)},ht=(e,t,n,s)=>{const i=e.length;let o=e.indexOf(t);return-1===o?!n&&s?e[i-1]:e[0]:(o+=n?1:-1,s&&(o=(o+i)%i),e[Math.max(0,Math.min(o,i-1))])},Ko=/[^.]*(?=\..*)\.|.*/,Wo=/\..*/,Vo=/::\d+$/,rt={};let Gt=1;const Zt={mouseenter:"mouseover",mouseleave:"mouseout"},Eo=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function hn(e,t){return t&&`${t}::${Gt++}`||e.uidEvent||Gt++}function fn(e){const t=hn(e);return e.uidEvent=t,rt[t]=rt[t]||{},rt[t]}function gn(e,t,n=null){return Object.values(e).find(e=>e.callable===t&&e.delegationSelector===n)}function bn(e,t,n){const o="string"==typeof t,i=o?n:t||n;let s=wn(e);return Eo.has(s)||(s=e),[o,i,s]}function jn(t,n,s,o,i){if("string"!=typeof n||!t)return;let[c,a,l]=bn(n,s,o);if(n in Zt){const e=e=>function(t){if(!t.relatedTarget||t.relatedTarget!==t.delegateTarget&&!t.delegateTarget.contains(t.relatedTarget))return e.call(this,t)};a=e(a)}const u=fn(t),h=u[l]||(u[l]={}),d=gn(h,a,c?s:null);if(d)return void(d.oneOff=d.oneOff&&i);const m=hn(a,n.replace(Ko,"")),r=c?function(t,n,s){return function o(i){const a=t.querySelectorAll(n);for(let{target:r}=i;r&&r!==this;r=r.parentNode)for(const c of a)if(c===r)return Ge(i,{delegateTarget:r}),o.oneOff&&e.off(t,i.type,n,s),s.apply(r,[i])}}(t,s,a):function(t,n){return function s(o){return Ge(o,{delegateTarget:t}),s.oneOff&&e.off(t,o.type,n),n.apply(t,[o])}}(t,a);r.delegationSelector=c?s:null,r.callable=a,r.oneOff=i,r.uidEvent=m,h[m]=r,t.addEventListener(l,r,c)}function Ze(e,t,n,s,o){const i=gn(t[n],s,o);i&&(e.removeEventListener(n,i,Boolean(o)),delete t[n][i.uidEvent])}function uo(e,t,n,s){const o=t[n]||{};for(const[a,i]of Object.entries(o))a.includes(s)&&Ze(e,t,n,i.callable,i.delegationSelector)}function wn(e){return e=e.replace(Wo,""),Zt[e]||e}const e={on(e,t,n,s){jn(e,t,n,s,!1)},one(e,t,n,s){jn(e,t,n,s,!0)},off(e,t,n,s){if("string"!=typeof t||!e)return;const[c,a,i]=bn(t,n,s),l=i!==t,o=fn(e),r=o[i]||{},d=t.startsWith(".");if(void 0===a){if(d)for(const n of Object.keys(o))uo(e,o,n,t.slice(1));for(const[s,n]of Object.entries(r)){const a=s.replace(Vo,"");l&&!t.includes(a)||Ze(e,o,i,n.callable,n.delegationSelector)}}else{if(!Object.keys(r).length)return;Ze(e,o,i,a,c?n:null)}},trigger(e,t,n){if("string"!=typeof t||!e)return null;const i=Bt();let s=null,a=!0,r=!0,c=!1;t!==wn(t)&&i&&(s=i.Event(t,n),i(e).trigger(s),a=!s.isPropagationStopped(),r=!s.isImmediatePropagationStopped(),c=s.isDefaultPrevented());const o=Ge(new Event(t,{bubbles:a,cancelable:!0}),n);return c&&o.preventDefault(),r&&e.dispatchEvent(o),o.defaultPrevented&&s&&s.preventDefault(),o}};function Ge(e,t={}){for(const[n,s]of Object.entries(t))try{e[n]=s}catch{Object.defineProperty(e,n,{configurable:!0,get:()=>s})}return e}function On(e){if("true"===e)return!0;if("false"===e)return!1;if(e===Number(e).toString())return Number(e);if(""===e||"null"===e)return null;if("string"!=typeof e)return e;try{return JSON.parse(decodeURIComponent(e))}catch{return e}}function Ye(e){return e.replace(/[A-Z]/g,e=>`-${e.toLowerCase()}`)}const b={setDataAttribute(e,t,n){e.setAttribute(`data-bs-${Ye(t)}`,n)},removeDataAttribute(e,t){e.removeAttribute(`data-bs-${Ye(t)}`)},getDataAttributes(e){if(!e)return{};const t={},n=Object.keys(e.dataset).filter(e=>e.startsWith("bs")&&!e.startsWith("bsConfig"));for(const o of n){let s=o.replace(/^bs/,"");s=s.charAt(0).toLowerCase()+s.slice(1,s.length),t[s]=On(e.dataset[o])}return t},getDataAttribute:(e,t)=>On(e.getAttribute(`data-bs-${Ye(t)}`))};class Q{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(e){return e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e}_mergeConfigObj(e,t){const n=j(t)?b.getDataAttribute(t,"config"):{};return{...this.constructor.Default,..."object"==typeof n?n:{},...j(t)?b.getDataAttributes(t):{},..."object"==typeof e?e:{}}}_typeCheckConfig(e,t=this.constructor.DefaultType){for(const[s,o]of Object.entries(t)){const i=e[s],a=j(i)?"element":null==(n=i)?`${n}`:Object.prototype.toString.call(n).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(o).test(a))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${s}" provided type "${a}" but expected type "${o}".`)}var n}}class h extends Q{constructor(e,t){super(),(e=x(e))&&(this._element=e,this._config=this._getConfig(t),pt.set(this._element,this.constructor.DATA_KEY,this))}dispose(){pt.remove(this._element,this.constructor.DATA_KEY),e.off(this._element,this.constructor.EVENT_KEY);for(const e of Object.getOwnPropertyNames(this))this[e]=null}_queueCallback(e,t,n=!0){Vt(e,t,n)}_getConfig(e){return e=this._mergeConfigObj(e,this._element),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}static getInstance(e){return pt.get(x(e),this.DATA_KEY)}static getOrCreateInstance(e,t={}){return this.getInstance(e)||new this(e,"object"==typeof t?t:null)}static get VERSION(){return"5.3.2"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(e){return`${e}${this.EVENT_KEY}`}}const qe=e=>{let t=e.getAttribute("data-bs-target");if(!t||"#"===t){let n=e.getAttribute("href");if(!n||!n.includes("#")&&!n.startsWith("."))return null;n.includes("#")&&!n.startsWith("#")&&(n=`#${n.split("#")[1]}`),t=n&&"#"!==n?At(n.trim()):null}return t},t={find:(e,t=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(t,e)),findOne:(e,t=document.documentElement)=>Element.prototype.querySelector.call(t,e),children:(e,t)=>[].concat(...e.children).filter(e=>e.matches(t)),parents(e,t){const s=[];let n=e.parentNode.closest(t);for(;n;)s.push(n),n=n.parentNode.closest(t);return s},prev(e,t){let n=e.previousElementSibling;for(;n;){if(n.matches(t))return[n];n=n.previousElementSibling}return[]},next(e,t){let n=e.nextElementSibling;for(;n;){if(n.matches(t))return[n];n=n.nextElementSibling}return[]},focusableChildren(e){const t=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map(e=>`${e}:not([tabindex^="-"])`).join(",");return this.find(t,e).filter(e=>!O(e)&&V(e))},getSelectorFromElement(e){const n=qe(e);return n&&t.findOne(n)?n:null},getElementFromSelector(e){const n=qe(e);return n?t.findOne(n):null},getMultipleElementsFromSelector(e){const n=qe(e);return n?t.find(n):[]}},ve=(n,s="hide")=>{const i=`click.dismiss${n.EVENT_KEY}`,o=n.NAME;e.on(document,i,`[data-bs-dismiss="${o}"]`,function(e){if(["A","AREA"].includes(this.tagName)&&e.preventDefault(),O(this))return;const i=t.getElementFromSelector(this)||this.closest(`.${o}`);n.getOrCreateInstance(i)[s]()})},kn=".bs.alert",to=`close${kn}`,Us=`closed${kn}`;class ue extends h{static get NAME(){return"alert"}close(){if(e.trigger(this._element,to).defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback(()=>this._destroyElement(),this._element,t)}_destroyElement(){this._element.remove(),e.trigger(this._element,Us),this.dispose()}static jQueryInterface(e){return this.each(function(){const t=ue.getOrCreateInstance(this);if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError(`No method named "${e}"`);t[e](this)}})}}ve(ue,"close"),u(ue);const Hn='[data-bs-toggle="button"]';class be extends h{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(e){return this.each(function(){const t=be.getOrCreateInstance(this);"toggle"===e&&t[e]()})}}e.on(document,"click.bs.button.data-api",Hn,e=>{e.preventDefault();const t=e.target.closest(Hn);be.getOrCreateInstance(t).toggle()}),u(be);const X=".bs.swipe",ks=`touchstart${X}`,xs=`touchmove${X}`,us=`touchend${X}`,ds=`pointerdown${X}`,cs=`pointerup${X}`,os={endCallback:null,leftCallback:null,rightCallback:null},ls={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class $e extends Q{constructor(e,t){super(),this._element=e,e&&$e.isSupported()&&(this._config=this._getConfig(t),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return os}static get DefaultType(){return ls}static get NAME(){return"swipe"}dispose(){e.off(this._element,X)}_start(e){this._supportPointerEvents?this._eventIsPointerPenTouch(e)&&(this._deltaX=e.clientX):this._deltaX=e.touches[0].clientX}_end(e){this._eventIsPointerPenTouch(e)&&(this._deltaX=e.clientX-this._deltaX),this._handleSwipe(),o(this._config.endCallback)}_move(e){this._deltaX=e.touches&&e.touches.length>1?0:e.touches[0].clientX-this._deltaX}_handleSwipe(){const e=Math.abs(this._deltaX);if(e<=40)return;const t=e/this._deltaX;this._deltaX=0,t&&o(t>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(e.on(this._element,ds,e=>this._start(e)),e.on(this._element,cs,e=>this._end(e)),this._element.classList.add("pointer-event")):(e.on(this._element,ks,e=>this._start(e)),e.on(this._element,xs,e=>this._move(e)),e.on(this._element,us,e=>this._end(e)))}_eventIsPointerPenTouch(e){return this._supportPointerEvents&&("pen"===e.pointerType||"touch"===e.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const _=".bs.carousel",Ln=".data-api",re="next",W="prev",$="left",de="right",zs=`slide${_}`,Ve=`slid${_}`,Ds=`keydown${_}`,es=`mouseenter${_}`,ao=`mouseleave${_}`,fo=`dragstart${_}`,jo=`load${_}${Ln}`,yo=`click${_}${Ln}`,dn="carousel",ye="active",nn=".active",tn=".carousel-item",Ro=nn+tn,Po={ArrowLeft:de,ArrowRight:$},Ho={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},Io={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class Z extends h{constructor(e,n){super(e,n),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=t.findOne(".carousel-indicators",this._element),this._addEventListeners(),this._config.ride===dn&&this.cycle()}static get Default(){return Ho}static get DefaultType(){return Io}static get NAME(){return"carousel"}next(){this._slide(re)}nextWhenVisible(){!document.hidden&&V(this._element)&&this.next()}prev(){this._slide(W)}pause(){this._isSliding&&zt(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval(()=>this.nextWhenVisible(),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?e.one(this._element,Ve,()=>this.cycle()):this.cycle())}to(t){const n=this._getItems();if(t>n.length-1||t<0)return;if(this._isSliding)return void e.one(this._element,Ve,()=>this.to(t));const s=this._getItemIndex(this._getActive());if(s===t)return;const o=t>s?re:W;this._slide(o,n[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(e){return e.defaultInterval=e.interval,e}_addEventListeners(){this._config.keyboard&&e.on(this._element,Ds,e=>this._keydown(e)),"hover"===this._config.pause&&(e.on(this._element,es,()=>this.pause()),e.on(this._element,ao,()=>this._maybeEnableCycle())),this._config.touch&&$e.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const n of t.find(".carousel-item img",this._element))e.on(n,fo,e=>e.preventDefault());const n={leftCallback:()=>this._slide(this._directionToOrder($)),rightCallback:()=>this._slide(this._directionToOrder(de)),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout(()=>this._maybeEnableCycle(),500+this._config.interval))}};this._swipeHelper=new $e(this._element,n)}_keydown(e){if(/input|textarea/i.test(e.target.tagName))return;const t=Po[e.key];t&&(e.preventDefault(),this._slide(this._directionToOrder(t)))}_getItemIndex(e){return this._getItems().indexOf(e)}_setActiveIndicatorElement(e){if(!this._indicatorsElement)return;const s=t.findOne(nn,this._indicatorsElement);s.classList.remove(ye),s.removeAttribute("aria-current");const n=t.findOne(`[data-bs-slide-to="${e}"]`,this._indicatorsElement);n&&(n.classList.add(ye),n.setAttribute("aria-current","true"))}_updateInterval(){const e=this._activeElement||this._getActive();if(!e)return;const t=Number.parseInt(e.getAttribute("data-bs-interval"),10);this._config.interval=t||this._config.defaultInterval}_slide(t,n=null){if(this._isSliding)return;const o=this._getActive(),a=t===re,s=n||ht(this._getItems(),o,a,this._config.wrap);if(s===o)return;const c=this._getItemIndex(s),l=n=>e.trigger(this._element,n,{relatedTarget:s,direction:this._orderToDirection(t),from:this._getItemIndex(o),to:c});if(l(zs).defaultPrevented)return;if(!o||!s)return;const d=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(c),this._activeElement=s;const i=a?"carousel-item-start":"carousel-item-end",r=a?"carousel-item-next":"carousel-item-prev";s.classList.add(r),oe(s),o.classList.add(i),s.classList.add(i),this._queueCallback(()=>{s.classList.remove(i,r),s.classList.add(ye),o.classList.remove(ye,r,i),this._isSliding=!1,l(Ve)},o,this._isAnimated()),d&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return t.findOne(Ro,this._element)}_getItems(){return t.find(tn,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(e){return d()?e===$?W:re:e===$?re:W}_orderToDirection(e){return d()?e===W?$:de:e===W?de:$}static jQueryInterface(e){return this.each(function(){const t=Z.getOrCreateInstance(this,e);if("number"!=typeof e){if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError(`No method named "${e}"`);t[e]()}}else t.to(e)})}}e.on(document,yo,"[data-bs-slide], [data-bs-slide-to]",function(e){const s=t.getElementFromSelector(this);if(!s||!s.classList.contains(dn))return;e.preventDefault();const n=Z.getOrCreateInstance(s),o=this.getAttribute("data-bs-slide-to");return o?(n.to(o),void n._maybeEnableCycle()):"next"===b.getDataAttribute(this,"slide")?(n.next(),void n._maybeEnableCycle()):(n.prev(),void n._maybeEnableCycle())}),e.on(window,jo,()=>{const e=t.find('[data-bs-ride="carousel"]');for(const t of e)Z.getOrCreateInstance(t)}),u(Z);const ie=".bs.collapse",Bo=`show${ie}`,$o=`shown${ie}`,Uo=`hide${ie}`,Yo=`hidden${ie}`,Go=`click${ie}.data-api`,De="show",L="collapse",je="collapsing",oi=`:scope .${L} .${L}`,Pe='[data-bs-toggle="collapse"]',ii={parent:null,toggle:!0},ai={parent:"(null|element)",toggle:"boolean"};class ae extends h{constructor(e,n){super(e,n),this._isTransitioning=!1,this._triggerArray=[];const s=t.find(Pe);for(const e of s){const n=t.getSelectorFromElement(e),o=t.find(n).filter(e=>e===this._element);null!==n&&o.length&&this._triggerArray.push(e)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return ii}static get DefaultType(){return ai}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let n=[];if(this._config.parent&&(n=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter(e=>e!==this._element).map(e=>ae.getOrCreateInstance(e,{toggle:!1}))),n.length&&n[0]._isTransitioning)return;if(e.trigger(this._element,Bo).defaultPrevented)return;for(const e of n)e.hide();const t=this._getDimension();this._element.classList.remove(L),this._element.classList.add(je),this._element.style[t]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const s=`scroll${t[0].toUpperCase()+t.slice(1)}`;this._queueCallback(()=>{this._isTransitioning=!1,this._element.classList.remove(je),this._element.classList.add(L,De),this._element.style[t]="",e.trigger(this._element,$o)},this._element,!0),this._element.style[t]=`${this._element[s]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(e.trigger(this._element,Uo).defaultPrevented)return;const n=this._getDimension();this._element.style[n]=`${this._element.getBoundingClientRect()[n]}px`,oe(this._element),this._element.classList.add(je),this._element.classList.remove(L,De);for(const e of this._triggerArray){const n=t.getElementFromSelector(e);n&&!this._isShown(n)&&this._addAriaAndCollapsedClass([e],!1)}this._isTransitioning=!0,this._element.style[n]="",this._queueCallback(()=>{this._isTransitioning=!1,this._element.classList.remove(je),this._element.classList.add(L),e.trigger(this._element,Yo)},this._element,!0)}_isShown(e=this._element){return e.classList.contains(De)}_configAfterMerge(e){return e.toggle=Boolean(e.toggle),e.parent=x(e.parent),e}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const e=this._getFirstLevelChildren(Pe);for(const n of e){const s=t.getElementFromSelector(n);s&&this._addAriaAndCollapsedClass([n],this._isShown(s))}}_getFirstLevelChildren(e){const n=t.find(oi,this._config.parent);return t.find(e,this._config.parent).filter(e=>!n.includes(e))}_addAriaAndCollapsedClass(e,t){if(e.length)for(const n of e)n.classList.toggle("collapsed",!t),n.setAttribute("aria-expanded",t)}static jQueryInterface(e){const t={};return"string"==typeof e&&/show|hide/.test(e)&&(t.toggle=!1),this.each(function(){const n=ae.getOrCreateInstance(this,t);if("string"==typeof e){if(void 0===n[e])throw new TypeError(`No method named "${e}"`);n[e]()}})}}e.on(document,Go,Pe,function(e){("A"===e.target.tagName||e.delegateTarget&&"A"===e.delegateTarget.tagName)&&e.preventDefault();for(const e of t.getMultipleElementsFromSelector(this))ae.getOrCreateInstance(e,{toggle:!1}).toggle()}),u(ae);var Ht,J,Wt,Kt,Re,n="top",a="bottom",i="right",s="left",ge="auto",D=[n,a,i,s],z="start",U="end",Tt="clippingParents",Qe="viewport",I="popper",Mt="reference",et=D.reduce(function(e,t){return e.concat([t+"-"+z,t+"-"+U])},[]),tt=[].concat(D,[ge]).reduce(function(e,t){return e.concat([t,t+"-"+z,t+"-"+U])},[]),St="beforeRead",kt="read",Ct="afterRead",xt="beforeMain",wt="main",_t="afterMain",yt="beforeWrite",jt="write",bt="afterWrite",Wn=[St,kt,Ct,xt,wt,_t,yt,jt,bt];function p(e){return e?(e.nodeName||"").toLowerCase():null}function r(e){if(e==null)return window;if("[object Window]"!==e.toString()){var t=e.ownerDocument;return t&&t.defaultView||window}return e}function S(e){return e instanceof r(e).Element||e instanceof Element}function c(e){return e instanceof r(e).HTMLElement||e instanceof HTMLElement}function Je(e){return"undefined"!=typeof ShadowRoot&&(e instanceof r(e).ShadowRoot||e instanceof ShadowRoot)}const ut={name:"applyStyles",enabled:!0,phase:"write",fn:function(e){var t=e.state;Object.keys(t.elements).forEach(function(e){var o=t.styles[e]||{},s=t.attributes[e]||{},n=t.elements[e];c(n)&&p(n)&&(Object.assign(n.style,o),Object.keys(s).forEach(function(e){var t=s[e];!1===t?n.removeAttribute(e):n.setAttribute(e,!0===t?"":t)}))})},effect:function(e){var t=e.state,n={popper:{position:t.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(t.elements.popper.style,n.popper),t.styles=n,t.elements.arrow&&Object.assign(t.elements.arrow.style,n.arrow),function(){Object.keys(t.elements).forEach(function(e){var s=t.elements[e],o=t.attributes[e]||{},i=Object.keys(t.styles.hasOwnProperty(e)?t.styles[e]:n[e]).reduce(function(e,t){return e[t]="",e},{});c(s)&&p(s)&&(Object.assign(s.style,i),Object.keys(o).forEach(function(e){s.removeAttribute(e)}))})}},requires:["computeStyles"]};function f(e){return e.split("-")[0]}var T=Math.max,xe=Math.min,q=Math.round;function at(){var e=navigator.userAgentData;return e!=null&&e.brands&&Array.isArray(e.brands)?e.brands.map(function(e){return e.brand+"/"+e.version}).join(" "):navigator.userAgent}function Ot(){return!/^((?!chrome|android).)*safari/i.test(at())}function Y(e,t,n){void 0===t&&(t=!1),void 0===n&&(n=!1);var s=e.getBoundingClientRect(),i=1,a=1;t&&c(e)&&(i=e.offsetWidth>0&&q(s.width)/e.offsetWidth||1,a=e.offsetHeight>0&&q(s.height)/e.offsetHeight||1);var o=(S(e)?r(e):window).visualViewport,u=!Ot()&&n,l=(s.left+(u&&o?o.offsetLeft:0))/i,d=(s.top+(u&&o?o.offsetTop:0))/a,h=s.width/i,m=s.height/a;return{width:h,height:m,top:d,right:l+h,bottom:d+m,left:l,x:l,y:d}}function ot(e){var t=Y(e),n=e.offsetWidth,s=e.offsetHeight;return Math.abs(t.width-n)<=1&&(n=t.width),Math.abs(t.height-s)<=1&&(s=t.height),{x:e.offsetLeft,y:e.offsetTop,width:n,height:s}}function Et(e,t){var n,s=t.getRootNode&&t.getRootNode();if(e.contains(t))return!0;if(s&&Je(s)){n=t;do{if(n&&e.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function v(e){return r(e).getComputedStyle(e)}function li(e){return["table","td","th"].indexOf(p(e))>=0}function C(e){return((S(e)?e.ownerDocument:e.document)||window.document).documentElement}function ke(e){return"html"===p(e)?e:e.assignedSlot||e.parentNode||(Je(e)?e.host:null)||C(e)}function Ft(e){return c(e)&&"fixed"!==v(e).position?e.offsetParent:null}function ne(e){for(var n=r(e),t=Ft(e);t&&li(t)&&"static"===v(t).position;)t=Ft(t);return t&&("html"===p(t)||"body"===p(t)&&"static"===v(t).position)?n:t||function(e){var t,n,s=/firefox/i.test(at());if(/Trident/i.test(at())&&c(e)&&"fixed"===v(e).position)return null;t=ke(e);for(Je(t)&&(t=t.host);c(t)&&["html","body"].indexOf(p(t))<0;){if(n=v(t),"none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||s&&"filter"===n.willChange||s&&n.filter&&"none"!==n.filter)return t;t=t.parentNode}return null}(e)||n}function Ie(e){return["top","bottom"].indexOf(e)>=0?"x":"y"}function se(e,t,n){return T(e,xe(t,n))}function Nt(e){return Object.assign({},{top:0,right:0,bottom:0,left:0},e)}function Lt(e,t){return t.reduce(function(t,n){return t[n]=e,t},{})}const Rt={name:"arrow",enabled:!0,phase:"main",fn:function(e){var l,t=e.state,j=e.name,k=e.options,u=t.elements.arrow,d=t.modifiersData.popperOffsets,h=f(t.placement),o=Ie(h),r=[s,i].indexOf(h)>=0?"height":"width";if(u&&d){var p=function(e,t){return Nt("number"!=typeof(e="function"==typeof e?e(Object.assign({},t.rects,{placement:t.placement})):e)?e:Lt(e,D))}(k.padding,t),g=ot(u),E="y"===o?n:s,w="y"===o?a:i,_=t.rects.reference[r]+t.rects.reference[o]-d[o]-t.rects.popper[r],y=d[o]-t.rects.reference[o],c=ne(u),b=c?"y"===o?c.clientHeight||0:c.clientWidth||0:0,O=_/2-y/2,x=p[E],C=b-g[r]-p[w],v=b/2-g[r]/2+O,m=se(x,v,C),A=o;t.modifiersData[j]=((l={})[A]=m,l.centerOffset=m-v,l)}},effect:function(e){var n=e.state,s=e.options.element,t=void 0===s?"[data-popper-arrow]":s;t!=null&&("string"!=typeof t||(t=n.elements.popper.querySelector(t)))&&Et(n.elements.popper,t)&&(n.elements.arrow=t)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function H(e){return e.split("-")[1]}Ht={top:"auto",right:"auto",bottom:"auto",left:"auto"};function It(e){var h,f,b,y,u=e.popper,T=e.popperRect,l=e.placement,S=e.variation,m=e.offsets,A=e.position,g=e.gpuAcceleration,w=e.adaptive,j=e.roundOffsets,k=e.isFixed,D=m.x,t=void 0===D?0:D,z=m.y,o=void 0===z?0:z,E="function"==typeof j?j({x:t,y:o}):{x:t,y:o},t=E.x,o=E.y,O=m.hasOwnProperty("x"),x=m.hasOwnProperty("y"),p=s,_=n,c=window;if(w){var d=ne(u),M="clientHeight",F="clientWidth";d===r(u)&&"static"!==v(d=C(u)).position&&"absolute"===A&&(M="scrollHeight",F="scrollWidth"),(l===n||(l===s||l===i)&&S===U)&&(_=a,o-=(k&&d===c&&c.visualViewport?c.visualViewport.height:d[M])-T.height,o*=g?1:-1),l!==s&&(l!==n&&l!==a||S!==U)||(p=i,t-=(k&&d===c&&c.visualViewport?c.visualViewport.width:d[F])-T.width,t*=g?1:-1)}return y=Object.assign({position:A},w&&Ht),b=!0===j?function(e,t){var s=e.x,o=e.y,n=t.devicePixelRatio||1;return{x:q(s*n)/n||0,y:q(o*n)/n||0}}({x:t,y:o},r(u)):{x:t,y:o},t=b.x,o=b.y,g?Object.assign({},y,((h={})[_]=x?"0":"",h[p]=O?"0":"",h.transform=(c.devicePixelRatio||1)<=1?"translate("+t+"px, "+o+"px)":"translate3d("+t+"px, "+o+"px, 0)",h)):Object.assign({},y,((f={})[_]=x?o+"px":"",f[p]=O?t+"px":"",f.transform="",f))}const ze={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(e){var t=e.state,n=e.options,s=n.gpuAcceleration,c=void 0===s||s,o=n.adaptive,l=void 0===o||o,i=n.roundOffsets,a=void 0===i||i,r={placement:f(t.placement),variation:H(t.placement),popper:t.elements.popper,popperRect:t.rects.popper,gpuAcceleration:c,isFixed:"fixed"===t.options.strategy};null!=t.modifiersData.popperOffsets&&(t.styles.popper=Object.assign({},t.styles.popper,It(Object.assign({},r,{offsets:t.modifiersData.popperOffsets,position:t.options.strategy,adaptive:l,roundOffsets:a})))),null!=t.modifiersData.arrow&&(t.styles.arrow=Object.assign({},t.styles.arrow,It(Object.assign({},r,{offsets:t.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:a})))),t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-placement":t.placement})},data:{}};J={passive:!0};const Fe={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(e){var n=e.state,t=e.instance,s=e.options,o=s.scroll,i=void 0===o||o,a=s.resize,c=void 0===a||a,l=r(n.elements.popper),d=[].concat(n.scrollParents.reference,n.scrollParents.popper);return i&&d.forEach(function(e){e.addEventListener("scroll",t.update,J)}),c&&l.addEventListener("resize",t.update,J),function(){i&&d.forEach(function(e){e.removeEventListener("scroll",t.update,J)}),c&&l.removeEventListener("resize",t.update,J)}},data:{}};Wt={left:"right",right:"left",bottom:"top",top:"bottom"};function Ee(e){return e.replace(/left|right|bottom|top/g,function(e){return Wt[e]})}Kt={start:"end",end:"start"};function qt(e){return e.replace(/start|end/g,function(e){return Kt[e]})}function Se(e){var t=r(e);return{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function Me(e){return Y(C(e)).left+Se(e).scrollLeft}function Te(e){var t=v(e),n=t.overflow,s=t.overflowX,o=t.overflowY;return/auto|scroll|overlay|hidden/.test(n+o+s)}function Qt(e){return["html","body","#document"].indexOf(p(e))>=0?e.ownerDocument.body:c(e)&&Te(e)?e:Qt(ke(e))}function ee(e,t){void 0===t&&(t=[]);var s,n=Qt(e),o=n===(null==(s=e.ownerDocument)?void 0:s.body),i=r(n),a=o?[i].concat(i.visualViewport||[],Te(n)?n:[]):n,c=t.concat(a);return o?c:c.concat(ee(ke(a)))}function Ne(e){return Object.assign({},e,{left:e.x,top:e.y,right:e.x+e.width,bottom:e.y+e.height})}function en(e,t,n){return t===Qe?Ne(function(e,t){var s,d=r(e),o=C(e),n=d.visualViewport,i=o.clientWidth,a=o.clientHeight,c=0,l=0;return n&&(i=n.width,a=n.height,s=Ot(),(s||!s&&"fixed"===t)&&(c=n.offsetLeft,l=n.offsetTop)),{width:i,height:a,x:c+Me(e),y:l}}(e,n)):S(t)?function(e,t){var n=Y(e,!1,"fixed"===t);return n.top=n.top+e.clientTop,n.left=n.left+e.clientLeft,n.bottom=n.top+e.clientHeight,n.right=n.left+e.clientWidth,n.width=e.clientWidth,n.height=e.clientHeight,n.x=n.left,n.y=n.top,n}(t,n):Ne(function(e){var s,n=C(e),o=Se(e),t=null==(s=e.ownerDocument)?void 0:s.body,i=T(n.scrollWidth,n.clientWidth,t?t.scrollWidth:0,t?t.clientWidth:0),r=T(n.scrollHeight,n.clientHeight,t?t.scrollHeight:0,t?t.clientHeight:0),a=-o.scrollLeft+Me(e),c=-o.scrollTop;return"rtl"===v(t||n).direction&&(a+=T(n.clientWidth,t?t.clientWidth:0)-i),{width:i,height:r,x:a,y:c}}(C(e)))}function gt(e){var o,r,l,t=e.reference,c=e.element,d=e.placement,u=d?f(d):null,p=d?H(d):null,h=t.x+t.width/2-c.width/2,m=t.y+t.height/2-c.height/2;switch(u){case n:o={x:h,y:t.y-c.height};break;case a:o={x:h,y:t.y+t.height};break;case i:o={x:t.x+t.width,y:m};break;case s:o={x:t.x-c.width,y:m};break;default:o={x:t.x,y:t.y}}if(r=u?Ie(u):null,r!=null)switch(l="y"===r?"height":"width",p){case z:o[r]=o[r]-(t[l]/2-c[l]/2);break;case U:o[r]=o[r]+(t[l]/2-c[l]/2)}return o}function R(e,t){void 0===t&&(t={});var x,s=t,y=s.placement,w=void 0===y?e.placement:y,g=s.strategy,P=void 0===g?e.strategy:g,b=s.boundary,M=void 0===b?Tt:b,k=s.rootBoundary,R=void 0===k?Qe:k,A=s.elementContext,l=void 0===A?I:A,f=s.altBoundary,L=void 0!==f&&f,_=s.padding,u=void 0===_?0:_,o=Nt("number"!=typeof u?u:Lt(u,D)),N=l===I?Mt:I,E=e.rects.popper,m=e.elements[L?N:l],r=function(e,t,n,s){var a="clippingParents"===t?function(e){var n=ee(ke(e)),t=["absolute","fixed"].indexOf(v(e).position)>=0&&c(e)?ne(e):e;return S(t)?n.filter(function(e){return S(e)&&Et(e,t)&&"body"!==p(e)}):[]}(e):[].concat(t),i=[].concat(a,[n]),r=i[0],o=i.reduce(function(t,n){var o=en(e,n,s);return t.top=T(o.top,t.top),t.right=xe(o.right,t.right),t.bottom=xe(o.bottom,t.bottom),t.left=T(o.left,t.left),t},en(e,r,s));return o.width=o.right-o.left,o.height=o.bottom-o.top,o.x=o.left,o.y=o.top,o}(S(m)?m:m.contextElement||C(e.elements.popper),M,R,P),O=Y(e.elements.reference),F=gt({reference:O,element:E,strategy:"absolute",placement:w}),z=Ne(Object.assign({},E,F)),d=l===I?z:O,h={top:r.top-d.top+o.top,bottom:d.bottom-r.bottom+o.bottom,left:r.left-d.left+o.left,right:d.right-r.right+o.right},j=e.modifiersData.offset;return l===I&&j&&(x=j[w],Object.keys(h).forEach(function(e){var t=[i,a].indexOf(e)>=0?1:-1,s=[n,a].indexOf(e)>=0?"y":"x";h[e]+=x[s]*t})),h}function No(e,t){void 0===t&&(t={});var s,n=t,c=n.placement,l=n.boundary,d=n.rootBoundary,u=n.padding,h=n.flipVariations,i=n.allowedAutoPlacements,m=void 0===i?tt:i,a=H(c),r=a?h?et:et.filter(function(e){return H(e)===a}):D,o=r.filter(function(e){return m.indexOf(e)>=0});return 0===o.length&&(o=r),s=o.reduce(function(t,n){return t[n]=R(e,{placement:n,boundary:l,rootBoundary:d,padding:u})[f(n)],t},{}),Object.keys(s).sort(function(e,t){return s[e]-s[t]})}const on={name:"flip",enabled:!0,phase:"main",fn:function(e){var t=e.state,o=e.options,y=e.name;if(!t.modifiersData[y]._skip){for(var r,d,_,O,w=o.mainAxis,I=void 0===w||w,C=o.altAxis,D=void 0===C||C,N=o.fallbackPlacements,j=o.padding,b=o.boundary,x=o.rootBoundary,$=o.altBoundary,S=o.flipVariations,p=void 0===S||S,W=o.allowedAutoPlacements,l=t.options.placement,V=f(l),B=N||(V!==l&&p?function(e){if(f(e)===ge)return[];var t=Ee(e);return[qt(e),t,qt(t)]}(l):[Ee(l)]),m=[l].concat(B).reduce(function(e,n){return e.concat(f(n)===ge?No(t,{placement:n,boundary:b,rootBoundary:x,padding:j,flipVariations:p,allowedAutoPlacements:W}):n)},[]),P=t.rects.reference,L=t.rects.popper,k=new Map,A=!0,h=m[0],v=0;v<m.length;v++){var c=m[v],T=f(c),F=H(c)===z,M=[n,a].indexOf(T)>=0,E=M?"width":"height",g=R(t,{placement:c,boundary:b,rootBoundary:x,altBoundary:$,padding:j}),u=M?F?i:s:F?a:n;if(P[E]>L[E]&&(u=Ee(u)),O=Ee(u),r=[],I&&r.push(g[T]<=0),D&&r.push(g[u]<=0,g[O]<=0),r.every(function(e){return e})){h=c,A=!1;break}k.set(c,r)}if(A)for(_=function(e){var t=m.find(function(t){var n=k.get(t);if(n)return n.slice(0,e).every(function(e){return e})});if(t)return h=t,"break"},d=p?3:1;d>0&&"break"!==_(d);d--);t.placement!==h&&(t.modifiersData[y]._skip=!0,t.placement=h,t.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function an(e,t,n){return void 0===n&&(n={x:0,y:0}),{top:e.top-t.height-n.y,right:e.right-t.width+n.x,bottom:e.bottom-t.height+n.y,left:e.left-t.width-n.x}}function rn(e){return[n,i,a,s].some(function(t){return e[t]>=0})}const cn={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(e){var t=e.state,a=e.name,r=t.rects.reference,c=t.rects.popper,l=t.modifiersData.preventOverflow,d=R(t,{elementContext:"reference"}),u=R(t,{altBoundary:!0}),n=an(d,r),s=an(u,c,l),o=rn(n),i=rn(s);t.modifiersData[a]={referenceClippingOffsets:n,popperEscapeOffsets:s,isReferenceHidden:o,hasPopperEscaped:i},t.attributes.popper=Object.assign({},t.attributes.popper,{"data-popper-reference-hidden":o,"data-popper-escaped":i})}},ln={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(e){var t=e.state,c=e.options,l=e.name,o=c.offset,d=void 0===o?[0,0]:o,a=tt.reduce(function(e,o){return e[o]=function(e,t,o){var c=f(e),d=[s,n].indexOf(c)>=0?-1:1,l="function"==typeof o?o(Object.assign({},t,{placement:e})):o,a=l[0],r=l[1];return a=a||0,r=(r||0)*d,[s,i].indexOf(c)>=0?{x:r,y:a}:{x:a,y:r}}(o,t.rects,d),e},{}),r=a[t.placement],u=r.x,h=r.y;null!=t.modifiersData.popperOffsets&&(t.modifiersData.popperOffsets.x+=u,t.modifiersData.popperOffsets.y+=h),t.modifiersData[l]=a}},Le={name:"popperOffsets",enabled:!0,phase:"read",fn:function(e){var t=e.state,n=e.name;t.modifiersData[n]=gt({reference:t.rects.reference,element:t.rects.popper,strategy:"absolute",placement:t.placement})},data:{}},un={name:"preventOverflow",enabled:!0,phase:"main",fn:function(e){var t=e.state,c=e.options,ge=e.name,G=c.mainAxis,he=void 0===G||G,oe=c.altAxis,ie=void 0!==oe&&oe,ve=c.boundary,be=c.rootBoundary,je=c.altBoundary,ye=c.padding,D=c.tether,u=void 0===D||D,F=c.tetherOffset,C=void 0===F?0:F,_=R(t,{boundary:ve,rootBoundary:be,padding:ye,altBoundary:je}),M=f(t.placement),x=H(t.placement),J=!x,o=Ie(M),g="x"===o?"y":"x",v=t.modifiersData.popperOffsets,d=t.rects.reference,p=t.rects.popper,w="function"==typeof C?C(Object.assign({},t.rects,{placement:t.placement})):C,m="number"==typeof w?{mainAxis:w,altAxis:w}:Object.assign({mainAxis:0,altAxis:0},w),y=t.modifiersData.offset?t.modifiersData.offset[t.placement]:null,E={x:0,y:0};if(v){if(he){var L,A="y"===o?n:s,I="y"===o?a:i,r="y"===o?"height":"width",h=v[o],$=h+_[A],W=h-_[I],S=u?-p[r]/2:0,pe=x===z?d[r]:p[r],fe=x===z?-p[r]:-d[r],Y=t.elements.arrow,me=u&&Y?ot(Y):{width:0,height:0},X=t.modifiersData["arrow#persistent"]?t.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},Q=X[A],Z=X[I],b=se(0,d[r],me[r]),le=J?d[r]/2-S-b-Q-m.mainAxis:pe-b-Q-m.mainAxis,ce=J?-d[r]/2+S+b+Z+m.mainAxis:fe+b+Z+m.mainAxis,O=t.elements.arrow&&ne(t.elements.arrow),ae=O?"y"===o?O.clientTop||0:O.clientLeft||0:0,U=null!=(L=y?.[o])?L:0,re=h+ce-U,te=se(u?xe($,h+le-U-ae):$,h,u?T(W,re):W);v[o]=te,E[o]=te-h}if(ie){var ee,de="x"===o?n:s,ue="x"===o?a:i,l=v[g],j="y"===g?"height":"width",q=l+_[de],K=l-_[ue],k=-1!==[n,s].indexOf(M),V=null!=(ee=y?.[g])?ee:0,B=k?q:l-d[j]-p[j]-V+m.altAxis,P=k?l+d[j]+p[j]-V-m.altAxis:K,N=u&&k?function(e,t,n){var s=se(e,t,n);return s>n?n:s}(B,l,P):se(u?B:q,l,u?P:K);v[g]=N,E[g]=N-l}t.modifiersData[ge]=E}},requiresIfExists:["offset"]};function Co(e,t,n){void 0===n&&(n=!1);var s,d,u=c(t),h=c(t)&&function(e){var t=e.getBoundingClientRect(),n=q(t.width)/e.offsetWidth||1,s=q(t.height)/e.offsetHeight||1;return 1!==n||1!==s}(t),a=C(t),i=Y(e,h,n),l={scrollLeft:0,scrollTop:0},o={x:0,y:0};return(u||!u&&!n)&&(("body"!==p(t)||Te(a))&&(l=(s=t)!==r(s)&&c(s)?{scrollLeft:(d=s).scrollLeft,scrollTop:d.scrollTop}:Se(s)),c(t)?((o=Y(t,!0)).x+=t.clientLeft,o.y+=t.clientTop):a&&(o.x=Me(a))),{x:i.left+l.scrollLeft-o.x,y:i.top+l.scrollTop-o.y,width:i.width,height:i.height}}function _o(e){var n=new Map,t=new Set,s=[];function o(e){t.add(e.name),[].concat(e.requires||[],e.requiresIfExists||[]).forEach(function(e){if(!t.has(e)){var s=n.get(e);s&&o(s)}}),s.push(e)}return e.forEach(function(e){n.set(e.name,e)}),e.forEach(function(e){t.has(e.name)||o(e)}),s}Re={placement:"bottom",modifiers:[],strategy:"absolute"};function pn(){for(var t=arguments.length,n=new Array(t),e=0;e<t;e++)n[e]=arguments[e];return!n.some(function(e){return!e||"function"!=typeof e.getBoundingClientRect})}function le(e){void 0===e&&(e={});var n=e,s=n.defaultModifiers,i=void 0===s?[]:s,o=n.defaultOptions,t=void 0===o?Re:o;return function(e,n,s){void 0===s&&(s=t);var r,d,o={placement:"bottom",orderedModifiers:[],options:Object.assign({},Re,t),modifiersData:{},elements:{reference:e,popper:n},attributes:{},styles:{}},c=[],l=!1,a={state:o,setOptions:function(s){var r,l,d,h="function"==typeof s?s(o.options):s;return u(),o.options=Object.assign({},t,o.options,h),o.scrollParents={reference:S(e)?ee(e):e.contextElement?ee(e.contextElement):[],popper:ee(n)},d=function(e){var t=_o(e);return Wn.reduce(function(e,n){return e.concat(t.filter(function(e){return e.phase===n}))},[])}((l=[].concat(i,o.options.modifiers),r=l.reduce(function(e,t){var n=e[t.name];return e[t.name]=n?Object.assign({},n,t,{options:Object.assign({},n.options,t.options),data:Object.assign({},n.data,t.data)}):t,e},{}),Object.keys(r).map(function(e){return r[e]}))),o.orderedModifiers=d.filter(function(e){return e.enabled}),o.orderedModifiers.forEach(function(e){var s,i=e.name,t=e.options,r=void 0===t?{}:t,n=e.effect;"function"==typeof n&&(s=n({state:o,name:i,instance:a,options:r}),c.push(s||function(){}))}),a.update()},forceUpdate:function(){if(!l){var s=o.elements,i=s.reference,t=s.popper;if(pn(i,t)){o.rects={reference:Co(i,ne(t),"fixed"===o.options.strategy),popper:ot(t)},o.reset=!1,o.placement=o.options.placement,o.orderedModifiers.forEach(function(e){return o.modifiersData[e.name]=Object.assign({},e.data)});for(e=0;e<o.orderedModifiers.length;e++)if(!0!==o.reset){var e,n=o.orderedModifiers[e],r=n.fn,c=n.options,d=void 0===c?{}:c,u=n.name;"function"==typeof r&&(o=r({state:o,options:d,name:u,instance:a})||o)}else o.reset=!1,e=-1}}},update:(d=function(){return new Promise(function(e){a.forceUpdate(),e(o)})},function(){return r||(r=new Promise(function(e){Promise.resolve().then(function(){r=void 0,e(d())})})),r}),destroy:function(){u(),l=!0}};if(!pn(e,n))return a;function u(){c.forEach(function(e){return e()}),c=[]}return a.setOptions(s).then(function(e){!l&&s.onFirstUpdate&&s.onFirstUpdate(e)}),a}}var vo=le(),po=le({defaultModifiers:[Fe,Le,ze,ut]}),He=le({defaultModifiers:[Fe,Le,ze,ut,ln,on,un,Rt,cn]});const yn=Object.freeze(Object.defineProperty({__proto__:null,afterMain:_t,afterRead:Ct,afterWrite:bt,applyStyles:ut,arrow:Rt,auto:ge,basePlacements:D,beforeMain:xt,beforeRead:St,beforeWrite:yt,bottom:a,clippingParents:Tt,computeStyles:ze,createPopper:He,createPopperBase:vo,createPopperLite:po,detectOverflow:R,end:U,eventListeners:Fe,flip:on,hide:cn,left:s,main:wt,modifierPhases:Wn,offset:ln,placements:tt,popper:I,popperGenerator:le,popperOffsets:Le,preventOverflow:un,read:kt,reference:Mt,right:i,start:z,top:n,variationPlacements:et,viewport:Qe,write:jt},Symbol.toStringTag,{value:"Module"})),_n="dropdown",M=".bs.dropdown",Be=".data-api",oo="ArrowUp",Cn="ArrowDown",so=`hide${M}`,no=`hidden${M}`,Ks=`show${M}`,Hs=`shown${M}`,Mn=`click${M}${Be}`,Fn=`keydown${M}${Be}`,Ps=`keyup${M}${Be}`,B="show",k='[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)',Ts=`${k}.${B}`,fe=".dropdown-menu",Fs=d()?"top-end":"top-start",Ss=d()?"top-start":"top-end",As=d()?"bottom-end":"bottom-start",Os=d()?"bottom-start":"bottom-end",ws=d()?"left-start":"right-start",ps=d()?"right-start":"left-start",fs={autoClose:!0,boundary:"clippingParents",display:"dynamic",offset:[0,2],popperConfig:null,reference:"toggle"},hs={autoClose:"(boolean|string)",boundary:"(string|element)",display:"string",offset:"(array|string|function)",popperConfig:"(null|object|function)",reference:"(string|element|object)"};class m extends h{constructor(e,n){super(e,n),this._popper=null,this._parent=this._element.parentNode,this._menu=t.next(this._element,fe)[0]||t.prev(this._element,fe)[0]||t.findOne(fe,this._parent),this._inNavbar=this._detectNavbar()}static get Default(){return fs}static get DefaultType(){return hs}static get NAME(){return _n}toggle(){return this._isShown()?this.hide():this.show()}show(){if(O(this._element)||this._isShown())return;const t={relatedTarget:this._element};if(!e.trigger(this._element,Ks,t).defaultPrevented){if(this._createPopper(),"ontouchstart"in document.documentElement&&!this._parent.closest(".navbar-nav"))for(const t of[].concat(...document.body.children))e.on(t,"mouseover",ce);this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add(B),this._element.classList.add(B),e.trigger(this._element,Hs,t)}}hide(){if(O(this._element)||!this._isShown())return;const e={relatedTarget:this._element};this._completeHide(e)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(t){if(!e.trigger(this._element,so,t).defaultPrevented){if("ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))e.off(t,"mouseover",ce);this._popper&&this._popper.destroy(),this._menu.classList.remove(B),this._element.classList.remove(B),this._element.setAttribute("aria-expanded","false"),b.removeDataAttribute(this._menu,"popper"),e.trigger(this._element,no,t)}}_getConfig(e){if("object"==typeof(e=super._getConfig(e)).reference&&!j(e.reference)&&"function"!=typeof e.reference.getBoundingClientRect)throw new TypeError(`${_n.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return e}_createPopper(){if(void 0===yn)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let e=this._element;"parent"===this._config.reference?e=this._parent:j(this._config.reference)?e=x(this._config.reference):"object"==typeof this._config.reference&&(e=this._config.reference);const t=this._getPopperConfig();this._popper=He(e,this._menu,t)}_isShown(){return this._menu.classList.contains(B)}_getPlacement(){const e=this._parent;if(e.classList.contains("dropend"))return ws;if(e.classList.contains("dropstart"))return ps;if(e.classList.contains("dropup-center"))return"top";if(e.classList.contains("dropdown-center"))return"bottom";const t="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return e.classList.contains("dropup")?t?Ss:Fs:t?Os:As}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const{offset:e}=this._config;return"string"==typeof e?e.split(",").map(e=>Number.parseInt(e,10)):"function"==typeof e?t=>e(t,this._element):e}_getPopperConfig(){const e={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||"static"===this._config.display)&&(b.setDataAttribute(this._menu,"popper","static"),e.modifiers=[{name:"applyStyles",enabled:!1}]),{...e,...o(this._config.popperConfig,[e])}}_selectMenuItem({key:e,target:n}){const s=t.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter(e=>V(e));s.length&&ht(s,n,e===Cn,!s.includes(n)).focus()}static jQueryInterface(e){return this.each(function(){const t=m.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}})}static clearMenus(e){if(2===e.button||"keyup"===e.type&&"Tab"!==e.key)return;const n=t.find(Ts);for(const a of n){const t=m.getInstance(a);if(!t||!1===t._config.autoClose)continue;const s=e.composedPath(),o=s.includes(t._menu);if(s.includes(t._element)||"inside"===t._config.autoClose&&!o||"outside"===t._config.autoClose&&o)continue;if(t._menu.contains(e.target)&&("keyup"===e.type&&"Tab"===e.key||/input|select|option|textarea|form/i.test(e.target.tagName)))continue;const i={relatedTarget:t._element};"click"===e.type&&(i.clickEvent=e),t._completeHide(i)}}static dataApiKeydownHandler(e){const a=/input|textarea/i.test(e.target.tagName),s="Escape"===e.key,o=[oo,Cn].includes(e.key);if(!o&&!s)return;if(a&&!s)return;e.preventDefault();const i=this.matches(k)?this:t.prev(this,k)[0]||t.next(this,k)[0]||t.findOne(k,e.delegateTarget.parentNode),n=m.getOrCreateInstance(i);if(o)return e.stopPropagation(),n.show(),void n._selectMenuItem(e);n._isShown()&&(e.stopPropagation(),n.hide(),i.focus())}}e.on(document,Fn,k,m.dataApiKeydownHandler),e.on(document,Fn,fe,m.dataApiKeydownHandler),e.on(document,Mn,m.clearMenus),e.on(document,Ps,m.clearMenus),e.on(document,Mn,k,function(e){e.preventDefault(),m.getOrCreateInstance(this).toggle()}),u(m);const Kn="backdrop",qn="show",Yn=`mousedown.bs.${Kn}`,rs={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},is={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class Qn extends Q{constructor(e){super(),this._config=this._getConfig(e),this._isAppended=!1,this._element=null}static get Default(){return rs}static get DefaultType(){return is}static get NAME(){return Kn}show(e){if(!this._config.isVisible)return void o(e);this._append();const t=this._getElement();this._config.isAnimated&&oe(t),t.classList.add(qn),this._emulateAnimation(()=>{o(e)})}hide(e){this._config.isVisible?(this._getElement().classList.remove(qn),this._emulateAnimation(()=>{this.dispose(),o(e)})):o(e)}dispose(){this._isAppended&&(e.off(this._element,Yn),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const e=document.createElement("div");e.className=this._config.className,this._config.isAnimated&&e.classList.add("fade"),this._element=e}return this._element}_configAfterMerge(e){return e.rootElement=x(e.rootElement),e}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),e.on(t,Yn,()=>{o(this._config.clickCallback)}),this._isAppended=!0}_emulateAnimation(e){Vt(e,this._getElement(),this._config.isAnimated)}}const _e=".bs.focustrap",ts=`focusin${_e}`,io=`keydown.tab${_e}`,vt="backward",ns={autofocus:!0,trapElement:null},ss={autofocus:"boolean",trapElement:"element"};class Zn extends Q{constructor(e){super(),this._config=this._getConfig(e),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return ns}static get DefaultType(){return ss}static get NAME(){return"focustrap"}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),e.off(document,_e),e.on(document,ts,e=>this._handleFocusin(e)),e.on(document,io,e=>this._handleKeydown(e)),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,e.off(document,_e))}_handleFocusin(e){const{trapElement:n}=this._config;if(e.target===document||e.target===n||n.contains(e.target))return;const s=t.focusableChildren(n);0===s.length?n.focus():this._lastTabNavDirection===vt?s[s.length-1].focus():s[0].focus()}_handleKeydown(e){"Tab"===e.key&&(this._lastTabNavDirection=e.shiftKey?vt:"forward")}}const Xn=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",Gn=".sticky-top",Oe="padding-right",Un="margin-right";class We{constructor(){this._element=document.body}getWidth(){const e=document.documentElement.clientWidth;return Math.abs(window.innerWidth-e)}hide(){const e=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,Oe,t=>t+e),this._setElementAttributes(Xn,Oe,t=>t+e),this._setElementAttributes(Gn,Un,t=>t-e)}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,Oe),this._resetElementAttributes(Xn,Oe),this._resetElementAttributes(Gn,Un)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(e,t,n){const s=this.getWidth();this._applyManipulationCallback(e,e=>{if(e!==this._element&&window.innerWidth>e.clientWidth+s)return;this._saveInitialAttribute(e,t);const o=window.getComputedStyle(e).getPropertyValue(t);e.style.setProperty(t,`${n(Number.parseFloat(o))}px`)})}_saveInitialAttribute(e,t){const n=e.style.getPropertyValue(t);n&&b.setDataAttribute(e,t,n)}_resetElementAttributes(e,t){this._applyManipulationCallback(e,e=>{const n=b.getDataAttribute(e,t);null!==n?(b.removeDataAttribute(e,t),e.style.setProperty(t,n)):e.style.removeProperty(t)})}_applyManipulationCallback(e,n){if(j(e))n(e);else for(const s of t.find(e,this._element))n(s)}}const l=".bs.modal",Jn=`hide${l}`,ms=`hidePrevented${l}`,$n=`hidden${l}`,Vn=`show${l}`,gs=`shown${l}`,vs=`resize${l}`,bs=`click.dismiss${l}`,js=`mousedown.dismiss${l}`,ys=`keydown.dismiss${l}`,_s=`click${l}.data-api`,Bn="modal-open",In="show",Ue="modal-static",Cs={backdrop:!0,focus:!0,keyboard:!0},Es={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class G extends h{constructor(e,n){super(e,n),this._dialog=t.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new We,this._addEventListeners()}static get Default(){return Cs}static get DefaultType(){return Es}static get NAME(){return"modal"}toggle(e){return this._isShown?this.hide():this.show(e)}show(t){this._isShown||this._isTransitioning||e.trigger(this._element,Vn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(Bn),this._adjustDialog(),this._backdrop.show(()=>this._showElement(t)))}hide(){this._isShown&&!this._isTransitioning&&(e.trigger(this._element,Jn).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(In),this._queueCallback(()=>this._hideModal(),this._element,this._isAnimated())))}dispose(){e.off(window,l),e.off(this._dialog,l),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new Qn({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new Zn({trapElement:this._element})}_showElement(n){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const s=t.findOne(".modal-body",this._dialog);s&&(s.scrollTop=0),oe(this._element),this._element.classList.add(In),this._queueCallback(()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,e.trigger(this._element,gs,{relatedTarget:n})},this._dialog,this._isAnimated())}_addEventListeners(){e.on(this._element,ys,e=>{"Escape"===e.key&&(this._config.keyboard?this.hide():this._triggerBackdropTransition())}),e.on(window,vs,()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()}),e.on(this._element,js,t=>{e.one(this._element,bs,e=>{this._element===t.target&&this._element===e.target&&("static"!==this._config.backdrop?this._config.backdrop&&this.hide():this._triggerBackdropTransition())})})}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide(()=>{document.body.classList.remove(Bn),this._resetAdjustments(),this._scrollBar.reset(),e.trigger(this._element,$n)})}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(e.trigger(this._element,ms).defaultPrevented)return;const n=this._element.scrollHeight>document.documentElement.clientHeight,t=this._element.style.overflowY;"hidden"===t||this._element.classList.contains(Ue)||(n||(this._element.style.overflowY="hidden"),this._element.classList.add(Ue),this._queueCallback(()=>{this._element.classList.remove(Ue),this._queueCallback(()=>{this._element.style.overflowY=t},this._dialog)},this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),n=e>0;if(n&&!t){const t=d()?"paddingLeft":"paddingRight";this._element.style[t]=`${e}px`}if(!n&&t){const t=d()?"paddingRight":"paddingLeft";this._element.style[t]=`${e}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(e,t){return this.each(function(){const n=G.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===n[e])throw new TypeError(`No method named "${e}"`);n[e](t)}})}}e.on(document,_s,'[data-bs-toggle="modal"]',function(n){const s=t.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&n.preventDefault(),e.one(s,Vn,t=>{t.defaultPrevented||e.one(s,$n,()=>{V(this)&&this.focus()})});const o=t.findOne(".modal.show");o&&G.getInstance(o).hide(),G.getOrCreateInstance(s).toggle(this)}),ve(G),u(G);const g=".bs.offcanvas",Pn=".data-api",Ms=`load${g}${Pn}`,Rn="show",Nn="showing",Dn="hiding",zn=".offcanvas.show",Ns=`show${g}`,Ls=`shown${g}`,Rs=`hide${g}`,Tn=`hidePrevented${g}`,Sn=`hidden${g}`,Is=`resize${g}`,Bs=`click${g}${Pn}`,Vs=`keydown.dismiss${g}`,$s={backdrop:!0,keyboard:!0,scroll:!1},Ws={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class E extends h{constructor(e,t){super(e,t),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return $s}static get DefaultType(){return Ws}static get NAME(){return"offcanvas"}toggle(e){return this._isShown?this.hide():this.show(e)}show(t){this._isShown||e.trigger(this._element,Ns,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||(new We).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(Nn),this._queueCallback(()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add(Rn),this._element.classList.remove(Nn),e.trigger(this._element,Ls,{relatedTarget:t})},this._element,!0))}hide(){this._isShown&&(e.trigger(this._element,Rs).defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add(Dn),this._backdrop.hide(),this._queueCallback(()=>{this._element.classList.remove(Rn,Dn),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new We).reset(),e.trigger(this._element,Sn)},this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=Boolean(this._config.backdrop);return new Qn({className:"offcanvas-backdrop",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?()=>{"static"!==this._config.backdrop?this.hide():e.trigger(this._element,Tn)}:null})}_initializeFocusTrap(){return new Zn({trapElement:this._element})}_addEventListeners(){e.on(this._element,Vs,t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():e.trigger(this._element,Tn))})}static jQueryInterface(e){return this.each(function(){const t=E.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError(`No method named "${e}"`);t[e](this)}})}}e.on(document,Bs,'[data-bs-toggle="offcanvas"]',function(n){const s=t.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&n.preventDefault(),O(this))return;e.one(s,Sn,()=>{V(this)&&this.focus()});const o=t.findOne(zn);o&&o!==s&&E.getInstance(o).hide(),E.getOrCreateInstance(s).toggle(this)}),e.on(window,Ms,()=>{for(const e of t.find(zn))E.getOrCreateInstance(e).show()}),e.on(window,Is,()=>{for(const e of t.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(e).position&&E.getOrCreateInstance(e).hide()}),ve(E),u(E);const An={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},qs=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Ys=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,Gs=(e,t)=>{const n=e.nodeName.toLowerCase();return t.includes(n)?!qs.has(n)||Boolean(Ys.test(e.nodeValue)):t.filter(e=>e instanceof RegExp).some(e=>e.test(n))},Xs={allowList:An,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"<div></div>"},Qs={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Zs={entry:"(string|element|function|null)",selector:"(string|element)"};class Js extends Q{constructor(e){super(),this._config=this._getConfig(e)}static get Default(){return Xs}static get DefaultType(){return Qs}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map(e=>this._resolvePossibleFunction(e)).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(e){return this._checkContent(e),this._config.content={...this._config.content,...e},this}toHtml(){const e=document.createElement("div");e.innerHTML=this._maybeSanitize(this._config.template);for(const[t,n]of Object.entries(this._config.content))this._setContent(e,n,t);const t=e.children[0],n=this._resolvePossibleFunction(this._config.extraClass);return n&&t.classList.add(...n.split(" ")),t}_typeCheckConfig(e){super._typeCheckConfig(e),this._checkContent(e.content)}_checkContent(e){for(const[t,n]of Object.entries(e))super._typeCheckConfig({selector:t,entry:n},Zs)}_setContent(e,n,s){const o=t.findOne(s,e);o&&((n=this._resolvePossibleFunction(n))?j(n)?this._putElementInTemplate(x(n),o):this._config.html?o.innerHTML=this._maybeSanitize(n):o.textContent=n:o.remove())}_maybeSanitize(e){return this._config.sanitize?function(e,t,n){if(!e.length)return e;if(n&&"function"==typeof n)return n(e);const s=(new window.DOMParser).parseFromString(e,"text/html"),o=[].concat(...s.body.querySelectorAll("*"));for(const e of o){const n=e.nodeName.toLowerCase();if(!Object.keys(t).includes(n)){e.remove();continue}const s=[].concat(...e.attributes),i=[].concat(t["*"]||[],t[n]||[]);for(const t of s)Gs(t,i)||e.removeAttribute(t.nodeName)}return s.body.innerHTML}(e,this._config.allowList,this._config.sanitizeFn):e}_resolvePossibleFunction(e){return o(e,[this])}_putElementInTemplate(e,t){if(this._config.html)return t.innerHTML="",void t.append(e);t.textContent=e.textContent}}const eo=new Set(["sanitize","allowList","sanitizeFn"]),Ke="fade",he="show",En=".modal",xn="hide.bs.modal",te="hover",Xe="focus",ro={AUTO:"auto",TOP:"top",RIGHT:d()?"left":"right",BOTTOM:"bottom",LEFT:d()?"right":"left"},co={allowList:An,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',title:"",trigger:"hover focus"},lo={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class P extends h{constructor(e,t){if(void 0===yn)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(e,t),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return co}static get DefaultType(){return lo}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),e.off(this._element.closest(En),xn,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const n=e.trigger(this._element,this.constructor.eventName("show")),s=(Dt(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(n.defaultPrevented||!s)return;this._disposePopper();const t=this._getTipElement();this._element.setAttribute("aria-describedby",t.getAttribute("id"));const{container:o}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(o.append(t),e.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(t),t.classList.add(he),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))e.on(t,"mouseover",ce);this._queueCallback(()=>{e.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1},this.tip,this._isAnimated())}hide(){if(this._isShown()&&!e.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){if(this._getTipElement().classList.remove(he),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))e.off(t,"mouseover",ce);this._activeTrigger.click=!1,this._activeTrigger[Xe]=!1,this._activeTrigger[te]=!1,this._isHovered=null,this._queueCallback(()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),e.trigger(this._element,this.constructor.eventName("hidden")))},this.tip,this._isAnimated())}}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(e){const t=this._getTemplateFactory(e).toHtml();if(!t)return null;t.classList.remove(Ke,he),t.classList.add(`bs-${this.constructor.NAME}-auto`);const n=(e=>{do e+=Math.floor(1e6*Math.random());while(document.getElementById(e))return e})(this.constructor.NAME).toString();return t.setAttribute("id",n),this._isAnimated()&&t.classList.add(Ke),t}setContent(e){this._newContent=e,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(e){return this._templateFactory?this._templateFactory.changeContent(e):this._templateFactory=new Js({...this._config,content:e,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{".tooltip-inner":this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(e){return this.constructor.getOrCreateInstance(e.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(Ke)}_isShown(){return this.tip&&this.tip.classList.contains(he)}_createPopper(e){const t=o(this._config.placement,[this,e,this._element]),n=ro[t.toUpperCase()];return He(this._element,e,this._getPopperConfig(n))}_getOffset(){const{offset:e}=this._config;return"string"==typeof e?e.split(",").map(e=>Number.parseInt(e,10)):"function"==typeof e?t=>e(t,this._element):e}_resolvePossibleFunction(e){return o(e,[this._element])}_getPopperConfig(e){const t={placement:e,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:e=>{this._getTipElement().setAttribute("data-popper-placement",e.state.placement)}}]};return{...t,...o(this._config.popperConfig,[t])}}_setListeners(){const t=this._config.trigger.split(" ");for(const n of t)if("click"===n)e.on(this._element,this.constructor.eventName("click"),this._config.selector,e=>{this._initializeOnDelegatedTarget(e).toggle()});else if("manual"!==n){const t=n===te?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),s=n===te?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");e.on(this._element,t,this._config.selector,e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusin"===e.type?Xe:te]=!0,t._enter()}),e.on(this._element,s,this._config.selector,e=>{const t=this._initializeOnDelegatedTarget(e);t._activeTrigger["focusout"===e.type?Xe:te]=t._element.contains(e.relatedTarget),t._leave()})}this._hideModalHandler=()=>{this._element&&this.hide()},e.on(this._element.closest(En),xn,this._hideModalHandler)}_fixTitle(){const e=this._element.getAttribute("title");e&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",e),this._element.setAttribute("data-bs-original-title",e),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout(()=>{this._isHovered&&this.show()},this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout(()=>{this._isHovered||this.hide()},this._config.delay.hide))}_setTimeout(e,t){clearTimeout(this._timeout),this._timeout=setTimeout(e,t)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(e){const t=b.getDataAttributes(this._element);for(const e of Object.keys(t))eo.has(e)&&delete t[e];return e={...t,..."object"==typeof e&&e?e:{}},e=this._mergeConfigObj(e),e=this._configAfterMerge(e),this._typeCheckConfig(e),e}_configAfterMerge(e){return e.container=!1===e.container?document.body:x(e.container),"number"==typeof e.delay&&(e.delay={show:e.delay,hide:e.delay}),"number"==typeof e.title&&(e.title=e.title.toString()),"number"==typeof e.content&&(e.content=e.content.toString()),e}_getDelegateConfig(){const e={};for(const[t,n]of Object.entries(this._config))this.constructor.Default[t]!==n&&(e[t]=n);return e.selector=!1,e.trigger="manual",e}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(e){return this.each(function(){const t=P.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}})}}u(P);const ho={...P.Default,content:"",offset:[0,8],placement:"right",template:'<div class="popover" role="tooltip"><div class="popover-arrow"></div><h3 class="popover-header"></h3><div class="popover-body"></div></div>',trigger:"click"},mo={...P.DefaultType,content:"(null|string|element|function)"};class Ae extends P{static get Default(){return ho}static get DefaultType(){return mo}static get NAME(){return"popover"}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{".popover-header":this._getTitle(),".popover-body":this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(e){return this.each(function(){const t=Ae.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e]()}})}}u(Ae);const nt=".bs.scrollspy",go=`activate${nt}`,vn=`click${nt}`,bo=`load${nt}.data-api`,K="active",st="[href]",mn=".nav-link",wo=`${mn}, .nav-item > ${mn}, .list-group-item`,Oo={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},xo={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class me extends h{constructor(e,t){super(e,t),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return Oo}static get DefaultType(){return xo}static get NAME(){return"scrollspy"}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const e of this._observableSections.values())this._observer.observe(e)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(e){return e.target=x(e.target)||document.body,e.rootMargin=e.offset?`${e.offset}px 0px -30%`:e.rootMargin,"string"==typeof e.threshold&&(e.threshold=e.threshold.split(",").map(e=>Number.parseFloat(e))),e}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(e.off(this._config.target,vn),e.on(this._config.target,vn,st,e=>{const t=this._observableSections.get(e.target.hash);if(t){e.preventDefault();const n=this._rootElement||window,s=t.offsetTop-this._element.offsetTop;if(n.scrollTo)return void n.scrollTo({top:s,behavior:"smooth"});n.scrollTop=s}}))}_getNewObserver(){const e={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver(e=>this._observerCallback(e),e)}_observerCallback(e){const n=e=>this._targetLinks.get(`#${e.target.id}`),s=e=>{this._previousScrollData.visibleEntryTop=e.target.offsetTop,this._process(n(e))},t=(this._rootElement||document.documentElement).scrollTop,o=t>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=t;for(const i of e){if(!i.isIntersecting){this._activeTarget=null,this._clearActiveClass(n(i));continue}const a=i.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(o&&a){if(s(i),!t)return}else o||a||s(i)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const e=t.find(st,this._config.target);for(const n of e){if(!n.hash||O(n))continue;const s=t.findOne(decodeURI(n.hash),this._element);V(s)&&(this._targetLinks.set(decodeURI(n.hash),n),this._observableSections.set(n.hash,s))}}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(K),this._activateParents(t),e.trigger(this._element,go,{relatedTarget:t}))}_activateParents(e){if(e.classList.contains("dropdown-item"))t.findOne(".dropdown-toggle",e.closest(".dropdown")).classList.add(K);else for(const n of t.parents(e,".nav, .list-group"))for(const e of t.prev(n,wo))e.classList.add(K)}_clearActiveClass(e){e.classList.remove(K);const n=t.find(`${st}.${K}`,e);for(const e of n)e.classList.remove(K)}static jQueryInterface(e){return this.each(function(){const t=me.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError(`No method named "${e}"`);t[e]()}})}}e.on(window,bo,()=>{for(const e of t.find('[data-bs-spy="scroll"]'))me.getOrCreateInstance(e)}),u(me);const A=".bs.tab",ko=`hide${A}`,Ao=`hidden${A}`,So=`show${A}`,Mo=`shown${A}`,Fo=`click${A}`,To=`keydown${A}`,zo=`load${A}`,Do="ArrowLeft",sn="ArrowRight",Lo="ArrowUp",Jt="ArrowDown",it="Home",Xt="End",F="active",Yt="fade",ct="show",Ut=".dropdown-toggle",lt=`:not(${Ut})`,$t='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',dt=`.nav-link${lt}, .list-group-item${lt}, [role="tab"]${lt}, ${$t}`,qo=`.${F}[data-bs-toggle="tab"], .${F}[data-bs-toggle="pill"], .${F}[data-bs-toggle="list"]`;class N extends h{constructor(t){super(t),this._parent=this._element.closest('.list-group, .nav, [role="tablist"]'),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),e.on(this._element,To,e=>this._keydown(e)))}static get NAME(){return"tab"}show(){const t=this._element;if(this._elemIsActive(t))return;const n=this._getActiveElem(),s=n?e.trigger(n,ko,{relatedTarget:t}):null;e.trigger(t,So,{relatedTarget:n}).defaultPrevented||s&&s.defaultPrevented||(this._deactivate(n,t),this._activate(t,n))}_activate(n,s){n&&(n.classList.add(F),this._activate(t.getElementFromSelector(n)),this._queueCallback(()=>{"tab"===n.getAttribute("role")?(n.removeAttribute("tabindex"),n.setAttribute("aria-selected",!0),this._toggleDropDown(n,!0),e.trigger(n,Mo,{relatedTarget:s})):n.classList.add(ct)},n,n.classList.contains(Yt)))}_deactivate(n,s){n&&(n.classList.remove(F),n.blur(),this._deactivate(t.getElementFromSelector(n)),this._queueCallback(()=>{"tab"===n.getAttribute("role")?(n.setAttribute("aria-selected",!1),n.setAttribute("tabindex","-1"),this._toggleDropDown(n,!1),e.trigger(n,Ao,{relatedTarget:s})):n.classList.remove(ct)},n,n.classList.contains(Yt)))}_keydown(e){if(![Do,sn,Lo,Jt,it,Xt].includes(e.key))return;e.stopPropagation(),e.preventDefault();const n=this._getChildren().filter(e=>!O(e));let t;if([it,Xt].includes(e.key))t=n[e.key===it?0:n.length-1];else{const s=[sn,Jt].includes(e.key);t=ht(n,e.target,s,!0)}t&&(t.focus({preventScroll:!0}),N.getOrCreateInstance(t).show())}_getChildren(){return t.find(dt,this._parent)}_getActiveElem(){return this._getChildren().find(e=>this._elemIsActive(e))||null}_setInitialAttributes(e,t){this._setAttributeIfNotExists(e,"role","tablist");for(const e of t)this._setInitialAttributesOnChild(e)}_setInitialAttributesOnChild(e){e=this._getInnerElement(e);const t=this._elemIsActive(e),n=this._getOuterElement(e);e.setAttribute("aria-selected",t),n!==e&&this._setAttributeIfNotExists(n,"role","presentation"),t||e.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(e,"role","tab"),this._setInitialAttributesOnTargetPanel(e)}_setInitialAttributesOnTargetPanel(e){const n=t.getElementFromSelector(e);n&&(this._setAttributeIfNotExists(n,"role","tabpanel"),e.id&&this._setAttributeIfNotExists(n,"aria-labelledby",`${e.id}`))}_toggleDropDown(e,n){const s=this._getOuterElement(e);if(!s.classList.contains("dropdown"))return;const o=(e,o)=>{const i=t.findOne(e,s);i&&i.classList.toggle(o,n)};o(Ut,F),o(".dropdown-menu",ct),s.setAttribute("aria-expanded",n)}_setAttributeIfNotExists(e,t,n){e.hasAttribute(t)||e.setAttribute(t,n)}_elemIsActive(e){return e.classList.contains(F)}_getInnerElement(e){return e.matches(dt)?e:t.findOne(dt,e)}_getOuterElement(e){return e.closest(".nav-item, .list-group-item")||e}static jQueryInterface(e){return this.each(function(){const t=N.getOrCreateInstance(this);if("string"==typeof e){if(void 0===t[e]||e.startsWith("_")||"constructor"===e)throw new TypeError(`No method named "${e}"`);t[e]()}})}}e.on(document,Fo,$t,function(e){["A","AREA"].includes(this.tagName)&&e.preventDefault(),O(this)||N.getOrCreateInstance(this).show()}),e.on(window,zo,()=>{for(const e of t.find(qo))N.getOrCreateInstance(e)}),u(N);const y=".bs.toast",Xo=`mouseover${y}`,Qo=`mouseout${y}`,Zo=`focusin${y}`,Jo=`focusout${y}`,ei=`hide${y}`,ti=`hidden${y}`,ni=`show${y}`,si=`shown${y}`,Pt="hide",Ce="show",pe="showing",ri={animation:"boolean",autohide:"boolean",delay:"number"},ci={animation:!0,autohide:!0,delay:5e3};class we extends h{constructor(e,t){super(e,t),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return ci}static get DefaultType(){return ri}static get NAME(){return"toast"}show(){e.trigger(this._element,ni).defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove(Pt),oe(this._element),this._element.classList.add(Ce,pe),this._queueCallback(()=>{this._element.classList.remove(pe),e.trigger(this._element,si),this._maybeScheduleHide()},this._element,this._config.animation))}hide(){this.isShown()&&(e.trigger(this._element,ei).defaultPrevented||(this._element.classList.add(pe),this._queueCallback(()=>{this._element.classList.add(Pt),this._element.classList.remove(pe,Ce),e.trigger(this._element,ti)},this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(Ce),super.dispose()}isShown(){return this._element.classList.contains(Ce)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout(()=>{this.hide()},this._config.delay)))}_onInteraction(e,t){switch(e.type){case"mouseover":case"mouseout":this._hasMouseInteraction=t;break;case"focusin":case"focusout":this._hasKeyboardInteraction=t}if(t)return void this._clearTimeout();const n=e.relatedTarget;this._element===n||this._element.contains(n)||this._maybeScheduleHide()}_setListeners(){e.on(this._element,Xo,e=>this._onInteraction(e,!0)),e.on(this._element,Qo,e=>this._onInteraction(e,!1)),e.on(this._element,Zo,e=>this._onInteraction(e,!0)),e.on(this._element,Jo,e=>this._onInteraction(e,!1))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(e){return this.each(function(){const t=we.getOrCreateInstance(this,e);if("string"==typeof e){if(void 0===t[e])throw new TypeError(`No method named "${e}"`);t[e](this)}})}}return ve(we),u(we),{Alert:ue,Button:be,Carousel:Z,Collapse:ae,Dropdown:m,Modal:G,Offcanvas:E,Popover:Ae,ScrollSpy:me,Tab:N,Toast:we,Tooltip:P}});function tshowa_new(e,t,n,s,o){var i="2-22-33",a=e,r=t,c=n,i=c+r+a;document.getElementById(o).innerHTML="<p>Для оформления заказа, свяжитесь с менеджером</p>  <h4 class='fw-bold'><a  class='btn-tel add fw-bold mt-2' style='padding: 10px 25px;' href='tel: "+i+"'> ☎:  "+i+"</a></h4>",document.getElementById(s).className="hide"}</script>


  
  









	

	<!-- Tim v https://decapcms.org/docs/add-to-your-site/ -->
	
</body>

</html>